@seams/wallet 0.7.3 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1693) hide show
  1. package/README.md +4 -5
  2. package/THIRD_PARTY_NOTICES.md +1 -9
  3. package/dist/.build-inputs.sha256 +1 -1
  4. package/dist/esm/SeamsWeb/SeamsWeb.js +2 -2
  5. package/dist/esm/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +2 -2
  6. package/dist/esm/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +1 -1
  7. package/dist/esm/SeamsWeb/assembly/createBrowserSigningStores.js +1 -1
  8. package/dist/esm/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -2
  9. package/dist/esm/SeamsWeb/operations/auth/login.js +18 -43
  10. package/dist/esm/SeamsWeb/operations/auth/walletUnlockSubject.js +2 -8
  11. package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +1 -1
  12. package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +5 -9
  13. package/dist/esm/SeamsWeb/operations/authMethods/passkey/addPasskey.js +1 -1
  14. package/dist/esm/SeamsWeb/operations/authMethods/revokeAuthMethod.js +1 -1
  15. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingResume.js +1 -4
  16. package/dist/esm/SeamsWeb/operations/devices/linkDeviceFlow.js +38 -13
  17. package/dist/esm/SeamsWeb/operations/devices/scanDevice.js +1 -1
  18. package/dist/esm/SeamsWeb/operations/near/signNEP413.js +0 -1
  19. package/dist/esm/SeamsWeb/operations/recovery/syncAccount.js +2 -4
  20. package/dist/esm/SeamsWeb/operations/recovery/walletRecovery.js +1 -2
  21. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +4 -5
  22. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +1 -2
  23. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryRotation.js +1 -2
  24. package/dist/esm/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +3 -12
  25. package/dist/esm/SeamsWeb/operations/registration/registration.js +5 -5
  26. package/dist/esm/SeamsWeb/operations/registration/registrationStrictEcdsa.js +1 -1
  27. package/dist/esm/SeamsWeb/operations/registration/registrationTerminalCommit.js +1 -1
  28. package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +2 -6
  29. package/dist/esm/SeamsWeb/publicApi/near.js +1 -1
  30. package/dist/esm/SeamsWeb/publicApi/transactionReview.js +4 -1
  31. package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +4 -4
  32. package/dist/esm/SeamsWeb/walletIframe/client/router.js +1 -2
  33. package/dist/esm/SeamsWeb/walletIframe/client/surface/domain.js +0 -2
  34. package/dist/esm/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -4
  35. package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +1 -1
  36. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +64 -0
  37. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +165 -222
  38. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +136 -0
  39. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +6 -6
  40. package/dist/esm/SeamsWeb/walletIframe/shared/transactionReview.js +11 -1
  41. package/dist/esm/advanced.js +0 -1
  42. package/dist/esm/base-styles.js +2 -2
  43. package/dist/esm/core/accountData/near/accountProjection.js +0 -1
  44. package/dist/esm/core/accountData/near/keyMaterial.js +0 -1
  45. package/dist/esm/core/browser/walletIframe/events.js +1 -5
  46. package/dist/esm/core/browser/walletIframe/host-mode.js +0 -10
  47. package/dist/esm/core/config/chains.js +1 -2
  48. package/dist/esm/core/config/configBuilder.js +0 -1
  49. package/dist/esm/core/config/configHelpers.js +0 -1
  50. package/dist/esm/core/indexedDB/accountKeyMaterial.js +0 -1
  51. package/dist/esm/core/indexedDB/index.js +3 -4
  52. package/dist/esm/core/indexedDB/pendingWalletRecoveryCommit.js +1 -4
  53. package/dist/esm/core/indexedDB/schemaNames.js +0 -22
  54. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +3 -3
  55. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +3 -3
  56. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +1 -1
  57. package/dist/esm/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -1
  58. package/dist/esm/core/indexedDB/seamsWalletDB/registrationSetup.js +103 -0
  59. package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +2 -3
  60. package/dist/esm/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -35
  61. package/dist/esm/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +4 -4
  62. package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +37 -19
  63. package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +10 -3
  64. package/dist/esm/core/indexedDB/walletCustodyEd25519MaterialRecord.js +1 -1
  65. package/dist/esm/core/platform/browser/createBrowserPlatformRuntime.js +8 -25
  66. package/dist/esm/core/rpcClients/near/rpcCalls.js +39 -1
  67. package/dist/esm/core/rpcClients/relayer/passkeyCustodyEnvelope.js +3 -13
  68. package/dist/esm/core/rpcClients/relayer/thresholdEcdsa.js +0 -2
  69. package/dist/esm/core/rpcClients/relayer/walletRecoveryPrepare.js +3 -4
  70. package/dist/esm/core/rpcClients/relayer/walletRegistration.js +21 -15
  71. package/dist/esm/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +1 -2
  72. package/dist/esm/core/signingEngine/assembly/createManagers.js +1 -1
  73. package/dist/esm/core/signingEngine/assembly/ports/shared.js +1 -2
  74. package/dist/esm/core/signingEngine/assembly/warmup.js +1 -5
  75. package/dist/esm/core/signingEngine/chains/near/nearSignerWasm.js +2 -33
  76. package/dist/esm/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -1
  77. package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +0 -1
  78. package/dist/esm/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +1 -1
  79. package/dist/esm/core/signingEngine/flows/recovery/stepUpAuthorization.js +1 -1
  80. package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +3 -8
  81. package/dist/esm/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +1 -2
  82. package/dist/esm/core/signingEngine/flows/shared/signingStateMachine.js +2 -5
  83. package/dist/esm/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -2
  84. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +1 -1
  85. package/dist/esm/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +1 -2
  86. package/dist/esm/core/signingEngine/flows/signNear/implicitAccountFunding.js +1 -1
  87. package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +33 -42
  88. package/dist/esm/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -2
  89. package/dist/esm/core/signingEngine/flows/signNear/shared/signingMaterials.js +1 -7
  90. package/dist/esm/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +4 -14
  91. package/dist/esm/core/signingEngine/flows/signNear/signDelegate.js +2 -6
  92. package/dist/esm/core/signingEngine/flows/signNear/signNep413.js +2 -6
  93. package/dist/esm/core/signingEngine/nonce/NonceCoordinator.js +1 -1
  94. package/dist/esm/core/signingEngine/nonce/nearNonceLane.js +1 -1
  95. package/dist/esm/core/signingEngine/nonce/nonceDiagnostics.js +1 -1
  96. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -1
  97. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +0 -1
  98. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -3
  99. package/dist/esm/core/signingEngine/session/SigningSessionCoordinator.js +1 -4
  100. package/dist/esm/core/signingEngine/session/authority/authorityOperationResolver.js +17 -68
  101. package/dist/esm/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -1
  102. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +1 -1
  103. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -3
  104. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLogin.js +1 -7
  105. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaRecovery.js +10 -14
  106. package/dist/esm/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -3
  107. package/dist/esm/core/signingEngine/session/emailOtp/exportRecovery.js +0 -2
  108. package/dist/esm/core/signingEngine/session/identity/clientSessionPersistenceState.js +5 -16
  109. package/dist/esm/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -1
  110. package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +1 -1
  111. package/dist/esm/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -2
  112. package/dist/esm/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +1 -2
  113. package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +1 -1
  114. package/dist/esm/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +1 -14
  115. package/dist/esm/core/signingEngine/session/operationState/preparedOperation.js +1 -5
  116. package/dist/esm/core/signingEngine/session/passkey/ecdsaBootstrap.js +3 -6
  117. package/dist/esm/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -1
  118. package/dist/esm/core/signingEngine/session/passkey/ecdsaRecovery.js +1 -4
  119. package/dist/esm/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -1
  120. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +2 -3
  121. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +12 -45
  122. package/dist/esm/core/signingEngine/session/persistence/clientSessionPersistence.js +8 -16
  123. package/dist/esm/core/signingEngine/session/persistence/sealedSessionRecords.js +0 -2
  124. package/dist/esm/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -2
  125. package/dist/esm/core/signingEngine/session/routerAbSigningWalletSession.js +2 -8
  126. package/dist/esm/core/signingEngine/session/warmCapabilities/readModel.js +2 -8
  127. package/dist/esm/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +1 -12
  128. package/dist/esm/core/signingEngine/session/warmCapabilities/transitions.js +7 -11
  129. package/dist/esm/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -1
  130. package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +6 -30
  131. package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -3
  132. package/dist/esm/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +1 -5
  133. package/dist/esm/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -3
  134. package/dist/esm/core/signingEngine/threshold/ecdsa/bootstrapSession.js +1 -5
  135. package/dist/esm/core/signingEngine/threshold/ed25519/walletSession.js +1 -1
  136. package/dist/esm/core/signingEngine/threshold/ed25519/yaoClient.js +1 -35
  137. package/dist/esm/core/signingEngine/threshold/sessionPolicy.js +0 -1
  138. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +1 -4
  139. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +1 -1
  140. package/dist/esm/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -1
  141. package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +1 -1
  142. package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -1
  143. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +7 -0
  144. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +3 -13
  145. package/dist/esm/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -1
  146. package/dist/esm/core/signingEngine/walletCustody/emailOtpLink.js +10 -13
  147. package/dist/esm/core/signingEngine/walletCustody/openCustodyCache.js +2 -6
  148. package/dist/esm/core/signingEngine/walletCustody/passkeyLink.js +7 -10
  149. package/dist/esm/core/signingEngine/walletCustody/registrationCeremony.js +0 -1
  150. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -1
  151. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -1
  152. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEd25519.js +1 -1
  153. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -2
  154. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -1
  155. package/dist/esm/core/signingEngine/webauthnAuth/walletOriginWebAuthn.js +109 -0
  156. package/dist/esm/core/signingEngine/workerManager/SignerWorkerManager.js +0 -2
  157. package/dist/esm/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -4
  158. package/dist/esm/core/signingEngine/workerManager/validation.js +1 -1
  159. package/dist/esm/core/signingEngine/workerManager/workerTransport.js +3 -42
  160. package/dist/esm/core/signingEngine/workerManager/workerTypes.js +0 -2
  161. package/dist/esm/core/types/accountIds.js +0 -1
  162. package/dist/esm/core/types/sdkSentEvents.js +1 -2
  163. package/dist/esm/core/types/signer-worker.js +1 -36
  164. package/dist/esm/core/walletRuntimePaths/base.js +11 -1
  165. package/dist/esm/plugins/headers.js +0 -1
  166. package/dist/esm/plugins/next.js +0 -1
  167. package/dist/esm/plugins/plugin-utils.js +0 -1
  168. package/dist/esm/plugins/shared-ts/src/utils/normalize.js +1 -1
  169. package/dist/esm/react/components/AccountMenuButton/AccountsSection.js +1 -1
  170. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +1 -1
  171. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +1 -1
  172. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +4 -4
  173. package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +1 -1
  174. package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +1 -1
  175. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.css +8 -0
  176. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +14 -6
  177. package/dist/esm/react/components/AccountMenuButton/icons/TouchIcon.js +1 -1
  178. package/dist/esm/react/components/AccountMenuButton/index.js +5 -5
  179. package/dist/esm/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.js +1 -1
  180. package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +1 -1
  181. package/dist/esm/react/components/QRCodeScanner.js +2 -2
  182. package/dist/esm/react/components/ShowQRCode.js +4 -4
  183. package/dist/esm/react/components/theme/design-tokens.js +1 -2
  184. package/dist/esm/react/context/index.js +1 -1
  185. package/dist/esm/react/context/reactLoginStateBuilders.js +1 -1
  186. package/dist/esm/react/context/seamsManagerSingleton.js +2 -2
  187. package/dist/esm/react/context/useLoginStateRefresher.js +2 -5
  188. package/dist/esm/react/context/useSeamsContextValue.js +1 -1
  189. package/dist/esm/react/context/useSeamsWithSdkFlow.js +1 -1
  190. package/dist/esm/react/context/useWalletIframeLifecycle.js +1 -1
  191. package/dist/esm/react/hooks/useAccountInput.js +4 -4
  192. package/dist/esm/react/hooks/useNearClient.js +3 -3
  193. package/dist/esm/react/hooks/usePreconnectWalletAssets.js +1 -1
  194. package/dist/esm/react/hooks/useQRCamera.js +2 -2
  195. package/dist/esm/react/hooks/useWallet.js +1 -1
  196. package/dist/esm/react/index.js +10 -10
  197. package/dist/esm/react/styles/styles.css +8 -0
  198. package/dist/esm/react/transactionReview/TransactionReviewHost.js +1 -1
  199. package/dist/esm/react/transactionReview/boundCalls.js +2 -2
  200. package/dist/esm/react/transactionReview/contract.js +1 -1
  201. package/dist/esm/react/transactionReview/controller.js +2 -2
  202. package/dist/esm/react/transactionReview/snapshot.js +2 -2
  203. package/dist/esm/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
  204. package/dist/esm/sdk/EvmClient-DoxytQaJ.js +1 -0
  205. package/dist/esm/sdk/NearClient-vJ65Wjrq.js +1 -0
  206. package/dist/esm/sdk/NonceCoordinator-BBeadCSq.js +1 -0
  207. package/dist/esm/sdk/accountIds-C3Ihsd2c.js +1 -0
  208. package/dist/esm/sdk/accountLifecycle-EyfYPnuT.js +1 -0
  209. package/dist/esm/sdk/actions-DZLxCcrU.js +1 -0
  210. package/dist/esm/sdk/adapters-DtAyuoiA.js +2 -0
  211. package/dist/esm/sdk/base-Xtd32asf.js +1 -0
  212. package/dist/esm/sdk/base64-ojm5DKcF.js +1 -0
  213. package/dist/esm/sdk/browser-CsOGMbMy.js +8 -0
  214. package/dist/esm/sdk/bytes-t5S5mkat.js +1 -0
  215. package/dist/esm/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
  216. package/dist/esm/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
  217. package/dist/esm/sdk/capabilityKinds-XaXXiD2B.js +1 -0
  218. package/dist/esm/sdk/chains-yAls2d9X.js +1 -0
  219. package/dist/esm/sdk/challengeDelivery-cAsaUC6U.js +1 -0
  220. package/dist/esm/sdk/chunk-dVx5-UGu.js +1 -0
  221. package/dist/esm/sdk/configHelpers-CseiVoZD.js +1 -0
  222. package/dist/esm/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
  223. package/dist/esm/sdk/defaultConfigs-CWpApkMq.js +1 -0
  224. package/dist/esm/sdk/display-jK7_hYho.js +1 -0
  225. package/dist/esm/sdk/domainIds-GDzjOs6i.js +1 -0
  226. package/dist/esm/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
  227. package/dist/esm/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
  228. package/dist/esm/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
  229. package/dist/esm/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
  230. package/dist/esm/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
  231. package/dist/esm/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
  232. package/dist/esm/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
  233. package/dist/esm/sdk/errors-DfbnsXjO.js +1 -0
  234. package/dist/esm/sdk/events-BJyVcnsn.js +1 -0
  235. package/dist/esm/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
  236. package/dist/esm/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
  237. package/dist/esm/sdk/exactSessionState-CjD8gekO.js +210 -0
  238. package/dist/esm/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
  239. package/dist/esm/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
  240. package/dist/esm/sdk/export-viewer-host-jo7h_0wl.js +1 -0
  241. package/dist/esm/sdk/helpers-D4QckQhq.js +1 -0
  242. package/dist/esm/sdk/host-BAqOYnju.js +1 -0
  243. package/dist/esm/sdk/intentDigest-CB6zy3lN.js +1 -0
  244. package/dist/esm/sdk/jsonRpc-C85RYR0A.js +1 -0
  245. package/dist/esm/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
  246. package/dist/esm/sdk/keccak-zexutGfG.js +1 -0
  247. package/dist/esm/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
  248. package/dist/esm/sdk/localOnly-DBQRG6Qh.js +1 -0
  249. package/dist/esm/sdk/messages-Cv2j4SKI.js +1 -0
  250. package/dist/esm/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
  251. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
  252. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
  253. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
  254. package/dist/esm/sdk/nearRpcResults--cBcfmp4.js +1 -0
  255. package/dist/esm/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
  256. package/dist/esm/sdk/normalization-BGPR6osg.js +1 -0
  257. package/dist/esm/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
  258. package/dist/esm/sdk/operationFingerprint-DtQb0pdp.js +1 -0
  259. package/dist/esm/sdk/passkey-custody-LP4UTFbn.js +1 -0
  260. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
  261. package/dist/esm/sdk/prfCache-Mbo7_USg.js +1 -0
  262. package/dist/esm/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
  263. package/dist/esm/sdk/promptText-s8TQ6ckX.js +1 -0
  264. package/dist/esm/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
  265. package/dist/esm/sdk/registration-Btozh7uh.js +1 -0
  266. package/dist/esm/sdk/registration-CSAG_h4Y.js +1 -0
  267. package/dist/esm/sdk/registrationAccounts-DIeEVy6W.js +1 -0
  268. package/dist/esm/sdk/registrationIds-BIel5S0i.js +1 -0
  269. package/dist/esm/sdk/registrationIntent-DV1GYZ3K.js +1 -0
  270. package/dist/esm/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
  271. package/dist/esm/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
  272. package/dist/esm/sdk/relayerHttp-DaPeS929.js +1 -0
  273. package/dist/esm/sdk/routePlan-B_KJaPtm.js +1 -0
  274. package/dist/esm/sdk/router-Dd3fFHk3.js +1 -0
  275. package/dist/esm/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
  276. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  277. package/dist/esm/sdk/runtime-auth-B2M91rSx.js +1 -0
  278. package/dist/esm/sdk/runtime-device-link-ojjPSRaG.js +1 -0
  279. package/dist/esm/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
  280. package/dist/esm/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
  281. package/dist/esm/sdk/runtime-export-JXYk8sQ-.js +1 -0
  282. package/dist/esm/sdk/runtime-near-BB8AG6dV.js +1 -0
  283. package/dist/esm/sdk/runtime-preferences-DKFZYccW.js +1 -0
  284. package/dist/esm/sdk/runtime-recovery-C_XjsDBg.js +1 -0
  285. package/dist/esm/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
  286. package/dist/esm/sdk/runtimeContext-BpObgzbj.js +6 -0
  287. package/dist/esm/sdk/runtimeLoader-DjgBf_yF.js +1 -0
  288. package/dist/esm/sdk/sdkSentEvents-_RGAEeld.js +1 -0
  289. package/dist/esm/sdk/secp256k1-B_6W9QDJ.js +1 -0
  290. package/dist/esm/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
  291. package/dist/esm/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
  292. package/dist/esm/sdk/shared-j_KsFbCT.js +1 -0
  293. package/dist/esm/sdk/signEvmFamily-CcLVBm0f.js +1 -0
  294. package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
  295. package/dist/esm/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
  296. package/dist/esm/sdk/signNear-mWbTE2Dl.js +1 -0
  297. package/dist/esm/sdk/signatureUses-CQkkUcwT.js +1 -0
  298. package/dist/esm/sdk/signerDomain-BhUTzDmF.js +1 -0
  299. package/dist/esm/sdk/signerLoader-By0IY24G.js +1 -0
  300. package/dist/esm/sdk/signerSlot-BQ1g5JNV.js +1 -0
  301. package/dist/esm/sdk/signingFlow-LUWrZi2d.js +2 -0
  302. package/dist/esm/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
  303. package/dist/esm/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
  304. package/dist/esm/sdk/trace-M34pNGuF.js +1 -0
  305. package/dist/esm/sdk/transaction-activity-BbDod7ji.js +1 -0
  306. package/dist/esm/sdk/transactionReview-CBE5oH4c.js +1 -0
  307. package/dist/esm/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
  308. package/dist/esm/sdk/transactionState-9d7f3xVj.js +1 -0
  309. package/dist/esm/sdk/tx-confirm-ui.js +12 -158
  310. package/dist/esm/sdk/types-M7vxrYtJ.js +1 -0
  311. package/dist/esm/sdk/validation-dC1-_uyG.js +1 -0
  312. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -13
  313. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -6
  314. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -13
  315. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -4
  316. package/dist/esm/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
  317. package/dist/esm/sdk/wallet-ui.css +1 -5874
  318. package/dist/esm/sdk/walletAuthority-CoWSeqvQ.js +1 -0
  319. package/dist/esm/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
  320. package/dist/esm/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
  321. package/dist/esm/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
  322. package/dist/esm/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
  323. package/dist/esm/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
  324. package/dist/esm/sdk/webauthnP256-qu06GNFm.js +1 -0
  325. package/dist/esm/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
  326. package/dist/esm/shared-ts/src/device-linking/parsers.js +41 -1
  327. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +1 -1
  328. package/dist/esm/shared-ts/src/near/actions.js +10 -1
  329. package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
  330. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
  331. package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -4
  332. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +0 -1
  333. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +0 -1
  334. package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -1
  335. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +1 -1
  336. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
  337. package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
  338. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +0 -1
  339. package/dist/esm/shared-ts/src/utils/domainIds.js +1 -7
  340. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -1
  341. package/dist/esm/shared-ts/src/utils/encoders.js +1 -1
  342. package/dist/esm/shared-ts/src/utils/errors.js +0 -1
  343. package/dist/esm/shared-ts/src/utils/index.js +4 -5
  344. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
  345. package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
  346. package/dist/esm/shared-ts/src/utils/registrationIntent.js +0 -1
  347. package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +12 -0
  348. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +1 -1
  349. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -2
  350. package/dist/esm/shared-ts/src/utils/validation.js +0 -1
  351. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
  352. package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +10 -1
  353. package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
  354. package/dist/esm/shared-ts/src/wallet-recovery/index.js +1 -1
  355. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
  356. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -2
  357. package/dist/esm/theme/base-styles.js +11 -11
  358. package/dist/esm/utils/deviceDetection.js +16 -1
  359. package/dist/esm/utils/qrScanner.js +288 -0
  360. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.d.ts +12 -753
  361. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +126 -3701
  362. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  363. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.d.ts +0 -42
  364. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.js +2 -106
  365. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
  366. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.d.ts +3 -158
  367. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.js +2 -452
  368. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  369. package/dist/public/headers.manifest.json +1 -1
  370. package/dist/public/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
  371. package/dist/public/sdk/EvmClient-DoxytQaJ.js +1 -0
  372. package/dist/public/sdk/NearClient-vJ65Wjrq.js +1 -0
  373. package/dist/public/sdk/NonceCoordinator-BBeadCSq.js +1 -0
  374. package/dist/public/sdk/accountIds-C3Ihsd2c.js +1 -0
  375. package/dist/public/sdk/accountLifecycle-EyfYPnuT.js +1 -0
  376. package/dist/public/sdk/actions-DZLxCcrU.js +1 -0
  377. package/dist/public/sdk/adapters-DtAyuoiA.js +2 -0
  378. package/dist/public/sdk/base-Xtd32asf.js +1 -0
  379. package/dist/public/sdk/base64-ojm5DKcF.js +1 -0
  380. package/dist/public/sdk/browser-CsOGMbMy.js +8 -0
  381. package/dist/public/sdk/bytes-t5S5mkat.js +1 -0
  382. package/dist/public/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
  383. package/dist/public/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
  384. package/dist/public/sdk/capabilityKinds-XaXXiD2B.js +1 -0
  385. package/dist/public/sdk/chains-yAls2d9X.js +1 -0
  386. package/dist/public/sdk/challengeDelivery-cAsaUC6U.js +1 -0
  387. package/dist/public/sdk/chunk-dVx5-UGu.js +1 -0
  388. package/dist/public/sdk/configHelpers-CseiVoZD.js +1 -0
  389. package/dist/public/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
  390. package/dist/public/sdk/defaultConfigs-CWpApkMq.js +1 -0
  391. package/dist/public/sdk/display-jK7_hYho.js +1 -0
  392. package/dist/public/sdk/domainIds-GDzjOs6i.js +1 -0
  393. package/dist/public/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
  394. package/dist/public/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
  395. package/dist/public/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
  396. package/dist/public/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
  397. package/dist/public/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
  398. package/dist/public/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
  399. package/dist/public/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
  400. package/dist/public/sdk/errors-DfbnsXjO.js +1 -0
  401. package/dist/public/sdk/events-BJyVcnsn.js +1 -0
  402. package/dist/public/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
  403. package/dist/public/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
  404. package/dist/public/sdk/exactSessionState-CjD8gekO.js +210 -0
  405. package/dist/public/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
  406. package/dist/public/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
  407. package/dist/public/sdk/export-viewer-host-jo7h_0wl.js +1 -0
  408. package/dist/public/sdk/helpers-D4QckQhq.js +1 -0
  409. package/dist/public/sdk/host-BAqOYnju.js +1 -0
  410. package/dist/public/sdk/intentDigest-CB6zy3lN.js +1 -0
  411. package/dist/public/sdk/jsonRpc-C85RYR0A.js +1 -0
  412. package/dist/public/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
  413. package/dist/public/sdk/keccak-zexutGfG.js +1 -0
  414. package/dist/public/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
  415. package/dist/public/sdk/localOnly-DBQRG6Qh.js +1 -0
  416. package/dist/public/sdk/messages-Cv2j4SKI.js +1 -0
  417. package/dist/public/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
  418. package/dist/public/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
  419. package/dist/public/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
  420. package/dist/public/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
  421. package/dist/public/sdk/nearRpcResults--cBcfmp4.js +1 -0
  422. package/dist/public/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
  423. package/dist/public/sdk/normalization-BGPR6osg.js +1 -0
  424. package/dist/public/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
  425. package/dist/public/sdk/operationFingerprint-DtQb0pdp.js +1 -0
  426. package/dist/public/sdk/passkey-custody-LP4UTFbn.js +1 -0
  427. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
  428. package/dist/public/sdk/prfCache-Mbo7_USg.js +1 -0
  429. package/dist/public/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
  430. package/dist/public/sdk/promptText-s8TQ6ckX.js +1 -0
  431. package/dist/public/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
  432. package/dist/public/sdk/registration-Btozh7uh.js +1 -0
  433. package/dist/public/sdk/registration-CSAG_h4Y.js +1 -0
  434. package/dist/public/sdk/registrationAccounts-DIeEVy6W.js +1 -0
  435. package/dist/public/sdk/registrationIds-BIel5S0i.js +1 -0
  436. package/dist/public/sdk/registrationIntent-DV1GYZ3K.js +1 -0
  437. package/dist/public/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
  438. package/dist/public/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
  439. package/dist/public/sdk/relayerHttp-DaPeS929.js +1 -0
  440. package/dist/public/sdk/routePlan-B_KJaPtm.js +1 -0
  441. package/dist/public/sdk/router-Dd3fFHk3.js +1 -0
  442. package/dist/public/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
  443. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  444. package/dist/public/sdk/runtime-auth-B2M91rSx.js +1 -0
  445. package/dist/public/sdk/runtime-device-link-ojjPSRaG.js +1 -0
  446. package/dist/public/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
  447. package/dist/public/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
  448. package/dist/public/sdk/runtime-export-JXYk8sQ-.js +1 -0
  449. package/dist/public/sdk/runtime-near-BB8AG6dV.js +1 -0
  450. package/dist/public/sdk/runtime-preferences-DKFZYccW.js +1 -0
  451. package/dist/public/sdk/runtime-recovery-C_XjsDBg.js +1 -0
  452. package/dist/public/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
  453. package/dist/public/sdk/runtimeContext-BpObgzbj.js +6 -0
  454. package/dist/public/sdk/runtimeLoader-DjgBf_yF.js +1 -0
  455. package/dist/public/sdk/sdkSentEvents-_RGAEeld.js +1 -0
  456. package/dist/public/sdk/secp256k1-B_6W9QDJ.js +1 -0
  457. package/dist/public/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
  458. package/dist/public/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
  459. package/dist/public/sdk/shared-j_KsFbCT.js +1 -0
  460. package/dist/public/sdk/signEvmFamily-CcLVBm0f.js +1 -0
  461. package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
  462. package/dist/public/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
  463. package/dist/public/sdk/signNear-mWbTE2Dl.js +1 -0
  464. package/dist/public/sdk/signatureUses-CQkkUcwT.js +1 -0
  465. package/dist/public/sdk/signerDomain-BhUTzDmF.js +1 -0
  466. package/dist/public/sdk/signerLoader-By0IY24G.js +1 -0
  467. package/dist/public/sdk/signerSlot-BQ1g5JNV.js +1 -0
  468. package/dist/public/sdk/signingFlow-LUWrZi2d.js +2 -0
  469. package/dist/public/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
  470. package/dist/public/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
  471. package/dist/public/sdk/trace-M34pNGuF.js +1 -0
  472. package/dist/public/sdk/transaction-activity-BbDod7ji.js +1 -0
  473. package/dist/public/sdk/transactionReview-CBE5oH4c.js +1 -0
  474. package/dist/public/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
  475. package/dist/public/sdk/transactionState-9d7f3xVj.js +1 -0
  476. package/dist/public/sdk/tx-confirm-ui.js +12 -158
  477. package/dist/public/sdk/types-M7vxrYtJ.js +1 -0
  478. package/dist/public/sdk/validation-dC1-_uyG.js +1 -0
  479. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -13
  480. package/dist/public/sdk/wallet-iframe-host-full.js +1 -6
  481. package/dist/public/sdk/wallet-iframe-host-near.js +1 -13
  482. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -4
  483. package/dist/public/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
  484. package/dist/public/sdk/wallet-ui.css +1 -5874
  485. package/dist/public/sdk/walletAuthority-CoWSeqvQ.js +1 -0
  486. package/dist/public/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
  487. package/dist/public/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
  488. package/dist/public/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
  489. package/dist/public/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
  490. package/dist/public/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
  491. package/dist/public/sdk/webauthnP256-qu06GNFm.js +1 -0
  492. package/dist/public/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
  493. package/dist/public/sdk/workers/device-linking-key.worker.js +387 -1952
  494. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +1523 -2668
  495. package/dist/public/sdk/workers/ecdsa-online-client.worker.js +1 -273
  496. package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +1 -273
  497. package/dist/public/sdk/workers/email-otp.worker.js +228 -2103
  498. package/dist/public/sdk/workers/email_otp_runtime_bg.wasm +0 -0
  499. package/dist/public/sdk/workers/evm-crypto.worker.js +0 -188
  500. package/dist/public/sdk/workers/evm_crypto.wasm +0 -0
  501. package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
  502. package/dist/public/sdk/workers/near-signer.worker.js +16 -718
  503. package/dist/public/sdk/workers/near_signer.wasm +0 -0
  504. package/dist/public/sdk/workers/passkey-confirm.worker.js +0 -134
  505. package/dist/public/sdk/workers/passkey-mpc-export.worker.js +149 -506
  506. package/dist/public/sdk/workers/passkey-mpc-session.worker.js +0 -134
  507. package/dist/public/sdk/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  508. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  509. package/dist/public/sdk/workers/shamir3pass.worker.js +0 -134
  510. package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
  511. package/dist/public/sdk/workers/tempo-signer.worker.js +0 -134
  512. package/dist/public/sdk/workers/tempo_signer.wasm +0 -0
  513. package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
  514. package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +135 -1635
  515. package/dist/public/sdk/workers/wallet_custody_ceremony.js +0 -14
  516. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  517. package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
  518. package/dist/public/wallet-assets.manifest.json +234 -258
  519. package/dist/public/wallet-service/index.html +4 -4
  520. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
  521. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +1 -0
  522. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
  523. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +0 -11
  524. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +2 -7
  525. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
  526. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
  527. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
  528. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
  529. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -843
  530. package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
  531. package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
  532. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
  533. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
  534. package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
  535. package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
  536. package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
  537. package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
  538. package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
  539. package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
  540. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
  541. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
  542. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
  543. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
  544. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
  545. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
  546. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
  547. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.d.ts +1 -1
  548. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockSubject.d.ts +0 -3
  549. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/challenge.d.ts +0 -4
  550. package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingResume.d.ts +0 -1
  551. package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDeviceFlow.d.ts +2 -0
  552. package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +0 -10
  553. package/dist/types/wallet/src/SeamsWeb/operations/session/thresholdEcdsaProvisioning.d.ts +1 -2
  554. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +0 -2
  555. package/dist/types/wallet/src/SeamsWeb/signingSurface/types.d.ts +1 -1
  556. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/domain.d.ts +0 -8
  557. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.d.ts +1 -2
  558. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
  559. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/hostedWalletSeamsSession.d.ts +0 -1
  560. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.d.ts +17 -0
  561. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +11 -3
  562. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +15 -0
  563. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/exactSessionReconciliation.d.ts +3 -3
  564. package/dist/types/wallet/src/advanced.d.ts +1 -1
  565. package/dist/types/wallet/src/core/browser/walletIframe/events.d.ts +0 -2
  566. package/dist/types/wallet/src/core/indexedDB/index.d.ts +3 -5
  567. package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +0 -30
  568. package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -4
  569. package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -22
  570. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.d.ts +1 -1
  571. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.d.ts +1 -1
  572. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.d.ts +0 -1
  573. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/registrationSetup.d.ts +42 -0
  574. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/signingSessionSeals.d.ts +1 -5
  575. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +5 -1
  576. package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
  577. package/dist/types/wallet/src/core/platform/browser/createBrowserPlatformRuntime.d.ts +1 -6
  578. package/dist/types/wallet/src/core/platform/ecdsaRoleLocalRecords.d.ts +0 -15
  579. package/dist/types/wallet/src/core/platform/index.d.ts +4 -4
  580. package/dist/types/wallet/src/core/platform/ports.d.ts +1 -51
  581. package/dist/types/wallet/src/core/platform/runtime.d.ts +0 -2
  582. package/dist/types/wallet/src/core/platform/secretSources.d.ts +0 -29
  583. package/dist/types/wallet/src/core/rpcClients/near/NearClient.d.ts +1 -1
  584. package/dist/types/wallet/src/core/rpcClients/relayer/passkeyCustodyEnvelope.d.ts +0 -6
  585. package/dist/types/wallet/src/core/rpcClients/relayer/thresholdEcdsa.d.ts +0 -1
  586. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +2 -19
  587. package/dist/types/wallet/src/core/signingEngine/assembly/ports/shared.d.ts +0 -1
  588. package/dist/types/wallet/src/core/signingEngine/assembly/ports/warmSigning.d.ts +0 -2
  589. package/dist/types/wallet/src/core/signingEngine/assembly/warmup.d.ts +0 -1
  590. package/dist/types/wallet/src/core/signingEngine/chains/near/nearSignerWasm.d.ts +0 -10
  591. package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportConfirmation.d.ts +0 -15
  592. package/dist/types/wallet/src/core/signingEngine/flows/registration/accountLifecycle.d.ts +1 -11
  593. package/dist/types/wallet/src/core/signingEngine/flows/registration/public.d.ts +1 -9
  594. package/dist/types/wallet/src/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.d.ts +0 -2
  595. package/dist/types/wallet/src/core/signingEngine/flows/shared/signingStateMachine.d.ts +0 -6
  596. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.d.ts +2 -10
  597. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.d.ts +1 -4
  598. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.d.ts +0 -5
  599. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingMaterials.d.ts +0 -4
  600. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.d.ts +0 -9
  601. package/dist/types/wallet/src/core/signingEngine/interfaces/index.d.ts +0 -1
  602. package/dist/types/wallet/src/core/signingEngine/nonce/NonceCoordinator.d.ts +1 -1
  603. package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +0 -9
  604. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.d.ts +0 -3
  605. package/dist/types/wallet/src/core/signingEngine/session/authority/authorityOperationResolver.d.ts +1 -24
  606. package/dist/types/wallet/src/core/signingEngine/session/availability/readiness.d.ts +0 -2
  607. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaLogin.d.ts +0 -3
  608. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaRecovery.d.ts +0 -5
  609. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ed25519ExportContext.d.ts +0 -1
  610. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/secretEscrow.d.ts +0 -1
  611. package/dist/types/wallet/src/core/signingEngine/session/identity/clientSessionPersistenceState.d.ts +0 -6
  612. package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.d.ts +0 -3
  613. package/dist/types/wallet/src/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.d.ts +0 -3
  614. package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +0 -3
  615. package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionCredential.d.ts +0 -3
  616. package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +0 -6
  617. package/dist/types/wallet/src/core/signingEngine/session/identity/walletUnlockSubject.d.ts +0 -8
  618. package/dist/types/wallet/src/core/signingEngine/session/keyMaterialBrands.d.ts +1 -4
  619. package/dist/types/wallet/src/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.d.ts +1 -1
  620. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.d.ts +0 -3
  621. package/dist/types/wallet/src/core/signingEngine/session/operationState/authorizationAdmission.d.ts +1 -1
  622. package/dist/types/wallet/src/core/signingEngine/session/operationState/preparedOperation.d.ts +0 -2
  623. package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +0 -1
  624. package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.d.ts +0 -2
  625. package/dist/types/wallet/src/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.d.ts +1 -10
  626. package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionRecords.d.ts +2 -2
  627. package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionTransportAuth.d.ts +0 -5
  628. package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +0 -2
  629. package/dist/types/wallet/src/core/signingEngine/session/routerAbSigningWalletSession.d.ts +1 -1
  630. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.d.ts +0 -105
  631. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/public.d.ts +0 -1
  632. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.d.ts +0 -12
  633. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/transitions.d.ts +0 -2
  634. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/types.typecheck.d.ts +1 -10
  635. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodRunners.d.ts +1 -5
  636. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.d.ts +1 -2
  637. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.d.ts +0 -1
  638. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -19
  639. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +0 -10
  640. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.d.ts +1 -15
  641. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/activation.d.ts +0 -4
  642. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/bootstrapSession.d.ts +0 -4
  643. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/connectSession.d.ts +0 -1
  644. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -8
  645. package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.d.ts +1 -4
  646. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.d.ts +0 -1
  647. package/dist/types/wallet/src/core/signingEngine/walletCustody/emailOtpLink.d.ts +0 -1
  648. package/dist/types/wallet/src/core/signingEngine/walletCustody/openCustodyCache.d.ts +0 -3
  649. package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +0 -3
  650. package/dist/types/wallet/src/core/signingEngine/walletCustody/registrationCeremony.d.ts +0 -1
  651. package/dist/types/wallet/src/core/signingEngine/webauthnAuth/walletOriginWebAuthn.d.ts +8 -0
  652. package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +0 -2
  653. package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaClientWorkerChannels.d.ts +0 -8
  654. package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
  655. package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +6 -109
  656. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/requests.d.ts +0 -5
  657. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +0 -1
  658. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/custodyRestore.d.ts +0 -8
  659. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/otpVerification.d.ts +0 -1
  660. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/payloadParsing.d.ts +0 -2
  661. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +0 -1
  662. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/near-signer.worker.d.ts +3 -31
  663. package/dist/types/wallet/src/core/types/accountIds.d.ts +1 -1
  664. package/dist/types/wallet/src/core/types/index.d.ts +0 -18
  665. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +1 -2
  666. package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +0 -5
  667. package/dist/types/wallet/src/core/types/signer-worker.d.ts +75 -134
  668. package/dist/types/wallet/src/react/components/AccountMenuButton/Toggle.d.ts +0 -15
  669. package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +0 -19
  670. package/dist/types/wallet/src/utils/qrScanner.d.ts +1 -21
  671. package/dist/workers/device-linking-key.worker.js +387 -1952
  672. package/dist/workers/ecdsa-derivation-client.worker.js +1523 -2668
  673. package/dist/workers/ecdsa-online-client.worker.js +1 -273
  674. package/dist/workers/ecdsa-presign-client.worker.js +1 -273
  675. package/dist/workers/email-otp.worker.js +228 -2103
  676. package/dist/workers/email_otp_runtime_bg.wasm +0 -0
  677. package/dist/workers/evm-crypto.worker.js +0 -188
  678. package/dist/workers/evm_crypto.wasm +0 -0
  679. package/dist/workers/evm_crypto_bg.wasm +0 -0
  680. package/dist/workers/near-signer.worker.js +16 -718
  681. package/dist/workers/near_signer.wasm +0 -0
  682. package/dist/workers/passkey-confirm.worker.js +0 -134
  683. package/dist/workers/passkey-mpc-export.worker.js +149 -506
  684. package/dist/workers/passkey-mpc-session.worker.js +0 -134
  685. package/dist/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  686. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  687. package/dist/workers/shamir3pass.worker.js +0 -134
  688. package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
  689. package/dist/workers/tempo-signer.worker.js +0 -134
  690. package/dist/workers/tempo_signer.wasm +0 -0
  691. package/dist/workers/tempo_signer_bg.wasm +0 -0
  692. package/dist/workers/wallet-custody-ceremony.worker.js +135 -1635
  693. package/dist/workers/wallet_custody_ceremony.js +0 -14
  694. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  695. package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
  696. package/package.json +1 -14
  697. package/dist/esm/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
  698. package/dist/esm/components/AccountMenuButton/AccountsSection.css +0 -81
  699. package/dist/esm/components/AccountMenuButton/ExportKeysSection.css +0 -96
  700. package/dist/esm/components/AccountMenuButton/LinkedDevicesModal.css +0 -612
  701. package/dist/esm/components/AccountMenuButton/MenuItem.css +0 -198
  702. package/dist/esm/components/AccountMenuButton/ProfileDropdown.css +0 -80
  703. package/dist/esm/components/AccountMenuButton/TransactionSettingsSection.css +0 -107
  704. package/dist/esm/components/AccountMenuButton/UserAccountButton.css +0 -177
  705. package/dist/esm/components/AccountMenuButton/WalletSettingsLayout.css +0 -456
  706. package/dist/esm/components/AccountMenuButton/Web3AuthProfileButton.css +0 -23
  707. package/dist/esm/components/AccountMenuButton/icons/TouchIcon.css +0 -46
  708. package/dist/esm/components/QRCodeScanner.css +0 -487
  709. package/dist/esm/components/ShowQRCode.css +0 -331
  710. package/dist/esm/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.js +0 -236
  711. package/dist/esm/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
  712. package/dist/esm/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
  713. package/dist/esm/plugins/shared-ts/src/utils/base58.js +0 -1
  714. package/dist/esm/plugins/shared-ts/src/utils/near.js +0 -1
  715. package/dist/esm/plugins/shared-ts/src/utils/validation.js +0 -2
  716. package/dist/esm/react/SeamsWeb/SeamsWeb.js +0 -1918
  717. package/dist/esm/react/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +0 -817
  718. package/dist/esm/react/SeamsWeb/assembly/browserWorkerWarmupPolicy.js +0 -31
  719. package/dist/esm/react/SeamsWeb/assembly/configureBrowserIndexedDB.js +0 -10
  720. package/dist/esm/react/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +0 -95
  721. package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningRuntime.js +0 -34
  722. package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningStores.js +0 -39
  723. package/dist/esm/react/SeamsWeb/assembly/createBrowserStepUpRuntime.js +0 -34
  724. package/dist/esm/react/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -31
  725. package/dist/esm/react/SeamsWeb/assembly/createWalletIframeOverlayState.js +0 -9
  726. package/dist/esm/react/SeamsWeb/assembly/createWalletIframeRouter.js +0 -44
  727. package/dist/esm/react/SeamsWeb/assembly/initializeBrowserSigningRuntime.js +0 -19
  728. package/dist/esm/react/SeamsWeb/assembly/runtimeConfig.js +0 -12
  729. package/dist/esm/react/SeamsWeb/operations/auth/login.js +0 -4408
  730. package/dist/esm/react/SeamsWeb/operations/auth/scheduleEcdsaSessionPresignaturePrefill.js +0 -41
  731. package/dist/esm/react/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.js +0 -64
  732. package/dist/esm/react/SeamsWeb/operations/auth/walletAuth.js +0 -142
  733. package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +0 -33
  734. package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockSubject.js +0 -294
  735. package/dist/esm/react/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.js +0 -72
  736. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +0 -191
  737. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/challenge.js +0 -247
  738. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +0 -572
  739. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/localEmailOtpProjection.js +0 -69
  740. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationAuthority.js +0 -62
  741. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationOffer.js +0 -69
  742. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/walletActivation.js +0 -95
  743. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/addPasskey.js +0 -260
  744. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/ecdsaBootstrap.js +0 -17
  745. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/exactPasskeyAuthority.js +0 -34
  746. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localPasskeyProjection.js +0 -117
  747. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localUnlock.js +0 -16
  748. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/loginAssertion.js +0 -25
  749. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/registrationAuthority.js +0 -84
  750. package/dist/esm/react/SeamsWeb/operations/authMethods/revokeAuthMethod.js +0 -205
  751. package/dist/esm/react/SeamsWeb/operations/authMethods/sourcePasskeyProof.js +0 -12
  752. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.js +0 -444
  753. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingComposition.js +0 -106
  754. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingEd25519ExportRoot.js +0 -194
  755. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +0 -524
  756. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingOwnerTransport.js +0 -135
  757. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingResume.js +0 -215
  758. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetCredential.js +0 -63
  759. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetEd25519ExportRoot.js +0 -61
  760. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +0 -337
  761. package/dist/esm/react/SeamsWeb/operations/devices/linkDevice.js +0 -75
  762. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlow.js +0 -1358
  763. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlowSupport.js +0 -143
  764. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceTargetActivation.js +0 -119
  765. package/dist/esm/react/SeamsWeb/operations/devices/scanDevice.js +0 -384
  766. package/dist/esm/react/SeamsWeb/operations/devices/walletHostComposition.js +0 -130
  767. package/dist/esm/react/SeamsWeb/operations/devices/walletHostOwnerAuthority.js +0 -191
  768. package/dist/esm/react/SeamsWeb/operations/evm/index.js +0 -35
  769. package/dist/esm/react/SeamsWeb/operations/near/actions.js +0 -484
  770. package/dist/esm/react/SeamsWeb/operations/near/commandSubject.js +0 -14
  771. package/dist/esm/react/SeamsWeb/operations/near/delegateAction.js +0 -247
  772. package/dist/esm/react/SeamsWeb/operations/near/index.js +0 -37
  773. package/dist/esm/react/SeamsWeb/operations/near/signNEP413.js +0 -117
  774. package/dist/esm/react/SeamsWeb/operations/near/signingEventHelpers.js +0 -15
  775. package/dist/esm/react/SeamsWeb/operations/recovery/accountSync.js +0 -21
  776. package/dist/esm/react/SeamsWeb/operations/recovery/recoveryWalletBinding.js +0 -43
  777. package/dist/esm/react/SeamsWeb/operations/recovery/syncAccount.js +0 -914
  778. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCodeBackup.js +0 -100
  779. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCommit.js +0 -477
  780. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +0 -383
  781. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryJournal.js +0 -118
  782. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryRotation.js +0 -214
  783. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecovery.js +0 -184
  784. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryUnlock.js +0 -247
  785. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryValidation.js +0 -134
  786. package/dist/esm/react/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +0 -363
  787. package/dist/esm/react/SeamsWeb/operations/registration/registration.js +0 -3818
  788. package/dist/esm/react/SeamsWeb/operations/registration/registrationEd25519Yao.js +0 -166
  789. package/dist/esm/react/SeamsWeb/operations/registration/registrationSignerSet.js +0 -60
  790. package/dist/esm/react/SeamsWeb/operations/registration/registrationStrictEcdsa.js +0 -343
  791. package/dist/esm/react/SeamsWeb/operations/registration/registrationTerminalCommit.js +0 -296
  792. package/dist/esm/react/SeamsWeb/operations/registration/registrationTiming.js +0 -682
  793. package/dist/esm/react/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +0 -40
  794. package/dist/esm/react/SeamsWeb/operations/session/thresholdWarmSessionBootstrap.js +0 -20
  795. package/dist/esm/react/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +0 -568
  796. package/dist/esm/react/SeamsWeb/operations/tempo/feeTokenPreference.js +0 -67
  797. package/dist/esm/react/SeamsWeb/operations/tempo/index.js +0 -39
  798. package/dist/esm/react/SeamsWeb/publicApi/auth.js +0 -24
  799. package/dist/esm/react/SeamsWeb/publicApi/awaitNearReady.js +0 -72
  800. package/dist/esm/react/SeamsWeb/publicApi/capabilitySelection.js +0 -63
  801. package/dist/esm/react/SeamsWeb/publicApi/chainTargets.js +0 -48
  802. package/dist/esm/react/SeamsWeb/publicApi/createPublicApi.js +0 -133
  803. package/dist/esm/react/SeamsWeb/publicApi/currentWallet.js +0 -46
  804. package/dist/esm/react/SeamsWeb/publicApi/devices.js +0 -83
  805. package/dist/esm/react/SeamsWeb/publicApi/evm.js +0 -103
  806. package/dist/esm/react/SeamsWeb/publicApi/keyExport.js +0 -90
  807. package/dist/esm/react/SeamsWeb/publicApi/near.js +0 -449
  808. package/dist/esm/react/SeamsWeb/publicApi/preferences.js +0 -61
  809. package/dist/esm/react/SeamsWeb/publicApi/recovery.js +0 -19
  810. package/dist/esm/react/SeamsWeb/publicApi/tempo.js +0 -244
  811. package/dist/esm/react/SeamsWeb/publicApi/transactionReview.js +0 -12
  812. package/dist/esm/react/SeamsWeb/publicApi/types.js +0 -10
  813. package/dist/esm/react/SeamsWeb/signingSurface/BrowserSigningSurface.js +0 -3917
  814. package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +0 -530
  815. package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +0 -417
  816. package/dist/esm/react/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +0 -134
  817. package/dist/esm/react/SeamsWeb/walletIframe/client/router.js +0 -3368
  818. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/domain.js +0 -288
  819. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/geometry.js +0 -128
  820. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/renderer.js +0 -119
  821. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.js +0 -125
  822. package/dist/esm/react/SeamsWeb/walletIframe/client/transactionReviewReservation.js +0 -96
  823. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -252
  824. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.js +0 -71
  825. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +0 -211
  826. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
  827. package/dist/esm/react/SeamsWeb/walletIframe/coordinator.js +0 -235
  828. package/dist/esm/react/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.js +0 -29
  829. package/dist/esm/react/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +0 -158
  830. package/dist/esm/react/SeamsWeb/walletIframe/shared/exactSessionState.js +0 -605
  831. package/dist/esm/react/SeamsWeb/walletIframe/shared/is-dev-host.js +0 -11
  832. package/dist/esm/react/SeamsWeb/walletIframe/shared/messages.js +0 -588
  833. package/dist/esm/react/SeamsWeb/walletIframe/shared/transactionReview.js +0 -83
  834. package/dist/esm/react/SeamsWeb/walletIframe/shared/unlockOptions.js +0 -54
  835. package/dist/esm/react/base-styles.js +0 -13
  836. package/dist/esm/react/build-paths.js +0 -109
  837. package/dist/esm/react/config.js +0 -37
  838. package/dist/esm/react/core/accountData/near/accountProjection.js +0 -119
  839. package/dist/esm/react/core/accountData/near/accountRefs.js +0 -21
  840. package/dist/esm/react/core/accountData/near/keyMaterial.js +0 -171
  841. package/dist/esm/react/core/accountData/near/profileId.js +0 -24
  842. package/dist/esm/react/core/browser/walletIframe/csp-stylesheet.js +0 -189
  843. package/dist/esm/react/core/browser/walletIframe/events.js +0 -10
  844. package/dist/esm/react/core/browser/walletIframe/host-mode.js +0 -19
  845. package/dist/esm/react/core/browser/walletIframe/hostVariant.js +0 -16
  846. package/dist/esm/react/core/config/chains.js +0 -90
  847. package/dist/esm/react/core/config/configBuilder.js +0 -231
  848. package/dist/esm/react/core/config/configHelpers.js +0 -183
  849. package/dist/esm/react/core/config/defaultConfigs.js +0 -120
  850. package/dist/esm/react/core/config/defineConfig.js +0 -48
  851. package/dist/esm/react/core/config/managedRuntimeScope.js +0 -16
  852. package/dist/esm/react/core/indexedDB/accountKeyMaterial.js +0 -68
  853. package/dist/esm/react/core/indexedDB/accountSignerLifecycle.js +0 -143
  854. package/dist/esm/react/core/indexedDB/index.js +0 -60
  855. package/dist/esm/react/core/indexedDB/keyMaterialEnvelope.js +0 -69
  856. package/dist/esm/react/core/indexedDB/lastProfileState.js +0 -22
  857. package/dist/esm/react/core/indexedDB/linkedAuthoritySignerMaterial.js +0 -291
  858. package/dist/esm/react/core/indexedDB/nonceLaneCoordinationStore.js +0 -115
  859. package/dist/esm/react/core/indexedDB/normalization.js +0 -24
  860. package/dist/esm/react/core/indexedDB/pendingWalletRecoveryCommit.js +0 -477
  861. package/dist/esm/react/core/indexedDB/pendingWalletRegistrationCommit.js +0 -745
  862. package/dist/esm/react/core/indexedDB/profileAccountProjection.js +0 -70
  863. package/dist/esm/react/core/indexedDB/schemaNames.js +0 -845
  864. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.js +0 -209
  865. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +0 -848
  866. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +0 -1215
  867. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +0 -235
  868. package/dist/esm/react/core/indexedDB/seamsWalletDB/manager.js +0 -140
  869. package/dist/esm/react/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -145
  870. package/dist/esm/react/core/indexedDB/seamsWalletDB/repositories.js +0 -4747
  871. package/dist/esm/react/core/indexedDB/seamsWalletDB/schema.js +0 -23
  872. package/dist/esm/react/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -205
  873. package/dist/esm/react/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +0 -198
  874. package/dist/esm/react/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +0 -569
  875. package/dist/esm/react/core/indexedDB/singletons.js +0 -7
  876. package/dist/esm/react/core/indexedDB/unifiedIndexedDBManager.js +0 -578
  877. package/dist/esm/react/core/indexedDB/walletCustodyEd25519MaterialRecord.js +0 -60
  878. package/dist/esm/react/core/platform/browser/createBrowserPlatformRuntime.js +0 -552
  879. package/dist/esm/react/core/platform/secretSources.js +0 -111
  880. package/dist/esm/react/core/platform/signerCoreCommandAdapters.js +0 -122
  881. package/dist/esm/react/core/rpcClients/evm/EvmClient.js +0 -549
  882. package/dist/esm/react/core/rpcClients/evm/nonceBackend.js +0 -279
  883. package/dist/esm/react/core/rpcClients/near/NearClient.js +0 -56
  884. package/dist/esm/react/core/rpcClients/near/NearRpcError.js +0 -105
  885. package/dist/esm/react/core/rpcClients/near/rpcCalls.js +0 -376
  886. package/dist/esm/react/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.js +0 -67
  887. package/dist/esm/react/core/rpcClients/relayer/passkeyCustodyEnvelope.js +0 -228
  888. package/dist/esm/react/core/rpcClients/relayer/registrationSignerSetRequest.js +0 -8
  889. package/dist/esm/react/core/rpcClients/relayer/relayerHttp.js +0 -26
  890. package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigning.js +0 -812
  891. package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigningValidation.js +0 -23
  892. package/dist/esm/react/core/rpcClients/relayer/sealedRefreshCapabilities.js +0 -148
  893. package/dist/esm/react/core/rpcClients/relayer/thresholdEcdsa.js +0 -237
  894. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryFinalize.js +0 -174
  895. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryGoogleEmailOtp.js +0 -161
  896. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryPrepare.js +0 -295
  897. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryRotate.js +0 -311
  898. package/dist/esm/react/core/rpcClients/relayer/walletRegistration.js +0 -2349
  899. package/dist/esm/react/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +0 -719
  900. package/dist/esm/react/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +0 -214
  901. package/dist/esm/react/core/runtime/createSigningRuntime.js +0 -100
  902. package/dist/esm/react/core/signingEngine/assembly/createManagers.js +0 -80
  903. package/dist/esm/react/core/signingEngine/assembly/createPorts.js +0 -54
  904. package/dist/esm/react/core/signingEngine/assembly/ports/emailOtp.js +0 -30
  905. package/dist/esm/react/core/signingEngine/assembly/ports/evmFamily.js +0 -73
  906. package/dist/esm/react/core/signingEngine/assembly/ports/near.js +0 -21
  907. package/dist/esm/react/core/signingEngine/assembly/ports/recovery.js +0 -75
  908. package/dist/esm/react/core/signingEngine/assembly/ports/registration.js +0 -22
  909. package/dist/esm/react/core/signingEngine/assembly/ports/session.js +0 -25
  910. package/dist/esm/react/core/signingEngine/assembly/ports/shared.js +0 -40
  911. package/dist/esm/react/core/signingEngine/assembly/ports/stepUpRuntime.js +0 -67
  912. package/dist/esm/react/core/signingEngine/assembly/ports/warmSigning.js +0 -92
  913. package/dist/esm/react/core/signingEngine/assembly/warmup.js +0 -68
  914. package/dist/esm/react/core/signingEngine/chains/evm/bytes.js +0 -22
  915. package/dist/esm/react/core/signingEngine/chains/evm/display/calldata.js +0 -25
  916. package/dist/esm/react/core/signingEngine/chains/evm/display/evmTx.js +0 -119
  917. package/dist/esm/react/core/signingEngine/chains/evm/display/functionSelectors.js +0 -72
  918. package/dist/esm/react/core/signingEngine/chains/evm/display/gas.js +0 -19
  919. package/dist/esm/react/core/signingEngine/chains/evm/display/normalization.js +0 -23
  920. package/dist/esm/react/core/signingEngine/chains/evm/evmAdapter.js +0 -44
  921. package/dist/esm/react/core/signingEngine/chains/evm/evmCryptoWasm.js +0 -198
  922. package/dist/esm/react/core/signingEngine/chains/near/display.js +0 -248
  923. package/dist/esm/react/core/signingEngine/chains/near/nearSignerWasm.js +0 -170
  924. package/dist/esm/react/core/signingEngine/chains/near/payloads.js +0 -58
  925. package/dist/esm/react/core/signingEngine/chains/tempo/display.js +0 -130
  926. package/dist/esm/react/core/signingEngine/chains/tempo/feeToken.js +0 -187
  927. package/dist/esm/react/core/signingEngine/chains/tempo/tempoAdapter.js +0 -49
  928. package/dist/esm/react/core/signingEngine/chains/tempo/tempoSignerWasm.js +0 -90
  929. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -428
  930. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportFlow.js +0 -660
  931. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +0 -250
  932. package/dist/esm/react/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +0 -353
  933. package/dist/esm/react/core/signingEngine/flows/recovery/exportKeypairOperation.js +0 -213
  934. package/dist/esm/react/core/signingEngine/flows/recovery/exportLaneSelection.js +0 -283
  935. package/dist/esm/react/core/signingEngine/flows/recovery/keyExportConfirmation.js +0 -325
  936. package/dist/esm/react/core/signingEngine/flows/recovery/keyExportFlow.js +0 -81
  937. package/dist/esm/react/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +0 -192
  938. package/dist/esm/react/core/signingEngine/flows/recovery/public.js +0 -26
  939. package/dist/esm/react/core/signingEngine/flows/recovery/stepUpAuthorization.js +0 -139
  940. package/dist/esm/react/core/signingEngine/flows/registration/accountLifecycle.js +0 -1098
  941. package/dist/esm/react/core/signingEngine/flows/registration/nearProvisioningRegistry.js +0 -79
  942. package/dist/esm/react/core/signingEngine/flows/registration/public.js +0 -85
  943. package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaRegistrationSessions.js +0 -77
  944. package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaWalletRecords.js +0 -15
  945. package/dist/esm/react/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +0 -83
  946. package/dist/esm/react/core/signingEngine/flows/registration/services/registrationAccounts.js +0 -30
  947. package/dist/esm/react/core/signingEngine/flows/registration/session.js +0 -24
  948. package/dist/esm/react/core/signingEngine/flows/shared/signingConfirmation.js +0 -194
  949. package/dist/esm/react/core/signingEngine/flows/shared/signingStateMachine.js +0 -485
  950. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/accountAuth.js +0 -12
  951. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/addresses.js +0 -10
  952. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/authPlanning.js +0 -139
  953. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaLanes.js +0 -102
  954. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +0 -233
  955. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpPublic.js +0 -123
  956. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +0 -227
  957. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/errors.js +0 -127
  958. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/events.js +0 -39
  959. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/evmNonceLifecycle.js +0 -49
  960. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/executorThresholdState.js +0 -22
  961. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.js +0 -98
  962. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshWalletSessionRetry.js +0 -76
  963. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceLifecycleAdapter.js +0 -245
  964. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceResolution.js +0 -91
  965. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/operationIds.js +0 -33
  966. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/preparedSigning.js +0 -376
  967. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -191
  968. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/requireEvmFamilyStepUpAuth.js +0 -128
  969. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +0 -510
  970. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamilyWithUiConfirmForTempo.js +0 -65
  971. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmWithUiConfirm.js +0 -26
  972. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signatureUses.js +0 -12
  973. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signerLoader.js +0 -25
  974. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +0 -82
  975. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +0 -182
  976. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.js +0 -84
  977. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlow.js +0 -633
  978. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +0 -392
  979. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/stepUpAuthorization.js +0 -56
  980. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/tempoNonceLifecycle.js +0 -47
  981. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/thresholdAdmission.js +0 -87
  982. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +0 -140
  983. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/types.js +0 -20
  984. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/webauthnP256KeyRef.js +0 -33
  985. package/dist/esm/react/core/signingEngine/flows/signNear/implicitAccountFunding.js +0 -202
  986. package/dist/esm/react/core/signingEngine/flows/signNear/nearSigningFlow.js +0 -56
  987. package/dist/esm/react/core/signingEngine/flows/signNear/requireNearStepUpAuth.js +0 -102
  988. package/dist/esm/react/core/signingEngine/flows/signNear/shared/confirmationProgress.js +0 -28
  989. package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.js +0 -101
  990. package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +0 -822
  991. package/dist/esm/react/core/signingEngine/flows/signNear/shared/implicitAccountFundingPort.js +0 -24
  992. package/dist/esm/react/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.js +0 -68
  993. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -343
  994. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingMaterials.js +0 -25
  995. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +0 -138
  996. package/dist/esm/react/core/signingEngine/flows/signNear/signDelegate.js +0 -290
  997. package/dist/esm/react/core/signingEngine/flows/signNear/signNear.js +0 -1238
  998. package/dist/esm/react/core/signingEngine/flows/signNear/signNep413.js +0 -144
  999. package/dist/esm/react/core/signingEngine/flows/signNear/signTransactions.js +0 -897
  1000. package/dist/esm/react/core/signingEngine/flows/signNear/signatureUses.js +0 -12
  1001. package/dist/esm/react/core/signingEngine/flows/signNear/stepUpAuthorization.js +0 -42
  1002. package/dist/esm/react/core/signingEngine/interfaces/accountAuthMetadata.js +0 -14
  1003. package/dist/esm/react/core/signingEngine/interfaces/ecdsaChainTarget.js +0 -142
  1004. package/dist/esm/react/core/signingEngine/interfaces/operationStepUpPreparation.js +0 -18
  1005. package/dist/esm/react/core/signingEngine/nonce/NonceCoordinator.js +0 -1026
  1006. package/dist/esm/react/core/signingEngine/nonce/evmNonceLane.js +0 -182
  1007. package/dist/esm/react/core/signingEngine/nonce/nearNonceLane.js +0 -669
  1008. package/dist/esm/react/core/signingEngine/nonce/nearNonceLaneIdentity.js +0 -24
  1009. package/dist/esm/react/core/signingEngine/nonce/nonceCoordinationRecordBoundary.js +0 -216
  1010. package/dist/esm/react/core/signingEngine/nonce/nonceDiagnostics.js +0 -232
  1011. package/dist/esm/react/core/signingEngine/nonce/nonceLaneKeys.js +0 -110
  1012. package/dist/esm/react/core/signingEngine/nonce/nonceLeaseState.js +0 -128
  1013. package/dist/esm/react/core/signingEngine/nonce/nonceTypes.js +0 -59
  1014. package/dist/esm/react/core/signingEngine/nonce/nonceUtils.js +0 -33
  1015. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/httpRequest.js +0 -74
  1016. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -217
  1017. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +0 -1218
  1018. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignatureRefillProgress.js +0 -53
  1019. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -22
  1020. package/dist/esm/react/core/signingEngine/session/SigningSessionCoordinator.js +0 -347
  1021. package/dist/esm/react/core/signingEngine/session/authority/authorityOperationResolver.js +0 -165
  1022. package/dist/esm/react/core/signingEngine/session/availability/availableSigningLanes.js +0 -1064
  1023. package/dist/esm/react/core/signingEngine/session/availability/canonicalLaneInventory.js +0 -127
  1024. package/dist/esm/react/core/signingEngine/session/availability/clientSessionExpiryInvalidator.js +0 -72
  1025. package/dist/esm/react/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +0 -214
  1026. package/dist/esm/react/core/signingEngine/session/availability/readiness.js +0 -464
  1027. package/dist/esm/react/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -131
  1028. package/dist/esm/react/core/signingEngine/session/emailOtp/challengeDelivery.js +0 -56
  1029. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +0 -106
  1030. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -50
  1031. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLogin.js +0 -936
  1032. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaPublication.js +0 -414
  1033. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaRecovery.js +0 -268
  1034. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaSigningSessionAuthority.js +0 -95
  1035. package/dist/esm/react/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -376
  1036. package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecovery.js +0 -286
  1037. package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecoveryRuntime.js +0 -50
  1038. package/dist/esm/react/core/signingEngine/session/emailOtp/persistedSnapshot.js +0 -22
  1039. package/dist/esm/react/core/signingEngine/session/emailOtp/publicTypes.js +0 -38
  1040. package/dist/esm/react/core/signingEngine/session/emailOtp/routePlan.js +0 -60
  1041. package/dist/esm/react/core/signingEngine/session/emailOtp/runtimeConfig.js +0 -24
  1042. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRefreshPolicy.js +0 -49
  1043. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRestoreOrchestrator.js +0 -234
  1044. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRuntimePurpose.js +0 -16
  1045. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedSessionRegistry.js +0 -40
  1046. package/dist/esm/react/core/signingEngine/session/emailOtp/status.js +0 -72
  1047. package/dist/esm/react/core/signingEngine/session/emailOtp/walletUnlock.js +0 -168
  1048. package/dist/esm/react/core/signingEngine/session/emailOtp/warmSessionRuntime.js +0 -70
  1049. package/dist/esm/react/core/signingEngine/session/emailOtp/workerEnrollment.js +0 -159
  1050. package/dist/esm/react/core/signingEngine/session/emailOtp/workerRequests.js +0 -84
  1051. package/dist/esm/react/core/signingEngine/session/emailOtp/zeroize.js +0 -9
  1052. package/dist/esm/react/core/signingEngine/session/identity/clientSessionPersistenceState.js +0 -95
  1053. package/dist/esm/react/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.js +0 -23
  1054. package/dist/esm/react/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -265
  1055. package/dist/esm/react/core/signingEngine/session/identity/exactSigningLaneIdentity.js +0 -338
  1056. package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -106
  1057. package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionReader.js +0 -54
  1058. package/dist/esm/react/core/signingEngine/session/identity/laneIdentity.js +0 -168
  1059. package/dist/esm/react/core/signingEngine/session/identity/ownerLaneScope.js +0 -185
  1060. package/dist/esm/react/core/signingEngine/session/identity/selectLane.js +0 -335
  1061. package/dist/esm/react/core/signingEngine/session/identity/signingLaneAuthBinding.js +0 -29
  1062. package/dist/esm/react/core/signingEngine/session/keyMaterialBrands.js +0 -75
  1063. package/dist/esm/react/core/signingEngine/session/lanes/walletExecutionLaneHydration.js +0 -194
  1064. package/dist/esm/react/core/signingEngine/session/lifecycle/canonicalWalletSessionStatus.js +0 -32
  1065. package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionFailure.js +0 -69
  1066. package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionStatus.js +0 -123
  1067. package/dist/esm/react/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.js +0 -171
  1068. package/dist/esm/react/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +0 -318
  1069. package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityHydration.js +0 -75
  1070. package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityManifest.js +0 -498
  1071. package/dist/esm/react/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +0 -122
  1072. package/dist/esm/react/core/signingEngine/session/material/ecdsaSealedRuntime.js +0 -197
  1073. package/dist/esm/react/core/signingEngine/session/material/ecdsaSigningCapability.js +0 -231
  1074. package/dist/esm/react/core/signingEngine/session/material/linkedEcdsaHolderRuntime.js +0 -36
  1075. package/dist/esm/react/core/signingEngine/session/material/mpcCapabilityHydration.js +0 -79
  1076. package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoMaterialActivation.js +0 -80
  1077. package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.js +0 -122
  1078. package/dist/esm/react/core/signingEngine/session/material/restorableMpcMaterialRef.internal.js +0 -21
  1079. package/dist/esm/react/core/signingEngine/session/material/walletSigningStateFailure.js +0 -84
  1080. package/dist/esm/react/core/signingEngine/session/operationState/authorizationAdmission.js +0 -98
  1081. package/dist/esm/react/core/signingEngine/session/operationState/lanes.js +0 -127
  1082. package/dist/esm/react/core/signingEngine/session/operationState/preparedOperation.js +0 -38
  1083. package/dist/esm/react/core/signingEngine/session/operationState/trace.js +0 -94
  1084. package/dist/esm/react/core/signingEngine/session/operationState/transactionState.js +0 -106
  1085. package/dist/esm/react/core/signingEngine/session/operationState/types.js +0 -88
  1086. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaBootstrap.js +0 -187
  1087. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -206
  1088. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaRecovery.js +0 -87
  1089. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaSessionProvision.js +0 -224
  1090. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaWarmCapabilityBootstrap.js +0 -147
  1091. package/dist/esm/react/core/signingEngine/session/passkey/ed25519Provisioner.js +0 -55
  1092. package/dist/esm/react/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -229
  1093. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +0 -537
  1094. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +0 -94
  1095. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoSealedSession.js +0 -57
  1096. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +0 -314
  1097. package/dist/esm/react/core/signingEngine/session/passkey/passkeyCustodySessionCache.js +0 -90
  1098. package/dist/esm/react/core/signingEngine/session/passkey/prfCache.js +0 -60
  1099. package/dist/esm/react/core/signingEngine/session/passkey/public.js +0 -15
  1100. package/dist/esm/react/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.js +0 -247
  1101. package/dist/esm/react/core/signingEngine/session/passkey/warmSessionHydration.js +0 -9
  1102. package/dist/esm/react/core/signingEngine/session/persistence/clientSessionPersistence.js +0 -143
  1103. package/dist/esm/react/core/signingEngine/session/persistence/durableSealedSessionCommands.js +0 -30
  1104. package/dist/esm/react/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.js +0 -316
  1105. package/dist/esm/react/core/signingEngine/session/persistence/ecdsaSealedRecordKey.js +0 -20
  1106. package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionRecords.js +0 -761
  1107. package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionStore.js +0 -518
  1108. package/dist/esm/react/core/signingEngine/session/persistence/walletSessionAuthorizationProjection.js +0 -51
  1109. package/dist/esm/react/core/signingEngine/session/planning/operationFingerprint.js +0 -30
  1110. package/dist/esm/react/core/signingEngine/session/planning/operationIdBinding.js +0 -36
  1111. package/dist/esm/react/core/signingEngine/session/planning/planner.js +0 -98
  1112. package/dist/esm/react/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -165
  1113. package/dist/esm/react/core/signingEngine/session/public.js +0 -44
  1114. package/dist/esm/react/core/signingEngine/session/routerAbSigningWalletSession.js +0 -125
  1115. package/dist/esm/react/core/signingEngine/session/sealedRecovery/exactRecordLookup.js +0 -148
  1116. package/dist/esm/react/core/signingEngine/session/sealedRecovery/materialActivationKey.js +0 -22
  1117. package/dist/esm/react/core/signingEngine/session/sealedRecovery/recoveryRecord.js +0 -248
  1118. package/dist/esm/react/core/signingEngine/session/sealedRecovery/restoreCoordinator.js +0 -229
  1119. package/dist/esm/react/core/signingEngine/session/userPreferences.js +0 -212
  1120. package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReader.js +0 -62
  1121. package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReaderCore.js +0 -293
  1122. package/dist/esm/react/core/signingEngine/session/warmCapabilities/clearVolatileWarmSigningMaterial.js +0 -44
  1123. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapPersistence.js +0 -107
  1124. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapQueue.js +0 -22
  1125. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefill.js +0 -93
  1126. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +0 -50
  1127. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.js +0 -9
  1128. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.js +0 -251
  1129. package/dist/esm/react/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +0 -98
  1130. package/dist/esm/react/core/signingEngine/session/warmCapabilities/public.js +0 -31
  1131. package/dist/esm/react/core/signingEngine/session/warmCapabilities/readModel.js +0 -161
  1132. package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.js +0 -256
  1133. package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +0 -73
  1134. package/dist/esm/react/core/signingEngine/session/warmCapabilities/sealedRefreshParity.js +0 -67
  1135. package/dist/esm/react/core/signingEngine/session/warmCapabilities/statusReader.js +0 -100
  1136. package/dist/esm/react/core/signingEngine/session/warmCapabilities/transitions.js +0 -51
  1137. package/dist/esm/react/core/signingEngine/session/warmCapabilities/types.js +0 -122
  1138. package/dist/esm/react/core/signingEngine/session/warmCapabilities/volatileWarmMaterialCommands.js +0 -45
  1139. package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmCommon.js +0 -89
  1140. package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmTypes.js +0 -12
  1141. package/dist/esm/react/core/signingEngine/stepUpConfirmation/confirmOperation.js +0 -51
  1142. package/dist/esm/react/core/signingEngine/stepUpConfirmation/intentDigestPreparation.js +0 -29
  1143. package/dist/esm/react/core/signingEngine/stepUpConfirmation/methodSelection.js +0 -41
  1144. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -32
  1145. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/exportAuthorization.js +0 -108
  1146. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/promptText.js +0 -8
  1147. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/signingPrompt.js +0 -15
  1148. package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +0 -295
  1149. package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -170
  1150. package/dist/esm/react/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +0 -63
  1151. package/dist/esm/react/core/signingEngine/stepUpConfirmation/types.js +0 -29
  1152. package/dist/esm/react/core/signingEngine/stepUpConfirmation/userConfirmationType.js +0 -15
  1153. package/dist/esm/react/core/signingEngine/threshold/commitQueueShared.js +0 -139
  1154. package/dist/esm/react/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +0 -619
  1155. package/dist/esm/react/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -70
  1156. package/dist/esm/react/core/signingEngine/threshold/ecdsa/activation.js +0 -267
  1157. package/dist/esm/react/core/signingEngine/threshold/ecdsa/bootstrapSession.js +0 -119
  1158. package/dist/esm/react/core/signingEngine/threshold/ecdsa/operationStepUp.js +0 -110
  1159. package/dist/esm/react/core/signingEngine/threshold/ecdsa/postRegistrationSessionActivation.js +0 -132
  1160. package/dist/esm/react/core/signingEngine/threshold/ecdsa/signingQueue.js +0 -16
  1161. package/dist/esm/react/core/signingEngine/threshold/ed25519/commitQueue.js +0 -16
  1162. package/dist/esm/react/core/signingEngine/threshold/ed25519/connectSession.js +0 -137
  1163. package/dist/esm/react/core/signingEngine/threshold/ed25519/walletSession.js +0 -363
  1164. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoActiveClientRegistry.js +0 -146
  1165. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoClient.js +0 -597
  1166. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPageLifecycleOwner.js +0 -23
  1167. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.js +0 -295
  1168. package/dist/esm/react/core/signingEngine/threshold/sessionPolicy.js +0 -94
  1169. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcExportManager.js +0 -233
  1170. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +0 -496
  1171. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +0 -746
  1172. package/dist/esm/react/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -600
  1173. package/dist/esm/react/core/signingEngine/uiConfirm/confirmationReadinessRegistry.js +0 -41
  1174. package/dist/esm/react/core/signingEngine/uiConfirm/exportConfirmRequest.js +0 -149
  1175. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/determineConfirmationConfig.js +0 -82
  1176. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flowOrchestrator.js +0 -363
  1177. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +0 -337
  1178. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/request.js +0 -120
  1179. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -150
  1180. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/registration.js +0 -235
  1181. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.js +0 -178
  1182. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/signing.js +0 -684
  1183. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/handlePromptFromWorker.js +0 -90
  1184. package/dist/esm/react/core/signingEngine/uiConfirm/nearFundingNotice.js +0 -50
  1185. package/dist/esm/react/core/signingEngine/uiConfirm/transactionReviewAdmission.js +0 -8
  1186. package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance-token-vars.js +0 -31
  1187. package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance.js +0 -27
  1188. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +0 -346
  1189. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-ui.js +0 -516
  1190. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-body-model.js +0 -24
  1191. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-model.js +0 -161
  1192. package/dist/esm/react/core/signingEngine/uiConfirm/ui/drawer-gesture.js +0 -16
  1193. package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +0 -155
  1194. package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-viewer-host.js +0 -207
  1195. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +0 -131
  1196. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.js +0 -29
  1197. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +0 -49
  1198. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +0 -137
  1199. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +0 -294
  1200. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +0 -67
  1201. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/CopyStatusIcon.js +0 -41
  1202. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +0 -141
  1203. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +0 -92
  1204. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +0 -318
  1205. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/HaloBorder.js +0 -91
  1206. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PadlockIcon.js +0 -32
  1207. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyHaloLoading.js +0 -63
  1208. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +0 -75
  1209. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.js +0 -33
  1210. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +0 -518
  1211. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +0 -128
  1212. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.js +0 -22
  1213. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.js +0 -158
  1214. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +0 -289
  1215. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +0 -311
  1216. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +0 -284
  1217. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/clipboard.js +0 -26
  1218. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-controller.js +0 -80
  1219. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-styles.js +0 -20
  1220. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/email-otp-session.js +0 -178
  1221. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +0 -297
  1222. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +0 -86
  1223. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +0 -82
  1224. package/dist/esm/react/core/signingEngine/uiConfirm/ui/seamsWordmarkPaths.js +0 -6
  1225. package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +0 -12
  1226. package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-resize-events.js +0 -18
  1227. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-activity.js +0 -46
  1228. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +0 -325
  1229. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/enrichDisplayModelWithAbi.js +0 -77
  1230. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/confirmation-tree.js +0 -27
  1231. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/formatters.js +0 -57
  1232. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/fallback.js +0 -52
  1233. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/types.js +0 -62
  1234. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +0 -249
  1235. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-receipt.js +0 -50
  1236. package/dist/esm/react/core/signingEngine/uiConfirm/warmSessionUiConfirm.js +0 -65
  1237. package/dist/esm/react/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -123
  1238. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyActiveClientMetadata.js +0 -94
  1239. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyDriver.js +0 -171
  1240. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyStepRunner.js +0 -20
  1241. package/dist/esm/react/core/signingEngine/walletCustody/ed25519ActiveClient.js +0 -100
  1242. package/dist/esm/react/core/signingEngine/walletCustody/ed25519Projection.js +0 -32
  1243. package/dist/esm/react/core/signingEngine/walletCustody/ed25519SeedMaterial.js +0 -92
  1244. package/dist/esm/react/core/signingEngine/walletCustody/emailOtpLink.js +0 -135
  1245. package/dist/esm/react/core/signingEngine/walletCustody/joinCustodyWire.js +0 -64
  1246. package/dist/esm/react/core/signingEngine/walletCustody/openCustodyCache.js +0 -130
  1247. package/dist/esm/react/core/signingEngine/walletCustody/passkeyLink.js +0 -183
  1248. package/dist/esm/react/core/signingEngine/walletCustody/recoveryReplacementEnvelope.js +0 -60
  1249. package/dist/esm/react/core/signingEngine/walletCustody/registrationCeremony.js +0 -461
  1250. package/dist/esm/react/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +0 -258
  1251. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -24
  1252. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -76
  1253. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEd25519.js +0 -129
  1254. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -180
  1255. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -103
  1256. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/collectAuthenticationCredentialForChallengeB64u.js +0 -154
  1257. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/credentialExtensions.js +0 -36
  1258. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/helpers.js +0 -273
  1259. package/dist/esm/react/core/signingEngine/webauthnAuth/device/signerSlot.js +0 -25
  1260. package/dist/esm/react/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
  1261. package/dist/esm/react/core/signingEngine/workerManager/SignerWorkerManager.js +0 -70
  1262. package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingPorts.js +0 -342
  1263. package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingSourceContribution.js +0 -158
  1264. package/dist/esm/react/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -17
  1265. package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignLifecycle.js +0 -6
  1266. package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.js +0 -49
  1267. package/dist/esm/react/core/signingEngine/workerManager/executeWorkerOperation.js +0 -12
  1268. package/dist/esm/react/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
  1269. package/dist/esm/react/core/signingEngine/workerManager/validation.js +0 -114
  1270. package/dist/esm/react/core/signingEngine/workerManager/workerTransport.js +0 -773
  1271. package/dist/esm/react/core/signingEngine/workerManager/workerTypes.js +0 -109
  1272. package/dist/esm/react/core/types/accountIds.js +0 -26
  1273. package/dist/esm/react/core/types/actionBuilders.js +0 -73
  1274. package/dist/esm/react/core/types/confirmationConfig.js +0 -39
  1275. package/dist/esm/react/core/types/eventLogging.js +0 -28
  1276. package/dist/esm/react/core/types/linkDevice.js +0 -49
  1277. package/dist/esm/react/core/types/sdkSentEvents.js +0 -602
  1278. package/dist/esm/react/core/types/secure-confirm-worker.js +0 -22
  1279. package/dist/esm/react/core/types/signer-worker.js +0 -50
  1280. package/dist/esm/react/core/types/walletIframeIdentity.js +0 -15
  1281. package/dist/esm/react/core/walletRuntimePaths/base.js +0 -60
  1282. package/dist/esm/react/core/walletRuntimePaths/emailOtpWorker.js +0 -12
  1283. package/dist/esm/react/core/walletRuntimePaths/multichainWorkers.js +0 -25
  1284. package/dist/esm/react/core/walletRuntimePaths/walletCustodyCeremonyWorker.js +0 -18
  1285. package/dist/esm/react/core/walletRuntimePaths/workers.js +0 -93
  1286. package/dist/esm/react/externalEvm/boundary.js +0 -309
  1287. package/dist/esm/react/externalEvm/controller.js +0 -440
  1288. package/dist/esm/react/externalEvm/types.js +0 -31
  1289. package/dist/esm/react/node_modules/@noble/hashes/esm/_u64.js +0 -36
  1290. package/dist/esm/react/node_modules/@noble/hashes/esm/sha3.js +0 -197
  1291. package/dist/esm/react/node_modules/@noble/hashes/esm/utils.js +0 -87
  1292. package/dist/esm/react/node_modules/viem/_esm/errors/abi.js +0 -48
  1293. package/dist/esm/react/node_modules/viem/_esm/errors/address.js +0 -14
  1294. package/dist/esm/react/node_modules/viem/_esm/errors/base.js +0 -86
  1295. package/dist/esm/react/node_modules/viem/_esm/errors/data.js +0 -16
  1296. package/dist/esm/react/node_modules/viem/_esm/errors/encoding.js +0 -16
  1297. package/dist/esm/react/node_modules/viem/_esm/errors/typedData.js +0 -28
  1298. package/dist/esm/react/node_modules/viem/_esm/errors/version.js +0 -6
  1299. package/dist/esm/react/node_modules/viem/_esm/utils/abi/encodeAbiParameters.js +0 -243
  1300. package/dist/esm/react/node_modules/viem/_esm/utils/address/getAddress.js +0 -28
  1301. package/dist/esm/react/node_modules/viem/_esm/utils/address/isAddress.js +0 -23
  1302. package/dist/esm/react/node_modules/viem/_esm/utils/data/concat.js +0 -23
  1303. package/dist/esm/react/node_modules/viem/_esm/utils/data/isHex.js +0 -10
  1304. package/dist/esm/react/node_modules/viem/_esm/utils/data/pad.js +0 -40
  1305. package/dist/esm/react/node_modules/viem/_esm/utils/data/size.js +0 -16
  1306. package/dist/esm/react/node_modules/viem/_esm/utils/data/slice.js +0 -59
  1307. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/fromHex.js +0 -13
  1308. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toBytes.js +0 -175
  1309. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toHex.js +0 -168
  1310. package/dist/esm/react/node_modules/viem/_esm/utils/hash/keccak256.js +0 -15
  1311. package/dist/esm/react/node_modules/viem/_esm/utils/lru.js +0 -38
  1312. package/dist/esm/react/node_modules/viem/_esm/utils/regex.js +0 -7
  1313. package/dist/esm/react/node_modules/viem/_esm/utils/signature/hashTypedData.js +0 -113
  1314. package/dist/esm/react/node_modules/viem/_esm/utils/stringify.js +0 -9
  1315. package/dist/esm/react/node_modules/viem/_esm/utils/typedData.js +0 -80
  1316. package/dist/esm/react/shared-ts/src/authorization/capabilityKinds.js +0 -111
  1317. package/dist/esm/react/shared-ts/src/authorization/delegatedAuthority.js +0 -121
  1318. package/dist/esm/react/shared-ts/src/authorization/index.js +0 -6
  1319. package/dist/esm/react/shared-ts/src/authorization/operationFingerprint.js +0 -57
  1320. package/dist/esm/react/shared-ts/src/authorization/walletAuthority.js +0 -719
  1321. package/dist/esm/react/shared-ts/src/authorization/walletCustodyOperation.js +0 -16
  1322. package/dist/esm/react/shared-ts/src/authorization/walletSessionIssuance.js +0 -115
  1323. package/dist/esm/react/shared-ts/src/authorization/walletSignerActivationEquality.js +0 -12
  1324. package/dist/esm/react/shared-ts/src/device-linking/activeWalletSession.js +0 -104
  1325. package/dist/esm/react/shared-ts/src/device-linking/authorityActivation.js +0 -142
  1326. package/dist/esm/react/shared-ts/src/device-linking/committedSignerPackages.js +0 -270
  1327. package/dist/esm/react/shared-ts/src/device-linking/contracts.js +0 -8
  1328. package/dist/esm/react/shared-ts/src/device-linking/delegatedActivationPlan.js +0 -130
  1329. package/dist/esm/react/shared-ts/src/device-linking/deviceManagement.js +0 -120
  1330. package/dist/esm/react/shared-ts/src/device-linking/digests.js +0 -115
  1331. package/dist/esm/react/shared-ts/src/device-linking/ed25519ExportRoot.js +0 -167
  1332. package/dist/esm/react/shared-ts/src/device-linking/index.js +0 -12
  1333. package/dist/esm/react/shared-ts/src/device-linking/parsers.js +0 -1029
  1334. package/dist/esm/react/shared-ts/src/device-linking/requestProof.js +0 -25
  1335. package/dist/esm/react/shared-ts/src/device-linking/sourceContribution.js +0 -542
  1336. package/dist/esm/react/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +0 -173
  1337. package/dist/esm/react/shared-ts/src/device-linking/wireFields.js +0 -59
  1338. package/dist/esm/react/shared-ts/src/near/actions.js +0 -236
  1339. package/dist/esm/react/shared-ts/src/near/nearClient.js +0 -252
  1340. package/dist/esm/react/shared-ts/src/passkey-custody/ceremonyCommitPayload.js +0 -43
  1341. package/dist/esm/react/shared-ts/src/passkey-custody/custodyEnvelope.js +0 -278
  1342. package/dist/esm/react/shared-ts/src/passkey-custody/custodySecretBinding.js +0 -181
  1343. package/dist/esm/react/shared-ts/src/passkey-custody/index.js +0 -4
  1344. package/dist/esm/react/shared-ts/src/passkey-custody/primitives.js +0 -62
  1345. package/dist/esm/react/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +0 -49
  1346. package/dist/esm/react/shared-ts/src/signing-lanes/index.js +0 -8
  1347. package/dist/esm/react/shared-ts/src/signing-lanes/ownerContinuity.js +0 -62
  1348. package/dist/esm/react/shared-ts/src/signing-lanes/participantDigest.js +0 -2
  1349. package/dist/esm/react/shared-ts/src/signing-lanes/participants.js +0 -256
  1350. package/dist/esm/react/shared-ts/src/signing-lanes/recordParsers.js +0 -479
  1351. package/dist/esm/react/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
  1352. package/dist/esm/react/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
  1353. package/dist/esm/react/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
  1354. package/dist/esm/react/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
  1355. package/dist/esm/react/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -39
  1356. package/dist/esm/react/shared-ts/src/threshold/ed25519OperationFingerprint.js +0 -222
  1357. package/dist/esm/react/shared-ts/src/threshold/keyMaterialBrands.js +0 -25
  1358. package/dist/esm/react/shared-ts/src/threshold/participants.js +0 -67
  1359. package/dist/esm/react/shared-ts/src/threshold/secp256k1.js +0 -6
  1360. package/dist/esm/react/shared-ts/src/threshold/sessionPolicy.js +0 -8
  1361. package/dist/esm/react/shared-ts/src/threshold/signingRootScope.js +0 -43
  1362. package/dist/esm/react/shared-ts/src/utils/addAuthMethodRegistration.js +0 -103
  1363. package/dist/esm/react/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
  1364. package/dist/esm/react/shared-ts/src/utils/authenticatorOptions.js +0 -22
  1365. package/dist/esm/react/shared-ts/src/utils/base58.js +0 -28
  1366. package/dist/esm/react/shared-ts/src/utils/base64.js +0 -70
  1367. package/dist/esm/react/shared-ts/src/utils/canonicalPrimitives.js +0 -38
  1368. package/dist/esm/react/shared-ts/src/utils/digestEncoding.js +0 -63
  1369. package/dist/esm/react/shared-ts/src/utils/digests.js +0 -33
  1370. package/dist/esm/react/shared-ts/src/utils/domainIds.js +0 -257
  1371. package/dist/esm/react/shared-ts/src/utils/ecdsaCapabilityActivation.js +0 -67
  1372. package/dist/esm/react/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -44
  1373. package/dist/esm/react/shared-ts/src/utils/ecdsaServerTiming.js +0 -38
  1374. package/dist/esm/react/shared-ts/src/utils/emailOtpDomain.js +0 -28
  1375. package/dist/esm/react/shared-ts/src/utils/emailOtpRecoveryKey.js +0 -65
  1376. package/dist/esm/react/shared-ts/src/utils/encoders.js +0 -2
  1377. package/dist/esm/react/shared-ts/src/utils/errors.js +0 -95
  1378. package/dist/esm/react/shared-ts/src/utils/evmRpcResults.js +0 -101
  1379. package/dist/esm/react/shared-ts/src/utils/exactKeys.js +0 -17
  1380. package/dist/esm/react/shared-ts/src/utils/exactRecord.js +0 -44
  1381. package/dist/esm/react/shared-ts/src/utils/index.js +0 -38
  1382. package/dist/esm/react/shared-ts/src/utils/jsonRpc.js +0 -64
  1383. package/dist/esm/react/shared-ts/src/utils/keccak.js +0 -150
  1384. package/dist/esm/react/shared-ts/src/utils/near.js +0 -205
  1385. package/dist/esm/react/shared-ts/src/utils/nearRpcResults.js +0 -205
  1386. package/dist/esm/react/shared-ts/src/utils/normalize.js +0 -86
  1387. package/dist/esm/react/shared-ts/src/utils/registrationAuthMethodInput.js +0 -84
  1388. package/dist/esm/react/shared-ts/src/utils/registrationEstablishedSession.js +0 -275
  1389. package/dist/esm/react/shared-ts/src/utils/registrationIds.js +0 -226
  1390. package/dist/esm/react/shared-ts/src/utils/registrationIntent.js +0 -390
  1391. package/dist/esm/react/shared-ts/src/utils/registrationSignerPlan.js +0 -439
  1392. package/dist/esm/react/shared-ts/src/utils/routerAbEcdsaDerivation.js +0 -1334
  1393. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519Yao.js +0 -747
  1394. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519YaoDigests.js +0 -76
  1395. package/dist/esm/react/shared-ts/src/utils/routerAbNormalSigningIdentity.js +0 -115
  1396. package/dist/esm/react/shared-ts/src/utils/routerAbPublicKeyset.js +0 -11
  1397. package/dist/esm/react/shared-ts/src/utils/routerAbTraceContext.js +0 -36
  1398. package/dist/esm/react/shared-ts/src/utils/secureRandomId.js +0 -35
  1399. package/dist/esm/react/shared-ts/src/utils/signerDomain.js +0 -37
  1400. package/dist/esm/react/shared-ts/src/utils/signerSlot.js +0 -12
  1401. package/dist/esm/react/shared-ts/src/utils/signingSessionSeal.js +0 -98
  1402. package/dist/esm/react/shared-ts/src/utils/theme.js +0 -8
  1403. package/dist/esm/react/shared-ts/src/utils/thresholdEcdsaChainTarget.js +0 -9
  1404. package/dist/esm/react/shared-ts/src/utils/thresholdEcdsaKeyHandle.js +0 -28
  1405. package/dist/esm/react/shared-ts/src/utils/validation.js +0 -92
  1406. package/dist/esm/react/shared-ts/src/utils/walletAddSignerActivation.js +0 -32
  1407. package/dist/esm/react/shared-ts/src/utils/walletAuthAuthority.js +0 -224
  1408. package/dist/esm/react/shared-ts/src/utils/walletAuthMethodRecord.js +0 -357
  1409. package/dist/esm/react/shared-ts/src/utils/walletCapabilityBindings.js +0 -277
  1410. package/dist/esm/react/shared-ts/src/utils/walletSessionFailure.js +0 -28
  1411. package/dist/esm/react/shared-ts/src/utils/webauthnDeviceInfo.js +0 -50
  1412. package/dist/esm/react/shared-ts/src/utils/wireSchema.js +0 -66
  1413. package/dist/esm/react/shared-ts/src/wallet-recovery/index.js +0 -10
  1414. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeIssuance.js +0 -35
  1415. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -34
  1416. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +0 -24
  1417. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodes.js +0 -3
  1418. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -14
  1419. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +0 -251
  1420. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +0 -153
  1421. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +0 -84
  1422. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryRotation.js +0 -64
  1423. package/dist/esm/react/theme/base-styles.js +0 -117
  1424. package/dist/esm/react/theme/palette.js +0 -170
  1425. package/dist/esm/react/utils/deviceDetection.js +0 -95
  1426. package/dist/esm/react/utils/intentDigest.js +0 -77
  1427. package/dist/esm/react/utils/menuItemBlink.js +0 -24
  1428. package/dist/esm/react/utils/qrScanner.js +0 -297
  1429. package/dist/esm/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
  1430. package/dist/esm/sdk/EvmClient-f3gUhS2L.js +0 -644
  1431. package/dist/esm/sdk/NearClient-DY4NfHeD.js +0 -402
  1432. package/dist/esm/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
  1433. package/dist/esm/sdk/accountIds-DhIPGOSN.js +0 -23
  1434. package/dist/esm/sdk/accountLifecycle-zthG08aC.js +0 -1341
  1435. package/dist/esm/sdk/actions-CCvThiKe.js +0 -225
  1436. package/dist/esm/sdk/adapters-Dli9XAZp.js +0 -4836
  1437. package/dist/esm/sdk/base-D1B5mGin.js +0 -64
  1438. package/dist/esm/sdk/base64-Clm8C-e9.js +0 -68
  1439. package/dist/esm/sdk/browser-D6eZGhzE.js +0 -2393
  1440. package/dist/esm/sdk/bytes-qKxKn4gg.js +0 -40
  1441. package/dist/esm/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
  1442. package/dist/esm/sdk/canonicalSignerErrorCode-BBIk365e.js +0 -139
  1443. package/dist/esm/sdk/capabilityKinds-hvYqa6S_.js +0 -109
  1444. package/dist/esm/sdk/chains-BMh3btVo.js +0 -124
  1445. package/dist/esm/sdk/challengeDelivery-DZtopOAG.js +0 -74
  1446. package/dist/esm/sdk/chunk-BtrIJ4_z.js +0 -33
  1447. package/dist/esm/sdk/configHelpers-D1EqxVxg.js +0 -179
  1448. package/dist/esm/sdk/csp-stylesheet-btENhsNp.js +0 -215
  1449. package/dist/esm/sdk/defaultConfigs-D_33pPT9.js +0 -355
  1450. package/dist/esm/sdk/display-P4nQF-yc.js +0 -126
  1451. package/dist/esm/sdk/domainIds-lcrFg6Sa.js +0 -338
  1452. package/dist/esm/sdk/ecdsaCapabilityManifest-DuMs0VtU.js +0 -805
  1453. package/dist/esm/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
  1454. package/dist/esm/sdk/ecdsaPresignLifecycle-Bfx2AQKb.js +0 -1983
  1455. package/dist/esm/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
  1456. package/dist/esm/sdk/ecdsaWalletRecords-D42rtA9z.js +0 -18
  1457. package/dist/esm/sdk/encoders-D8d07vpx.js +0 -0
  1458. package/dist/esm/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
  1459. package/dist/esm/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
  1460. package/dist/esm/sdk/errors-93h9uAW9.js +0 -92
  1461. package/dist/esm/sdk/events-DYoBL2HO.js +0 -8
  1462. package/dist/esm/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
  1463. package/dist/esm/sdk/evmFamilyEcdsaIdentity-CqGafQsI.js +0 -4274
  1464. package/dist/esm/sdk/exactSessionState-LWDUXydN.js +0 -2592
  1465. package/dist/esm/sdk/exactSigningLaneIdentity-m6uTXV_A.js +0 -335
  1466. package/dist/esm/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
  1467. package/dist/esm/sdk/export-viewer-host-rWMSQQMP.js +0 -204
  1468. package/dist/esm/sdk/helpers-ZrowMnev.js +0 -302
  1469. package/dist/esm/sdk/host-CnV8nAUe.js +0 -533
  1470. package/dist/esm/sdk/intentDigest-CvOSNlCH.js +0 -75
  1471. package/dist/esm/sdk/jsonRpc-VVkaQkFD.js +0 -62
  1472. package/dist/esm/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
  1473. package/dist/esm/sdk/keccak-DUL3d8SF.js +0 -148
  1474. package/dist/esm/sdk/keyMaterialBrands-CogGAAZn.js +0 -94
  1475. package/dist/esm/sdk/localOnly-DTpa2jD5.js +0 -146
  1476. package/dist/esm/sdk/messages-C7Dbx9iN.js +0 -594
  1477. package/dist/esm/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
  1478. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
  1479. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-B5GecIvq.js +0 -4018
  1480. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-CdOT5RuC.js +0 -405
  1481. package/dist/esm/sdk/nearRpcResults-DoUgDATm.js +0 -216
  1482. package/dist/esm/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
  1483. package/dist/esm/sdk/normalization-CBt413-z.js +0 -22
  1484. package/dist/esm/sdk/operationFingerprint-C8Trar4R.js +0 -929
  1485. package/dist/esm/sdk/operationFingerprint-CGZui5dR.js +0 -55
  1486. package/dist/esm/sdk/passkey-custody-UUHbC0pk.js +0 -487
  1487. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-BWluQMbt.js +0 -237
  1488. package/dist/esm/sdk/prfCache-wqQSjYLn.js +0 -58
  1489. package/dist/esm/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
  1490. package/dist/esm/sdk/promptText-CuRa_ivd.js +0 -32
  1491. package/dist/esm/sdk/recovery-entrypoint-C3fydnRC.js +0 -779
  1492. package/dist/esm/sdk/registration-Ct_7LdGf.js +0 -14402
  1493. package/dist/esm/sdk/registration-DHERU8R_.js +0 -233
  1494. package/dist/esm/sdk/registrationAccounts-DmWPzf3T.js +0 -33
  1495. package/dist/esm/sdk/registrationIds-DLSdEKSv.js +0 -310
  1496. package/dist/esm/sdk/registrationIntent-4zwk16zQ.js +0 -387
  1497. package/dist/esm/sdk/registrationPreparationPreload-D6zpWp4O.js +0 -13
  1498. package/dist/esm/sdk/registrationSignerPlan-DhV8VAob.js +0 -437
  1499. package/dist/esm/sdk/relayerHttp-VC8Holz1.js +0 -24
  1500. package/dist/esm/sdk/routePlan-D59x5xzQ.js +0 -83
  1501. package/dist/esm/sdk/router-B4ZWFy9E.js +0 -4721
  1502. package/dist/esm/sdk/routerAbNormalSigning-CVFEOZ2m.js +0 -992
  1503. package/dist/esm/sdk/runtime-auth-DdfynDKt.js +0 -5393
  1504. package/dist/esm/sdk/runtime-device-link-HJ2ptFux.js +0 -259
  1505. package/dist/esm/sdk/runtime-ecdsa-tempo-BGLsTAWR.js +0 -177
  1506. package/dist/esm/sdk/runtime-email-otp-CpX88VZJ.js +0 -320
  1507. package/dist/esm/sdk/runtime-export-DIVY473L.js +0 -112
  1508. package/dist/esm/sdk/runtime-near-CxtQi4b2.js +0 -278
  1509. package/dist/esm/sdk/runtime-preferences-vnJc5Svg.js +0 -67
  1510. package/dist/esm/sdk/runtime-recovery-codes-BSCLVHQj.js +0 -95
  1511. package/dist/esm/sdk/runtime-recovery-i08vCJST.js +0 -45
  1512. package/dist/esm/sdk/runtimeContext-D3TBExQ6.js +0 -44484
  1513. package/dist/esm/sdk/runtimeLoader-DQVEFVaW.js +0 -44
  1514. package/dist/esm/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
  1515. package/dist/esm/sdk/secp256k1-D-I6Gh4D.js +0 -2515
  1516. package/dist/esm/sdk/secureRandomId-BORsmdS4.js +0 -33
  1517. package/dist/esm/sdk/sessionPolicy-DO-MkL65.js +0 -460
  1518. package/dist/esm/sdk/shared-DkbeLCI3.js +0 -33
  1519. package/dist/esm/sdk/signEvmFamily-C3C97Th-.js +0 -4607
  1520. package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-BI9DSTIS.js +0 -226
  1521. package/dist/esm/sdk/signEvmWithUiConfirm-Bmcim5-g.js +0 -27
  1522. package/dist/esm/sdk/signNear-Bmb2fj_a.js +0 -5893
  1523. package/dist/esm/sdk/signatureUses-BkGyYt8F.js +0 -51
  1524. package/dist/esm/sdk/signerDomain-IEAVrOrc.js +0 -59
  1525. package/dist/esm/sdk/signerLoader-B7orgq5Z.js +0 -23
  1526. package/dist/esm/sdk/signerSlot-_ovonwVX.js +0 -10
  1527. package/dist/esm/sdk/signingFlow-SZ8t_lxv.js +0 -1319
  1528. package/dist/esm/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
  1529. package/dist/esm/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
  1530. package/dist/esm/sdk/trace-DKLQZvec.js +0 -126
  1531. package/dist/esm/sdk/transaction-activity-CSMCveBn.js +0 -218
  1532. package/dist/esm/sdk/transactionReview-DpHLTznU.js +0 -100
  1533. package/dist/esm/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
  1534. package/dist/esm/sdk/transactionState-CJ4U8pcl.js +0 -1894
  1535. package/dist/esm/sdk/types-Dx9fczU7.js +0 -111
  1536. package/dist/esm/sdk/validation-gat4LEKm.js +0 -409
  1537. package/dist/esm/sdk/wallet-recovery-BX61-79p.js +0 -1902
  1538. package/dist/esm/sdk/walletAuthority-DD9T25F6.js +0 -1247
  1539. package/dist/esm/sdk/walletCustodyEcdsaContinuity-CF4bv9OI.js +0 -11000
  1540. package/dist/esm/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
  1541. package/dist/esm/sdk/walletRecoveryCommit-AI1AtIRP.js +0 -2101
  1542. package/dist/esm/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
  1543. package/dist/esm/sdk/warmSessionHydration-Os8niEm7.js +0 -7
  1544. package/dist/esm/sdk/webauthnP256-DC5EIbKN.js +0 -82
  1545. package/dist/esm/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
  1546. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
  1547. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
  1548. package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
  1549. package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
  1550. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
  1551. package/dist/esm/styles.css +0 -43
  1552. package/dist/public/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
  1553. package/dist/public/sdk/EvmClient-f3gUhS2L.js +0 -644
  1554. package/dist/public/sdk/NearClient-DY4NfHeD.js +0 -402
  1555. package/dist/public/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
  1556. package/dist/public/sdk/accountIds-DhIPGOSN.js +0 -23
  1557. package/dist/public/sdk/accountLifecycle-zthG08aC.js +0 -1341
  1558. package/dist/public/sdk/actions-CCvThiKe.js +0 -225
  1559. package/dist/public/sdk/adapters-Dli9XAZp.js +0 -4836
  1560. package/dist/public/sdk/base-D1B5mGin.js +0 -64
  1561. package/dist/public/sdk/base64-Clm8C-e9.js +0 -68
  1562. package/dist/public/sdk/browser-D6eZGhzE.js +0 -2393
  1563. package/dist/public/sdk/bytes-qKxKn4gg.js +0 -40
  1564. package/dist/public/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
  1565. package/dist/public/sdk/canonicalSignerErrorCode-BBIk365e.js +0 -139
  1566. package/dist/public/sdk/capabilityKinds-hvYqa6S_.js +0 -109
  1567. package/dist/public/sdk/chains-BMh3btVo.js +0 -124
  1568. package/dist/public/sdk/challengeDelivery-DZtopOAG.js +0 -74
  1569. package/dist/public/sdk/chunk-BtrIJ4_z.js +0 -33
  1570. package/dist/public/sdk/configHelpers-D1EqxVxg.js +0 -179
  1571. package/dist/public/sdk/csp-stylesheet-btENhsNp.js +0 -215
  1572. package/dist/public/sdk/defaultConfigs-D_33pPT9.js +0 -355
  1573. package/dist/public/sdk/display-P4nQF-yc.js +0 -126
  1574. package/dist/public/sdk/domainIds-lcrFg6Sa.js +0 -338
  1575. package/dist/public/sdk/ecdsaCapabilityManifest-DuMs0VtU.js +0 -805
  1576. package/dist/public/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
  1577. package/dist/public/sdk/ecdsaPresignLifecycle-Bfx2AQKb.js +0 -1983
  1578. package/dist/public/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
  1579. package/dist/public/sdk/ecdsaWalletRecords-D42rtA9z.js +0 -18
  1580. package/dist/public/sdk/encoders-D8d07vpx.js +0 -0
  1581. package/dist/public/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
  1582. package/dist/public/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
  1583. package/dist/public/sdk/errors-93h9uAW9.js +0 -92
  1584. package/dist/public/sdk/events-DYoBL2HO.js +0 -8
  1585. package/dist/public/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
  1586. package/dist/public/sdk/evmFamilyEcdsaIdentity-CqGafQsI.js +0 -4274
  1587. package/dist/public/sdk/exactSessionState-LWDUXydN.js +0 -2592
  1588. package/dist/public/sdk/exactSigningLaneIdentity-m6uTXV_A.js +0 -335
  1589. package/dist/public/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
  1590. package/dist/public/sdk/export-viewer-host-rWMSQQMP.js +0 -204
  1591. package/dist/public/sdk/helpers-ZrowMnev.js +0 -302
  1592. package/dist/public/sdk/host-CnV8nAUe.js +0 -533
  1593. package/dist/public/sdk/intentDigest-CvOSNlCH.js +0 -75
  1594. package/dist/public/sdk/jsonRpc-VVkaQkFD.js +0 -62
  1595. package/dist/public/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
  1596. package/dist/public/sdk/keccak-DUL3d8SF.js +0 -148
  1597. package/dist/public/sdk/keyMaterialBrands-CogGAAZn.js +0 -94
  1598. package/dist/public/sdk/localOnly-DTpa2jD5.js +0 -146
  1599. package/dist/public/sdk/messages-C7Dbx9iN.js +0 -594
  1600. package/dist/public/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
  1601. package/dist/public/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
  1602. package/dist/public/sdk/nearEd25519YaoMaterialActivation-B5GecIvq.js +0 -4018
  1603. package/dist/public/sdk/nearEd25519YaoSigningPreparation-CdOT5RuC.js +0 -405
  1604. package/dist/public/sdk/nearRpcResults-DoUgDATm.js +0 -216
  1605. package/dist/public/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
  1606. package/dist/public/sdk/normalization-CBt413-z.js +0 -22
  1607. package/dist/public/sdk/operationFingerprint-C8Trar4R.js +0 -929
  1608. package/dist/public/sdk/operationFingerprint-CGZui5dR.js +0 -55
  1609. package/dist/public/sdk/passkey-custody-UUHbC0pk.js +0 -487
  1610. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-BWluQMbt.js +0 -237
  1611. package/dist/public/sdk/prfCache-wqQSjYLn.js +0 -58
  1612. package/dist/public/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
  1613. package/dist/public/sdk/promptText-CuRa_ivd.js +0 -32
  1614. package/dist/public/sdk/recovery-entrypoint-C3fydnRC.js +0 -779
  1615. package/dist/public/sdk/registration-Ct_7LdGf.js +0 -14402
  1616. package/dist/public/sdk/registration-DHERU8R_.js +0 -233
  1617. package/dist/public/sdk/registrationAccounts-DmWPzf3T.js +0 -33
  1618. package/dist/public/sdk/registrationIds-DLSdEKSv.js +0 -310
  1619. package/dist/public/sdk/registrationIntent-4zwk16zQ.js +0 -387
  1620. package/dist/public/sdk/registrationPreparationPreload-D6zpWp4O.js +0 -13
  1621. package/dist/public/sdk/registrationSignerPlan-DhV8VAob.js +0 -437
  1622. package/dist/public/sdk/relayerHttp-VC8Holz1.js +0 -24
  1623. package/dist/public/sdk/routePlan-D59x5xzQ.js +0 -83
  1624. package/dist/public/sdk/router-B4ZWFy9E.js +0 -4721
  1625. package/dist/public/sdk/routerAbNormalSigning-CVFEOZ2m.js +0 -992
  1626. package/dist/public/sdk/runtime-auth-DdfynDKt.js +0 -5393
  1627. package/dist/public/sdk/runtime-device-link-HJ2ptFux.js +0 -259
  1628. package/dist/public/sdk/runtime-ecdsa-tempo-BGLsTAWR.js +0 -177
  1629. package/dist/public/sdk/runtime-email-otp-CpX88VZJ.js +0 -320
  1630. package/dist/public/sdk/runtime-export-DIVY473L.js +0 -112
  1631. package/dist/public/sdk/runtime-near-CxtQi4b2.js +0 -278
  1632. package/dist/public/sdk/runtime-preferences-vnJc5Svg.js +0 -67
  1633. package/dist/public/sdk/runtime-recovery-codes-BSCLVHQj.js +0 -95
  1634. package/dist/public/sdk/runtime-recovery-i08vCJST.js +0 -45
  1635. package/dist/public/sdk/runtimeContext-D3TBExQ6.js +0 -44484
  1636. package/dist/public/sdk/runtimeLoader-DQVEFVaW.js +0 -44
  1637. package/dist/public/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
  1638. package/dist/public/sdk/secp256k1-D-I6Gh4D.js +0 -2515
  1639. package/dist/public/sdk/secureRandomId-BORsmdS4.js +0 -33
  1640. package/dist/public/sdk/sessionPolicy-DO-MkL65.js +0 -460
  1641. package/dist/public/sdk/shared-DkbeLCI3.js +0 -33
  1642. package/dist/public/sdk/signEvmFamily-C3C97Th-.js +0 -4607
  1643. package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-BI9DSTIS.js +0 -226
  1644. package/dist/public/sdk/signEvmWithUiConfirm-Bmcim5-g.js +0 -27
  1645. package/dist/public/sdk/signNear-Bmb2fj_a.js +0 -5893
  1646. package/dist/public/sdk/signatureUses-BkGyYt8F.js +0 -51
  1647. package/dist/public/sdk/signerDomain-IEAVrOrc.js +0 -59
  1648. package/dist/public/sdk/signerLoader-B7orgq5Z.js +0 -23
  1649. package/dist/public/sdk/signerSlot-_ovonwVX.js +0 -10
  1650. package/dist/public/sdk/signingFlow-SZ8t_lxv.js +0 -1319
  1651. package/dist/public/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
  1652. package/dist/public/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
  1653. package/dist/public/sdk/trace-DKLQZvec.js +0 -126
  1654. package/dist/public/sdk/transaction-activity-CSMCveBn.js +0 -218
  1655. package/dist/public/sdk/transactionReview-DpHLTznU.js +0 -100
  1656. package/dist/public/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
  1657. package/dist/public/sdk/transactionState-CJ4U8pcl.js +0 -1894
  1658. package/dist/public/sdk/types-Dx9fczU7.js +0 -111
  1659. package/dist/public/sdk/validation-gat4LEKm.js +0 -409
  1660. package/dist/public/sdk/wallet-recovery-BX61-79p.js +0 -1902
  1661. package/dist/public/sdk/walletAuthority-DD9T25F6.js +0 -1247
  1662. package/dist/public/sdk/walletCustodyEcdsaContinuity-CF4bv9OI.js +0 -11000
  1663. package/dist/public/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
  1664. package/dist/public/sdk/walletRecoveryCommit-AI1AtIRP.js +0 -2101
  1665. package/dist/public/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
  1666. package/dist/public/sdk/warmSessionHydration-Os8niEm7.js +0 -7
  1667. package/dist/public/sdk/webauthnP256-DC5EIbKN.js +0 -82
  1668. package/dist/public/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
  1669. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
  1670. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
  1671. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
  1672. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
  1673. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
  1674. package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
  1675. package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
  1676. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
  1677. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/webauthn-bridge.d.ts +0 -3
  1678. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.d.ts +0 -52
  1679. package/dist/types/wallet/src/core/signingEngine/interfaces/nearKeyOps.d.ts +0 -15
  1680. package/dist/types/wallet/src/core/signingEngine/session/holderShares/forbiddenHolderSharePayloads.typecheck.d.ts +0 -2
  1681. package/dist/types/wallet/src/core/signingEngine/session/holderShares/holderShareHandle.d.ts +0 -6
  1682. package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.typecheck.d.ts +0 -2
  1683. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/activationCoordinator.d.ts +0 -37
  1684. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/laneMaterialInvalidation.d.ts +0 -23
  1685. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/operations.typecheck.d.ts +0 -2
  1686. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/recipientPreparation.d.ts +0 -55
  1687. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.typecheck.d.ts +0 -6
  1688. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaLaneWasm.d.ts +0 -4
  1689. package/dist/types/wallet/src/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.d.ts +0 -44
  1690. package/dist/types/wallet/src/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.d.ts +0 -4
  1691. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/ecdsaLaneHolderWorkerRuntime.d.ts +0 -20
  1692. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/passkeyCustodyLink.d.ts +0 -18
  1693. /package/dist/esm/{react/SeamsWeb → SeamsWeb}/assembly/preconnectWalletAssets.js +0 -0
@@ -1,3818 +0,0 @@
1
- import { base58Encode } from "../../../shared-ts/src/utils/base58.js";
2
- import { deriveImplicitNearAccountIdFromEd25519PublicKey } from "../../../shared-ts/src/utils/near.js";
3
- import { getUserFriendlyErrorMessage } from "../../../shared-ts/src/utils/errors.js";
4
- import { base64UrlDecode, base64UrlEncode } from "../../../shared-ts/src/utils/base64.js";
5
- import { isObject } from "../../../shared-ts/src/utils/validation.js";
6
- import { alphabetizeStringify, sha256BytesUtf8, sha256HexUtf8 } from "../../../shared-ts/src/utils/digests.js";
7
- import { normalizeRuntimePolicyScope } from "../../../shared-ts/src/threshold/signingRootScope.js";
8
- import { redactCredentialExtensionOutputs } from "../../../core/signingEngine/webauthnAuth/credentials/credentialExtensions.js";
9
- import { parseThresholdEd25519SessionId, parseWalletAuthMethodId, parseWebAuthnCredentialIdB64u } from "../../../shared-ts/src/utils/domainIds.js";
10
- import { parseCorrelationId, parseDigestB64u, parseIsoTimestamp } from "../../../shared-ts/src/utils/canonicalPrimitives.js";
11
- import { parseCanonicalEcdsaServerActivationRequest } from "../../../shared-ts/src/utils/ecdsaCapabilityActivation.js";
12
- import { walletSessionPreservesCapabilities } from "../../../shared-ts/src/device-linking/activeWalletSession.js";
13
- import { buildEmailOtpWalletAuthAuthority, parseEmailOtpWalletAuthAuthority, walletAuthAuthorityRef } from "../../../shared-ts/src/utils/walletAuthAuthority.js";
14
- import { parseRouterAbEcdsaVerifiedClientActivationFactsV1 } from "../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
15
- import { parseNearEd25519SigningKeyId, walletIdFromString } from "../../../shared-ts/src/utils/registrationIds.js";
16
- import { requireEvmFamilySigningKeySlotId } from "../../../shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js";
17
- import { parseSdkEcdsaDerivationSigningRootId, parseSdkEcdsaDerivationSigningRootVersion } from "../../../shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js";
18
- import "../../../shared-ts/src/signing-lanes/index.js";
19
- import { thresholdEcdsaChainTargetFromChainFamily, toWalletId } from "../../../core/signingEngine/interfaces/ecdsaChainTarget.js";
20
- import { toParticipantId, toRpId } from "../../../core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js";
21
- import { nearEd25519SignerBindingFromBoundaryFields } from "../../../core/signingEngine/session/identity/exactSigningLaneIdentity.js";
22
- import { buildEmailOtpAuthContext, emailOtpAuthContextEmailHashHex, emailOtpAuthContextProvider, emailOtpAuthContextProviderUserId } from "../../../core/signingEngine/session/identity/laneIdentity.js";
23
- import { toAccountId } from "../../../core/types/accountIds.js";
24
- import { parseEcdsaRelayerKeyId } from "../../../shared-ts/src/threshold/keyMaterialBrands.js";
25
- import { parseEcdsaClientVerifyingPublicKey33B64u, parseEcdsaRoleLocalBindingDigest, parseEcdsaThresholdKeyId } from "../../../core/signingEngine/session/keyMaterialBrands.js";
26
- import { buildEmailOtpEnvelopeFactor, buildPasskeyEnvelopeFactor } from "../../../shared-ts/src/passkey-custody/custodyEnvelope.js";
27
- import { walletCustodyCommitPayloadWithRecoveryBackupAcknowledgement } from "../../../shared-ts/src/passkey-custody/ceremonyCommitPayload.js";
28
- import "../../../shared-ts/src/passkey-custody/index.js";
29
- import { ROUTER_AB_ED25519_YAO_EMAIL_OTP_RECOVERY_BOOTSTRAP_KIND_V1, sameRouterAbEd25519YaoRegistrationAdmissionRequestV1 } from "../../../shared-ts/src/utils/routerAbEd25519Yao.js";
30
- import { RegistrationEventPhase, createRegistrationFlowEvent } from "../../../core/types/sdkSentEvents.js";
31
- import { WalletSessionStatusReadScope } from "../../../core/rpcClients/relayer/walletSessionAuthorizationStatus.js";
32
- import { publishNearProvisioningState, runSingleFlightNearProvisioning } from "../../../core/signingEngine/flows/registration/nearProvisioningRegistry.js";
33
- import { recordWalletCustodyTiming } from "../../../core/signingEngine/walletCustody/ceremonyDriver.js";
34
- import { joinCustodyJsonFromEstablishedCommitPayload, walletCustodyCommitPayloadForWire } from "../../../core/signingEngine/walletCustody/registrationCeremony.js";
35
- import { createRouterAbTraceContextV1 } from "../../../shared-ts/src/utils/routerAbTraceContext.js";
36
- import { RouterAbEd25519YaoClientV1 } from "../../../core/signingEngine/threshold/ed25519/yaoClient.js";
37
- import { buildRecoveredCustodyEnvelopeRecord } from "../../../core/signingEngine/walletCustody/recoveryReplacementEnvelope.js";
38
- import { WALLET_CUSTODY_ED25519_MATERIAL_KEY_KIND } from "../../../core/indexedDB/walletCustodyEd25519MaterialRecord.js";
39
- import { findRegistrationSignerPlanEvmFamilyEcdsaBranch, findRegistrationSignerPlanNearEd25519Branch, registrationSignerPlanFromSelection } from "../../../shared-ts/src/utils/registrationSignerPlan.js";
40
- import { planPendingNearRegistration, preparePendingNearRegistration } from "../../../core/indexedDB/pendingWalletRegistrationCommit.js";
41
- import { walletSessionAuthorizations } from "../../../core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js";
42
- import { IndexedDBManager } from "../../../core/indexedDB/index.js";
43
- import { nearEd25519YaoMaterialActivationFromMetadata } from "../../../core/signingEngine/session/material/nearEd25519YaoMaterialActivation.js";
44
- import { activateWalletRegistration, completeWalletRegistrationNearProvisioning, createWalletAddSignerIntent, finalizeWalletAddSigner, isEmailOtpWalletRegistrationFinalizeResponse, parseWalletRegistrationEcdsaDerivationRespond, respondWalletRegistration, setupWalletRegistration, startWalletAddSigner } from "../../../core/rpcClients/relayer/walletRegistration.js";
45
- import { persistPasskeyEd25519YaoSignerMaterialV1 } from "../../../core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js";
46
- import { prepareWalletEcdsaRegistrationPublication, prepareWalletEd25519RegistrationPublication, prepareWalletEmailOtpEd25519RegistrationPublication } from "../../../core/signingEngine/flows/registration/accountLifecycle.js";
47
- import { computeAddSignerIntentDigest } from "../../../utils/intentDigest.js";
48
- import { establishUnlockedWalletEd25519ExportRootCapabilityV1, walletCustodyCeremonyTransportFromWorkerContextV1 } from "../../../core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js";
49
- import { rememberPasskeyCustodySessionEnvelope } from "../../../core/signingEngine/session/passkey/passkeyCustodySessionCache.js";
50
- import { listConfiguredThresholdEcdsaPublicationTargets } from "../session/thresholdEcdsaProvisioning.js";
51
- import { openWalletCustodyEd25519ActiveClientV1, walletCustodyCacheEnvelopeFromRecordV1 } from "../../../core/signingEngine/walletCustody/openCustodyCache.js";
52
- import { RegistrationTimingRecorder, assertNever, createFailedRegistrationTimingSummary, createSucceededRegistrationTimingSummary, emitNearRegistrationTiming, emitRegistrationTimingSpan, emitRegistrationTimingSummary, recordRegistrationServerTimingBuckets, recordStrictEcdsaServerTimingBuckets, registrationTimingSignerSetFromPlan, roundDurationMs, zeroEmailOtpYaoPrewarmDiagnostics } from "./registrationTiming.js";
53
- import { joinCustodyWireFromEnvelopeRecord } from "../../../core/signingEngine/walletCustody/joinCustodyWire.js";
54
- import { buildStrictRegistrationClientBootstrap, closeStrictEcdsaRegistrationCeremony, finalizeStrictEcdsaFamilyLocalActivation, measureStrictEcdsaCeremonyStep, registrationRouteHeaders, requireIssuedRegistrationEstablishedSession, runStrictEcdsaFamilyCeremony } from "./registrationStrictEcdsa.js";
55
- import { admitDeferredNearRegistration, buildRegistrationEmailOtpEd25519SessionState, buildRegistrationPasskeyEd25519SessionHydration, passkeyWalletAuthAuthorityFromCredential, registrationEd25519MaterialFacts, requireEd25519YaoRegistrationPublicResultMatches, requireEmailOtpEd25519YaoRegistrationPublicResultMatches, requireEmailOtpRegistrationEnrollmentMaterial, requirePasskeyRegistrationIntent } from "./registrationEd25519Yao.js";
56
- import { requirePasskeyPrfFirstB64u } from "../authMethods/passkey/ecdsaBootstrap.js";
57
- import { registrationProjectionFromPending, restorePendingNearRegistrationMaterial } from "./pendingRegistrationRecovery.js";
58
- import { scheduleEcdsaSessionPresignaturePrefill } from "../auth/scheduleEcdsaSessionPresignaturePrefill.js";
59
- import { resolveManagedRuntimeScopeBootstrap } from "../../../core/config/managedRuntimeScope.js";
60
- import { exactPasskeyWalletAuthAuthorityRefForCredential } from "../authMethods/passkey/exactPasskeyAuthority.js";
61
- import { collectPasskeyRegistrationAuthority } from "../authMethods/passkey/registrationAuthority.js";
62
- import { showWalletRecoveryCodeBackupUi } from "../recovery/walletRecoveryCodeBackup.js";
63
- import { pendingWalletRecoveryCodeBackupRepository } from "../../../core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js";
64
- import { registrationFinalizeIdempotencyKeyFromString } from "../../publicApi/types.js";
65
- import { collectEmailOtpRegistrationAuthority } from "../authMethods/emailOtp/registrationAuthority.js";
66
- import { admitVerifiedPasskeyEd25519YaoAddSignerV1 } from "../../../core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js";
67
- import { buildPendingRegistrationCommit, buildRegistrationPersistenceAuth, buildRegistrationPersistenceEcdsa, buildRegistrationPersistencePlan, commitRegistrationPersistencePlan, finalizeRegistrationEcdsaSessions, finalizeResponseViewFromActivatedEcdsa, requireFinalizedPasskeyCredentialPublicKeyB64u, requireWebAuthnRpId } from "./registrationTerminalCommit.js";
68
- //#region src/SeamsWeb/operations/registration/registration.ts
69
- async function confirmWalletRecoveryCodesBackedUp(context, walletId, backup, recoveryCodes) {
70
- if (recoveryCodes.length !== 10 || new Set(recoveryCodes).size !== 10) throw new Error("Wallet custody must issue exactly ten distinct recovery codes");
71
- switch ((await resolveRegistrationRecoveryCodeBackup({
72
- backup,
73
- context,
74
- request: {
75
- kind: "wallet_recovery_code_backup_request_v1",
76
- walletId,
77
- recoveryCodes,
78
- continuation: "registration_may_defer"
79
- }
80
- }))?.kind) {
81
- case "wallet_recovery_codes_backed_up_v1": return;
82
- case "wallet_recovery_code_backup_deferred_v1":
83
- await pendingWalletRecoveryCodeBackupRepository.write({
84
- walletId,
85
- recoveryCodes
86
- });
87
- return;
88
- default: throw new Error("Wallet recovery-code backup result is invalid");
89
- }
90
- }
91
- async function resolveRegistrationRecoveryCodeBackup(input) {
92
- if (!input.backup) return { kind: "wallet_recovery_code_backup_deferred_v1" };
93
- switch (input.backup.kind) {
94
- case "defer_to_account_menu": return { kind: "wallet_recovery_code_backup_deferred_v1" };
95
- case "show_builtin_dialog": return await showWalletRecoveryCodeBackupUi(input.request, input.context.signingEngine.getWalletIframeSurfaceMeasurementBinding());
96
- case "custom_handler": return await input.backup.handler(input.request);
97
- default: return assertNever(input.backup);
98
- }
99
- }
100
- function zeroizeArrayBuffer(buffer) {
101
- if (buffer.byteLength > 0) new Uint8Array(buffer).fill(0);
102
- }
103
- function walletCustodyRegistrationMaterial(args) {
104
- const metadata = args.established.metadata;
105
- return {
106
- binding: {
107
- kind: WALLET_CUSTODY_ED25519_MATERIAL_KEY_KIND,
108
- applicationBindingDigestB64u: args.established.localMaterial.applicationBindingDigestB64u,
109
- registeredPublicKeyB64u: base64UrlEncode(metadata.registeredPublicKey),
110
- participantIds: metadata.participantIds,
111
- stateEpoch: String(metadata.stateEpoch),
112
- walletId: args.walletId,
113
- nearAccountId: args.nearAccountId,
114
- nearEd25519SigningKeyId: args.nearEd25519SigningKeyId,
115
- signerSlot: args.signerSlot,
116
- signingWorkerId: metadata.scope.signing_worker_id,
117
- signingWorkerVerifyingShareB64u: base64UrlEncode(metadata.signingWorkerVerifyingShare)
118
- },
119
- sealed: {
120
- ciphertextB64u: args.established.localMaterial.b64u,
121
- nonceB64u: args.established.localMaterial.nonceB64u
122
- }
123
- };
124
- }
125
- function pendingRegistrationEd25519MetadataFromJoined(joined) {
126
- const metadata = joined.metadata;
127
- return {
128
- materialActivation: nearEd25519YaoMaterialActivationFromMetadata(metadata),
129
- registeredPublicKeyB64u: base64UrlEncode(metadata.registeredPublicKey),
130
- signingWorkerVerifyingShareB64u: base64UrlEncode(metadata.signingWorkerVerifyingShare),
131
- stateEpoch: String(metadata.stateEpoch),
132
- signingWorkerId: metadata.scope.signing_worker_id,
133
- participantIds: metadata.participantIds,
134
- nearEd25519SigningKeyId: metadata.applicationBinding.near_ed25519_signing_key_id,
135
- signerSlot: metadata.applicationBinding.key_creation_signer_slot
136
- };
137
- }
138
- function walletCustodyCacheEnvelopeFromRegistrationCommit(commit) {
139
- const established = commit.establishedCustody;
140
- if (!established) throw new Error("Mixed registration custody commit is missing its established envelope");
141
- return {
142
- bindingJson: established.envelopeBindingJson,
143
- nonceB64u: established.envelopeNonceB64u,
144
- ciphertextB64u: established.sealedCustodySecretB64u,
145
- aadHashB64u: established.envelopeAadHashB64u,
146
- ciphertextDigestB64u: established.envelopeCiphertextDigestB64u
147
- };
148
- }
149
- function custodyEnvelopeFromRegistrationCommit(args) {
150
- const established = args.commit.establishedCustody;
151
- if (!established) throw new Error("Passkey registration custody commit is missing its established envelope");
152
- return buildRecoveredCustodyEnvelopeRecord({
153
- expectedWalletId: args.walletId,
154
- replacement: established,
155
- activatedAtMs: args.activatedAtMs
156
- });
157
- }
158
- async function establishPasskeyRegistrationEd25519ExportRootCapability(args) {
159
- await args.signingEngine.establishUnlockedWalletEd25519ExportRootCapabilityV1({
160
- existingEnvelope: custodyEnvelopeFromRegistrationCommit({
161
- commit: args.commit,
162
- walletId: args.walletId,
163
- activatedAtMs: Date.now()
164
- }),
165
- passkeyPrfFirstB64u: args.passkeyPrfFirstB64u,
166
- walletId: args.walletId,
167
- walletAuthMethodId: args.walletAuthMethodId,
168
- walletSessionId: args.walletSessionId,
169
- expiresAtMs: args.expiresAtMs
170
- });
171
- }
172
- async function establishEmailOtpRegistrationEd25519ExportRootCapability(args) {
173
- try {
174
- await establishUnlockedWalletEd25519ExportRootCapabilityV1(walletCustodyCeremonyTransportFromWorkerContextV1(args.context.signingEngine.getSignerWorkerContext()), {
175
- existingEnvelope: custodyEnvelopeFromRegistrationCommit({
176
- commit: args.commit,
177
- walletId: args.walletId,
178
- activatedAtMs: Date.now()
179
- }),
180
- existingFactorSecret: args.factorSecret32,
181
- walletId: args.walletId,
182
- walletAuthMethodId: String(args.emailOtpAuthContext.authority.bindingId),
183
- walletSessionId: args.walletSessionId,
184
- expiresAtMs: args.expiresAtMs
185
- });
186
- } catch (error) {
187
- console.warn("[registration][email-otp] unlocked Ed25519 export-root capability was not established:", error instanceof Error ? error.message : String(error || "unknown error"));
188
- }
189
- }
190
- async function rememberPasskeyRegistrationCustodyEnvelope(args) {
191
- const envelope = custodyEnvelopeFromRegistrationCommit(args);
192
- if (envelope.factor.kind !== "passkey") throw new Error("Passkey registration custody commit has a non-passkey factor");
193
- await rememberPasskeyCustodySessionEnvelope({
194
- walletId: args.walletId,
195
- credentialIdB64u: envelope.factor.credentialIdB64u,
196
- envelope
197
- });
198
- }
199
- function buildRegistrationEmailOtpEd25519RecoveryBootstrap(args) {
200
- const metadata = args.joined.metadata;
201
- const thresholdSessionId = parseThresholdEd25519SessionId(metadata.scope.threshold_session_id);
202
- if (!thresholdSessionId.ok) throw new Error("Registration Ed25519 capability has an invalid threshold session");
203
- return {
204
- kind: ROUTER_AB_ED25519_YAO_EMAIL_OTP_RECOVERY_BOOTSTRAP_KIND_V1,
205
- session: {
206
- walletId: args.walletId,
207
- nearAccountId: args.nearAccountId,
208
- nearEd25519SigningKeyId: args.nearEd25519SigningKeyId,
209
- authorityScope: {
210
- kind: "email_otp",
211
- provider: emailOtpAuthContextProvider(args.authContext),
212
- providerUserId: emailOtpAuthContextProviderUserId(args.authContext)
213
- },
214
- thresholdSessionId: thresholdSessionId.value,
215
- authorizationId: args.sessionState.signingWalletSession.authorizationId,
216
- walletSessionId: args.sessionState.walletSessionId,
217
- quotaId: args.sessionState.quotaId,
218
- expiresAtMs: args.sessionState.signingWalletSession.expiresAtMs,
219
- participantIds: metadata.participantIds,
220
- remainingUses: args.sessionState.signingWalletSession.remainingUses,
221
- signingRootId: args.sessionState.signingRootId,
222
- signingRootVersion: args.sessionState.signingRootVersion,
223
- runtimePolicyScope: args.sessionState.runtimePolicyScope,
224
- routerAbNormalSigning: args.sessionState.routerAbNormalSigning
225
- },
226
- capability: {
227
- kind: "router_ab_ed25519_yao_active_capability_v1",
228
- materialActivation: metadata.materialActivation,
229
- activeCapabilityBinding: metadata.activeCapabilityBinding,
230
- registeredPublicKey: [...metadata.registeredPublicKey],
231
- nearAccountId: args.nearAccountId,
232
- applicationBinding: metadata.applicationBinding,
233
- runtimePolicyScope: args.sessionState.runtimePolicyScope,
234
- participantIds: metadata.participantIds,
235
- lifecycle: {
236
- lifecycleId: metadata.scope.lifecycle_id,
237
- rootShareEpoch: metadata.scope.root_share_epoch,
238
- accountId: metadata.scope.account_id,
239
- thresholdSessionId: thresholdSessionId.value,
240
- signerSetId: metadata.scope.signer_set_id,
241
- signingWorkerId: metadata.scope.signing_worker_id
242
- },
243
- stateEpoch: Number(metadata.stateEpoch),
244
- registrationContinuity: {
245
- kind: "registration",
246
- admissionRequest: args.deferredNear.admissionRequest,
247
- admissionReceipt: args.admissionReceipt,
248
- activationTranscript: [...metadata.transcript]
249
- }
250
- }
251
- };
252
- }
253
- const hostedPasskeyRegistrationPreparedBrand = Symbol("hostedPasskeyRegistrationPrepared");
254
- const hostedPasskeyRegistrationStates = /* @__PURE__ */ new WeakMap();
255
- function registrationSignerPlanFromSignerSet(selection) {
256
- const plan = registrationSignerPlanFromSelection(selection);
257
- if (!plan.ok) throw new Error(plan.message);
258
- return plan.value;
259
- }
260
- function registrationWarmupWork(context) {
261
- return context.signingEngine.warmCriticalResources.bind(context.signingEngine, { kind: "none" });
262
- }
263
- function registrationPlanBranchIncludesNearEd25519(branch) {
264
- return branch.kind === "near_ed25519";
265
- }
266
- function registrationSelectionRequiresEmailOtpYaoWarmup(signerSelection) {
267
- return registrationSignerPlanFromSignerSet(signerSelection).branches.some(registrationPlanBranchIncludesNearEd25519);
268
- }
269
- function noEmailOtpYaoPrewarm() {
270
- return Promise.resolve(zeroEmailOtpYaoPrewarmDiagnostics());
271
- }
272
- function registrationSelectionIncludesEcdsa(signerSelection) {
273
- return signerSelection.signers.some((signer) => signer.kind === "evm_family_ecdsa");
274
- }
275
- function registrationEmailOtpYaoPrewarmWork(input) {
276
- if (input.authMethod.kind !== "email_otp" || !registrationSelectionRequiresEmailOtpYaoWarmup(input.signerSelection)) return noEmailOtpYaoPrewarm;
277
- return executeRegistrationEmailOtpYaoPrewarm.bind(void 0, { prewarm: input.context.signingEngine.prewarmEmailOtpYao.bind(input.context.signingEngine) });
278
- }
279
- function recoverEmailOtpYaoPrewarmFailure(_error, startedAt) {
280
- const elapsedMs = roundDurationMs(startedAt);
281
- return {
282
- kind: "failed",
283
- elapsedMs,
284
- workerPrewarmMs: elapsedMs,
285
- yaoWasmInitMs: 0,
286
- failureStage: "worker_ready"
287
- };
288
- }
289
- function executeRegistrationEmailOtpYaoPrewarm(input) {
290
- const startedAt = performance.now();
291
- return input.prewarm().catch((error) => recoverEmailOtpYaoPrewarmFailure(error, startedAt));
292
- }
293
- function completedRegistrationWarmup(results) {
294
- const [diagnostics, emailOtpYao] = results;
295
- return {
296
- kind: "completed",
297
- diagnostics: {
298
- ...diagnostics,
299
- emailOtpWorkerPrewarmMs: emailOtpYao.workerPrewarmMs,
300
- emailOtpYaoWasmInitMs: emailOtpYao.yaoWasmInitMs,
301
- emailOtpYaoPrewarm: emailOtpYao
302
- }
303
- };
304
- }
305
- function failedRegistrationWarmup(error) {
306
- return {
307
- kind: "failed",
308
- error
309
- };
310
- }
311
- function startRegistrationWarmup(input) {
312
- const genericWarmup = input.recorder.measure("registrationWarmupMs", registrationWarmupWork(input.context));
313
- const emailOtpYaoWarmup = input.recorder.measure("registrationWarmupEmailOtpYaoWasmInitMs", registrationEmailOtpYaoPrewarmWork({
314
- context: input.context,
315
- authMethod: input.authMethod,
316
- signerSelection: input.signerSelection
317
- }));
318
- if (registrationSelectionIncludesEcdsa(input.signerSelection)) input.context.signingEngine.prewarmEcdsaRegistrationCrypto?.().catch(() => {});
319
- return Promise.all([genericWarmup, emailOtpYaoWarmup]).then(completedRegistrationWarmup, failedRegistrationWarmup);
320
- }
321
- function observeRegistrationWarmup(input) {
322
- input.warmup.then((outcome) => {
323
- if (outcome.kind === "completed") input.recorder.captureWarmupDiagnostics(outcome.diagnostics);
324
- });
325
- }
326
- function registrationPreparationSignerSlot(signerSelection) {
327
- return findRegistrationSignerPlanNearEd25519Branch(registrationSignerPlanFromSignerSet(signerSelection))?.signerSlot ?? 1;
328
- }
329
- async function resolvePasskeyRegistrationAuthority(args) {
330
- if (args.passkeyExecution?.kind === "use_hosted_preparation") return await args.passkeyExecution.authority;
331
- return await collectPasskeyRegistrationAuthority({
332
- context: args.context,
333
- walletId: args.walletId,
334
- signerSlot: args.signerSlot,
335
- registrationIntentDigestB64u: args.registrationIntentDigestB64u,
336
- options: args.options,
337
- confirmationConfigOverride: args.confirmationConfigOverride
338
- });
339
- }
340
- function hostedPasskeyRegistrationState(prepared) {
341
- if (prepared[hostedPasskeyRegistrationPreparedBrand] !== true) throw new Error("Invalid hosted passkey registration preparation");
342
- const state = hostedPasskeyRegistrationStates.get(prepared);
343
- if (!state) throw new Error("Hosted passkey registration preparation is unknown");
344
- return state;
345
- }
346
- function hostedPasskeyRegistrationBinding(args) {
347
- return alphabetizeStringify({
348
- wallet: args.wallet,
349
- signerSelection: args.signerSelection,
350
- authMethod: args.authMethod,
351
- walletId: args.walletId,
352
- signerSlot: args.signerSlot,
353
- rpId: args.rpId,
354
- challengeB64u: args.challengeB64u
355
- });
356
- }
357
- /**
358
- * Near-provisioning retries must present the SAME operation identity.
359
- *
360
- * The server's Yao consume writes a first-writer consumer binding derived from
361
- * the request fingerprint, which includes this key. A fresh key per attempt
362
- * would permanently poison the activation on any ambiguous first attempt —
363
- * the retry would arrive as a different consumer and hit `activation_consumed`
364
- * forever. Deriving the key from the ceremony and activation reference makes
365
- * every retry the same consumer, so takeover resume works instead.
366
- */
367
- async function deriveNearProvisioningIdempotencyKey(input) {
368
- return registrationFinalizeIdempotencyKeyFromString(`wallet-registration-near-provisioning:${await sha256HexUtf8([
369
- "wallet-registration-near-provisioning",
370
- input.registrationCeremonyId,
371
- input.activationReference.lifecycle_id,
372
- input.activationReference.session_id.map((byte) => byte.toString(16).padStart(2, "0")).join("")
373
- ].join(":"))}`);
374
- }
375
- function createRegistrationOperationIdempotencyKey(label) {
376
- const cryptoApi = globalThis.crypto;
377
- if (cryptoApi && typeof cryptoApi.randomUUID === "function") return registrationFinalizeIdempotencyKeyFromString(`${label}:${cryptoApi.randomUUID()}`);
378
- const bytes = new Uint8Array(16);
379
- if (!cryptoApi || typeof cryptoApi.getRandomValues !== "function") throw new Error("Secure randomness is required for registration finalization");
380
- cryptoApi.getRandomValues(bytes);
381
- return registrationFinalizeIdempotencyKeyFromString(`${label}:${[...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("")}`);
382
- }
383
- function startEmailOtpRegistrationEnrollmentMaterial(input) {
384
- return input.recorder.measure("emailOtpEnrollmentMaterialMs", () => resolveEmailOtpRegistrationEnrollmentMaterial({
385
- context: input.context,
386
- authMethod: input.authMethod,
387
- relayerUrl: input.relayerUrl,
388
- walletId: input.walletId,
389
- providerSubject: input.providerSubject,
390
- clientSecret32: input.clientSecret32
391
- }));
392
- }
393
- function assertEmailOtpRegistrationHasNoLegacyEcdsaRoot(material) {
394
- if (material.emailOtpSessionHandle.kind !== "not_requested") throw new Error("Strict ECDSA registration received obsolete Email OTP root-share material");
395
- }
396
- async function resolveEmailOtpRegistrationEnrollmentMaterial(input) {
397
- if (input.authMethod.kind !== "email_otp") throw new Error("Email OTP enrollment material requires Email OTP auth");
398
- try {
399
- const material = await input.context.signingEngine.prepareEmailOtpRegistrationEnrollmentMaterialInternal({
400
- relayUrl: input.relayerUrl,
401
- walletId: toWalletId(input.walletId),
402
- userId: input.providerSubject,
403
- clientSecret32: input.clientSecret32
404
- });
405
- assertEmailOtpRegistrationHasNoLegacyEcdsaRoot(material);
406
- return material;
407
- } finally {
408
- input.clientSecret32.fill(0);
409
- }
410
- }
411
- function createRegistrationLifecycleEvent(input) {
412
- const authMethod = input.event.authMethod;
413
- const accountId = registrationEventAccountId(input.accountId);
414
- return createRegistrationFlowEvent({
415
- ...input.event,
416
- flowId: `registration:${authMethod}:${accountId}`,
417
- accountId,
418
- authMethod
419
- });
420
- }
421
- function registrationEventAccountId(value) {
422
- const accountId = String(value || "").trim();
423
- if (!accountId) throw new Error("Registration event account id is required");
424
- return accountId;
425
- }
426
- function registrationErrorCodeFromUnknown(error) {
427
- return isObject(error) && "code" in error ? String(error.code || "").trim() : "";
428
- }
429
- function registrationErrorWithCode(message, errorCode) {
430
- return Object.assign(new Error(message), errorCode ? { code: errorCode } : {});
431
- }
432
- function webAuthnTransportsFromRaw(value) {
433
- if (!Array.isArray(value)) return [];
434
- return value.filter((transport) => {
435
- switch (transport) {
436
- case "ble":
437
- case "hybrid":
438
- case "internal":
439
- case "nfc":
440
- case "smart-card":
441
- case "usb": return true;
442
- default: return false;
443
- }
444
- });
445
- }
446
- function emitRegistrationEvent(onEvent, accountId, event) {
447
- onEvent?.(createRegistrationLifecycleEvent({
448
- accountId,
449
- event
450
- }));
451
- }
452
- async function emailOtpEmailHashHex(email) {
453
- const normalizedEmail = String(email || "").trim().toLowerCase();
454
- if (!normalizedEmail) throw new Error("Email OTP registration auth context requires email");
455
- return sha256HexUtf8(normalizedEmail);
456
- }
457
- function emailOtpProviderFromRegistrationProof(proof) {
458
- switch (proof.proofKind) {
459
- case "otp_challenge": return "email";
460
- case "google_sso_registration": return "google";
461
- default: return assertNever(proof);
462
- }
463
- }
464
- function registrationThreeRouteAuthorityPayload(authority) {
465
- switch (authority.kind) {
466
- case "passkey": return {
467
- kind: "passkey",
468
- webauthnRegistration: authority.webauthnRegistration
469
- };
470
- case "email_otp": return {
471
- kind: "email_otp",
472
- emailOtpRegistrationProof: authority.emailOtpRegistrationProof
473
- };
474
- default: return assertNever(authority);
475
- }
476
- }
477
- async function startNearRegistrationAdmission(args) {
478
- const startedAt = performance.now();
479
- try {
480
- const admissionReceipt = await admitDeferredNearRegistration(args.deferredNear, {
481
- routerOrigin: new URL(args.relayerUrl).origin,
482
- authorization: {
483
- kind: "bearer",
484
- value: `Bearer ${args.signedSetup}`
485
- },
486
- fetch: globalThis.fetch,
487
- ...args.traceContext ? { traceContext: args.traceContext } : {}
488
- });
489
- emitNearRegistrationTiming({
490
- ceremonyId: args.registrationCeremonyId,
491
- stage: "early_admission",
492
- startedAt,
493
- outcome: "success"
494
- });
495
- return {
496
- deferredNear: args.deferredNear,
497
- admissionReceipt
498
- };
499
- } catch (error) {
500
- emitNearRegistrationTiming({
501
- ceremonyId: args.registrationCeremonyId,
502
- stage: "early_admission",
503
- startedAt,
504
- outcome: "failure"
505
- });
506
- throw error;
507
- }
508
- }
509
- function requireNearRegistrationAdmission(admission) {
510
- if (!admission) throw new Error("Mixed registration did not start NEAR admission");
511
- return admission;
512
- }
513
- function registrationEd25519LaneAuthorization(auth, passkeyCredentialIdB64u, session) {
514
- switch (auth.kind) {
515
- case "passkey": return { auth: {
516
- kind: "passkey",
517
- rpId: toRpId(auth.rpId),
518
- credentialIdB64u: passkeyCredentialIdB64u
519
- } };
520
- case "email_otp": return {
521
- auth: {
522
- kind: "email_otp",
523
- providerSubjectId: emailOtpAuthContextProviderUserId(auth.emailOtpAuthContext)
524
- },
525
- remainingUses: session.remainingUses,
526
- expiresAtMs: session.expiresAtMs
527
- };
528
- default: return assertNever(auth);
529
- }
530
- }
531
- async function buildThreeRouteCanonicalActivationCommand(args) {
532
- const canonicalRequest = parseCanonicalEcdsaServerActivationRequest(alphabetizeStringify({
533
- operation: "wallet_registration_activate_v2",
534
- registrationCeremonyId: args.registrationCeremonyId,
535
- activationCorrelationId: args.activationCorrelationId,
536
- idempotencyKey: args.idempotencyKey,
537
- publicFacts: args.publicFacts
538
- }));
539
- return {
540
- canonicalRequest,
541
- requestDigest: parseDigestB64u(base64UrlEncode(await sha256BytesUtf8(String(canonicalRequest))))
542
- };
543
- }
544
- async function persistThreeRouteCanonicalActivation(args) {
545
- const planInput = {
546
- authority: args.materialAuthority,
547
- targetMemberships: args.chainTargets,
548
- evmFamilySigningKeySlotId: requireEvmFamilySigningKeySlotId(args.ecdsaPrepare.prepare.evmFamilySigningKeySlotId, "registration ECDSA signing key slot"),
549
- ecdsaThresholdKeyId: parseEcdsaThresholdKeyId(args.ecdsaPrepare.prepare.ecdsaThresholdKeyId),
550
- signingRootId: parseSdkEcdsaDerivationSigningRootId(args.ecdsaPrepare.prepare.signingRootId),
551
- signingRootVersion: parseSdkEcdsaDerivationSigningRootVersion(args.ecdsaPrepare.prepare.signingRootVersion),
552
- runtimePolicyScope: args.ecdsaPrepare.prepare.runtimePolicyScope,
553
- clientVerifyingPublicKey33B64u: parseEcdsaClientVerifyingPublicKey33B64u(args.clientActivation.derivationClientSharePublicKey33B64u),
554
- participantIds: [toParticipantId(args.ecdsaPrepare.prepare.participantIds[0]), toParticipantId(args.ecdsaPrepare.prepare.participantIds[1])],
555
- relayerKeyId: parseEcdsaRelayerKeyId(args.ecdsaPrepare.prepare.relayerKeyId),
556
- bindingDigest: parseEcdsaRoleLocalBindingDigest(args.clientActivation.contextBinding32B64u),
557
- journalId: args.activationCorrelationId,
558
- requestDigest: args.activationCommand.requestDigest,
559
- canonicalRequest: args.activationCommand.canonicalRequest,
560
- createdAt: parseIsoTimestamp((/* @__PURE__ */ new Date()).toISOString())
561
- };
562
- const persisted = await args.context.signingEngine.persistInitialCanonicalEcdsaActivation({
563
- kind: "persist_initial_canonical_ecdsa_activation_v1",
564
- bootstrapOwner: "wallet_custody",
565
- clientActivation: args.clientActivation,
566
- ceremonyId: args.ceremonyId,
567
- planInput
568
- });
569
- if (!persisted.ok) throw new Error(`Canonical ECDSA activation persistence failed (${persisted.code}): ${persisted.message}`);
570
- return persisted;
571
- }
572
- function ethereumAddressFromAddress20B64u(value) {
573
- const bytes = base64UrlDecode(value);
574
- if (bytes.length !== 20) throw new Error("ECDSA activation address must contain 20 bytes");
575
- return `0x${Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("")}`;
576
- }
577
- /**
578
- * Calls `/wallets/register/setup`, which replaces the bootstrap grant, the
579
- * registration intent, and registration start.
580
- *
581
- * Runs before the authenticator prompt, because its response carries the
582
- * challenge that prompt must sign — so the Router's ECDSA preparation overlaps
583
- * the user's interaction instead of being serialized after it.
584
- */
585
- async function setupThreeRouteRegistration(args) {
586
- const relayerUrl = String(args.context.configs.network.relayer.url || "").trim();
587
- if (!relayerUrl) throw new Error("registerWallet requires relayer.url");
588
- const registration = args.context.configs.registration;
589
- const publishableKey = String(registration?.publishableKey || "").trim();
590
- const environmentId = String(registration?.projectEnvironmentId || "").trim();
591
- if (!publishableKey || !environmentId) throw new Error("registerWallet requires registration.publishableKey and registration.projectEnvironmentId");
592
- const registrationWarmup = startRegistrationWarmup({
593
- recorder: args.recorder,
594
- context: args.context,
595
- authMethod: args.authMethod,
596
- signerSelection: args.signerSelection
597
- });
598
- const setup = await args.recorder.measure("registrationIntentMs", () => setupWalletRegistration({
599
- relayerUrl,
600
- request: {
601
- ...args.wallet.kind === "provided" ? { wallet: args.wallet } : {},
602
- signerSelection: args.signerSelection,
603
- authMethod: args.authMethod
604
- },
605
- auth: {
606
- publishableKey,
607
- environmentId
608
- }
609
- }));
610
- if (!setup.ok) throw registrationErrorWithCode(setup.message, setup.code);
611
- return {
612
- relayerUrl,
613
- setup,
614
- registrationWarmup
615
- };
616
- }
617
- async function setupRegistrationForPasskeyExecution(args) {
618
- if (args.passkeyExecution.kind === "collect_during_registration") return await setupThreeRouteRegistration({
619
- context: args.context,
620
- authMethod: args.authMethod,
621
- wallet: args.wallet,
622
- signerSelection: args.signerSelection,
623
- recorder: args.recorder
624
- });
625
- if (args.authMethod.kind !== "passkey") throw new Error("Hosted passkey preparation requires passkey registration");
626
- const state = hostedPasskeyRegistrationState(args.passkeyExecution.prepared);
627
- if (state.context !== args.context || state.lifecycle === "cancelled") throw new Error("Hosted passkey registration preparation belongs to a different operation");
628
- const setup = state.setup;
629
- const intent = requirePasskeyRegistrationIntent(setup.setup.intent);
630
- const challengeB64u = String(setup.setup.registrationIntentDigestB64u || "").trim();
631
- const signerSlot = registrationPreparationSignerSlot(args.signerSelection);
632
- if (hostedPasskeyRegistrationBinding({
633
- wallet: args.wallet,
634
- signerSelection: args.signerSelection,
635
- authMethod: args.authMethod,
636
- walletId: walletIdFromString(String(intent.walletId)),
637
- signerSlot,
638
- rpId: requireWebAuthnRpId(String(args.authMethod.rpId)),
639
- challengeB64u
640
- }) !== state.binding || String(intent.walletId) !== String(args.passkeyExecution.prepared.walletId) || challengeB64u !== args.passkeyExecution.prepared.challengeB64u) throw new Error("Hosted passkey registration preparation binding changed");
641
- return setup;
642
- }
643
- function ecdsaRegistrationClientCeremonyForExecution(args) {
644
- if (args.passkeyExecution.kind === "collect_during_registration") return { kind: "create_after_authority" };
645
- const state = hostedPasskeyRegistrationState(args.passkeyExecution.prepared);
646
- if (state.ecdsaClientCeremony.kind !== "started" || state.ecdsaClientCeremony.ceremonyId !== args.ceremonyId) throw new Error("Hosted passkey registration has no matching ECDSA client ceremony");
647
- return {
648
- kind: "use_hosted_preparation",
649
- ceremonyId: state.ecdsaClientCeremony.ceremonyId,
650
- operation: state.ecdsaClientCeremony.operation
651
- };
652
- }
653
- async function awaitHostedPreparedEcdsaClientCeremony(operation) {
654
- return await operation;
655
- }
656
- function ecdsaRegistrationClientCeremonyOperation(args) {
657
- switch (args.clientCeremony.kind) {
658
- case "create_after_authority": return args.context.signingEngine.createRouterAbEcdsaRegistrationCeremony.bind(args.context.signingEngine, {
659
- kind: "create_router_ab_ecdsa_registration_ceremony_v1",
660
- ceremonyId: args.ceremonyId,
661
- registration: args.registration
662
- });
663
- case "use_hosted_preparation":
664
- if (args.clientCeremony.ceremonyId !== args.ceremonyId) throw new Error("Prepared ECDSA client ceremony identity changed");
665
- return awaitHostedPreparedEcdsaClientCeremony.bind(void 0, args.clientCeremony.operation);
666
- default: return assertNever(args.clientCeremony);
667
- }
668
- }
669
- async function runEcdsaEnabledThreeRouteRegistrationCeremony(args) {
670
- const [firstChainTarget, ...remainingChainTargets] = args.ecdsaPrepare.chainTargets;
671
- if (!firstChainTarget) throw new Error("Strict ECDSA ceremony requires at least one EVM-family target");
672
- const ceremonyId = args.registrationCeremonyId;
673
- const activationCorrelationId = parseCorrelationId(ceremonyId);
674
- let deferredNearCustodyWork = null;
675
- try {
676
- const created = await measureStrictEcdsaCeremonyStep({
677
- registrationTiming: args.registrationTiming,
678
- bucket: "ecdsaRegistrationClientCreateMs",
679
- operation: ecdsaRegistrationClientCeremonyOperation({
680
- context: args.context,
681
- ceremonyId,
682
- registration: args.ecdsaPrepare.strictRegistration,
683
- clientCeremony: args.clientCeremony
684
- })
685
- });
686
- const responded = await measureStrictEcdsaCeremonyStep({
687
- registrationTiming: args.registrationTiming,
688
- bucket: "ecdsaRegistrationGatewayRespondMs",
689
- operation: respondWalletRegistration.bind(void 0, {
690
- relayerUrl: args.relayerUrl,
691
- headers: registrationRouteHeaders(args.traceContext),
692
- registrationCeremonyId: ceremonyId,
693
- signerPlanKind: args.signerPlanKind,
694
- signedSetup: args.signedSetup,
695
- ecdsa: {
696
- kind: "router_ab_ecdsa_registration_v1",
697
- strictRegistration: created.registrationRequest,
698
- requestDigestB64u: created.registrationRequestDigestB64u
699
- },
700
- ...registrationThreeRouteAuthorityPayload(args.authority),
701
- onServerTiming: (header) => recordStrictEcdsaServerTimingBuckets(args.registrationTiming, "respond", header)
702
- })
703
- });
704
- if (responded.kind === "near_ed25519") throw new Error("ECDSA registration ceremony received an Ed25519-only respond result");
705
- const deferredNear = responded.kind === "near_ed25519_and_evm_family_ecdsa" ? responded.ed25519 : null;
706
- const nearAdmission = deferredNear ? startNearRegistrationAdmission({
707
- relayerUrl: args.relayerUrl,
708
- registrationCeremonyId: ceremonyId,
709
- signedSetup: args.signedSetup,
710
- deferredNear,
711
- traceContext: args.traceContext
712
- }) : null;
713
- nearAdmission?.catch(ignoreNearCustodyFailure);
714
- const verified = await measureStrictEcdsaCeremonyStep({
715
- registrationTiming: args.registrationTiming,
716
- bucket: "ecdsaRegistrationClientProofVerifyMs",
717
- operation: args.context.signingEngine.verifyRouterAbEcdsaRegistrationClientProofs.bind(args.context.signingEngine, {
718
- kind: "verify_router_ab_ecdsa_registration_client_proofs_v1",
719
- bootstrapOwner: "wallet_custody",
720
- ceremonyId,
721
- clientProofFinalization: {
722
- kind: "finalize_encrypted_client_proof_bundles_v2",
723
- bundles: responded.ecdsa.strictResult.response.bundles
724
- }
725
- })
726
- });
727
- const activateEmailOtp = await args.resolveActivateEmailOtp();
728
- const chainTargets = [firstChainTarget, ...remainingChainTargets];
729
- const walletCustodyFactorJson = args.authority.kind === "passkey" ? args.authority.walletCustodyFactorJson : activateEmailOtp.walletCustodyFactorJson;
730
- if (!walletCustodyFactorJson) throw new Error("ECDSA registration has no wallet custody factor binding");
731
- const walletCustodyFactorSecret = args.authority.walletCustodyFactorSecret;
732
- const activationHolder = {};
733
- const established = await args.context.signingEngine.establishWalletCustodyEvmFamilyKeySet({
734
- walletId: args.ecdsaPrepare.prepare.walletId,
735
- factorJson: walletCustodyFactorJson,
736
- factorSecret: walletCustodyFactorSecret,
737
- evmFamilySigningKeySlotId: args.ecdsaPrepare.prepare.evmFamilySigningKeySlotId,
738
- applicationBindingDigestB64u: verified.applicationBindingDigestB64u,
739
- confirmRecoveryCodesBackedUp: args.confirmRecoveryCodesBackedUp,
740
- runRelayerRound: async (bootstrap) => {
741
- const clientActivation = parseRouterAbEcdsaVerifiedClientActivationFactsV1({
742
- registrationRequestDigestB64u: verified.registrationRequestDigestB64u,
743
- proofTranscriptDigestB64u: verified.proofTranscriptDigestB64u,
744
- contextBinding32B64u: bootstrap.contextBinding32B64u,
745
- derivationClientSharePublicKey33B64u: bootstrap.clientSharePublicKey33B64u,
746
- clientShareRetryCounter: bootstrap.clientShareRetryCounter,
747
- participantId: 1
748
- });
749
- const activationCommand = await buildThreeRouteCanonicalActivationCommand({
750
- registrationCeremonyId: ceremonyId,
751
- activationCorrelationId,
752
- idempotencyKey: args.idempotencyKey,
753
- publicFacts: clientActivation
754
- });
755
- const ecdsaCustodyCommit = walletCustodyCommitPayloadForWire(bootstrap.preActivationCommitPayload);
756
- const ecdsaReplay = {
757
- activationJournalId: activationCorrelationId,
758
- clientActivation,
759
- activationRequestDigestB64u: activationCommand.requestDigest
760
- };
761
- if (args.signerPlanKind === "near_ed25519_and_evm_family_ecdsa") {
762
- if (!deferredNear) throw new Error("Mixed registration has no NEAR continuation");
763
- await args.persistPendingCommit({
764
- signerPlanKind: args.signerPlanKind,
765
- localMaterial: {
766
- keyFamilies: ["ecdsa_secp256k1"],
767
- custodyCommit: ecdsaCustodyCommit,
768
- ecdsa: ecdsaReplay
769
- },
770
- emailOtpEnrollment: activateEmailOtp.enrollment,
771
- deferredNear
772
- });
773
- deferredNearCustodyWork = args.startDeferredNearCustody({
774
- admission: requireNearRegistrationAdmission(nearAdmission),
775
- establishedEvmCustodyCommit: bootstrap.preActivationCommitPayload
776
- });
777
- deferredNearCustodyWork.catch(ignoreNearCustodyFailure);
778
- } else await args.persistPendingCommit({
779
- signerPlanKind: args.signerPlanKind,
780
- localMaterial: {
781
- keyFamilies: ["ecdsa_secp256k1"],
782
- custodyCommit: ecdsaCustodyCommit,
783
- ecdsa: ecdsaReplay
784
- },
785
- emailOtpEnrollment: activateEmailOtp.enrollment
786
- });
787
- const persisted = await persistThreeRouteCanonicalActivation({
788
- context: args.context,
789
- ceremonyId,
790
- materialAuthority: args.materialAuthority,
791
- ecdsaPrepare: args.ecdsaPrepare,
792
- chainTargets,
793
- activationCorrelationId,
794
- activationCommand,
795
- clientActivation
796
- });
797
- if (String(persisted.journalId) !== String(activationCorrelationId)) throw new Error("ECDSA activation journal identity changed before activate");
798
- const response = await measureStrictEcdsaCeremonyStep({
799
- registrationTiming: args.registrationTiming,
800
- bucket: "ecdsaRegistrationGatewayActivateMs",
801
- operation: activateWalletRegistration.bind(void 0, {
802
- relayerUrl: args.relayerUrl,
803
- headers: registrationRouteHeaders(args.traceContext),
804
- registrationCeremonyId: ceremonyId,
805
- signerPlanKind: args.signerPlanKind,
806
- signedSetup: args.signedSetup,
807
- idempotencyKey: args.idempotencyKey,
808
- ecdsa: {
809
- clientActivation,
810
- activationCorrelationId,
811
- activationRequestDigestB64u: activationCommand.requestDigest
812
- },
813
- walletCustodyCommit: bootstrap.preActivationCommitPayload,
814
- ...activateEmailOtp.enrollment ? { emailOtpEnrollment: activateEmailOtp.enrollment } : {},
815
- onServerTiming: (header) => recordStrictEcdsaServerTimingBuckets(args.registrationTiming, "activate", header)
816
- })
817
- });
818
- if (response.kind !== "evm_family_ecdsa" || !response.ecdsa) throw new Error("ECDSA registration ceremony received a non-ECDSA activate result");
819
- activationHolder.value = response;
820
- activationHolder.journalId = persisted.journalId;
821
- const identity = response.ecdsa.activation.ecdsa_activation.public_identity;
822
- return JSON.stringify({
823
- relayerKeyId: args.ecdsaPrepare.prepare.relayerKeyId,
824
- relayerPublicKey33B64u: identity.server_public_key33_b64u,
825
- groupPublicKey33B64u: identity.threshold_public_key33_b64u,
826
- ethereumAddress: ethereumAddressFromAddress20B64u(identity.ethereum_address20_b64u),
827
- relayerShareRetryCounter: identity.server_share_retry_counter
828
- });
829
- }
830
- });
831
- if (!activationHolder.value || !activationHolder.journalId) throw new Error("Wallet custody ECDSA activation did not return its committed receipt");
832
- const activated = activationHolder.value;
833
- if (activated.walletCustody?.status !== "committed") {
834
- const status = activated.walletCustody?.status ?? "not_reported";
835
- throw new Error(`Wallet custody did not commit during ECDSA activation (${status})`);
836
- }
837
- const clientBootstrap = buildStrictRegistrationClientBootstrap({
838
- prepare: args.ecdsaPrepare.prepare,
839
- verified: established.clientBootstrap
840
- });
841
- const registrationBootstrap = parseWalletRegistrationEcdsaDerivationRespond({
842
- clientBootstrap,
843
- serverBootstrap: activated.ecdsa.bootstrap,
844
- activationEpoch: activated.ecdsa.activation.ecdsa_activation.activation_epoch
845
- });
846
- const finalized = await args.context.signingEngine.finalizeRouterAbEcdsaRegistrationActivation({
847
- kind: "finalize_router_ab_ecdsa_registration_activation_v1",
848
- bootstrapOwner: "wallet_custody",
849
- journalId: activationHolder.journalId,
850
- activationReceipt: activated.ecdsa.activation,
851
- routerAbEcdsaDerivationNormalSigning: registrationBootstrap.routerAbEcdsaDerivationNormalSigning,
852
- readyStateBlobB64u: established.localMaterial.readyStateBlobB64u,
853
- walletCustodyPublicFacts: established.localMaterial.publicFacts
854
- });
855
- return {
856
- session: {
857
- chainTargets: [firstChainTarget, ...remainingChainTargets],
858
- clientBootstrap,
859
- bootstrap: registrationBootstrap,
860
- activatedThresholdSessionId: activated.ecdsa.bootstrap.thresholdSessionId,
861
- roleLocalMaterial: finalized.roleLocalMaterial,
862
- authority: await walletAuthAuthorityRef({ authority: activated.authority }),
863
- materialActivation: finalized.materialActivation,
864
- clientPublicFacts: finalized.publicFacts,
865
- publicCapability: finalized.publicCapability,
866
- registrationEstablishedSession: requireIssuedRegistrationEstablishedSession(activated.registrationEstablishedSession)
867
- },
868
- activated,
869
- deferredNear,
870
- activateEmailOtp: { enrollment: activateEmailOtp.enrollment },
871
- walletCustody: established,
872
- deferredNearCustodyWork
873
- };
874
- } catch (error) {
875
- discardDeferredNearCustodyWork(deferredNearCustodyWork);
876
- await closeStrictEcdsaRegistrationCeremony({
877
- context: args.context,
878
- ceremonyId
879
- });
880
- throw error;
881
- }
882
- }
883
- function materializeWalletRegistrationSetupChainTarget(target) {
884
- switch (target.kind) {
885
- case "evm": return thresholdEcdsaChainTargetFromChainFamily({
886
- chain: "evm",
887
- chainId: target.chainId,
888
- networkSlug: target.networkSlug
889
- });
890
- case "tempo": return thresholdEcdsaChainTargetFromChainFamily({
891
- chain: "tempo",
892
- chainId: target.chainId,
893
- networkSlug: target.networkSlug
894
- });
895
- default: return assertNever(target);
896
- }
897
- }
898
- function materializeWalletRegistrationSetupEcdsaPrepare(setup) {
899
- const [firstTarget, ...remainingTargets] = setup.chainTargets;
900
- if (!firstTarget) throw new Error("Registration setup ECDSA chain targets are required");
901
- return {
902
- kind: setup.kind,
903
- chainTargets: [materializeWalletRegistrationSetupChainTarget(firstTarget), ...remainingTargets.map(materializeWalletRegistrationSetupChainTarget)],
904
- prepare: setup.prepare,
905
- strictRegistration: setup.strictRegistration
906
- };
907
- }
908
- function requireEcdsaRegistrationSetup(setup, expectedKind) {
909
- switch (setup.kind) {
910
- case "near_ed25519": throw new Error("Registration setup returned an Ed25519-only signer branch");
911
- case "evm_family_ecdsa":
912
- case "near_ed25519_and_evm_family_ecdsa":
913
- if (setup.kind !== expectedKind) throw new Error("Registration setup returned a different signer branch");
914
- return setup;
915
- default: return assertNever(setup);
916
- }
917
- }
918
- function registrationPasskeySignerSlot(args) {
919
- switch (args.kind) {
920
- case "evm_family_ecdsa": return 1;
921
- case "near_ed25519_and_evm_family_ecdsa": return args.ed25519Selection.signerSlot;
922
- default: return assertNever(args);
923
- }
924
- }
925
- function pendingRegistrationAuthFromRegistrationInputs(args) {
926
- if (args.authMethod.kind === "passkey") {
927
- if (!args.passkeyAuthority) throw new Error("Passkey registration authority was not collected");
928
- return {
929
- kind: "passkey",
930
- rpId: args.authMethod.rpId,
931
- credentialIdB64u: String(args.passkeyAuthority.credential.rawId || args.passkeyAuthority.credential.id || "").trim(),
932
- transports: [...args.passkeyAuthority.webauthnRegistration.response.transports]
933
- };
934
- }
935
- return {
936
- kind: "email_otp",
937
- email: args.email,
938
- registrationAuthorityId: args.registrationAuthorityId,
939
- providerSubject: args.providerSubject,
940
- enrollment: requirePendingEmailOtpEnrollment(args.emailOtpEnrollment)
941
- };
942
- }
943
- function requirePendingEmailOtpEnrollment(enrollment) {
944
- if (!enrollment) throw new Error("Email OTP registration has no enrollment material for pending recovery");
945
- return enrollment;
946
- }
947
- async function persistPendingRegistrationCommit(input) {
948
- const nowMs = Date.now();
949
- const pending = buildPendingRegistrationCommit({
950
- ...input,
951
- createdAtMs: nowMs,
952
- updatedAtMs: nowMs
953
- });
954
- await IndexedDBManager.putPendingWalletRegistrationCommit(pending);
955
- return pending;
956
- }
957
- function requireMixedRegistrationActivatePendingCommit(pending) {
958
- if (!pending || pending.operation !== "registration_activate" || pending.signerPlanKind !== "near_ed25519_and_evm_family_ecdsa") throw new Error("Mixed registration activation commit was not persisted");
959
- return pending;
960
- }
961
- async function prepareRegistrationEcdsaPublication(args) {
962
- const walletKeys = args.walletKeys;
963
- if (args.auth.kind === "passkey") {
964
- const credentialIdB64u = String(args.auth.credential.rawId || args.auth.credential.id || "").trim();
965
- if (!credentialIdB64u) throw new Error("Passkey registration publication has no credential id");
966
- return await prepareWalletEcdsaRegistrationPublication({
967
- kind: "passkey",
968
- walletId: args.walletId,
969
- rpId: requireWebAuthnRpId(args.auth.rpId),
970
- credentialIdB64u,
971
- credentialPublicKeyB64u: args.auth.credentialPublicKeyB64u,
972
- transports: args.auth.credential.response?.transports ?? [],
973
- walletKeys
974
- });
975
- }
976
- return await prepareWalletEcdsaRegistrationPublication({
977
- kind: "email_otp",
978
- walletId: args.walletId,
979
- email: args.auth.email,
980
- registrationAuthorityId: args.auth.registrationAuthorityId,
981
- authority: args.auth.authority,
982
- walletKeys
983
- });
984
- }
985
- async function publishMixedEcdsaRegistrationCommit(args) {
986
- const walletKeys = await finalizeRegistrationEcdsaSessions({
987
- context: args.context,
988
- relayerUrl: args.relayerUrl,
989
- registrationTiming: args.registrationTiming,
990
- plan: args.plan
991
- });
992
- const registration = await prepareRegistrationEcdsaPublication({
993
- auth: args.plan.auth,
994
- walletId: args.plan.walletId,
995
- walletKeys
996
- });
997
- const registrationSession = args.plan.ecdsa.session.registrationEstablishedSession;
998
- await IndexedDBManager.publishPendingWalletRegistrationCommit({
999
- pending: args.pending,
1000
- authority: args.activated.authority,
1001
- foundingAuthority: {
1002
- authority: args.activated.foundingAuthority,
1003
- authMethod: args.activated.foundingAuthMethod
1004
- },
1005
- request: {
1006
- operation: args.pending.operation,
1007
- registrationCeremonyId: args.pending.registrationCeremonyId,
1008
- idempotencyKey: args.pending.idempotencyKey,
1009
- walletId: args.pending.walletId,
1010
- walletAuthMethodId: args.pending.walletAuthMethodId
1011
- },
1012
- walletSessionPublication: {
1013
- kind: "issued",
1014
- walletSession: registrationSession.walletSession,
1015
- operationCredential: registrationSession.operationCredential
1016
- },
1017
- ecdsaContinuity: [],
1018
- registration
1019
- });
1020
- }
1021
- async function discardDeferredNearCustodyWork(work) {
1022
- if (!work) return;
1023
- try {
1024
- zeroizeArrayBuffer((await work).factorSecret32);
1025
- } catch {}
1026
- }
1027
- function buildDeferredRegistrationFinalizeAuthMaterial(args) {
1028
- switch (args.auth.kind) {
1029
- case "passkey": {
1030
- if (!args.passkeyAuthority) throw new Error("Deferred passkey registration requires authority material");
1031
- const credentialIdB64u = String(args.passkeyAuthority.credential.rawId || args.passkeyAuthority.credential.id || "").trim();
1032
- const prfFirstB64u = String(args.passkeyAuthority.prfFirstB64u || "").trim();
1033
- if (!credentialIdB64u || !prfFirstB64u) throw new Error("Deferred passkey registration requires credential PRF material");
1034
- return {
1035
- kind: "passkey",
1036
- rpId: args.auth.rpId,
1037
- credentialIdB64u,
1038
- prfFirstB64u
1039
- };
1040
- }
1041
- case "email_otp":
1042
- if (!args.emailOtpEnrollment) throw new Error("Deferred Email OTP registration requires enrollment material");
1043
- return {
1044
- kind: "email_otp",
1045
- enrollment: args.emailOtpEnrollment,
1046
- emailOtpAuthContext: args.auth.emailOtpAuthContext
1047
- };
1048
- default: return assertNever(args.auth);
1049
- }
1050
- }
1051
- async function persistPreparedNearRegistration(pending, receipt, checkpointJson) {
1052
- const startedAt = performance.now();
1053
- await IndexedDBManager.advancePendingNearRegistration({
1054
- expected: pending,
1055
- next: preparePendingNearRegistration(pending, receipt, checkpointJson)
1056
- });
1057
- recordWalletCustodyTiming(pending.registrationCeremonyId, "journal_prepared", startedAt);
1058
- }
1059
- function ignoreNearCustodyFailure() {}
1060
- async function startDeferredNearWalletCustody(base, input) {
1061
- const factorSecret = base.factorSecretOwner.value;
1062
- if (!factorSecret) throw new Error("Mixed registration has no NEAR custody factor secret");
1063
- base.factorSecretOwner.value = null;
1064
- const startedAt = performance.now();
1065
- let outcome = "failure";
1066
- try {
1067
- const pending = await IndexedDBManager.getPendingWalletRegistrationCommit({
1068
- registrationCeremonyId: base.registrationCeremonyId,
1069
- operation: "near_provisioning"
1070
- });
1071
- if (!pending || pending.operation !== "near_provisioning" || pending.phase !== "planned") throw new Error("NEAR registration has no planned continuation");
1072
- let preAdmittedReceipt;
1073
- try {
1074
- const admitted = await input.admission;
1075
- if (!sameRouterAbEd25519YaoRegistrationAdmissionRequestV1(admitted.deferredNear.admissionRequest, pending.admissionRequest)) throw new Error("NEAR admission changed the authorized request");
1076
- preAdmittedReceipt = admitted.admissionReceipt;
1077
- } catch (error) {
1078
- if (error instanceof Error && error.message === "NEAR admission changed the authorized request") throw error;
1079
- preAdmittedReceipt = void 0;
1080
- }
1081
- const { joined, admissionReceipt } = await continueNearRegistrationCustody({
1082
- pending,
1083
- signingEngine: base.context.signingEngine,
1084
- relayerUrl: base.relayerUrl,
1085
- credential: base.signedSetup,
1086
- traceContext: base.traceContext,
1087
- factorSecret,
1088
- ...preAdmittedReceipt ? { admitted: preAdmittedReceipt } : {}
1089
- });
1090
- outcome = "success";
1091
- return {
1092
- admissionReceipt,
1093
- joined,
1094
- admissionRequest: pending.admissionRequest,
1095
- envelope: custodyEnvelopeFromRegistrationCommit({
1096
- commit: input.establishedEvmCustodyCommit,
1097
- walletId: pending.walletId,
1098
- activatedAtMs: Date.now()
1099
- }),
1100
- factorSecret32: factorSecret
1101
- };
1102
- } catch (error) {
1103
- zeroizeArrayBuffer(factorSecret);
1104
- throw error;
1105
- } finally {
1106
- emitNearRegistrationTiming({
1107
- ceremonyId: base.registrationCeremonyId,
1108
- stage: "custody_join",
1109
- startedAt,
1110
- outcome
1111
- });
1112
- }
1113
- }
1114
- async function resolveNearRegistrationAdmissionReceipt(args) {
1115
- if (args.pending.phase === "execution_prepared") return args.pending.admissionReceipt;
1116
- if (args.admitted) return args.admitted;
1117
- return await admitDeferredNearRegistration({
1118
- status: "deferred",
1119
- admissionRequest: args.pending.admissionRequest
1120
- }, {
1121
- routerOrigin: new URL(args.relayerUrl).origin,
1122
- authorization: {
1123
- kind: "bearer",
1124
- value: `Bearer ${args.credential}`
1125
- },
1126
- fetch: globalThis.fetch,
1127
- traceContext: args.traceContext
1128
- });
1129
- }
1130
- async function continueNearRegistrationCustody(args) {
1131
- const journal = args.pending;
1132
- if (journal.phase === "joined" && journal.completion.kind !== "encrypted_checkpoint") throw new Error("Joined material has no encrypted execution checkpoint");
1133
- const pending = journal.phase === "joined" && journal.completion.kind === "encrypted_checkpoint" ? journal.completion.prepared : journal;
1134
- if (pending.phase === "joined") throw new Error("Invalid NEAR continuation phase");
1135
- const admission = pending.admissionRequest;
1136
- const admissionStartedAt = performance.now();
1137
- const admissionReceipt = await resolveNearRegistrationAdmissionReceipt({
1138
- pending,
1139
- relayerUrl: args.relayerUrl,
1140
- credential: args.credential,
1141
- traceContext: args.traceContext,
1142
- ...args.admitted ? { admitted: args.admitted } : {}
1143
- });
1144
- recordWalletCustodyTiming(pending.registrationCeremonyId, "admission", admissionStartedAt);
1145
- const joined = await args.signingEngine.joinWalletCustodyNearEd25519KeySet({
1146
- ...pending.phase === "planned" ? {
1147
- preparation: { kind: "fresh" },
1148
- beforeRouterRound: persistPreparedNearRegistration.bind(void 0, pending, admissionReceipt)
1149
- } : { preparation: {
1150
- kind: "checkpoint",
1151
- checkpointJson: pending.checkpointJson
1152
- } },
1153
- custodyJson: joinCustodyJsonFromEstablishedCommitPayload(pending.baseCustodyCommit),
1154
- factorSecret: args.factorSecret,
1155
- nearEd25519SigningKeyId: admission.application_binding.near_ed25519_signing_key_id,
1156
- registrationCeremonyId: pending.registrationCeremonyId,
1157
- admissionRequest: admission,
1158
- admissionReceipt,
1159
- participantIds: admission.participant_ids,
1160
- routerOrigin: new URL(args.relayerUrl).origin,
1161
- authorization: `Bearer ${args.credential}`,
1162
- traceContext: args.traceContext
1163
- });
1164
- if (journal.phase === "joined") {
1165
- if (base64UrlEncode(joined.metadata.registeredPublicKey) !== journal.localMaterial.ed25519.metadata.registeredPublicKeyB64u || JSON.stringify(joined.activationReference) !== JSON.stringify(journal.localMaterial.ed25519.activationReference)) throw new Error("Restored NEAR checkpoint changed the joined key");
1166
- return {
1167
- joined,
1168
- admissionReceipt
1169
- };
1170
- }
1171
- const journalStartedAt = performance.now();
1172
- const prepared = await IndexedDBManager.getPendingWalletRegistrationCommit({
1173
- registrationCeremonyId: pending.registrationCeremonyId,
1174
- operation: "near_provisioning"
1175
- });
1176
- if (!prepared || prepared.operation !== "near_provisioning" || prepared.phase !== "execution_prepared") throw new Error("NEAR execution checkpoint was not persisted");
1177
- const joinedPending = buildPendingRegistrationCommit({
1178
- operation: "near_provisioning",
1179
- signerPlanKind: "near_ed25519_and_evm_family_ecdsa",
1180
- completion: {
1181
- kind: "encrypted_checkpoint",
1182
- prepared
1183
- },
1184
- registrationCeremonyId: prepared.registrationCeremonyId,
1185
- idempotencyKey: await deriveNearProvisioningIdempotencyKey({
1186
- registrationCeremonyId: prepared.registrationCeremonyId,
1187
- activationReference: joined.activationReference
1188
- }),
1189
- walletId: prepared.walletId,
1190
- walletAuthMethodId: prepared.walletAuthMethodId,
1191
- signedSetup: prepared.signedSetup,
1192
- auth: prepared.auth,
1193
- createdAtMs: prepared.createdAtMs,
1194
- updatedAtMs: Date.now(),
1195
- localMaterial: {
1196
- keyFamilies: ["ed25519"],
1197
- custodyCommit: joined.commitPayload,
1198
- ed25519: {
1199
- activationReference: joined.activationReference,
1200
- localMaterial: joined.localMaterial,
1201
- metadata: pendingRegistrationEd25519MetadataFromJoined(joined)
1202
- }
1203
- }
1204
- });
1205
- if (joinedPending.operation !== "near_provisioning" || joinedPending.phase !== "joined") throw new Error("Invalid joined NEAR continuation");
1206
- await IndexedDBManager.advancePendingNearRegistration({
1207
- expected: prepared,
1208
- next: joinedPending
1209
- });
1210
- recordWalletCustodyTiming(pending.registrationCeremonyId, "journal_joined", journalStartedAt);
1211
- return {
1212
- joined,
1213
- admissionReceipt
1214
- };
1215
- }
1216
- function nearRegistrationChainTarget(target) {
1217
- return target.chainTarget;
1218
- }
1219
- function resumedNearRegistrationAuth(pending, factor) {
1220
- if (pending.auth.kind === "passkey" && factor.kind === "passkey" && pending.auth.rpId === factor.rpId && pending.auth.credentialIdB64u === factor.credentialIdB64u) return {
1221
- kind: "passkey",
1222
- rpId: factor.rpId,
1223
- credentialIdB64u: factor.credentialIdB64u,
1224
- prfFirstB64u: factor.prfFirstB64u
1225
- };
1226
- if (pending.auth.kind === "email_otp" && factor.kind === "email_otp" && pending.auth.providerSubject === factor.providerSubject) {
1227
- const authority = parseEmailOtpWalletAuthAuthority({
1228
- walletId: pending.walletId,
1229
- bindingId: pending.walletAuthMethodId,
1230
- factor: {
1231
- kind: "email_otp",
1232
- provider: factor.provider,
1233
- providerUserId: factor.providerSubject
1234
- },
1235
- verifier: {
1236
- kind: "email_otp_wallet_auth_method",
1237
- emailHashHex: factor.emailHashHex
1238
- }
1239
- });
1240
- if (!authority) throw new Error("NEAR continuation requires its founding Email OTP method");
1241
- return {
1242
- kind: "email_otp",
1243
- enrollment: pending.auth.enrollment,
1244
- emailOtpAuthContext: buildEmailOtpAuthContext({
1245
- policy: "session",
1246
- retention: "session",
1247
- reason: "login",
1248
- authority
1249
- })
1250
- };
1251
- }
1252
- throw new Error("NEAR continuation requires its founding authentication method");
1253
- }
1254
- async function resumeNearRegistrationCustodyWork(args) {
1255
- await requireCurrentNearRegistrationSession(args.sessionAuthority);
1256
- if (args.pending.phase === "joined" && args.pending.completion.kind === "sealed_material") {
1257
- const restored = await restorePendingNearRegistrationMaterial({
1258
- pending: args.pending,
1259
- relayerUrl: args.relayerUrl,
1260
- operationCredential: args.sessionAuthority.operationCredential
1261
- });
1262
- return {
1263
- joined: restored.joined,
1264
- admissionRequest: restored.admissionRequest,
1265
- admissionReceipt: restored.admissionReceipt,
1266
- envelope: args.envelope,
1267
- factorSecret32: args.factorSecret
1268
- };
1269
- }
1270
- const prepared = args.pending.phase === "joined" ? args.pending.completion.prepared : args.pending;
1271
- if (!prepared) throw new Error("NEAR continuation has no encrypted checkpoint");
1272
- const result = await continueNearRegistrationCustody({
1273
- pending: args.pending,
1274
- signingEngine: args.context.signingEngine,
1275
- relayerUrl: args.relayerUrl,
1276
- credential: args.sessionAuthority.operationCredential.token,
1277
- traceContext: createRouterAbTraceContextV1(),
1278
- factorSecret: args.factorSecret
1279
- });
1280
- return {
1281
- joined: result.joined,
1282
- admissionReceipt: result.admissionReceipt,
1283
- admissionRequest: prepared.admissionRequest,
1284
- envelope: args.envelope,
1285
- factorSecret32: args.factorSecret
1286
- };
1287
- }
1288
- /** Owns the factor copy; ordinary unlock is already complete when this starts. */
1289
- async function resumeNearRegistrationAfterUnlock(args) {
1290
- const startedAt = performance.now();
1291
- try {
1292
- const rows = await IndexedDBManager.listPendingWalletRegistrationCommits();
1293
- for (const pending of rows) {
1294
- if (pending.operation !== "near_provisioning" || pending.walletId !== args.sessionAuthority.record.walletId || pending.walletAuthMethodId !== args.sessionAuthority.record.authMethodId || pending.signerPlanKind !== "near_ed25519_and_evm_family_ecdsa") continue;
1295
- if (await IndexedDBManager.getPendingWalletRegistrationCommit({
1296
- registrationCeremonyId: pending.registrationCeremonyId,
1297
- operation: "registration_activate"
1298
- })) continue;
1299
- const relayerUrl = args.context.configs.network.relayer.url;
1300
- const authMaterial = resumedNearRegistrationAuth(pending, args.factor);
1301
- const work = resumeNearRegistrationCustodyWork.bind(void 0, {
1302
- context: args.context,
1303
- pending,
1304
- envelope: args.custodyEnvelope,
1305
- relayerUrl,
1306
- sessionAuthority: args.sessionAuthority,
1307
- factorSecret: args.ownedFactorSecret
1308
- });
1309
- await runDeferredEd25519Provisioning({
1310
- context: args.context,
1311
- walletId: pending.walletId,
1312
- commit: {
1313
- context: args.context,
1314
- registrationTiming: null,
1315
- registrationStartedAt: startedAt,
1316
- clientPrewarm: Promise.resolve(),
1317
- relayerUrl,
1318
- registrationCeremonyId: pending.registrationCeremonyId,
1319
- signedSetup: pending.signedSetup,
1320
- headers: registrationRouteHeaders(),
1321
- nearCustodyWork: work,
1322
- sessionAuthority: args.sessionAuthority,
1323
- expectedChainTargets: listConfiguredThresholdEcdsaPublicationTargets(args.context.configs.network.chains).map(nearRegistrationChainTarget),
1324
- walletId: pending.walletId,
1325
- authMaterial
1326
- }
1327
- });
1328
- }
1329
- } catch (error) {
1330
- console.warn("[registration] NEAR continuation remains pending", error instanceof Error ? error.message : "continuation failed");
1331
- } finally {
1332
- zeroizeArrayBuffer(args.ownedFactorSecret);
1333
- }
1334
- }
1335
- function requireDeferredNearCustodyWork(work) {
1336
- if (!work) throw new Error("Mixed registration did not start its NEAR custody join");
1337
- return work;
1338
- }
1339
- function mixedRegistrationSessionFromDeferredResult(existing, result, finalAuthority, finalAuthMethod) {
1340
- if (result.kind !== "already_committed" || result.session.tokens.kind !== "near_ed25519_and_evm_family_ecdsa") throw new Error("NEAR completion must extend the current Wallet Session");
1341
- const projection = result.session;
1342
- const current = existing.record;
1343
- const next = projection.walletSession;
1344
- if (projection.walletId !== current.walletId || projection.authorizationId !== current.authorizationId || projection.quotaId !== current.quotaId || projection.walletSessionId !== existing.operationCredential.walletSessionId || next.authorityId !== current.authorityId || next.authMethodId !== current.authMethodId || next.issuedAtMs !== current.issuedAtMs || next.expiresAtMs !== current.expiresAtMs || next.authorityRevocationEpoch !== current.authorityRevocationEpoch || next.expiresAtMs <= Date.now() || !walletSessionPreservesCapabilities(current, next) || finalAuthority.authorityId !== next.authorityId || finalAuthority.walletId !== next.walletId || finalAuthority.authorityDigestB64u !== next.authorityDigestB64u || finalAuthority.revocationEpoch !== next.authorityRevocationEpoch || finalAuthMethod.walletAuthMethodId !== next.authMethodId || finalAuthMethod.walletId !== next.walletId || finalAuthMethod.walletAuthorityId !== next.authorityId) throw new Error("NEAR completion changed the current Wallet Session authority");
1345
- return {
1346
- kind: "registration_established_wallet_session_v2",
1347
- walletId: projection.walletId,
1348
- authorizationId: projection.authorizationId,
1349
- walletSessionId: projection.walletSessionId,
1350
- quotaId: projection.quotaId,
1351
- expiresAtMs: projection.expiresAtMs,
1352
- remainingUses: projection.remainingUses,
1353
- walletSession: next,
1354
- operationCredential: existing.operationCredential,
1355
- tokens: projection.tokens
1356
- };
1357
- }
1358
- async function requireCurrentNearRegistrationSession(expected) {
1359
- const current = await walletSessionAuthorizations.readExactWithOperationCredential({
1360
- walletId: expected.record.walletId,
1361
- authorityId: expected.record.authorityId,
1362
- authMethodId: expected.record.authMethodId
1363
- });
1364
- if (current.kind !== "found" || current.record.expiresAtMs <= Date.now() || current.record.authorizationId !== expected.record.authorizationId || current.record.authorityRevocationEpoch !== expected.record.authorityRevocationEpoch || current.operationCredential.token !== expected.operationCredential.token) throw new Error("NEAR continuation requires the current unlocked Wallet Session");
1365
- }
1366
- async function readJoinedNearRegistrationCommit(args) {
1367
- const pending = await IndexedDBManager.getPendingWalletRegistrationCommit({
1368
- registrationCeremonyId: args.registrationCeremonyId,
1369
- operation: "near_provisioning"
1370
- });
1371
- if (!pending || pending.operation !== "near_provisioning" || pending.phase !== "joined" || pending.walletId !== args.walletId || pending.walletAuthMethodId !== args.walletAuthMethodId) throw new Error("NEAR joined checkpoint was not persisted");
1372
- return pending;
1373
- }
1374
- async function activatePasskeyRegistrationEd25519Material(args) {
1375
- const { metadata, materialFacts } = args;
1376
- const activationFacts = {
1377
- materialActivation: nearEd25519YaoMaterialActivationFromMetadata(metadata),
1378
- lifecycleId: metadata.scope.lifecycle_id,
1379
- signingRootVersion: metadata.scope.root_share_epoch,
1380
- signingRootId: metadata.applicationBinding.signing_root_id,
1381
- signerSetId: metadata.scope.signer_set_id,
1382
- thresholdSessionId: materialFacts.identity.thresholdSessionId,
1383
- activationTranscriptB64u: base64UrlEncode(metadata.transcript),
1384
- activationCapabilityBindingB64u: base64UrlEncode(Uint8Array.from(metadata.activeCapabilityBinding))
1385
- };
1386
- let activeClient = null;
1387
- try {
1388
- activeClient = await openWalletCustodyEd25519ActiveClientV1({
1389
- material: args.material,
1390
- activation: activationFacts,
1391
- envelope: args.envelope,
1392
- ownedFactorSecret: args.ownedFactorSecret
1393
- });
1394
- await persistPasskeyEd25519YaoSignerMaterialV1({
1395
- store: IndexedDBManager,
1396
- activeClient,
1397
- identity: {
1398
- walletId: materialFacts.identity.walletId,
1399
- nearAccountId: materialFacts.identity.nearAccountId,
1400
- nearEd25519SigningKeyId: materialFacts.identity.nearEd25519SigningKeyId,
1401
- thresholdSessionId: materialFacts.identity.thresholdSessionId,
1402
- signerSlot: materialFacts.identity.signerSlot,
1403
- rpId: args.rpId,
1404
- credentialIdB64u: args.credentialIdB64u,
1405
- signingRootId: materialFacts.identity.signingRootId,
1406
- signingRootVersion: materialFacts.identity.signingRootVersion,
1407
- signingWorkerId: materialFacts.stableServerScope.routerAbNormalSigning.signingWorkerId
1408
- },
1409
- stableServerScope: materialFacts.stableServerScope,
1410
- passkeyPrfFirstB64u: args.passkeyPrfFirstB64u
1411
- });
1412
- await requireCurrentNearRegistrationSession(args.sessionAuthority);
1413
- await args.signingEngine.activateVerifiedNearEd25519YaoMaterial({
1414
- activeClient,
1415
- facts: {
1416
- thresholdSessionId: materialFacts.identity.thresholdSessionId,
1417
- signer: nearEd25519SignerBindingFromBoundaryFields({
1418
- walletId: toWalletId(materialFacts.identity.walletId),
1419
- nearAccountId: toAccountId(materialFacts.identity.nearAccountId),
1420
- nearEd25519SigningKeyId: parseNearEd25519SigningKeyId(materialFacts.identity.nearEd25519SigningKeyId),
1421
- signerSlot: materialFacts.identity.signerSlot
1422
- }),
1423
- signingRootId: materialFacts.identity.signingRootId,
1424
- signingRootVersion: materialFacts.identity.signingRootVersion,
1425
- routerAbNormalSigning: materialFacts.stableServerScope.routerAbNormalSigning,
1426
- runtimePolicyScope: materialFacts.stableServerScope.runtimePolicyScope,
1427
- relayerUrl: args.relayerUrl
1428
- }
1429
- });
1430
- await requireCurrentNearRegistrationSession(args.sessionAuthority);
1431
- activeClient = null;
1432
- } catch (error) {
1433
- activeClient?.dispose();
1434
- throw error;
1435
- } finally {
1436
- args.ownedFactorSecret.fill(0);
1437
- }
1438
- }
1439
- async function prewarmDeferredPasskeyEd25519Client(auth) {
1440
- if (auth.kind !== "passkey") return;
1441
- try {
1442
- await RouterAbEd25519YaoClientV1.initializeBundled();
1443
- } catch {}
1444
- }
1445
- async function hydrateDeferredNearRegistrationSession(args) {
1446
- const startedAt = performance.now();
1447
- let outcome = "failure";
1448
- try {
1449
- await args.signingEngine.hydrateSigningSession(args.input);
1450
- outcome = "success";
1451
- return { kind: "completed" };
1452
- } catch (error) {
1453
- return {
1454
- kind: "failed",
1455
- error
1456
- };
1457
- } finally {
1458
- emitNearRegistrationTiming({
1459
- ceremonyId: args.ceremonyId,
1460
- stage: "session_hydration",
1461
- startedAt,
1462
- outcome
1463
- });
1464
- }
1465
- }
1466
- async function prepareDeferredNearSessionHydration(args) {
1467
- const startedAt = performance.now();
1468
- let outcome = "failure";
1469
- try {
1470
- await args.signingEngine.prepareSigningSessionHydration(args.input);
1471
- outcome = "success";
1472
- return { kind: "completed" };
1473
- } catch (error) {
1474
- return {
1475
- kind: "failed",
1476
- error
1477
- };
1478
- } finally {
1479
- emitNearRegistrationTiming({
1480
- ceremonyId: args.ceremonyId,
1481
- stage: "session_seal_preparation",
1482
- startedAt,
1483
- outcome
1484
- });
1485
- }
1486
- }
1487
- function startNearRegistrationSealPreparation(args) {
1488
- const sessionId = parseThresholdEd25519SessionId(args.thresholdSessionId);
1489
- if (!sessionId.ok) throw new Error("Invalid admitted NEAR session identity");
1490
- const preparationId = createRegistrationOperationIdempotencyKey("near-session-client-seal");
1491
- return {
1492
- kind: "preparing",
1493
- thresholdSessionId: String(sessionId.value),
1494
- preparationId,
1495
- result: prepareDeferredNearSessionHydration({
1496
- signingEngine: args.signingEngine,
1497
- ceremonyId: args.ceremonyId,
1498
- input: {
1499
- preparationId,
1500
- thresholdSessionId: String(sessionId.value),
1501
- prfFirstB64u: args.prfFirstB64u
1502
- }
1503
- })
1504
- };
1505
- }
1506
- async function prepareNearSessionSealWhileCustodyRuns(args) {
1507
- try {
1508
- await requireCurrentNearRegistrationSession(args.sessionAuthority);
1509
- const pending = await IndexedDBManager.getPendingWalletRegistrationCommit({
1510
- registrationCeremonyId: args.ceremonyId,
1511
- operation: "near_provisioning"
1512
- });
1513
- if (!pending || pending.operation !== "near_provisioning" || pending.phase === "joined") return { kind: "none" };
1514
- if (pending.walletId !== args.sessionAuthority.record.walletId || pending.walletAuthMethodId !== args.sessionAuthority.record.authMethodId) return { kind: "none" };
1515
- return startNearRegistrationSealPreparation({
1516
- signingEngine: args.signingEngine,
1517
- ceremonyId: args.ceremonyId,
1518
- thresholdSessionId: pending.admissionRequest.scope.threshold_session_id,
1519
- prfFirstB64u: args.prfFirstB64u
1520
- });
1521
- } catch {
1522
- return { kind: "none" };
1523
- }
1524
- }
1525
- function nearRegistrationProfileUnavailable() {
1526
- return null;
1527
- }
1528
- /** NEAR failures retain their repair journal while the committed ECDSA wallet stays usable. */
1529
- async function commitDeferredEd25519Registration(args) {
1530
- const auth = args.authMaterial;
1531
- const startedAt = performance.now();
1532
- let outcome = "failure";
1533
- let retainedFactorSecret32 = null;
1534
- let hydration = Promise.resolve({ kind: "completed" });
1535
- let preparation = { kind: "none" };
1536
- try {
1537
- if (auth.kind === "passkey") preparation = await prepareNearSessionSealWhileCustodyRuns({
1538
- signingEngine: args.context.signingEngine,
1539
- ceremonyId: args.registrationCeremonyId,
1540
- sessionAuthority: args.sessionAuthority,
1541
- prfFirstB64u: auth.prfFirstB64u
1542
- });
1543
- const nearCustody = await args.nearCustodyWork();
1544
- retainedFactorSecret32 = nearCustody.factorSecret32;
1545
- const joined = nearCustody.joined;
1546
- const clientPublicKey = `ed25519:${base58Encode(joined.metadata.registeredPublicKey)}`;
1547
- const activationReference = joined.activationReference;
1548
- const nearProvisioningIdempotencyKey = await deriveNearProvisioningIdempotencyKey({
1549
- registrationCeremonyId: args.registrationCeremonyId,
1550
- activationReference
1551
- });
1552
- const pending = await readJoinedNearRegistrationCommit({
1553
- registrationCeremonyId: args.registrationCeremonyId,
1554
- walletId: args.walletId,
1555
- walletAuthMethodId: String(args.sessionAuthority.record.authMethodId)
1556
- });
1557
- await requireCurrentNearRegistrationSession(args.sessionAuthority);
1558
- if (auth.kind === "passkey" && preparation.kind === "none") preparation = startNearRegistrationSealPreparation({
1559
- signingEngine: args.context.signingEngine,
1560
- ceremonyId: args.registrationCeremonyId,
1561
- thresholdSessionId: joined.metadata.scope.threshold_session_id,
1562
- prfFirstB64u: auth.prfFirstB64u
1563
- });
1564
- let preparedSessionSeal;
1565
- if (preparation.kind === "preparing") {
1566
- const preparationWaitStartedAt = performance.now();
1567
- const prepared = await preparation.result;
1568
- emitNearRegistrationTiming({
1569
- ceremonyId: args.registrationCeremonyId,
1570
- stage: "session_seal_preparation_wait",
1571
- startedAt: preparationWaitStartedAt,
1572
- outcome: prepared.kind === "completed" ? "success" : "failure"
1573
- });
1574
- if (prepared.kind === "failed") throw prepared.error;
1575
- await requireCurrentNearRegistrationSession(args.sessionAuthority);
1576
- const clientSeal = await args.context.signingEngine.readPreparedSigningSessionHydration({
1577
- thresholdSessionId: preparation.thresholdSessionId,
1578
- preparationId: preparation.preparationId
1579
- });
1580
- preparedSessionSeal = {
1581
- preparationId: preparation.preparationId,
1582
- thresholdSessionId: preparation.thresholdSessionId,
1583
- ciphertext: clientSeal.ciphertext
1584
- };
1585
- }
1586
- const finalizationStartedAt = performance.now();
1587
- const nearProvisioningRequest = {
1588
- relayerUrl: args.relayerUrl,
1589
- registrationCeremonyId: args.registrationCeremonyId,
1590
- signedSetup: args.signedSetup,
1591
- headers: {
1592
- ...args.headers,
1593
- Authorization: `Bearer ${args.sessionAuthority.operationCredential.token}`
1594
- },
1595
- idempotencyKey: nearProvisioningIdempotencyKey,
1596
- ed25519: { activationReference },
1597
- walletCustodyCommit: joined.commitPayload,
1598
- onServerTiming: recordRegistrationServerTimingBuckets.bind(void 0, args.registrationTiming)
1599
- };
1600
- let completed;
1601
- if (preparedSessionSeal) {
1602
- if (args.authMaterial.kind !== "passkey") throw new Error("Prepared session sealing requires a passkey authority");
1603
- completed = await completeWalletRegistrationNearProvisioning({
1604
- ...nearProvisioningRequest,
1605
- auth: { kind: "passkey" },
1606
- sessionSeal: {
1607
- thresholdSessionId: preparedSessionSeal.thresholdSessionId,
1608
- ciphertext: preparedSessionSeal.ciphertext
1609
- }
1610
- });
1611
- } else completed = await completeWalletRegistrationNearProvisioning({
1612
- ...nearProvisioningRequest,
1613
- auth: args.authMaterial
1614
- });
1615
- if (!completed.ok) throw new Error("Deferred NEAR provisioning did not complete");
1616
- const finalized = completed;
1617
- if (finalized.kind !== "near_ed25519") throw new Error("Deferred Ed25519 finalize returned a different signer branch");
1618
- if (finalized.walletCustody?.status !== "joined") {
1619
- const status = finalized.walletCustody?.status ?? "not_reported";
1620
- throw new Error(`Deferred NEAR custody join did not commit (${status})`);
1621
- }
1622
- if (preparedSessionSeal && !finalized.sessionSeal) throw new Error("Deferred NEAR finalization did not return the prepared session seal");
1623
- emitNearRegistrationTiming({
1624
- ceremonyId: args.registrationCeremonyId,
1625
- stage: "server_finalize",
1626
- startedAt: finalizationStartedAt,
1627
- outcome: "success"
1628
- });
1629
- const registrationSession = mixedRegistrationSessionFromDeferredResult(args.sessionAuthority, finalized.registrationEstablishedSession, finalized.foundingAuthority, finalized.foundingAuthMethod);
1630
- const nearAccountId = toAccountId(finalized.ed25519.nearAccountId);
1631
- const passkeyCredentialIdB64u = args.authMaterial.kind === "passkey" ? args.authMaterial.credentialIdB64u : "";
1632
- if (auth.kind === "passkey") requireEd25519YaoRegistrationPublicResultMatches({
1633
- clientPublicKey,
1634
- finalized,
1635
- expectedRpId: auth.rpId,
1636
- expectedWalletId: args.walletId
1637
- });
1638
- else requireEmailOtpEd25519YaoRegistrationPublicResultMatches({
1639
- clientPublicKey,
1640
- finalized,
1641
- expectedRegistrationAuthorityId: pending.auth.kind === "email_otp" ? pending.auth.registrationAuthorityId : "",
1642
- expectedWalletId: args.walletId
1643
- });
1644
- const materialFacts = registrationEd25519MaterialFacts({
1645
- deferredNear: {
1646
- status: "deferred",
1647
- admissionRequest: nearCustody.admissionRequest
1648
- },
1649
- finalized: finalized.ed25519,
1650
- walletId: args.walletId,
1651
- expectedRuntimePolicyScope: normalizeRuntimePolicyScope(finalized.ed25519.runtimePolicyScope)
1652
- });
1653
- const metadata = joined.metadata;
1654
- const materialActivation = nearEd25519YaoMaterialActivationFromMetadata(metadata);
1655
- const custodyMaterial = walletCustodyRegistrationMaterial({
1656
- established: joined,
1657
- walletId: String(args.walletId),
1658
- nearAccountId: String(nearAccountId),
1659
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
1660
- signerSlot: finalized.ed25519.signerSlot
1661
- });
1662
- const publicationStartedAt = performance.now();
1663
- const registration = await registrationProjectionFromPending(pending, finalized);
1664
- await requireCurrentNearRegistrationSession(args.sessionAuthority);
1665
- const storedNearActivation = (await IndexedDBManager.publishPendingWalletRegistrationCommitAndRetain({
1666
- pending,
1667
- ecdsaContinuity: [],
1668
- authority: finalized.authority,
1669
- foundingAuthority: {
1670
- authority: finalized.foundingAuthority,
1671
- authMethod: finalized.foundingAuthMethod
1672
- },
1673
- request: {
1674
- operation: pending.operation,
1675
- registrationCeremonyId: args.registrationCeremonyId,
1676
- idempotencyKey: pending.idempotencyKey,
1677
- walletId: args.walletId,
1678
- walletAuthMethodId: finalized.foundingAuthMethod.walletAuthMethodId
1679
- },
1680
- walletSessionPublication: {
1681
- kind: "credential_free_projection",
1682
- walletSession: registrationSession.walletSession
1683
- },
1684
- registration
1685
- })).signerActivations[0];
1686
- if (!storedNearActivation || storedNearActivation.signerSlot !== finalized.ed25519.signerSlot) throw new Error("Deferred Ed25519 registration persisted a different signer slot");
1687
- const prefillStatusReads = new WalletSessionStatusReadScope();
1688
- for (const chainTarget of args.expectedChainTargets) scheduleEcdsaSessionPresignaturePrefill({
1689
- signingEngine: args.context.signingEngine,
1690
- walletId: args.walletId,
1691
- chainTarget,
1692
- trigger: "registration",
1693
- statusReads: prefillStatusReads
1694
- });
1695
- emitNearRegistrationTiming({
1696
- ceremonyId: args.registrationCeremonyId,
1697
- stage: "local_publication",
1698
- startedAt: publicationStartedAt,
1699
- outcome: "success"
1700
- });
1701
- await requireCurrentNearRegistrationSession(args.sessionAuthority);
1702
- if (args.authMaterial.kind === "passkey" && registrationSession.remainingUses > 0) hydration = hydrateDeferredNearRegistrationSession({
1703
- signingEngine: args.context.signingEngine,
1704
- ceremonyId: args.registrationCeremonyId,
1705
- input: buildRegistrationPasskeyEd25519SessionHydration({
1706
- session: registrationSession,
1707
- ceremonyId: args.registrationCeremonyId,
1708
- walletId: String(args.walletId),
1709
- relayerUrl: args.relayerUrl,
1710
- prfFirstB64u: args.authMaterial.prfFirstB64u,
1711
- preparedServerSeal: preparedSessionSeal && finalized.sessionSeal ? {
1712
- preparationId: preparedSessionSeal.preparationId,
1713
- ...finalized.sessionSeal
1714
- } : null,
1715
- restore: {
1716
- rpId: args.authMaterial.rpId,
1717
- nearAccountId: String(nearAccountId),
1718
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
1719
- relayerKeyId: finalized.ed25519.relayerKeyId,
1720
- participantIds: finalized.ed25519.participantIds,
1721
- signerSlot: finalized.ed25519.signerSlot,
1722
- credentialIdB64u: args.authMaterial.credentialIdB64u,
1723
- materialActivation
1724
- }
1725
- })
1726
- });
1727
- const sessionStartedAt = performance.now();
1728
- await args.context.signingEngine.activateAuthenticatedWalletState({
1729
- walletId: args.walletId,
1730
- nearAccountId,
1731
- signerSlot: finalized.ed25519.signerSlot,
1732
- nearClient: args.context.nearClient
1733
- });
1734
- await args.context.signingEngine.upsertEd25519YaoPublicCapabilityLaneReference({
1735
- walletId: args.walletId,
1736
- nearAccountId,
1737
- thresholdSessionId: materialFacts.identity.thresholdSessionId,
1738
- runtimePolicyScope: materialFacts.stableServerScope.runtimePolicyScope,
1739
- materialActivation,
1740
- ...registrationEd25519LaneAuthorization(auth, passkeyCredentialIdB64u, registrationSession),
1741
- nearEd25519SigningKeyId: parseNearEd25519SigningKeyId(finalized.ed25519.nearEd25519SigningKeyId),
1742
- signerSlot: finalized.ed25519.signerSlot
1743
- });
1744
- emitNearRegistrationTiming({
1745
- ceremonyId: args.registrationCeremonyId,
1746
- stage: "session_install",
1747
- startedAt: sessionStartedAt,
1748
- outcome: "success"
1749
- });
1750
- const activationStartedAt = performance.now();
1751
- if (auth.kind === "email_otp" && registrationSession.remainingUses > 0) {
1752
- const walletSessionState = await buildRegistrationEmailOtpEd25519SessionState({
1753
- registrationEstablishedSession: registrationSession,
1754
- walletId: args.walletId,
1755
- nearAccountId: String(nearAccountId),
1756
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
1757
- thresholdSessionId: materialFacts.identity.thresholdSessionId,
1758
- runtimePolicyScope: materialFacts.stableServerScope.runtimePolicyScope,
1759
- signerSlot: finalized.ed25519.signerSlot,
1760
- relayerUrl: args.relayerUrl,
1761
- emailOtpAuthContext: auth.emailOtpAuthContext
1762
- });
1763
- const bootstrap = buildRegistrationEmailOtpEd25519RecoveryBootstrap({
1764
- walletId: args.walletId,
1765
- nearAccountId: String(nearAccountId),
1766
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
1767
- sessionState: walletSessionState,
1768
- joined,
1769
- deferredNear: {
1770
- status: "deferred",
1771
- admissionRequest: nearCustody.admissionRequest
1772
- },
1773
- admissionReceipt: nearCustody.admissionReceipt,
1774
- authContext: auth.emailOtpAuthContext
1775
- });
1776
- await args.context.signingEngine.activateEmailOtpEd25519RegistrationMaterialInternal({
1777
- walletSession: {
1778
- walletId: args.walletId,
1779
- walletSessionUserId: String(args.walletId)
1780
- },
1781
- providerSubject: emailOtpAuthContextProviderUserId(auth.emailOtpAuthContext),
1782
- emailHashHex: emailOtpAuthContextEmailHashHex(auth.emailOtpAuthContext),
1783
- signerSlot: finalized.ed25519.signerSlot,
1784
- expectedOperationalPublicKey: clientPublicKey,
1785
- expectedThresholdSessionId: materialFacts.identity.thresholdSessionId,
1786
- bootstrap,
1787
- material: custodyMaterial,
1788
- envelope: walletCustodyCacheEnvelopeFromRecordV1(nearCustody.envelope),
1789
- factorSecret32: retainedFactorSecret32
1790
- });
1791
- retainedFactorSecret32 = null;
1792
- } else if (auth.kind === "passkey") {
1793
- if (args.authMaterial.kind !== "passkey") throw new Error("Deferred passkey registration has no Passkey authorization material");
1794
- if (!retainedFactorSecret32) throw new Error("Deferred passkey registration has no custody factor secret");
1795
- await args.clientPrewarm;
1796
- await activatePasskeyRegistrationEd25519Material({
1797
- signingEngine: args.context.signingEngine,
1798
- sessionAuthority: args.sessionAuthority,
1799
- metadata,
1800
- material: custodyMaterial,
1801
- materialFacts,
1802
- envelope: walletCustodyCacheEnvelopeFromRecordV1(nearCustody.envelope),
1803
- ownedFactorSecret: new Uint8Array(retainedFactorSecret32),
1804
- rpId: args.authMaterial.rpId,
1805
- credentialIdB64u: args.authMaterial.credentialIdB64u,
1806
- passkeyPrfFirstB64u: args.authMaterial.prfFirstB64u,
1807
- relayerUrl: args.relayerUrl
1808
- });
1809
- retainedFactorSecret32 = null;
1810
- }
1811
- if (args.authMaterial.kind === "passkey") await rememberPasskeyCustodySessionEnvelope({
1812
- walletId: String(args.walletId),
1813
- credentialIdB64u: args.authMaterial.credentialIdB64u,
1814
- envelope: nearCustody.envelope
1815
- });
1816
- emitNearRegistrationTiming({
1817
- ceremonyId: args.registrationCeremonyId,
1818
- stage: "signer_activation",
1819
- startedAt: activationStartedAt,
1820
- outcome: "success"
1821
- });
1822
- await requireCurrentNearRegistrationSession(args.sessionAuthority);
1823
- const hydrationWaitStartedAt = performance.now();
1824
- const hydrated = await hydration;
1825
- emitNearRegistrationTiming({
1826
- ceremonyId: args.registrationCeremonyId,
1827
- stage: "session_hydration_wait",
1828
- startedAt: hydrationWaitStartedAt,
1829
- outcome: hydrated.kind === "completed" ? "success" : "failure"
1830
- });
1831
- if (hydrated.kind === "failed") throw hydrated.error;
1832
- await requireCurrentNearRegistrationSession(args.sessionAuthority);
1833
- const readyStartedAt = performance.now();
1834
- await IndexedDBManager.completePendingNearRegistration({
1835
- pending,
1836
- walletSession: registrationSession.walletSession,
1837
- operationCredential: registrationSession.operationCredential,
1838
- nearAccountId: String(nearAccountId)
1839
- });
1840
- emitNearRegistrationTiming({
1841
- ceremonyId: args.registrationCeremonyId,
1842
- stage: "durable_ready",
1843
- startedAt: readyStartedAt,
1844
- outcome: "success"
1845
- });
1846
- outcome = "success";
1847
- return {
1848
- status: "near_ready",
1849
- updatedAtMs: Date.now(),
1850
- nearAccountId: String(nearAccountId)
1851
- };
1852
- } catch (error) {
1853
- const profile = await IndexedDBManager.getProfile(String(args.walletId)).catch(nearRegistrationProfileUnavailable);
1854
- if (profile?.nearProvisioning?.status === "near_ready") return profile.nearProvisioning;
1855
- const errorCode = nearProvisioningErrorCode(error);
1856
- try {
1857
- await args.context.signingEngine.setWalletNearProvisioningState({
1858
- walletId: String(args.walletId),
1859
- status: "near_failed_retryable",
1860
- errorCode
1861
- });
1862
- } catch {}
1863
- return {
1864
- status: "near_failed_retryable",
1865
- updatedAtMs: Date.now(),
1866
- error: getUserFriendlyErrorMessage(error, "registration", String(args.walletId)),
1867
- errorCode
1868
- };
1869
- } finally {
1870
- await hydration;
1871
- if (preparation.kind === "preparing") {
1872
- await preparation.result;
1873
- await args.context.signingEngine.discardSigningSessionHydration({
1874
- thresholdSessionId: preparation.thresholdSessionId,
1875
- preparationId: preparation.preparationId
1876
- }).catch(ignoreNearCustodyFailure);
1877
- }
1878
- if (retainedFactorSecret32) zeroizeArrayBuffer(retainedFactorSecret32);
1879
- emitNearRegistrationTiming({
1880
- ceremonyId: args.registrationCeremonyId,
1881
- stage: "provisioning_total",
1882
- startedAt,
1883
- outcome
1884
- });
1885
- emitNearRegistrationTiming({
1886
- ceremonyId: args.registrationCeremonyId,
1887
- stage: "registration_total",
1888
- startedAt: args.registrationStartedAt,
1889
- outcome
1890
- });
1891
- }
1892
- }
1893
- async function runDeferredEd25519Provisioning(args) {
1894
- try {
1895
- await args.context.signingEngine.setWalletNearProvisioningState({
1896
- walletId: String(args.walletId),
1897
- status: "near_provisioning"
1898
- });
1899
- } catch (error) {
1900
- const errorCode = nearProvisioningErrorCode(error);
1901
- const state = {
1902
- status: "near_failed_retryable",
1903
- updatedAtMs: Date.now(),
1904
- error: getUserFriendlyErrorMessage(error, "registration", String(args.walletId)),
1905
- errorCode
1906
- };
1907
- try {
1908
- await args.context.signingEngine.setWalletNearProvisioningState({
1909
- walletId: String(args.walletId),
1910
- status: "near_failed_retryable",
1911
- errorCode
1912
- });
1913
- } catch {}
1914
- publishNearProvisioningState(args.walletId, state);
1915
- return;
1916
- }
1917
- await runSingleFlightNearProvisioning({
1918
- walletId: args.walletId,
1919
- nowMs: Date.now,
1920
- attempt: commitDeferredEd25519Registration.bind(void 0, args.commit)
1921
- });
1922
- }
1923
- /** Maps a deferred-commit throw onto the closed set of provisioning codes. */
1924
- function nearProvisioningErrorCode(error) {
1925
- const message = error instanceof Error ? error.message : String(error);
1926
- if (message.includes("finalize")) return "near_finalize_failed";
1927
- if (message.includes("seal") || message.includes("Yao")) return "near_seal_failed";
1928
- if (message.includes("wallet session")) return "near_capability_persist_failed";
1929
- return "near_provisioning_failed";
1930
- }
1931
- async function markMixedNearProvisioningRetryable(args) {
1932
- const errorCode = nearProvisioningErrorCode(args.error);
1933
- const errorMessage = getUserFriendlyErrorMessage(args.error, "registration", String(args.walletId));
1934
- try {
1935
- await args.context.signingEngine.setWalletNearProvisioningState({
1936
- walletId: String(args.walletId),
1937
- status: "near_failed_retryable",
1938
- errorCode
1939
- });
1940
- } catch {}
1941
- publishNearProvisioningState(args.walletId, {
1942
- status: "near_failed_retryable",
1943
- updatedAtMs: Date.now(),
1944
- error: errorMessage,
1945
- errorCode
1946
- });
1947
- return {
1948
- status: "retryable",
1949
- error: errorMessage,
1950
- errorCode
1951
- };
1952
- }
1953
- async function markMixedNearProvisioningPending(args) {
1954
- try {
1955
- await args.context.signingEngine.setWalletNearProvisioningState({
1956
- walletId: String(args.walletId),
1957
- status: "near_pending"
1958
- });
1959
- publishNearProvisioningState(args.walletId, {
1960
- status: "near_pending",
1961
- updatedAtMs: Date.now()
1962
- });
1963
- return { status: "pending" };
1964
- } catch (error) {
1965
- return await markMixedNearProvisioningRetryable({
1966
- context: args.context,
1967
- walletId: args.walletId,
1968
- error
1969
- });
1970
- }
1971
- }
1972
- async function registerEcdsaOrMixedWallet(args) {
1973
- const { context, wallet, signerSelection } = args;
1974
- const options = args.options || {};
1975
- const { onEvent, onError, afterCall } = options;
1976
- const startedAt = performance.now();
1977
- const registrationTiming = new RegistrationTimingRecorder(startedAt);
1978
- const clientPrewarm = args.kind === "near_ed25519_and_evm_family_ecdsa" ? prewarmDeferredPasskeyEd25519Client(args.authMethod) : Promise.resolve();
1979
- const traceContext = createRouterAbTraceContextV1();
1980
- let postTouchIdCompletedAt = null;
1981
- let emailOtpCustodyCapabilityFactorSecret32 = null;
1982
- const initialEventAccountId = registrationEventAccountId(wallet.kind === "provided" ? String(wallet.walletId) : "wallet-registration");
1983
- emitRegistrationEvent(onEvent, initialEventAccountId, {
1984
- authMethod: args.authMethod.kind,
1985
- phase: RegistrationEventPhase.STEP_01_STARTED,
1986
- status: "started"
1987
- });
1988
- try {
1989
- const finalizeIdempotencyKey = createRegistrationOperationIdempotencyKey("wallet-registration-finalize");
1990
- const prepared = await setupRegistrationForPasskeyExecution({
1991
- context,
1992
- authMethod: args.authMethod,
1993
- wallet,
1994
- signerSelection,
1995
- recorder: registrationTiming,
1996
- passkeyExecution: args.passkeyExecution
1997
- });
1998
- if (args.authMethod.kind === "email_otp") observeRegistrationWarmup({
1999
- recorder: registrationTiming,
2000
- warmup: prepared.registrationWarmup
2001
- });
2002
- const { relayerUrl, setup } = prepared;
2003
- const ecdsaPrepare = materializeWalletRegistrationSetupEcdsaPrepare(requireEcdsaRegistrationSetup(setup, args.kind).ecdsa);
2004
- const ecdsaClientCeremony = ecdsaRegistrationClientCeremonyForExecution({
2005
- passkeyExecution: args.passkeyExecution,
2006
- ceremonyId: setup.registrationCeremonyId
2007
- });
2008
- const intentResponse = {
2009
- intent: setup.intent,
2010
- registrationIntentDigestB64u: setup.registrationIntentDigestB64u
2011
- };
2012
- const walletId = intentResponse.intent.walletId;
2013
- const eventAccountId = registrationEventAccountId(String(walletId));
2014
- let emailOtpEnrollmentMaterial = null;
2015
- let emailOtpRegistrationAuthorityId = "";
2016
- let emailOtpEmail = "";
2017
- let emailOtpProviderSubject = "";
2018
- let emailOtpProvider = null;
2019
- let emailOtpWalletCustodyFactorSecret = null;
2020
- let passkeyAuthority = null;
2021
- let startAuthority;
2022
- if (args.authMethod.kind === "passkey") {
2023
- emitRegistrationEvent(onEvent, eventAccountId, {
2024
- authMethod: args.authMethod.kind,
2025
- phase: RegistrationEventPhase.STEP_04_PASSKEY_CREATE_STARTED,
2026
- status: "waiting_for_user",
2027
- interaction: {
2028
- kind: "passkey_create",
2029
- overlay: "show"
2030
- }
2031
- });
2032
- const confirmationConfig = {
2033
- uiMode: "modal",
2034
- behavior: "requireClick",
2035
- ...args.confirmationConfigOverride ?? options?.confirmationConfig ?? {}
2036
- };
2037
- passkeyAuthority = await registrationTiming.measure("authProofMs", () => resolvePasskeyRegistrationAuthority({
2038
- context,
2039
- walletId,
2040
- signerSlot: registrationPasskeySignerSlot(args),
2041
- registrationIntentDigestB64u: intentResponse.registrationIntentDigestB64u,
2042
- options,
2043
- confirmationConfigOverride: confirmationConfig,
2044
- passkeyExecution: args.passkeyExecution
2045
- }));
2046
- registrationTiming.capturePasskeyAuthDiagnostics(passkeyAuthority.diagnostics);
2047
- postTouchIdCompletedAt = performance.now();
2048
- const custodyCredentialId = parseWebAuthnCredentialIdB64u(String(passkeyAuthority.credential.rawId || passkeyAuthority.credential.id || "").trim());
2049
- if (!custodyCredentialId.ok) throw new Error(`passkey credential id ${custodyCredentialId.error.message}`);
2050
- startAuthority = {
2051
- kind: "passkey",
2052
- webauthnRegistration: passkeyAuthority.webauthnRegistration,
2053
- walletCustodyFactorJson: JSON.stringify({
2054
- envelopeId: `wallet-custody-envelope:${crypto.randomUUID()}`,
2055
- factor: buildPasskeyEnvelopeFactor({
2056
- rpId: requireWebAuthnRpId(args.authMethod.rpId),
2057
- credentialIdB64u: custodyCredentialId.value
2058
- }),
2059
- walletAuthMethodId: intentResponse.intent.foundingWalletAuthMethodId
2060
- }),
2061
- walletCustodyFactorSecret: base64UrlDecode(passkeyAuthority.prfFirstB64u).buffer
2062
- };
2063
- emitRegistrationEvent(onEvent, eventAccountId, {
2064
- authMethod: args.authMethod.kind,
2065
- phase: RegistrationEventPhase.STEP_04_PASSKEY_CREATE_SUCCEEDED,
2066
- status: "succeeded",
2067
- interaction: {
2068
- kind: "passkey_create",
2069
- overlay: "hide"
2070
- }
2071
- });
2072
- } else {
2073
- const emailOtpAuthMethod = args.authMethod;
2074
- const emailOtpEnrollmentSecret = crypto.getRandomValues(new Uint8Array(32));
2075
- emailOtpCustodyCapabilityFactorSecret32 = emailOtpEnrollmentSecret.slice();
2076
- emailOtpWalletCustodyFactorSecret = emailOtpEnrollmentSecret.slice().buffer;
2077
- const emailAuthority = await registrationTiming.measure("authProofMs", () => collectEmailOtpRegistrationAuthority({
2078
- authMethod: emailOtpAuthMethod,
2079
- relayUrl: relayerUrl,
2080
- walletId: String(walletId),
2081
- registrationIntentDigestB64u: intentResponse.registrationIntentDigestB64u
2082
- }));
2083
- emailOtpEnrollmentMaterial = startEmailOtpRegistrationEnrollmentMaterial({
2084
- recorder: registrationTiming,
2085
- context,
2086
- authMethod: emailOtpAuthMethod,
2087
- relayerUrl,
2088
- walletId: String(walletId),
2089
- providerSubject: emailAuthority.providerSubject,
2090
- clientSecret32: emailOtpEnrollmentSecret
2091
- });
2092
- emailOtpRegistrationAuthorityId = emailAuthority.registrationAuthorityId;
2093
- emailOtpEmail = emailAuthority.email;
2094
- emailOtpProviderSubject = emailAuthority.providerSubject;
2095
- emailOtpProvider = emailOtpProviderFromRegistrationProof(emailAuthority.proof);
2096
- startAuthority = {
2097
- kind: "email_otp",
2098
- emailOtpRegistrationProof: emailAuthority.proof,
2099
- walletCustodyFactorSecret: emailOtpWalletCustodyFactorSecret
2100
- };
2101
- }
2102
- const setupWalletAuthMethodId = parseWalletAuthMethodId(setup.walletAuthMethodId);
2103
- if (!setupWalletAuthMethodId.ok) throw new Error(`Registration setup auth-method identity is invalid: ${setupWalletAuthMethodId.error.message}`);
2104
- let materialAuthority;
2105
- if (args.authMethod.kind === "passkey") {
2106
- if (!passkeyAuthority) throw new Error("ECDSA registration is missing its verified passkey authority");
2107
- materialAuthority = await walletAuthAuthorityRef({ authority: {
2108
- ...passkeyWalletAuthAuthorityFromCredential({
2109
- walletId,
2110
- rpId: args.authMethod.rpId,
2111
- credential: passkeyAuthority.credential
2112
- }),
2113
- bindingId: setupWalletAuthMethodId.value
2114
- } });
2115
- } else {
2116
- if (!emailOtpProvider) throw new Error("Email OTP registration is missing its verified provider");
2117
- materialAuthority = await walletAuthAuthorityRef({ authority: {
2118
- ...buildEmailOtpWalletAuthAuthority({
2119
- walletId,
2120
- provider: emailOtpProvider,
2121
- providerUserId: emailOtpProviderSubject,
2122
- emailHashHex: await emailOtpEmailHashHex(emailOtpEmail)
2123
- }),
2124
- bindingId: setupWalletAuthMethodId.value
2125
- } });
2126
- }
2127
- emitRegistrationEvent(onEvent, eventAccountId, {
2128
- authMethod: args.authMethod.kind,
2129
- phase: RegistrationEventPhase.STEP_05_ED25519_SIGNER_PREPARE_STARTED,
2130
- status: "running"
2131
- });
2132
- const walletCustodyNearJoinFactorSecretOwner = { value: args.kind === "near_ed25519_and_evm_family_ecdsa" ? startAuthority.walletCustodyFactorSecret.slice(0) : null };
2133
- let persistedPendingCommit = null;
2134
- let ceremony;
2135
- try {
2136
- ceremony = await registrationTiming.measure("ecdsaRegistrationTotalMs", () => runEcdsaEnabledThreeRouteRegistrationCeremony({
2137
- context,
2138
- relayerUrl,
2139
- registrationCeremonyId: setup.registrationCeremonyId,
2140
- signerPlanKind: args.kind,
2141
- signedSetup: setup.signedSetup,
2142
- ecdsaPrepare,
2143
- clientCeremony: ecdsaClientCeremony,
2144
- authority: startAuthority,
2145
- materialAuthority,
2146
- idempotencyKey: finalizeIdempotencyKey,
2147
- resolveActivateEmailOtp: async () => {
2148
- let enrollment = null;
2149
- let walletCustodyFactorJson = null;
2150
- if (args.authMethod.kind === "email_otp") {
2151
- const material = await requireEmailOtpRegistrationEnrollmentMaterial({
2152
- material: emailOtpEnrollmentMaterial,
2153
- operation: "activate"
2154
- });
2155
- enrollment = material.emailOtpEnrollment ?? null;
2156
- walletCustodyFactorJson = JSON.stringify({
2157
- envelopeId: `wallet-custody-envelope:${crypto.randomUUID()}`,
2158
- factor: buildEmailOtpEnvelopeFactor({
2159
- enrollmentId: material.enrollmentId,
2160
- enrollmentSealKeyVersion: material.enrollmentSealKeyVersion
2161
- }),
2162
- walletAuthMethodId: intentResponse.intent.foundingWalletAuthMethodId
2163
- });
2164
- }
2165
- return {
2166
- enrollment,
2167
- walletCustodyFactorJson
2168
- };
2169
- },
2170
- traceContext,
2171
- registrationTiming,
2172
- confirmRecoveryCodesBackedUp: confirmWalletRecoveryCodesBackedUp.bind(void 0, context, String(walletId), options.recoveryCodeBackup),
2173
- persistPendingCommit: async (input) => {
2174
- const common = {
2175
- operation: "registration_activate",
2176
- registrationCeremonyId: setup.registrationCeremonyId,
2177
- idempotencyKey: finalizeIdempotencyKey,
2178
- walletId: String(walletId),
2179
- walletAuthMethodId: String(intentResponse.intent.foundingWalletAuthMethodId),
2180
- signedSetup: String(setup.signedSetup),
2181
- auth: pendingRegistrationAuthFromRegistrationInputs({
2182
- authMethod: args.authMethod,
2183
- passkeyAuthority,
2184
- email: emailOtpEmail,
2185
- registrationAuthorityId: emailOtpRegistrationAuthorityId,
2186
- providerSubject: emailOtpProviderSubject,
2187
- emailOtpEnrollment: input.emailOtpEnrollment
2188
- })
2189
- };
2190
- if (input.signerPlanKind === "near_ed25519_and_evm_family_ecdsa") {
2191
- const nowMs = Date.now();
2192
- const activation = requireMixedRegistrationActivatePendingCommit(buildPendingRegistrationCommit({
2193
- ...common,
2194
- signerPlanKind: input.signerPlanKind,
2195
- localMaterial: input.localMaterial,
2196
- createdAtMs: nowMs,
2197
- updatedAtMs: nowMs
2198
- }));
2199
- const continuation = planPendingNearRegistration(activation, input.deferredNear.admissionRequest);
2200
- await IndexedDBManager.putPendingWalletRegistrationCommits([activation, continuation]);
2201
- persistedPendingCommit = activation;
2202
- return;
2203
- }
2204
- persistedPendingCommit = await persistPendingRegistrationCommit({
2205
- ...common,
2206
- signerPlanKind: input.signerPlanKind,
2207
- localMaterial: input.localMaterial
2208
- });
2209
- },
2210
- startDeferredNearCustody: startDeferredNearWalletCustody.bind(void 0, {
2211
- context,
2212
- factorSecretOwner: walletCustodyNearJoinFactorSecretOwner,
2213
- registrationCeremonyId: setup.registrationCeremonyId,
2214
- relayerUrl,
2215
- signedSetup: String(setup.signedSetup),
2216
- traceContext
2217
- })
2218
- }));
2219
- } finally {
2220
- zeroizeArrayBuffer(startAuthority.walletCustodyFactorSecret);
2221
- if (walletCustodyNearJoinFactorSecretOwner.value) {
2222
- zeroizeArrayBuffer(walletCustodyNearJoinFactorSecretOwner.value);
2223
- walletCustodyNearJoinFactorSecretOwner.value = null;
2224
- }
2225
- }
2226
- const ecdsaSession = ceremony.session;
2227
- if (ceremony.activated.kind !== "evm_family_ecdsa") throw new Error("Wallet registration activate returned a different signer branch");
2228
- const finalized = finalizeResponseViewFromActivatedEcdsa(ceremony.activated);
2229
- const emailOtpEnrollment = ceremony.activateEmailOtp.enrollment;
2230
- if (finalized.kind !== "evm_family_ecdsa") throw new Error("Wallet registration finalize returned a different signer branch");
2231
- if (args.authMethod.kind === "email_otp") {
2232
- if (!isEmailOtpWalletRegistrationFinalizeResponse(finalized)) throw new Error("Email OTP registration finalize returned a different auth method");
2233
- }
2234
- registrationTiming.captureRouteDiagnostics(finalized.registrationDiagnostics);
2235
- const walletKeys = finalized.ecdsa.walletKeys;
2236
- if (walletKeys.length === 0) throw new Error("Wallet registration finalize did not return ECDSA wallet keys");
2237
- const persistenceAuth = await buildRegistrationPersistenceAuth({
2238
- authMethod: args.authMethod,
2239
- configs: context.configs,
2240
- walletId: toWalletId(finalized.walletId),
2241
- finalized,
2242
- passkeyAuthority,
2243
- email: emailOtpEmail,
2244
- providerSubject: emailOtpProviderSubject,
2245
- registrationAuthorityId: emailOtpRegistrationAuthorityId
2246
- });
2247
- const persistencePlan = buildRegistrationPersistencePlan({
2248
- walletId: toWalletId(finalized.walletId),
2249
- auth: persistenceAuth,
2250
- foundingAuthority: finalized.foundingAuthority,
2251
- foundingAuthMethod: finalized.foundingAuthMethod,
2252
- ecdsa: buildRegistrationPersistenceEcdsa({
2253
- session: ecdsaSession,
2254
- walletKeys,
2255
- expectedChainTargets: ecdsaSession.chainTargets
2256
- })
2257
- });
2258
- emitRegistrationEvent(onEvent, eventAccountId, {
2259
- authMethod: args.authMethod.kind,
2260
- phase: RegistrationEventPhase.STEP_05_ED25519_SIGNER_PREPARE_SUCCEEDED,
2261
- status: "succeeded"
2262
- });
2263
- emitRegistrationEvent(onEvent, eventAccountId, {
2264
- authMethod: args.authMethod.kind,
2265
- phase: RegistrationEventPhase.STEP_08_STORAGE_PERSIST_STARTED,
2266
- status: "running"
2267
- });
2268
- const deferredWalletId = toWalletId(finalized.walletId);
2269
- let registrationNearProvisioning = { status: "pending" };
2270
- if (args.kind === "near_ed25519_and_evm_family_ecdsa") {
2271
- await publishMixedEcdsaRegistrationCommit({
2272
- context,
2273
- relayerUrl,
2274
- registrationTiming,
2275
- pending: requireMixedRegistrationActivatePendingCommit(persistedPendingCommit),
2276
- plan: persistencePlan,
2277
- activated: ceremony.activated
2278
- });
2279
- registrationNearProvisioning = await markMixedNearProvisioningPending({
2280
- context,
2281
- walletId: deferredWalletId
2282
- });
2283
- } else await commitRegistrationPersistencePlan({
2284
- context,
2285
- relayerUrl,
2286
- registrationTiming,
2287
- plan: persistencePlan
2288
- });
2289
- const prefillStatusReads = new WalletSessionStatusReadScope();
2290
- for (const chainTarget of ecdsaSession.chainTargets) scheduleEcdsaSessionPresignaturePrefill({
2291
- signingEngine: context.signingEngine,
2292
- walletId: deferredWalletId,
2293
- chainTarget,
2294
- trigger: "registration",
2295
- statusReads: prefillStatusReads
2296
- });
2297
- const primaryEcdsaKey = persistencePlan.ecdsa.walletKeys[0];
2298
- if (args.authMethod.kind === "passkey") {
2299
- if (!passkeyAuthority) throw new Error("Passkey registration authority was not collected");
2300
- const registrationSession = persistencePlan.ecdsa.session.registrationEstablishedSession;
2301
- try {
2302
- await establishPasskeyRegistrationEd25519ExportRootCapability({
2303
- signingEngine: context.signingEngine,
2304
- commit: ceremony.walletCustody.commitPayload,
2305
- passkeyPrfFirstB64u: passkeyAuthority.prfFirstB64u,
2306
- walletId: String(walletId),
2307
- walletAuthMethodId: String(persistencePlan.foundingAuthMethod.walletAuthMethodId),
2308
- walletSessionId: String(registrationSession.walletSessionId),
2309
- expiresAtMs: registrationSession.expiresAtMs
2310
- });
2311
- } catch (error) {
2312
- if (args.kind !== "near_ed25519_and_evm_family_ecdsa") throw error;
2313
- registrationNearProvisioning = await markMixedNearProvisioningRetryable({
2314
- context,
2315
- walletId: deferredWalletId,
2316
- error
2317
- });
2318
- }
2319
- } else {
2320
- if (persistenceAuth.kind !== "email_otp" || !emailOtpCustodyCapabilityFactorSecret32) throw new Error("Email OTP registration has no custody capability material");
2321
- const registrationSession = persistencePlan.ecdsa.session.registrationEstablishedSession;
2322
- await establishEmailOtpRegistrationEd25519ExportRootCapability({
2323
- context,
2324
- commit: ceremony.walletCustody.commitPayload,
2325
- factorSecret32: emailOtpCustodyCapabilityFactorSecret32,
2326
- emailOtpAuthContext: persistenceAuth.emailOtpAuthContext,
2327
- walletId: String(walletId),
2328
- walletSessionId: String(registrationSession.walletSessionId),
2329
- expiresAtMs: registrationSession.expiresAtMs
2330
- });
2331
- }
2332
- if (args.kind === "near_ed25519_and_evm_family_ecdsa") {
2333
- const deferredAuthMaterial = buildDeferredRegistrationFinalizeAuthMaterial({
2334
- auth: persistencePlan.auth,
2335
- emailOtpEnrollment,
2336
- passkeyAuthority
2337
- });
2338
- try {
2339
- runDeferredEd25519Provisioning({
2340
- context,
2341
- walletId: deferredWalletId,
2342
- commit: {
2343
- context,
2344
- registrationTiming,
2345
- registrationStartedAt: startedAt,
2346
- clientPrewarm,
2347
- relayerUrl,
2348
- registrationCeremonyId: setup.registrationCeremonyId,
2349
- signedSetup: setup.signedSetup,
2350
- headers: registrationRouteHeaders(traceContext),
2351
- nearCustodyWork: requireDeferredNearCustodyWork.bind(void 0, ceremony.deferredNearCustodyWork),
2352
- sessionAuthority: {
2353
- record: persistencePlan.ecdsa.session.registrationEstablishedSession.walletSession,
2354
- operationCredential: persistencePlan.ecdsa.session.registrationEstablishedSession.operationCredential
2355
- },
2356
- expectedChainTargets: persistencePlan.ecdsa.expectedChainTargets,
2357
- walletId: deferredWalletId,
2358
- authMaterial: deferredAuthMaterial
2359
- }
2360
- });
2361
- } catch (error) {
2362
- const errorCode = nearProvisioningErrorCode(error);
2363
- registrationNearProvisioning = {
2364
- status: "retryable",
2365
- error: getUserFriendlyErrorMessage(error, "registration", String(deferredWalletId)),
2366
- errorCode
2367
- };
2368
- publishNearProvisioningState(deferredWalletId, {
2369
- status: "near_failed_retryable",
2370
- updatedAtMs: Date.now(),
2371
- error: registrationNearProvisioning.error,
2372
- errorCode
2373
- });
2374
- }
2375
- }
2376
- if (args.kind === "evm_family_ecdsa") await IndexedDBManager.deletePendingWalletRegistrationCommit({
2377
- registrationCeremonyId: setup.registrationCeremonyId,
2378
- operation: "registration_activate"
2379
- });
2380
- const result = args.kind === "near_ed25519_and_evm_family_ecdsa" ? {
2381
- success: true,
2382
- kind: "ecdsa_wallet_registered_near_pending",
2383
- walletId: finalized.walletId,
2384
- capabilities: [{
2385
- kind: "evm_family_ecdsa",
2386
- thresholdEcdsaEthereumAddress: primaryEcdsaKey.thresholdOwnerAddress,
2387
- thresholdEcdsaPublicKeyB64u: primaryEcdsaKey.thresholdEcdsaPublicKeyB64u
2388
- }],
2389
- nearProvisioning: registrationNearProvisioning
2390
- } : {
2391
- success: true,
2392
- kind: "wallet_registered",
2393
- walletId: finalized.walletId,
2394
- capabilities: [{
2395
- kind: "evm_family_ecdsa",
2396
- thresholdEcdsaEthereumAddress: primaryEcdsaKey.thresholdOwnerAddress,
2397
- thresholdEcdsaPublicKeyB64u: primaryEcdsaKey.thresholdEcdsaPublicKeyB64u
2398
- }]
2399
- };
2400
- emitRegistrationEvent(onEvent, eventAccountId, {
2401
- authMethod: args.authMethod.kind,
2402
- phase: RegistrationEventPhase.STEP_08_STORAGE_PERSIST_SUCCEEDED,
2403
- status: "succeeded"
2404
- });
2405
- emitRegistrationEvent(onEvent, eventAccountId, {
2406
- authMethod: args.authMethod.kind,
2407
- phase: RegistrationEventPhase.STEP_11_COMPLETED,
2408
- status: "succeeded"
2409
- });
2410
- if (postTouchIdCompletedAt !== null) {
2411
- const walletReadyAt = performance.now();
2412
- emitRegistrationTimingSpan({
2413
- callback: options.onTimingSpan,
2414
- span: "registration.post_touch_id",
2415
- outcome: "success",
2416
- durationMs: walletReadyAt - postTouchIdCompletedAt,
2417
- traceContext
2418
- });
2419
- emitRegistrationTimingSpan({
2420
- callback: options.onTimingSpan,
2421
- span: "frontend.wallet_ready",
2422
- outcome: "success",
2423
- durationMs: 0,
2424
- traceContext
2425
- });
2426
- }
2427
- emitRegistrationTimingSummary(createSucceededRegistrationTimingSummary({
2428
- recorder: registrationTiming,
2429
- authMethod: args.authMethod.kind,
2430
- signerSet: registrationTimingSignerSetFromPlan(args.signerPlan)
2431
- }));
2432
- commitSuccessfulWalletAuthentication(args.context, result, args.authMethod.kind);
2433
- afterCall?.(true, result);
2434
- return result;
2435
- } catch (error) {
2436
- const errorCode = registrationErrorCodeFromUnknown(error);
2437
- const errorMessage = getUserFriendlyErrorMessage(error, "registration", initialEventAccountId);
2438
- if (postTouchIdCompletedAt !== null) emitRegistrationTimingSpan({
2439
- callback: options.onTimingSpan,
2440
- span: "registration.post_touch_id",
2441
- outcome: "failure",
2442
- durationMs: performance.now() - postTouchIdCompletedAt,
2443
- traceContext
2444
- });
2445
- const errorObject = registrationErrorWithCode(errorMessage, errorCode);
2446
- onError?.(errorObject);
2447
- emitRegistrationEvent(onEvent, initialEventAccountId, {
2448
- authMethod: args.authMethod.kind,
2449
- phase: RegistrationEventPhase.FAILED,
2450
- status: "failed",
2451
- message: errorMessage,
2452
- interaction: {
2453
- kind: "passkey_create",
2454
- overlay: "hide"
2455
- },
2456
- error: {
2457
- ...errorCode ? { code: errorCode } : {},
2458
- message: errorMessage
2459
- }
2460
- });
2461
- const result = {
2462
- success: false,
2463
- error: errorMessage,
2464
- ...errorCode ? { errorCode } : {}
2465
- };
2466
- emitRegistrationTimingSummary(createFailedRegistrationTimingSummary({
2467
- recorder: registrationTiming,
2468
- authMethod: args.authMethod.kind,
2469
- signerSet: registrationTimingSignerSetFromPlan(args.signerPlan),
2470
- errorCode: errorCode || null
2471
- }));
2472
- afterCall?.(false);
2473
- return result;
2474
- } finally {
2475
- emailOtpCustodyCapabilityFactorSecret32?.fill(0);
2476
- }
2477
- }
2478
- async function registerEmailOtpEd25519YaoWalletOnly(args) {
2479
- const { context, options } = args;
2480
- const initialEventAccountId = registrationEventAccountId(args.wallet.kind === "provided" ? String(args.wallet.walletId) : "wallet-registration");
2481
- const registrationTiming = new RegistrationTimingRecorder(performance.now());
2482
- let emailOtpCustodyCapabilityFactorSecret32 = null;
2483
- emitRegistrationEvent(options.onEvent, initialEventAccountId, {
2484
- authMethod: "email_otp",
2485
- phase: RegistrationEventPhase.STEP_01_STARTED,
2486
- status: "started"
2487
- });
2488
- try {
2489
- const finalizeIdempotencyKey = createRegistrationOperationIdempotencyKey("wallet-registration-finalize");
2490
- const prepared = await setupThreeRouteRegistration({
2491
- context,
2492
- authMethod: args.authMethod,
2493
- wallet: args.wallet,
2494
- signerSelection: args.signerSelection,
2495
- recorder: registrationTiming
2496
- });
2497
- observeRegistrationWarmup({
2498
- recorder: registrationTiming,
2499
- warmup: prepared.registrationWarmup
2500
- });
2501
- const { relayerUrl, setup } = prepared;
2502
- const walletId = setup.intent.walletId;
2503
- const eventAccountId = registrationEventAccountId(String(walletId));
2504
- const emailAuthority = await registrationTiming.measure("authProofMs", collectEmailOtpRegistrationAuthority.bind(void 0, {
2505
- authMethod: args.authMethod,
2506
- relayUrl: relayerUrl,
2507
- walletId: String(walletId),
2508
- registrationIntentDigestB64u: setup.registrationIntentDigestB64u
2509
- }));
2510
- const emailOtpEnrollmentSecret = crypto.getRandomValues(new Uint8Array(32));
2511
- emailOtpCustodyCapabilityFactorSecret32 = emailOtpEnrollmentSecret.slice();
2512
- const emailOtpWalletCustodyFactorSecret = emailOtpEnrollmentSecret.slice().buffer;
2513
- const enrollmentMaterial = startEmailOtpRegistrationEnrollmentMaterial({
2514
- recorder: registrationTiming,
2515
- context,
2516
- authMethod: args.authMethod,
2517
- relayerUrl,
2518
- walletId: String(walletId),
2519
- providerSubject: emailAuthority.providerSubject,
2520
- clientSecret32: emailOtpEnrollmentSecret
2521
- });
2522
- emitRegistrationEvent(options.onEvent, eventAccountId, {
2523
- authMethod: "email_otp",
2524
- phase: RegistrationEventPhase.STEP_05_ED25519_SIGNER_PREPARE_STARTED,
2525
- status: "running"
2526
- });
2527
- const responded = await registrationTiming.measure("walletRegisterStartMs", respondWalletRegistration.bind(void 0, {
2528
- relayerUrl,
2529
- registrationCeremonyId: setup.registrationCeremonyId,
2530
- signerPlanKind: "near_ed25519",
2531
- signedSetup: setup.signedSetup,
2532
- headers: registrationRouteHeaders(),
2533
- kind: "email_otp",
2534
- emailOtpRegistrationProof: emailAuthority.proof
2535
- }));
2536
- if (responded.kind !== "near_ed25519") throw new Error("Ed25519-only registration respond returned a different signer branch");
2537
- const materialForActivate = await requireEmailOtpRegistrationEnrollmentMaterial({
2538
- material: enrollmentMaterial,
2539
- operation: "activate"
2540
- });
2541
- let established;
2542
- try {
2543
- established = await context.signingEngine.establishWalletCustodyNearEd25519KeySet({
2544
- walletId: String(walletId),
2545
- factorJson: JSON.stringify({
2546
- envelopeId: `wallet-custody-envelope:${crypto.randomUUID()}`,
2547
- factor: buildEmailOtpEnvelopeFactor({
2548
- enrollmentId: materialForActivate.enrollmentId,
2549
- enrollmentSealKeyVersion: materialForActivate.enrollmentSealKeyVersion
2550
- }),
2551
- walletAuthMethodId: setup.intent.foundingWalletAuthMethodId
2552
- }),
2553
- factorSecret: emailOtpWalletCustodyFactorSecret,
2554
- nearEd25519SigningKeyId: responded.ed25519.admissionRequest.application_binding.near_ed25519_signing_key_id,
2555
- registrationCeremonyId: setup.registrationCeremonyId,
2556
- admissionRequest: responded.ed25519.admissionRequest,
2557
- admissionReceipt: await admitDeferredNearRegistration(responded.ed25519, {
2558
- routerOrigin: new URL(relayerUrl).origin,
2559
- authorization: {
2560
- kind: "bearer",
2561
- value: `Bearer ${String(setup.signedSetup)}`
2562
- },
2563
- fetch: globalThis.fetch
2564
- }),
2565
- participantIds: responded.ed25519.admissionRequest.participant_ids,
2566
- routerOrigin: new URL(relayerUrl).origin,
2567
- authorization: `Bearer ${String(setup.signedSetup)}`
2568
- });
2569
- } finally {
2570
- zeroizeArrayBuffer(emailOtpWalletCustodyFactorSecret);
2571
- }
2572
- await confirmWalletRecoveryCodesBackedUp(context, String(walletId), options.recoveryCodeBackup, established.recoveryCodes);
2573
- const walletCustodyCommit = walletCustodyCommitPayloadWithRecoveryBackupAcknowledgement(established.commitPayload);
2574
- if (!established.localMaterial) throw new Error("Email OTP registration produced no sealed local custody material");
2575
- await persistPendingRegistrationCommit({
2576
- operation: "registration_activate",
2577
- signerPlanKind: "near_ed25519",
2578
- registrationCeremonyId: setup.registrationCeremonyId,
2579
- idempotencyKey: finalizeIdempotencyKey,
2580
- walletId: String(walletId),
2581
- walletAuthMethodId: String(setup.intent.foundingWalletAuthMethodId),
2582
- signedSetup: String(setup.signedSetup),
2583
- auth: {
2584
- kind: "email_otp",
2585
- email: emailAuthority.email,
2586
- registrationAuthorityId: emailAuthority.registrationAuthorityId,
2587
- providerSubject: emailAuthority.providerSubject,
2588
- enrollment: materialForActivate.emailOtpEnrollment
2589
- },
2590
- localMaterial: {
2591
- keyFamilies: ["ed25519"],
2592
- custodyCommit: walletCustodyCommit,
2593
- ed25519: {
2594
- activationReference: established.activationReference,
2595
- localMaterial: established.localMaterial,
2596
- metadata: pendingRegistrationEd25519MetadataFromJoined(established)
2597
- }
2598
- }
2599
- });
2600
- const activated = await activateWalletRegistration({
2601
- relayerUrl,
2602
- registrationCeremonyId: setup.registrationCeremonyId,
2603
- signerPlanKind: "near_ed25519",
2604
- signedSetup: setup.signedSetup,
2605
- headers: registrationRouteHeaders(),
2606
- idempotencyKey: finalizeIdempotencyKey,
2607
- emailOtpEnrollment: materialForActivate.emailOtpEnrollment
2608
- });
2609
- if (activated.kind !== "near_ed25519" || activated.nearProvisioning?.status !== "near_pending") throw new Error("Ed25519-only activate did not return a wallet pending NEAR provisioning");
2610
- const nearProvisioningIdempotencyKey = await deriveNearProvisioningIdempotencyKey({
2611
- registrationCeremonyId: setup.registrationCeremonyId,
2612
- activationReference: established.activationReference
2613
- });
2614
- const nearProvisioningPending = await persistPendingRegistrationCommit({
2615
- operation: "near_provisioning",
2616
- completion: { kind: "sealed_material" },
2617
- signerPlanKind: "near_ed25519",
2618
- registrationCeremonyId: setup.registrationCeremonyId,
2619
- idempotencyKey: nearProvisioningIdempotencyKey,
2620
- walletId: String(walletId),
2621
- walletAuthMethodId: String(setup.intent.foundingWalletAuthMethodId),
2622
- signedSetup: String(setup.signedSetup),
2623
- auth: {
2624
- kind: "email_otp",
2625
- email: emailAuthority.email,
2626
- registrationAuthorityId: emailAuthority.registrationAuthorityId,
2627
- providerSubject: emailAuthority.providerSubject,
2628
- enrollment: materialForActivate.emailOtpEnrollment
2629
- },
2630
- localMaterial: {
2631
- keyFamilies: ["ed25519"],
2632
- custodyCommit: walletCustodyCommit,
2633
- ed25519: {
2634
- activationReference: established.activationReference,
2635
- localMaterial: established.localMaterial,
2636
- metadata: pendingRegistrationEd25519MetadataFromJoined(established)
2637
- }
2638
- }
2639
- });
2640
- await IndexedDBManager.deletePendingWalletRegistrationCommit({
2641
- registrationCeremonyId: setup.registrationCeremonyId,
2642
- operation: "registration_activate"
2643
- });
2644
- const clientPublicKey = `ed25519:${base58Encode(established.metadata.registeredPublicKey)}`;
2645
- const finalized = await registrationTiming.measure("walletRegisterFinalizeMs", completeWalletRegistrationNearProvisioning.bind(void 0, {
2646
- relayerUrl,
2647
- registrationCeremonyId: setup.registrationCeremonyId,
2648
- signedSetup: setup.signedSetup,
2649
- headers: registrationRouteHeaders(),
2650
- idempotencyKey: nearProvisioningIdempotencyKey,
2651
- ed25519: { activationReference: established.activationReference },
2652
- auth: {
2653
- kind: "email_otp",
2654
- enrollment: materialForActivate.emailOtpEnrollment
2655
- },
2656
- walletCustodyCommit
2657
- }));
2658
- if (!finalized.ok) throw new Error("Deferred NEAR provisioning did not complete");
2659
- registrationTiming.captureRouteDiagnostics(finalized.registrationDiagnostics);
2660
- if (finalized.kind !== "near_ed25519") throw new Error("Wallet registration finalize returned a different signer branch");
2661
- if (!isEmailOtpWalletRegistrationFinalizeResponse(finalized)) throw new Error("Email OTP registration finalize returned a different auth method");
2662
- if (finalized.walletCustody?.status !== "committed") {
2663
- const status = finalized.walletCustody?.status ?? "not_reported";
2664
- throw new Error(`Wallet custody did not commit (${status})`);
2665
- }
2666
- if (finalized.ed25519.signerSlot !== args.ed25519Selection.signerSlot) throw new Error("Ed25519 Yao finalize returned a different signer slot");
2667
- const registrationSession = requireIssuedRegistrationEstablishedSession(finalized.registrationEstablishedSession);
2668
- requireEmailOtpEd25519YaoRegistrationPublicResultMatches({
2669
- clientPublicKey,
2670
- finalized,
2671
- expectedRegistrationAuthorityId: emailAuthority.registrationAuthorityId,
2672
- expectedWalletId: walletId
2673
- });
2674
- const persistenceAuth = await buildRegistrationPersistenceAuth({
2675
- authMethod: args.authMethod,
2676
- configs: context.configs,
2677
- walletId: toWalletId(finalized.walletId),
2678
- finalized,
2679
- passkeyAuthority: null,
2680
- email: emailAuthority.email,
2681
- providerSubject: emailAuthority.providerSubject,
2682
- registrationAuthorityId: emailAuthority.registrationAuthorityId
2683
- });
2684
- if (persistenceAuth.kind !== "email_otp") throw new Error("Email OTP Ed25519 registration produced a different persistence authority");
2685
- emitRegistrationEvent(options.onEvent, eventAccountId, {
2686
- authMethod: "email_otp",
2687
- phase: RegistrationEventPhase.STEP_05_ED25519_SIGNER_PREPARE_SUCCEEDED,
2688
- status: "succeeded"
2689
- });
2690
- emitRegistrationEvent(options.onEvent, eventAccountId, {
2691
- authMethod: "email_otp",
2692
- phase: RegistrationEventPhase.STEP_08_STORAGE_PERSIST_STARTED,
2693
- status: "running"
2694
- });
2695
- const materialFacts = registrationEd25519MaterialFacts({
2696
- deferredNear: responded.ed25519,
2697
- finalized: finalized.ed25519,
2698
- walletId,
2699
- expectedRuntimePolicyScope: normalizeRuntimePolicyScope(setup.intent.runtimePolicyScope)
2700
- });
2701
- const metadata = established.metadata;
2702
- const nearAccountId = toAccountId(finalized.ed25519.nearAccountId);
2703
- const custodyMaterial = walletCustodyRegistrationMaterial({
2704
- established,
2705
- walletId: String(finalized.walletId),
2706
- nearAccountId: String(nearAccountId),
2707
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
2708
- signerSlot: finalized.ed25519.signerSlot
2709
- });
2710
- const registration = await prepareWalletEmailOtpEd25519RegistrationPublication({
2711
- walletId: finalized.walletId,
2712
- nearAccountId,
2713
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
2714
- email: persistenceAuth.email,
2715
- registrationAuthorityId: persistenceAuth.registrationAuthorityId,
2716
- authority: persistenceAuth.authority,
2717
- signerSlot: finalized.ed25519.signerSlot,
2718
- operationalPublicKey: clientPublicKey,
2719
- relayerKeyId: finalized.ed25519.relayerKeyId,
2720
- keyVersion: finalized.ed25519.keyVersion,
2721
- participantIds: [...finalized.ed25519.participantIds],
2722
- custodyMaterial
2723
- });
2724
- const storedNearActivation = (await IndexedDBManager.publishPendingWalletRegistrationCommit({
2725
- pending: nearProvisioningPending,
2726
- ecdsaContinuity: [],
2727
- authority: finalized.authority,
2728
- foundingAuthority: {
2729
- authority: finalized.foundingAuthority,
2730
- authMethod: finalized.foundingAuthMethod
2731
- },
2732
- request: {
2733
- operation: "near_provisioning",
2734
- registrationCeremonyId: setup.registrationCeremonyId,
2735
- idempotencyKey: nearProvisioningIdempotencyKey,
2736
- walletId: finalized.walletId,
2737
- walletAuthMethodId: finalized.foundingAuthMethod.walletAuthMethodId
2738
- },
2739
- walletSessionPublication: {
2740
- kind: "issued",
2741
- walletSession: registrationSession.walletSession,
2742
- operationCredential: registrationSession.operationCredential
2743
- },
2744
- registration
2745
- })).signerActivations[1];
2746
- if (!storedNearActivation || storedNearActivation.signerSlot !== finalized.ed25519.signerSlot) throw new Error("Ed25519 Yao registration persisted a different signer slot");
2747
- await context.signingEngine.activateAuthenticatedWalletState({
2748
- walletId: finalized.walletId,
2749
- nearAccountId,
2750
- signerSlot: finalized.ed25519.signerSlot,
2751
- nearClient: context.nearClient
2752
- });
2753
- await context.signingEngine.upsertEd25519YaoPublicCapabilityLaneReference({
2754
- walletId: finalized.walletId,
2755
- nearAccountId,
2756
- thresholdSessionId: materialFacts.identity.thresholdSessionId,
2757
- runtimePolicyScope: materialFacts.stableServerScope.runtimePolicyScope,
2758
- materialActivation: nearEd25519YaoMaterialActivationFromMetadata(metadata),
2759
- auth: {
2760
- kind: "email_otp",
2761
- providerSubjectId: emailAuthority.providerSubject
2762
- },
2763
- nearEd25519SigningKeyId: parseNearEd25519SigningKeyId(finalized.ed25519.nearEd25519SigningKeyId),
2764
- signerSlot: finalized.ed25519.signerSlot,
2765
- remainingUses: registrationSession.remainingUses,
2766
- expiresAtMs: registrationSession.expiresAtMs
2767
- });
2768
- if (!emailOtpCustodyCapabilityFactorSecret32) throw new Error("Email OTP registration has no custody capability material");
2769
- await establishEmailOtpRegistrationEd25519ExportRootCapability({
2770
- context,
2771
- commit: walletCustodyCommit,
2772
- factorSecret32: emailOtpCustodyCapabilityFactorSecret32,
2773
- emailOtpAuthContext: persistenceAuth.emailOtpAuthContext,
2774
- walletId: String(finalized.walletId),
2775
- walletSessionId: String(registrationSession.walletSessionId),
2776
- expiresAtMs: registrationSession.expiresAtMs
2777
- });
2778
- emitRegistrationEvent(options.onEvent, eventAccountId, {
2779
- authMethod: "email_otp",
2780
- phase: RegistrationEventPhase.STEP_08_STORAGE_PERSIST_SUCCEEDED,
2781
- status: "succeeded"
2782
- });
2783
- emitRegistrationEvent(options.onEvent, eventAccountId, {
2784
- authMethod: "email_otp",
2785
- phase: RegistrationEventPhase.STEP_11_COMPLETED,
2786
- status: "succeeded"
2787
- });
2788
- const result = {
2789
- success: true,
2790
- kind: "wallet_registered",
2791
- walletId: finalized.walletId,
2792
- capabilities: [{
2793
- kind: "near_ed25519",
2794
- accountProvisioning: finalized.accountProvisioning,
2795
- resolvedAccount: finalized.resolvedAccount,
2796
- nearEd25519SigningKeyId: parseNearEd25519SigningKeyId(finalized.ed25519.nearEd25519SigningKeyId),
2797
- operationalPublicKey: clientPublicKey,
2798
- nearAccountId: toAccountId(finalized.ed25519.nearAccountId),
2799
- transactionId: finalized.resolvedAccount.kind === "sponsored_named_account" ? finalized.resolvedAccount.transactionHash : null
2800
- }]
2801
- };
2802
- emitRegistrationTimingSummary(createSucceededRegistrationTimingSummary({
2803
- recorder: registrationTiming,
2804
- authMethod: "email_otp",
2805
- signerSet: registrationTimingSignerSetFromPlan(args.signerPlan)
2806
- }));
2807
- commitSuccessfulWalletAuthentication(context, result, "email_otp");
2808
- options.afterCall?.(true, result);
2809
- return result;
2810
- } catch (error) {
2811
- const errorCode = registrationErrorCodeFromUnknown(error);
2812
- const message = getUserFriendlyErrorMessage(error, "registration", initialEventAccountId);
2813
- options.onError?.(registrationErrorWithCode(message, errorCode));
2814
- emitRegistrationEvent(options.onEvent, initialEventAccountId, {
2815
- authMethod: "email_otp",
2816
- phase: RegistrationEventPhase.FAILED,
2817
- status: "failed",
2818
- message,
2819
- error: {
2820
- ...errorCode ? { code: errorCode } : {},
2821
- message
2822
- }
2823
- });
2824
- const result = {
2825
- success: false,
2826
- error: message,
2827
- ...errorCode ? { errorCode } : {}
2828
- };
2829
- emitRegistrationTimingSummary(createFailedRegistrationTimingSummary({
2830
- recorder: registrationTiming,
2831
- authMethod: "email_otp",
2832
- signerSet: registrationTimingSignerSetFromPlan(args.signerPlan),
2833
- errorCode: errorCode || null
2834
- }));
2835
- options.afterCall?.(false);
2836
- return result;
2837
- } finally {
2838
- emailOtpCustodyCapabilityFactorSecret32?.fill(0);
2839
- }
2840
- }
2841
- async function registerPasskeyEd25519YaoWalletOnly(args) {
2842
- const { context, options } = args;
2843
- const initialEventAccountId = registrationEventAccountId(args.wallet.kind === "provided" ? String(args.wallet.walletId) : "wallet-registration");
2844
- const traceContext = createRouterAbTraceContextV1();
2845
- let postTouchIdCompletedAt = null;
2846
- emitRegistrationEvent(options.onEvent, initialEventAccountId, {
2847
- authMethod: "passkey",
2848
- phase: RegistrationEventPhase.STEP_01_STARTED,
2849
- status: "started"
2850
- });
2851
- try {
2852
- const finalizeIdempotencyKey = createRegistrationOperationIdempotencyKey("wallet-registration-finalize");
2853
- const registrationTiming = new RegistrationTimingRecorder(performance.now());
2854
- const { relayerUrl, setup } = await setupRegistrationForPasskeyExecution({
2855
- context,
2856
- authMethod: args.authMethod,
2857
- wallet: args.wallet,
2858
- signerSelection: args.signerSelection,
2859
- recorder: registrationTiming,
2860
- passkeyExecution: args.passkeyExecution
2861
- });
2862
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.setup");
2863
- const intent = requirePasskeyRegistrationIntent(setup.intent);
2864
- const eventAccountId = registrationEventAccountId(String(intent.walletId));
2865
- emitRegistrationEvent(options.onEvent, eventAccountId, {
2866
- authMethod: "passkey",
2867
- phase: RegistrationEventPhase.STEP_04_PASSKEY_CREATE_STARTED,
2868
- status: "waiting_for_user",
2869
- interaction: {
2870
- kind: "passkey_create",
2871
- overlay: "show"
2872
- }
2873
- });
2874
- const passkeyAuthority = await resolvePasskeyRegistrationAuthority({
2875
- context,
2876
- walletId: intent.walletId,
2877
- signerSlot: args.ed25519Selection.signerSlot,
2878
- registrationIntentDigestB64u: setup.registrationIntentDigestB64u,
2879
- options,
2880
- confirmationConfigOverride: {
2881
- uiMode: "modal",
2882
- behavior: "requireClick",
2883
- ...args.confirmationConfigOverride ?? options.confirmationConfig ?? {}
2884
- },
2885
- passkeyExecution: args.passkeyExecution
2886
- });
2887
- postTouchIdCompletedAt = performance.now();
2888
- registrationTiming.capturePasskeyAuthDiagnostics(passkeyAuthority.diagnostics);
2889
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.authentication");
2890
- emitRegistrationEvent(options.onEvent, eventAccountId, {
2891
- authMethod: "passkey",
2892
- phase: RegistrationEventPhase.STEP_04_PASSKEY_CREATE_SUCCEEDED,
2893
- status: "succeeded",
2894
- interaction: {
2895
- kind: "passkey_create",
2896
- overlay: "hide"
2897
- }
2898
- });
2899
- const responded = await respondWalletRegistration({
2900
- relayerUrl,
2901
- registrationCeremonyId: setup.registrationCeremonyId,
2902
- signerPlanKind: "near_ed25519",
2903
- signedSetup: setup.signedSetup,
2904
- headers: registrationRouteHeaders(traceContext),
2905
- kind: "passkey",
2906
- webauthnRegistration: passkeyAuthority.webauthnRegistration
2907
- });
2908
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.respond");
2909
- if (responded.kind !== "near_ed25519") throw new Error("Ed25519-only registration respond returned a different signer branch");
2910
- const parsedCredentialId = parseWebAuthnCredentialIdB64u(String(passkeyAuthority.credential.rawId || passkeyAuthority.credential.id || "").trim());
2911
- if (!parsedCredentialId.ok) throw new Error(`passkey credential id ${parsedCredentialId.error.message}`);
2912
- const walletCustodyFactorSecret = base64UrlDecode(passkeyAuthority.prfFirstB64u).buffer;
2913
- let established;
2914
- try {
2915
- established = await context.signingEngine.establishWalletCustodyNearEd25519KeySet({
2916
- walletId: String(intent.walletId),
2917
- factorJson: JSON.stringify({
2918
- envelopeId: `wallet-custody-envelope:${crypto.randomUUID()}`,
2919
- factor: buildPasskeyEnvelopeFactor({
2920
- rpId: requireWebAuthnRpId(args.authMethod.rpId),
2921
- credentialIdB64u: parsedCredentialId.value
2922
- }),
2923
- walletAuthMethodId: setup.intent.foundingWalletAuthMethodId
2924
- }),
2925
- factorSecret: walletCustodyFactorSecret,
2926
- nearEd25519SigningKeyId: responded.ed25519.admissionRequest.application_binding.near_ed25519_signing_key_id,
2927
- registrationCeremonyId: setup.registrationCeremonyId,
2928
- admissionRequest: responded.ed25519.admissionRequest,
2929
- admissionReceipt: await admitDeferredNearRegistration(responded.ed25519, {
2930
- routerOrigin: new URL(relayerUrl).origin,
2931
- authorization: {
2932
- kind: "bearer",
2933
- value: `Bearer ${String(setup.signedSetup)}`
2934
- },
2935
- fetch: globalThis.fetch
2936
- }),
2937
- participantIds: responded.ed25519.admissionRequest.participant_ids,
2938
- routerOrigin: new URL(relayerUrl).origin,
2939
- authorization: `Bearer ${String(setup.signedSetup)}`,
2940
- traceContext
2941
- });
2942
- } finally {
2943
- zeroizeArrayBuffer(walletCustodyFactorSecret);
2944
- }
2945
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.custody");
2946
- await confirmWalletRecoveryCodesBackedUp(context, String(intent.walletId), options.recoveryCodeBackup, established.recoveryCodes);
2947
- const walletCustodyCommit = walletCustodyCommitPayloadWithRecoveryBackupAcknowledgement(established.commitPayload);
2948
- if (!established.localMaterial) throw new Error("Passkey registration produced no sealed local custody material");
2949
- await persistPendingRegistrationCommit({
2950
- operation: "registration_activate",
2951
- signerPlanKind: "near_ed25519",
2952
- registrationCeremonyId: setup.registrationCeremonyId,
2953
- idempotencyKey: finalizeIdempotencyKey,
2954
- walletId: String(intent.walletId),
2955
- walletAuthMethodId: String(setup.intent.foundingWalletAuthMethodId),
2956
- signedSetup: String(setup.signedSetup),
2957
- auth: {
2958
- kind: "passkey",
2959
- rpId: args.authMethod.rpId,
2960
- credentialIdB64u: parsedCredentialId.value,
2961
- transports: [...passkeyAuthority.webauthnRegistration.response.transports]
2962
- },
2963
- localMaterial: {
2964
- keyFamilies: ["ed25519"],
2965
- custodyCommit: walletCustodyCommit,
2966
- ed25519: {
2967
- activationReference: established.activationReference,
2968
- localMaterial: established.localMaterial,
2969
- metadata: pendingRegistrationEd25519MetadataFromJoined(established)
2970
- }
2971
- }
2972
- });
2973
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.backup_and_checkpoint");
2974
- const activated = await activateWalletRegistration({
2975
- relayerUrl,
2976
- registrationCeremonyId: setup.registrationCeremonyId,
2977
- signerPlanKind: "near_ed25519",
2978
- signedSetup: setup.signedSetup,
2979
- headers: registrationRouteHeaders(traceContext),
2980
- idempotencyKey: finalizeIdempotencyKey
2981
- });
2982
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.activate");
2983
- if (activated.kind !== "near_ed25519" || activated.nearProvisioning?.status !== "near_pending") throw new Error("Ed25519-only activate did not return a wallet pending NEAR provisioning");
2984
- const nearProvisioningIdempotencyKey = await deriveNearProvisioningIdempotencyKey({
2985
- registrationCeremonyId: setup.registrationCeremonyId,
2986
- activationReference: established.activationReference
2987
- });
2988
- const nearProvisioningPending = await persistPendingRegistrationCommit({
2989
- operation: "near_provisioning",
2990
- completion: { kind: "sealed_material" },
2991
- signerPlanKind: "near_ed25519",
2992
- registrationCeremonyId: setup.registrationCeremonyId,
2993
- idempotencyKey: nearProvisioningIdempotencyKey,
2994
- walletId: String(intent.walletId),
2995
- walletAuthMethodId: String(setup.intent.foundingWalletAuthMethodId),
2996
- signedSetup: String(setup.signedSetup),
2997
- auth: {
2998
- kind: "passkey",
2999
- rpId: args.authMethod.rpId,
3000
- credentialIdB64u: parsedCredentialId.value,
3001
- transports: [...passkeyAuthority.webauthnRegistration.response.transports]
3002
- },
3003
- localMaterial: {
3004
- keyFamilies: ["ed25519"],
3005
- custodyCommit: walletCustodyCommit,
3006
- ed25519: {
3007
- activationReference: established.activationReference,
3008
- localMaterial: established.localMaterial,
3009
- metadata: pendingRegistrationEd25519MetadataFromJoined(established)
3010
- }
3011
- }
3012
- });
3013
- await IndexedDBManager.deletePendingWalletRegistrationCommit({
3014
- registrationCeremonyId: setup.registrationCeremonyId,
3015
- operation: "registration_activate"
3016
- });
3017
- const clientPublicKey = `ed25519:${base58Encode(established.metadata.registeredPublicKey)}`;
3018
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.provision_checkpoint");
3019
- const finalized = await completeWalletRegistrationNearProvisioning({
3020
- relayerUrl,
3021
- registrationCeremonyId: setup.registrationCeremonyId,
3022
- signedSetup: setup.signedSetup,
3023
- headers: registrationRouteHeaders(traceContext),
3024
- idempotencyKey: nearProvisioningIdempotencyKey,
3025
- ed25519: { activationReference: established.activationReference },
3026
- auth: { kind: "passkey" },
3027
- walletCustodyCommit
3028
- });
3029
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.finalize");
3030
- if (!finalized.ok || finalized.kind !== "near_ed25519") throw new Error("Deferred NEAR provisioning returned a different signer branch");
3031
- if (established.commitPayload && finalized.walletCustody?.status !== "committed") {
3032
- const status = finalized.walletCustody?.status ?? "not_reported";
3033
- const reason = finalized.walletCustody?.status === "rejected" ? `: ${finalized.walletCustody.reason}` : "";
3034
- throw new Error(`Wallet custody did not commit (${status})${reason}. The recovery codes shown are not usable.`);
3035
- }
3036
- const registrationSession = requireIssuedRegistrationEstablishedSession(finalized.registrationEstablishedSession);
3037
- const finalizedPasskey = requireEd25519YaoRegistrationPublicResultMatches({
3038
- clientPublicKey,
3039
- finalized,
3040
- expectedRpId: args.authMethod.rpId,
3041
- expectedWalletId: intent.walletId
3042
- });
3043
- const nearAccountId = toAccountId(finalized.ed25519.nearAccountId);
3044
- const credentialPublicKeyB64u = requireFinalizedPasskeyCredentialPublicKeyB64u({
3045
- finalized,
3046
- credential: passkeyAuthority.credential
3047
- });
3048
- const materialFacts = registrationEd25519MaterialFacts({
3049
- deferredNear: responded.ed25519,
3050
- finalized: finalized.ed25519,
3051
- walletId: intent.walletId,
3052
- expectedRuntimePolicyScope: normalizeRuntimePolicyScope(intent.runtimePolicyScope)
3053
- });
3054
- const metadata = established.metadata;
3055
- const custodyMaterial = walletCustodyRegistrationMaterial({
3056
- established,
3057
- walletId: String(finalized.walletId),
3058
- nearAccountId: String(nearAccountId),
3059
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
3060
- signerSlot: finalized.ed25519.signerSlot
3061
- });
3062
- await rememberPasskeyRegistrationCustodyEnvelope({
3063
- commit: established.commitPayload,
3064
- walletId: String(finalized.walletId),
3065
- activatedAtMs: Date.now()
3066
- });
3067
- await context.signingEngine.upsertEd25519YaoPublicCapabilityLaneReference({
3068
- walletId: finalized.walletId,
3069
- nearAccountId: toAccountId(finalized.ed25519.nearAccountId),
3070
- thresholdSessionId: materialFacts.identity.thresholdSessionId,
3071
- runtimePolicyScope: materialFacts.stableServerScope.runtimePolicyScope,
3072
- materialActivation: nearEd25519YaoMaterialActivationFromMetadata(metadata),
3073
- auth: {
3074
- kind: "passkey",
3075
- rpId: toRpId(finalizedPasskey.rpId),
3076
- credentialIdB64u: finalizedPasskey.credentialIdB64u
3077
- },
3078
- nearEd25519SigningKeyId: parseNearEd25519SigningKeyId(finalized.ed25519.nearEd25519SigningKeyId),
3079
- signerSlot: finalized.ed25519.signerSlot
3080
- });
3081
- const registration = prepareWalletEd25519RegistrationPublication({
3082
- walletId: finalized.walletId,
3083
- nearAccountId,
3084
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
3085
- rpId: requireWebAuthnRpId(finalizedPasskey.rpId),
3086
- credential: passkeyAuthority.credential,
3087
- credentialPublicKeyB64u,
3088
- signerSlot: finalized.ed25519.signerSlot,
3089
- operationalPublicKey: clientPublicKey,
3090
- relayerKeyId: finalized.ed25519.relayerKeyId,
3091
- keyVersion: finalized.ed25519.keyVersion,
3092
- participantIds: [...finalized.ed25519.participantIds],
3093
- custodyMaterial
3094
- });
3095
- const storedNearActivation = (await IndexedDBManager.publishPendingWalletRegistrationCommit({
3096
- pending: nearProvisioningPending,
3097
- ecdsaContinuity: [],
3098
- authority: finalized.authority,
3099
- foundingAuthority: {
3100
- authority: finalized.foundingAuthority,
3101
- authMethod: finalized.foundingAuthMethod
3102
- },
3103
- request: {
3104
- operation: "near_provisioning",
3105
- registrationCeremonyId: setup.registrationCeremonyId,
3106
- idempotencyKey: nearProvisioningIdempotencyKey,
3107
- walletId: finalized.walletId,
3108
- walletAuthMethodId: finalized.foundingAuthMethod.walletAuthMethodId
3109
- },
3110
- walletSessionPublication: {
3111
- kind: "issued",
3112
- walletSession: registrationSession.walletSession,
3113
- operationCredential: registrationSession.operationCredential
3114
- },
3115
- registration
3116
- })).signerActivations[1];
3117
- if (!storedNearActivation || storedNearActivation.signerSlot !== finalized.ed25519.signerSlot) throw new Error("Ed25519 Yao registration persisted a different signer slot");
3118
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.publication");
3119
- const hydration = await hydrateDeferredNearRegistrationSession({
3120
- signingEngine: context.signingEngine,
3121
- ceremonyId: setup.registrationCeremonyId,
3122
- input: buildRegistrationPasskeyEd25519SessionHydration({
3123
- session: registrationSession,
3124
- ceremonyId: setup.registrationCeremonyId,
3125
- walletId: String(finalized.walletId),
3126
- relayerUrl,
3127
- prfFirstB64u: passkeyAuthority.prfFirstB64u,
3128
- preparedServerSeal: null,
3129
- restore: {
3130
- rpId: finalizedPasskey.rpId,
3131
- nearAccountId: String(nearAccountId),
3132
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
3133
- relayerKeyId: finalized.ed25519.relayerKeyId,
3134
- participantIds: finalized.ed25519.participantIds,
3135
- signerSlot: finalized.ed25519.signerSlot,
3136
- credentialIdB64u: finalizedPasskey.credentialIdB64u,
3137
- materialActivation: nearEd25519YaoMaterialActivationFromMetadata(metadata)
3138
- }
3139
- })
3140
- });
3141
- if (hydration.kind === "failed") throw hydration.error;
3142
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.session_hydration");
3143
- await activatePasskeyRegistrationEd25519Material({
3144
- signingEngine: context.signingEngine,
3145
- sessionAuthority: {
3146
- record: registrationSession.walletSession,
3147
- operationCredential: registrationSession.operationCredential
3148
- },
3149
- metadata,
3150
- material: custodyMaterial,
3151
- materialFacts,
3152
- envelope: walletCustodyCacheEnvelopeFromRegistrationCommit(established.commitPayload),
3153
- ownedFactorSecret: base64UrlDecode(passkeyAuthority.prfFirstB64u),
3154
- rpId: finalizedPasskey.rpId,
3155
- credentialIdB64u: finalizedPasskey.credentialIdB64u,
3156
- passkeyPrfFirstB64u: passkeyAuthority.prfFirstB64u,
3157
- relayerUrl
3158
- });
3159
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.material_activation");
3160
- await establishPasskeyRegistrationEd25519ExportRootCapability({
3161
- signingEngine: context.signingEngine,
3162
- commit: established.commitPayload,
3163
- passkeyPrfFirstB64u: passkeyAuthority.prfFirstB64u,
3164
- walletId: String(finalized.walletId),
3165
- walletAuthMethodId: String(finalized.foundingAuthMethod.walletAuthMethodId),
3166
- walletSessionId: String(registrationSession.walletSessionId),
3167
- expiresAtMs: registrationSession.expiresAtMs
3168
- });
3169
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.export_capability");
3170
- await context.signingEngine.activateAuthenticatedWalletState({
3171
- walletId: finalized.walletId,
3172
- nearAccountId,
3173
- signerSlot: finalized.ed25519.signerSlot,
3174
- nearClient: context.nearClient
3175
- });
3176
- emitRegistrationEvent(options.onEvent, eventAccountId, {
3177
- authMethod: "passkey",
3178
- phase: RegistrationEventPhase.STEP_11_COMPLETED,
3179
- status: "succeeded"
3180
- });
3181
- if (postTouchIdCompletedAt !== null) {
3182
- const walletReadyAt = performance.now();
3183
- emitRegistrationTimingSpan({
3184
- callback: options.onTimingSpan,
3185
- span: "registration.post_touch_id",
3186
- outcome: "success",
3187
- durationMs: walletReadyAt - postTouchIdCompletedAt,
3188
- traceContext
3189
- });
3190
- emitRegistrationTimingSpan({
3191
- callback: options.onTimingSpan,
3192
- span: "frontend.wallet_ready",
3193
- outcome: "success",
3194
- durationMs: 0,
3195
- traceContext
3196
- });
3197
- }
3198
- registrationTiming.markNearStage(setup.registrationCeremonyId, "near_only.wallet_ready");
3199
- emitRegistrationTimingSummary(createSucceededRegistrationTimingSummary({
3200
- recorder: registrationTiming,
3201
- authMethod: "passkey",
3202
- signerSet: registrationTimingSignerSetFromPlan(args.signerPlan)
3203
- }));
3204
- const result = {
3205
- success: true,
3206
- kind: "wallet_registered",
3207
- walletId: finalized.walletId,
3208
- capabilities: [{
3209
- kind: "near_ed25519",
3210
- accountProvisioning: finalized.accountProvisioning,
3211
- resolvedAccount: finalized.resolvedAccount,
3212
- nearEd25519SigningKeyId: parseNearEd25519SigningKeyId(finalized.ed25519.nearEd25519SigningKeyId),
3213
- operationalPublicKey: clientPublicKey,
3214
- nearAccountId: toAccountId(finalized.ed25519.nearAccountId),
3215
- transactionId: finalized.resolvedAccount.kind === "sponsored_named_account" ? finalized.resolvedAccount.transactionHash : null
3216
- }]
3217
- };
3218
- commitSuccessfulWalletAuthentication(context, result, "passkey");
3219
- options.afterCall?.(true, result);
3220
- return result;
3221
- } catch (error) {
3222
- const errorCode = registrationErrorCodeFromUnknown(error);
3223
- const message = getUserFriendlyErrorMessage(error, "registration", initialEventAccountId);
3224
- if (postTouchIdCompletedAt !== null) emitRegistrationTimingSpan({
3225
- callback: options.onTimingSpan,
3226
- span: "registration.post_touch_id",
3227
- outcome: "failure",
3228
- durationMs: performance.now() - postTouchIdCompletedAt,
3229
- traceContext
3230
- });
3231
- options.onError?.(registrationErrorWithCode(message, errorCode));
3232
- emitRegistrationEvent(options.onEvent, initialEventAccountId, {
3233
- authMethod: "passkey",
3234
- phase: RegistrationEventPhase.FAILED,
3235
- status: "failed",
3236
- message,
3237
- interaction: {
3238
- kind: "passkey_create",
3239
- overlay: "hide"
3240
- },
3241
- error: {
3242
- ...errorCode ? { code: errorCode } : {},
3243
- message
3244
- }
3245
- });
3246
- const result = {
3247
- success: false,
3248
- error: message,
3249
- ...errorCode ? { errorCode } : {}
3250
- };
3251
- options.afterCall?.(false);
3252
- return result;
3253
- }
3254
- }
3255
- async function registerWalletInternal(args) {
3256
- const signerPlan = registrationSignerPlanFromSignerSet(args.signerSelection);
3257
- const ed25519Branch = findRegistrationSignerPlanNearEd25519Branch(signerPlan);
3258
- if (ed25519Branch) {
3259
- const ecdsaBranch = findRegistrationSignerPlanEvmFamilyEcdsaBranch(signerPlan);
3260
- if (ecdsaBranch) return await registerEcdsaOrMixedWallet({
3261
- kind: "near_ed25519_and_evm_family_ecdsa",
3262
- context: args.context,
3263
- authMethod: args.authMethod,
3264
- wallet: args.wallet,
3265
- signerSelection: args.signerSelection,
3266
- signerPlan,
3267
- ed25519Selection: ed25519Branch,
3268
- ecdsaSelection: ecdsaBranch,
3269
- options: args.options,
3270
- passkeyExecution: args.passkeyExecution,
3271
- ...args.confirmationConfigOverride ? { confirmationConfigOverride: args.confirmationConfigOverride } : {}
3272
- });
3273
- if (args.authMethod.kind === "email_otp") {
3274
- if (args.passkeyExecution.kind !== "collect_during_registration") throw new Error("Prepared registration authority requires passkey authentication");
3275
- return await registerEmailOtpEd25519YaoWalletOnly({
3276
- context: args.context,
3277
- authMethod: args.authMethod,
3278
- wallet: args.wallet,
3279
- signerSelection: args.signerSelection,
3280
- signerPlan,
3281
- ed25519Selection: ed25519Branch,
3282
- options: args.options,
3283
- passkeyExecution: args.passkeyExecution
3284
- });
3285
- }
3286
- return await registerPasskeyEd25519YaoWalletOnly({
3287
- context: args.context,
3288
- authMethod: args.authMethod,
3289
- wallet: args.wallet,
3290
- signerSelection: args.signerSelection,
3291
- signerPlan,
3292
- ed25519Selection: ed25519Branch,
3293
- options: args.options,
3294
- passkeyExecution: args.passkeyExecution,
3295
- ...args.confirmationConfigOverride ? { confirmationConfigOverride: args.confirmationConfigOverride } : {}
3296
- });
3297
- }
3298
- const ecdsaBranch = findRegistrationSignerPlanEvmFamilyEcdsaBranch(signerPlan);
3299
- if (!ecdsaBranch) throw new Error("Wallet registration requires an ECDSA signer branch");
3300
- return await registerEcdsaOrMixedWallet({
3301
- kind: "evm_family_ecdsa",
3302
- context: args.context,
3303
- authMethod: args.authMethod,
3304
- wallet: args.wallet,
3305
- signerSelection: args.signerSelection,
3306
- signerPlan,
3307
- ecdsaSelection: ecdsaBranch,
3308
- options: args.options,
3309
- passkeyExecution: args.passkeyExecution,
3310
- ...args.confirmationConfigOverride ? { confirmationConfigOverride: args.confirmationConfigOverride } : {}
3311
- });
3312
- }
3313
- function commitSuccessfulWalletAuthentication(context, result, authMethod) {
3314
- context.signingEngine.setWalletAuthenticated({
3315
- kind: "authenticated",
3316
- walletId: result.walletId,
3317
- authMethod
3318
- });
3319
- }
3320
- async function registerWallet(args) {
3321
- try {
3322
- return await registerWalletInternal({
3323
- context: args.context,
3324
- authMethod: args.authMethod,
3325
- wallet: args.wallet,
3326
- signerSelection: args.signerSelection,
3327
- options: args.options,
3328
- authenticatorOptions: args.authenticatorOptions,
3329
- ...args.confirmationConfigOverride ? { confirmationConfigOverride: args.confirmationConfigOverride } : {},
3330
- passkeyExecution: { kind: "collect_during_registration" }
3331
- });
3332
- } finally {
3333
- args.context.signingEngine.closeRegistrationPreparationModal();
3334
- }
3335
- }
3336
- function emitAddSignerEventSafely(onEvent, accountId, event) {
3337
- try {
3338
- emitRegistrationEvent(onEvent, accountId, event);
3339
- } catch {}
3340
- }
3341
- function notifyAddSignerErrorSafely(onError, error) {
3342
- try {
3343
- onError?.(error);
3344
- } catch {}
3345
- }
3346
- function notifyAddSignerAfterCallSafely(afterCall, success, result) {
3347
- try {
3348
- if (success && result) afterCall?.(true, result);
3349
- else afterCall?.(false);
3350
- } catch {}
3351
- }
3352
- function addSignerAllowCredentials(authenticators) {
3353
- const credentials = [];
3354
- for (const authenticator of authenticators) {
3355
- const credentialId = String(authenticator.credentialId || "").trim();
3356
- if (!credentialId) continue;
3357
- credentials.push({
3358
- id: credentialId,
3359
- type: "public-key",
3360
- transports: webAuthnTransportsFromRaw(authenticator.transports)
3361
- });
3362
- }
3363
- if (credentials.length === 0) throw new Error("Wallet add-signer requires an existing passkey credential");
3364
- return credentials;
3365
- }
3366
- function requireSelectedAddSignerCredentialId(credential, allowCredentials) {
3367
- const id = String(credential.id || "").trim();
3368
- const rawId = String(credential.rawId || "").trim();
3369
- if (!id || !rawId || id !== rawId) throw new Error("Wallet add-signer selected an invalid passkey credential identity");
3370
- for (const allowed of allowCredentials) if (allowed.id === rawId) return rawId;
3371
- throw new Error("Wallet add-signer selected a passkey outside the authorized wallet");
3372
- }
3373
- async function requireMatchingStartedAddSignerIntent(args) {
3374
- if (args.started.intent.walletId !== args.walletId) throw new Error("Wallet add-signer start returned a different wallet");
3375
- if (await computeAddSignerIntentDigest(args.started.intent) !== args.expectedDigestB64u) throw new Error("Wallet add-signer start returned a different intent");
3376
- if (!String(args.started.addSignerCeremonyId || "").trim()) throw new Error("Wallet add-signer start returned an invalid ceremony ID");
3377
- }
3378
- function sameParticipantIds(left, right) {
3379
- return left.length === 2 && right.length === 2 && left[0] === right[0] && left[1] === right[1];
3380
- }
3381
- function requireVerifiedEd25519AddSignerFinalize(args) {
3382
- const selection = args.started.intent.signerSelection;
3383
- if (selection.mode !== "ed25519") throw new Error("Wallet add-signer start intent changed signer branch");
3384
- const requested = selection.ed25519;
3385
- const admission = args.started.ed25519.admissionRequest;
3386
- const finalized = args.finalized;
3387
- const signer = finalized.ed25519;
3388
- const expectedNearAccountId = deriveImplicitNearAccountIdFromEd25519PublicKey(args.clientPublicKey);
3389
- if (finalized.walletId !== args.walletId || finalized.rpId !== args.rpId || finalized.credentialIdB64u !== args.credentialIdB64u || signer.publicKey !== args.clientPublicKey || signer.nearAccountId !== expectedNearAccountId || signer.signerSlot !== requested.signerSlot || signer.keyVersion !== requested.keyVersion || signer.recoveryExportCapable !== true || !sameParticipantIds(signer.participantIds, requested.participantIds) || signer.nearEd25519SigningKeyId !== admission.application_binding.near_ed25519_signing_key_id || signer.relayerKeyId !== admission.scope.signing_worker_id || admission.application_binding.wallet_id !== args.walletId || admission.application_binding.key_creation_signer_slot !== requested.signerSlot) throw new Error("Wallet add-signer finalize returned mismatched Ed25519 Yao identity");
3390
- return finalized;
3391
- }
3392
- function verifiedEd25519AddSignerIntent(started) {
3393
- const selection = started.intent.signerSelection;
3394
- if (selection.mode !== "ed25519") throw new Error("Wallet add-signer start intent changed signer branch");
3395
- return {
3396
- version: started.intent.version,
3397
- walletId: started.intent.walletId,
3398
- signerSelection: selection,
3399
- ...started.intent.runtimePolicyScope ? { runtimePolicyScope: started.intent.runtimePolicyScope } : {},
3400
- nonceB64u: started.intent.nonceB64u
3401
- };
3402
- }
3403
- async function addPasskeyEd25519YaoWalletSigner(input) {
3404
- if (input.started.intent.signerSelection.mode !== "ed25519") throw new Error("Wallet add-signer start returned a different signer branch");
3405
- let persistedSignerRollbackReceipt = null;
3406
- let persistedMaterialTarget = null;
3407
- let factorSecret = null;
3408
- try {
3409
- if (input.started.authorizationKind !== "webauthn_assertion") throw new Error("Wallet custody Ed25519 add-signer requires WebAuthn authorization");
3410
- const admitted = await admitVerifiedPasskeyEd25519YaoAddSignerV1({
3411
- kind: "verified_passkey_ed25519_yao_add_signer_input_v1",
3412
- verifiedIntent: {
3413
- kind: "verified_passkey_ed25519_add_signer_intent_v1",
3414
- intent: verifiedEd25519AddSignerIntent(input.started),
3415
- addSignerIntentDigestB64u: input.intentResponse.addSignerIntentDigestB64u,
3416
- addSignerIntentGrant: input.intentResponse.addSignerIntentGrant,
3417
- addSignerCeremonyId: input.started.addSignerCeremonyId
3418
- },
3419
- verifiedAuthority: {
3420
- kind: "verified_passkey_ed25519_add_signer_authority_v1",
3421
- walletId: input.walletId,
3422
- addSignerIntentDigestB64u: input.intentResponse.addSignerIntentDigestB64u,
3423
- credentialIdB64u: input.credentialIdB64u
3424
- },
3425
- admissionRequest: input.started.ed25519.admissionRequest,
3426
- httpTransport: {
3427
- kind: "passkey_ed25519_yao_http_transport_v1",
3428
- routerOrigin: new URL(input.relayerUrl).origin,
3429
- fetch: globalThis.fetch
3430
- }
3431
- });
3432
- const custodyWire = joinCustodyWireFromEnvelopeRecord(input.started.ed25519.custodyEnvelope);
3433
- if (!custodyWire.ok) throw new Error(custodyWire.reason);
3434
- factorSecret = Uint8Array.from(base64UrlDecode(input.passkeyPrfFirstB64u)).buffer;
3435
- const joined = await input.context.signingEngine.joinWalletCustodyNearEd25519KeySet({
3436
- preparation: { kind: "fresh" },
3437
- custodyJson: custodyWire.custodyJson,
3438
- factorSecret,
3439
- nearEd25519SigningKeyId: admitted.request.application_binding.near_ed25519_signing_key_id,
3440
- registrationCeremonyId: input.started.addSignerCeremonyId,
3441
- admissionRequest: admitted.request,
3442
- admissionReceipt: admitted.receipt,
3443
- participantIds: admitted.request.participant_ids,
3444
- routerOrigin: new URL(input.relayerUrl).origin,
3445
- authorization: `Bearer ${String(input.intentResponse.addSignerIntentGrant)}`
3446
- });
3447
- const clientPublicKey = `ed25519:${base58Encode(joined.metadata.registeredPublicKey)}`;
3448
- const finalizedRaw = await finalizeWalletAddSigner({
3449
- relayerUrl: input.relayerUrl,
3450
- walletId: input.walletId,
3451
- addSignerCeremonyId: input.started.addSignerCeremonyId,
3452
- idempotencyKey: createRegistrationOperationIdempotencyKey("wallet-ed25519-add-signer-finalize"),
3453
- kind: "near_ed25519",
3454
- ed25519: { activationReference: joined.activationReference },
3455
- custodyKeySet: {
3456
- kind: "near_ed25519_v1",
3457
- keyManifestDigestB64u: joined.commitPayload.keyManifestDigestB64u,
3458
- registeredPublicKeyB64u: base64UrlEncode(joined.metadata.registeredPublicKey)
3459
- }
3460
- });
3461
- if (finalizedRaw.kind !== "near_ed25519") throw new Error("Wallet add-signer finalize returned a different signer branch");
3462
- const finalized = requireVerifiedEd25519AddSignerFinalize({
3463
- finalized: finalizedRaw,
3464
- started: input.started,
3465
- walletId: input.walletId,
3466
- rpId: input.rpId,
3467
- credentialIdB64u: input.credentialIdB64u,
3468
- clientPublicKey
3469
- });
3470
- emitAddSignerEventSafely(input.onEvent, input.eventAccountId, {
3471
- authMethod: "passkey",
3472
- phase: RegistrationEventPhase.STEP_08_STORAGE_PERSIST_STARTED,
3473
- status: "running"
3474
- });
3475
- const stored = await input.context.signingEngine.finalizeWalletEd25519SignerRegistration({
3476
- walletId: input.walletId,
3477
- nearAccountId: toAccountId(finalized.ed25519.nearAccountId),
3478
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
3479
- auth: {
3480
- kind: "passkey",
3481
- credential: input.credential
3482
- },
3483
- signerSlot: finalized.ed25519.signerSlot,
3484
- operationalPublicKey: clientPublicKey,
3485
- relayerKeyId: finalized.ed25519.relayerKeyId,
3486
- keyVersion: finalized.ed25519.keyVersion,
3487
- participantIds: [...finalized.ed25519.participantIds]
3488
- });
3489
- if (stored.signerSlot !== finalized.ed25519.signerSlot) throw new Error("Wallet add-signer persisted a different Ed25519 signer slot");
3490
- persistedSignerRollbackReceipt = stored.rollbackReceipt;
3491
- const admission = input.started.ed25519.admissionRequest;
3492
- const thresholdSessionId = parseThresholdEd25519SessionId(admission.scope.threshold_session_id);
3493
- if (!thresholdSessionId.ok) throw new Error("Wallet add-signer threshold-session identity is invalid");
3494
- const metadata = joined.metadata;
3495
- await input.context.signingEngine.persistWalletCustodyEd25519Material({
3496
- binding: {
3497
- kind: WALLET_CUSTODY_ED25519_MATERIAL_KEY_KIND,
3498
- applicationBindingDigestB64u: joined.localMaterial.applicationBindingDigestB64u,
3499
- registeredPublicKeyB64u: base64UrlEncode(metadata.registeredPublicKey),
3500
- participantIds: metadata.participantIds,
3501
- stateEpoch: String(metadata.stateEpoch),
3502
- walletId: String(finalized.walletId),
3503
- nearAccountId: String(finalized.ed25519.nearAccountId),
3504
- nearEd25519SigningKeyId: finalized.ed25519.nearEd25519SigningKeyId,
3505
- signerSlot: finalized.ed25519.signerSlot,
3506
- signingWorkerId: metadata.scope.signing_worker_id,
3507
- signingWorkerVerifyingShareB64u: base64UrlEncode(metadata.signingWorkerVerifyingShare)
3508
- },
3509
- sealed: {
3510
- ciphertextB64u: joined.localMaterial.b64u,
3511
- nonceB64u: joined.localMaterial.nonceB64u
3512
- }
3513
- });
3514
- persistedMaterialTarget = {
3515
- nearAccountId: finalized.ed25519.nearAccountId,
3516
- signerSlot: finalized.ed25519.signerSlot
3517
- };
3518
- await input.context.signingEngine.upsertEd25519YaoPublicCapabilityLaneReference({
3519
- walletId: finalized.walletId,
3520
- nearAccountId: toAccountId(finalized.ed25519.nearAccountId),
3521
- thresholdSessionId: thresholdSessionId.value,
3522
- runtimePolicyScope: normalizeRuntimePolicyScope(input.started.intent.runtimePolicyScope),
3523
- materialActivation: nearEd25519YaoMaterialActivationFromMetadata(metadata),
3524
- auth: {
3525
- kind: "passkey",
3526
- rpId: toRpId(input.rpId),
3527
- credentialIdB64u: input.credentialIdB64u
3528
- },
3529
- nearEd25519SigningKeyId: parseNearEd25519SigningKeyId(finalized.ed25519.nearEd25519SigningKeyId),
3530
- signerSlot: finalized.ed25519.signerSlot
3531
- });
3532
- persistedSignerRollbackReceipt = null;
3533
- emitAddSignerEventSafely(input.onEvent, input.eventAccountId, {
3534
- authMethod: "passkey",
3535
- phase: RegistrationEventPhase.STEP_08_STORAGE_PERSIST_SUCCEEDED,
3536
- status: "succeeded"
3537
- });
3538
- return {
3539
- success: true,
3540
- kind: "wallet_signer_added",
3541
- walletId: finalized.walletId,
3542
- capabilities: [{
3543
- kind: "near_ed25519",
3544
- nearEd25519SigningKeyId: parseNearEd25519SigningKeyId(finalized.ed25519.nearEd25519SigningKeyId),
3545
- operationalPublicKey: clientPublicKey,
3546
- nearAccountId: toAccountId(finalized.ed25519.nearAccountId)
3547
- }]
3548
- };
3549
- } catch (error) {
3550
- const cleanupErrors = [];
3551
- if (persistedMaterialTarget) try {
3552
- await input.context.signingEngine.deleteWalletCustodyEd25519Material({
3553
- nearAccountId: persistedMaterialTarget.nearAccountId,
3554
- signerSlot: persistedMaterialTarget.signerSlot
3555
- });
3556
- } catch (cleanupError) {
3557
- cleanupErrors.push(cleanupError instanceof Error ? cleanupError.message : String(cleanupError));
3558
- }
3559
- if (persistedSignerRollbackReceipt) try {
3560
- await input.context.signingEngine.rollbackWalletEd25519SignerRegistration(persistedSignerRollbackReceipt);
3561
- } catch (cleanupError) {
3562
- cleanupErrors.push(cleanupError instanceof Error ? cleanupError.message : String(cleanupError));
3563
- }
3564
- if (cleanupErrors.length > 0) {
3565
- const primary = error instanceof Error ? error.message : String(error);
3566
- throw new Error(`${primary}; add-signer cleanup failed: ${cleanupErrors.join("; ")}`);
3567
- }
3568
- throw error;
3569
- } finally {
3570
- if (factorSecret) zeroizeArrayBuffer(factorSecret);
3571
- }
3572
- }
3573
- async function addPasskeyEcdsaWalletSigner(input) {
3574
- if (input.started.authorizationKind !== "webauthn_assertion") throw new Error("Wallet custody ECDSA add-signer requires WebAuthn authorization");
3575
- const authority = await exactPasskeyWalletAuthAuthorityRefForCredential({
3576
- walletId: input.walletId,
3577
- rpId: input.rpId,
3578
- credentialIdB64u: input.credentialIdB64u
3579
- });
3580
- const factorSecret = Uint8Array.from(base64UrlDecode(input.passkeyPrfFirstB64u)).buffer;
3581
- let pendingLocalFinalization;
3582
- try {
3583
- pendingLocalFinalization = await runStrictEcdsaFamilyCeremony({
3584
- context: input.context,
3585
- relayerUrl: input.relayerUrl,
3586
- walletId: input.walletId,
3587
- addSignerCeremonyId: input.started.addSignerCeremonyId,
3588
- started: input.started.ecdsa,
3589
- custodyEnvelope: input.started.ecdsa.custodyEnvelope,
3590
- factorSecret,
3591
- authority,
3592
- registrationTiming: null
3593
- });
3594
- } finally {
3595
- zeroizeArrayBuffer(factorSecret);
3596
- }
3597
- const finalizeRequest = {
3598
- relayerUrl: input.relayerUrl,
3599
- walletId: input.walletId,
3600
- addSignerCeremonyId: input.started.addSignerCeremonyId,
3601
- idempotencyKey: createRegistrationOperationIdempotencyKey("wallet-add-signer-finalize"),
3602
- kind: "evm_family_ecdsa",
3603
- ecdsa: { expectedKeyHandles: [pendingLocalFinalization.bootstrap.keyHandle] },
3604
- custodyKeySet: pendingLocalFinalization.custodyKeySet
3605
- };
3606
- let finalized;
3607
- try {
3608
- finalized = await finalizeWalletAddSigner(finalizeRequest);
3609
- } catch (error) {
3610
- if (!(error instanceof TypeError)) throw error;
3611
- finalized = await finalizeWalletAddSigner(finalizeRequest);
3612
- }
3613
- if (finalized.kind !== "evm_family_ecdsa" || finalized.walletId !== input.walletId || finalized.rpId !== input.rpId) throw new Error("Wallet add-signer finalize returned a different ECDSA identity");
3614
- const walletKeys = finalized.ecdsa.walletKeys;
3615
- const primaryKey = walletKeys[0];
3616
- if (!primaryKey) throw new Error("Wallet add-signer finalize did not return ECDSA wallet keys");
3617
- const session = await finalizeStrictEcdsaFamilyLocalActivation({
3618
- context: input.context,
3619
- pending: pendingLocalFinalization
3620
- });
3621
- emitAddSignerEventSafely(input.onEvent, input.eventAccountId, {
3622
- authMethod: "passkey",
3623
- phase: RegistrationEventPhase.STEP_08_STORAGE_PERSIST_STARTED,
3624
- status: "running"
3625
- });
3626
- const localEcdsaWalletKeys = await input.context.signingEngine.finalizeWalletRegistrationEcdsaSessions({
3627
- walletId: toWalletId(input.walletId),
3628
- session,
3629
- walletKeys: [primaryKey, ...walletKeys.slice(1)]
3630
- });
3631
- await input.context.signingEngine.storeWalletEcdsaSignerRecords({
3632
- walletId: input.walletId,
3633
- walletKeys: localEcdsaWalletKeys
3634
- });
3635
- await IndexedDBManager.adoptAddedEcdsaSignerAuthority({
3636
- authority: finalized.authority,
3637
- materialActivation: session.materialActivation
3638
- });
3639
- emitAddSignerEventSafely(input.onEvent, input.eventAccountId, {
3640
- authMethod: "passkey",
3641
- phase: RegistrationEventPhase.STEP_08_STORAGE_PERSIST_SUCCEEDED,
3642
- status: "succeeded"
3643
- });
3644
- return {
3645
- success: true,
3646
- kind: "wallet_signer_added",
3647
- walletId: input.walletId,
3648
- capabilities: [{
3649
- kind: "evm_family_ecdsa",
3650
- thresholdEcdsaEthereumAddress: primaryKey.thresholdOwnerAddress,
3651
- thresholdEcdsaPublicKeyB64u: primaryKey.thresholdEcdsaPublicKeyB64u
3652
- }]
3653
- };
3654
- }
3655
- async function dispatchPasskeyWalletAddSigner(args) {
3656
- switch (args.signerSelection.mode) {
3657
- case "ed25519":
3658
- if (args.started.kind !== "near_ed25519") throw new Error("Wallet add-signer start returned a different signer branch");
3659
- return await addPasskeyEd25519YaoWalletSigner({
3660
- context: args.input.context,
3661
- walletId: args.input.walletId,
3662
- rpId: args.input.rpId,
3663
- relayerUrl: args.input.relayerUrl,
3664
- intentResponse: args.input.intentResponse,
3665
- credential: args.input.credential,
3666
- credentialIdB64u: args.input.credentialIdB64u,
3667
- passkeyPrfFirstB64u: args.input.passkeyPrfFirstB64u,
3668
- eventAccountId: args.input.eventAccountId,
3669
- onEvent: args.input.onEvent,
3670
- started: args.started
3671
- });
3672
- case "ecdsa":
3673
- if (args.started.kind !== "evm_family_ecdsa") throw new Error("Wallet add-signer start returned a different signer branch");
3674
- return await addPasskeyEcdsaWalletSigner({
3675
- context: args.input.context,
3676
- walletId: args.input.walletId,
3677
- rpId: args.input.rpId,
3678
- relayerUrl: args.input.relayerUrl,
3679
- intentResponse: args.input.intentResponse,
3680
- credential: args.input.credential,
3681
- credentialIdB64u: args.input.credentialIdB64u,
3682
- passkeyPrfFirstB64u: args.input.passkeyPrfFirstB64u,
3683
- eventAccountId: args.input.eventAccountId,
3684
- onEvent: args.input.onEvent,
3685
- started: args.started
3686
- });
3687
- default: return assertNever(args.signerSelection);
3688
- }
3689
- }
3690
- async function addWalletSigner(args) {
3691
- const { context, signerSelection } = args;
3692
- const options = args.options || {};
3693
- const walletId = walletIdFromString(String(args.walletId || "").trim());
3694
- const eventAccountId = registrationEventAccountId(String(walletId));
3695
- const rpId = requireWebAuthnRpId(String(args.rpId || "").trim());
3696
- emitAddSignerEventSafely(options.onEvent, eventAccountId, {
3697
- authMethod: "passkey",
3698
- phase: RegistrationEventPhase.STEP_01_STARTED,
3699
- status: "started"
3700
- });
3701
- try {
3702
- const relayerUrl = String(context.configs.network.relayer.url || "").trim();
3703
- if (!relayerUrl) throw new Error("addWalletSigner requires relayer.url");
3704
- const managedRuntimeScope = resolveManagedRuntimeScopeBootstrap(context.configs);
3705
- if (!managedRuntimeScope) throw new Error("addWalletSigner requires registration.publishableKey and registration.projectEnvironmentId");
3706
- const intentResponse = await createWalletAddSignerIntent({
3707
- relayerUrl,
3708
- walletId,
3709
- request: {
3710
- walletId,
3711
- rpId,
3712
- signerSelection
3713
- },
3714
- auth: {
3715
- publishableKey: managedRuntimeScope.publishableKey,
3716
- environmentId: managedRuntimeScope.projectEnvironmentId
3717
- }
3718
- });
3719
- if (await computeAddSignerIntentDigest(intentResponse.intent) !== intentResponse.addSignerIntentDigestB64u) throw new Error("Add-signer intent digest mismatch");
3720
- emitAddSignerEventSafely(options.onEvent, eventAccountId, {
3721
- authMethod: "passkey",
3722
- phase: RegistrationEventPhase.STEP_04_PASSKEY_CREATE_STARTED,
3723
- status: "waiting_for_user",
3724
- interaction: {
3725
- kind: "passkey_assert",
3726
- overlay: "show"
3727
- }
3728
- });
3729
- const allowCredentials = addSignerAllowCredentials(await IndexedDBManager.listProfileAuthenticators(String(walletId)));
3730
- const credential = await context.signingEngine.getAuthenticationCredentialsSerialized({
3731
- subjectId: String(walletId),
3732
- challengeB64u: intentResponse.addSignerIntentDigestB64u,
3733
- allowCredentials,
3734
- includeSecondPrfOutput: false
3735
- });
3736
- const credentialIdB64u = requireSelectedAddSignerCredentialId(credential, allowCredentials);
3737
- const passkeyPrfFirstB64u = requirePasskeyPrfFirstB64u(credential, "Wallet add-signer authorization");
3738
- emitAddSignerEventSafely(options.onEvent, eventAccountId, {
3739
- authMethod: "passkey",
3740
- phase: RegistrationEventPhase.STEP_04_PASSKEY_CREATE_SUCCEEDED,
3741
- status: "succeeded",
3742
- interaction: {
3743
- kind: "passkey_assert",
3744
- overlay: "hide"
3745
- }
3746
- });
3747
- const started = await startWalletAddSigner({
3748
- relayerUrl,
3749
- walletId,
3750
- addSignerIntentGrant: intentResponse.addSignerIntentGrant,
3751
- addSignerIntentDigestB64u: intentResponse.addSignerIntentDigestB64u,
3752
- intent: intentResponse.intent,
3753
- auth: {
3754
- kind: "webauthn_assertion",
3755
- rpId,
3756
- credential: redactCredentialExtensionOutputs(credential),
3757
- expectedChallengeDigestB64u: intentResponse.addSignerIntentDigestB64u
3758
- }
3759
- });
3760
- await requireMatchingStartedAddSignerIntent({
3761
- started,
3762
- walletId,
3763
- expectedDigestB64u: intentResponse.addSignerIntentDigestB64u
3764
- });
3765
- const result = await dispatchPasskeyWalletAddSigner({
3766
- input: {
3767
- context,
3768
- walletId,
3769
- rpId,
3770
- relayerUrl,
3771
- intentResponse,
3772
- credential,
3773
- credentialIdB64u,
3774
- passkeyPrfFirstB64u,
3775
- eventAccountId,
3776
- onEvent: options.onEvent
3777
- },
3778
- signerSelection,
3779
- started
3780
- });
3781
- emitAddSignerEventSafely(options.onEvent, eventAccountId, {
3782
- authMethod: "passkey",
3783
- phase: RegistrationEventPhase.STEP_11_COMPLETED,
3784
- status: "succeeded"
3785
- });
3786
- notifyAddSignerAfterCallSafely(options.afterCall, true, result);
3787
- return result;
3788
- } catch (error) {
3789
- const errorCode = registrationErrorCodeFromUnknown(error);
3790
- const errorMessage = getUserFriendlyErrorMessage(error, "registration", eventAccountId);
3791
- notifyAddSignerErrorSafely(options.onError, registrationErrorWithCode(errorMessage, errorCode));
3792
- emitAddSignerEventSafely(options.onEvent, eventAccountId, {
3793
- authMethod: "passkey",
3794
- phase: RegistrationEventPhase.FAILED,
3795
- status: "failed",
3796
- message: errorMessage,
3797
- interaction: {
3798
- kind: "passkey_assert",
3799
- overlay: "hide"
3800
- },
3801
- error: {
3802
- ...errorCode ? { code: errorCode } : {},
3803
- message: errorMessage
3804
- }
3805
- });
3806
- const result = {
3807
- success: false,
3808
- error: errorMessage,
3809
- ...errorCode ? { errorCode } : {}
3810
- };
3811
- notifyAddSignerAfterCallSafely(options.afterCall, false);
3812
- return result;
3813
- }
3814
- }
3815
- //#endregion
3816
- export { addWalletSigner, registerWallet, resumeNearRegistrationAfterUnlock };
3817
-
3818
- //# sourceMappingURL=registration.js.map