@seams/wallet-server 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 (516) hide show
  1. package/THIRD_PARTY_NOTICES.md +1 -9
  2. package/artifact-manifest.json +78 -33
  3. package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
  4. package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
  5. package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
  6. package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
  7. package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
  8. package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
  9. package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
  10. package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
  11. package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
  12. package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
  13. package/cloudflare-router-ab/build/router/index.js +2 -2
  14. package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
  15. package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
  16. package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
  17. package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
  18. package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
  19. package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
  20. package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
  21. package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +0 -2
  22. package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +77 -20
  23. package/dist/esm/authorization/lifecycleRouting.js +62 -0
  24. package/dist/esm/authorization/service.js +35 -12
  25. package/dist/esm/cloud-host.js +20 -22
  26. package/dist/esm/core/EmailOtpRecords.js +1 -217
  27. package/dist/esm/core/EmailOtpStores.js +0 -859
  28. package/dist/esm/core/IdentityStore.js +2 -339
  29. package/dist/esm/core/ThresholdService/config.js +1 -9
  30. package/dist/esm/core/ThresholdService/index.js +0 -4
  31. package/dist/esm/core/ThresholdService/kv.js +1 -66
  32. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +1 -13
  33. package/dist/esm/core/ThresholdService/routerAbNormalSigningPolicy.js +1 -11
  34. package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +0 -541
  35. package/dist/esm/core/ThresholdService/validation.js +2 -346
  36. package/dist/esm/core/WalletAuthMethodStore.js +2 -123
  37. package/dist/esm/core/WalletStore.js +3 -209
  38. package/dist/esm/core/WebAuthnAuthenticatorStore.js +0 -202
  39. package/dist/esm/core/WebAuthnCredentialBindingStore.js +2 -182
  40. package/dist/esm/core/WebAuthnLoginChallengeStore.js +0 -52
  41. package/dist/esm/core/WebAuthnSyncChallengeStore.js +0 -54
  42. package/dist/esm/core/authService/emailOtpConfig.js +1 -195
  43. package/dist/esm/core/authService/emailOtpEnrollment.js +0 -110
  44. package/dist/esm/core/authService/emailOtpSeal.js +0 -63
  45. package/dist/esm/core/authService/nearTransactions.js +3 -98
  46. package/dist/esm/core/authService/rateLimits.js +0 -84
  47. package/dist/esm/core/authService/webauthn.js +2 -298
  48. package/dist/esm/core/authService/webauthnOidcHelpers.js +1 -24
  49. package/dist/esm/core/authService/webauthnWalletBinding.js +0 -37
  50. package/dist/esm/core/config.js +1 -95
  51. package/dist/esm/core/d1EcdsaSignerRead.js +1 -1
  52. package/dist/esm/core/d1IdentityStore.js +1 -2
  53. package/dist/esm/core/d1TenantStore.js +1 -24
  54. package/dist/esm/core/d1WalletAuthMethodStore.js +2 -5
  55. package/dist/esm/core/d1WalletStore.js +2 -2
  56. package/dist/esm/core/deviceLinking/linkedDeviceBootstrap.js +13 -0
  57. package/dist/esm/core/deviceLinking/linkedDeviceSession.js +20 -14
  58. package/dist/esm/core/deviceLinking/requestProof.js +9 -6
  59. package/dist/esm/core/emailOtpD1Statements.js +107 -94
  60. package/dist/esm/core/keyMaterialBrands.js +2 -12
  61. package/dist/esm/core/nearKeys.js +0 -1
  62. package/dist/esm/core/nearRelayerAccountProvisioning.js +6 -9
  63. package/dist/esm/core/passkeyCredentialClaims.js +8 -0
  64. package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +2 -6
  65. package/dist/esm/core/routerAbSigning/RouterAbNormalSigningRuntime.js +2 -30
  66. package/dist/esm/core/thresholdEcdsaChainTarget.js +1 -4
  67. package/dist/esm/hosted-wallet-gateway.js +66 -43
  68. package/dist/esm/index.js +6 -19
  69. package/dist/esm/localHostedWalletGatewayHandler.js +12 -0
  70. package/dist/esm/localRegistrationSetupAuthority.js +89 -0
  71. package/dist/esm/router/auth/authRequestValidation.js +8 -16
  72. package/dist/esm/router/auth/webAuthnCredentialCodecs.js +0 -1
  73. package/dist/esm/router/cloudflare/d1/auth/d1AuthorizationAssembly.js +87 -0
  74. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +12 -2
  75. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +32 -281
  76. package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +24 -22
  77. package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +8 -6
  78. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +12 -13
  79. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +6 -1
  80. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +12 -2
  81. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +4 -4
  82. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
  83. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +3 -9
  84. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.js +2 -1
  85. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +89 -7
  86. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +23 -14
  87. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +9 -6
  88. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +0 -1
  89. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +0 -1
  90. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +1 -1
  91. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +0 -1
  92. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +1 -1
  93. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +1 -7
  94. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +19 -13
  95. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +0 -1
  96. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +0 -1
  97. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +2 -2
  98. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +0 -1
  99. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +44 -12
  100. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +1 -49
  101. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +19 -31
  102. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.js +85 -0
  103. package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +0 -1
  104. package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +0 -48
  105. package/dist/esm/router/cloudflare/d1/near/d1SponsoredNearAccount.js +242 -0
  106. package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +0 -1
  107. package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +2 -29
  108. package/dist/esm/router/cloudflare/d1/oidc/googleOidcToken.js +41 -0
  109. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +5 -0
  110. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +34 -0
  111. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +9 -3
  112. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +7 -13
  113. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +25 -13
  114. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +0 -1
  115. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +74 -0
  116. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +7 -1
  117. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +69 -238
  118. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +12 -56
  119. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +155 -0
  120. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +1 -3
  121. package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +12 -6
  122. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +68 -0
  123. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +7 -54
  124. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +9 -8
  125. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +2 -142
  126. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +25 -4
  127. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +4 -70
  128. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +23 -7
  129. package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +1 -0
  130. package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +1 -0
  131. package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +5 -0
  132. package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
  133. package/dist/esm/router/cloudflare/runtime/walletRuntimeOps.js +16 -4
  134. package/dist/esm/router/cloudflare-adaptor.js +1 -2
  135. package/dist/esm/router/cloudflare.js +1342 -1733
  136. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +11 -8
  137. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +3 -2
  138. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +6 -6
  139. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +6 -6
  140. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +3 -0
  141. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +8 -0
  142. package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +0 -1
  143. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +2 -8
  144. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +2 -8
  145. package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +5 -19
  146. package/dist/esm/router/domains/signingOperations/walletExecutionAdmission.js +2 -3
  147. package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +70 -0
  148. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +10 -11
  149. package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +2 -3
  150. package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +14 -0
  151. package/dist/esm/router/express.js +574 -479
  152. package/dist/esm/router/framework/http.js +2 -0
  153. package/dist/esm/router/framework/registrationSetupDispatch.js +14 -0
  154. package/dist/esm/router/framework/ror/normalize.js +0 -1
  155. package/dist/esm/router/framework/ror/options.js +0 -1
  156. package/dist/esm/router/framework/ror/provider.js +0 -1
  157. package/dist/esm/router/framework/ror/staticProvider.js +0 -1
  158. package/dist/esm/router/framework/routeDefinitions.js +1 -2
  159. package/dist/esm/router/framework/routerApiWebhooks.js +0 -1
  160. package/dist/esm/router/ror.js +0 -1
  161. package/dist/esm/router/transport/fetch/createFetchRouter.js +0 -2
  162. package/dist/esm/router/transport/fetch/routes/auth.js +2 -0
  163. package/dist/esm/router/transport/fetch/routes/deviceLinking.js +36 -147
  164. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +3 -2
  165. package/dist/esm/router/transport/fetch/routes/deviceLinkingResponses.js +130 -0
  166. package/dist/esm/router/transport/fetch/routes/ecdsaOperationStepUpFactor.js +171 -0
  167. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +1 -0
  168. package/dist/esm/router/transport/fetch/routes/syncAccount.js +7 -2
  169. package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +19 -115
  170. package/dist/esm/router/transport/fetch/routes/walletRegistration.js +3 -1
  171. package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +0 -1
  172. package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +0 -2
  173. package/dist/esm/shared-ts/src/device-linking/contracts.js +16 -1
  174. package/dist/esm/shared-ts/src/device-linking/digests.js +1 -8
  175. package/dist/esm/shared-ts/src/near/actions.js +0 -1
  176. package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
  177. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
  178. package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -6
  179. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +1 -1
  180. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +2 -81
  181. package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -219
  182. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +0 -3
  183. package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +1 -2
  184. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
  185. package/dist/esm/shared-ts/src/threshold/keyMaterialBrands.js +1 -22
  186. package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
  187. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +0 -1
  188. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +4 -13
  189. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +1 -7
  190. package/dist/esm/shared-ts/src/utils/domainIds.js +1 -16
  191. package/dist/esm/shared-ts/src/utils/ecdsaCapabilityActivation.js +1 -11
  192. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -1
  193. package/dist/esm/shared-ts/src/utils/errors.js +1 -19
  194. package/dist/esm/shared-ts/src/utils/near.js +1 -1
  195. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
  196. package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
  197. package/dist/esm/shared-ts/src/utils/registrationIntent.js +0 -1
  198. package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +8 -0
  199. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +1 -1
  200. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +0 -1
  201. package/dist/esm/shared-ts/src/utils/validation.js +1 -5
  202. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
  203. package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
  204. package/dist/esm/shared-ts/src/utils/wireSchema.js +2 -13
  205. package/dist/esm/shared-ts/src/wallet-recovery/backupAcknowledgement.js +6 -24
  206. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
  207. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +5 -6
  208. package/dist/esm/storage/d1Sql.js +1 -7
  209. package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +0 -1
  210. package/dist/esm/threshold/session/signingSessionSeal/guards/backends.js +1 -2
  211. package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +0 -1
  212. package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +0 -1
  213. package/dist/esm/threshold/session/signingSessionSeal/options.js +0 -1
  214. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
  215. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +0 -611
  216. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  217. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
  218. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
  219. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +1 -0
  220. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
  221. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +0 -11
  222. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +2 -7
  223. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
  224. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
  225. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
  226. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
  227. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -843
  228. package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
  229. package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
  230. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
  231. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
  232. package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
  233. package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
  234. package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
  235. package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
  236. package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
  237. package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
  238. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
  239. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
  240. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
  241. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
  242. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
  243. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
  244. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
  245. package/dist/types/wallet-server/src/authorization/lifecycleRouting.d.ts +32 -0
  246. package/dist/types/wallet-server/src/authorization/lifecycleRouting.typecheck.d.ts +2 -0
  247. package/dist/types/wallet-server/src/authorization/recoveryRouting.d.ts +22 -0
  248. package/dist/types/wallet-server/src/authorization/recoveryRouting.typecheck.d.ts +2 -0
  249. package/dist/types/wallet-server/src/authorization/service.d.ts +8 -1
  250. package/dist/types/wallet-server/src/authorization/sessionRouting.d.ts +20 -0
  251. package/dist/types/wallet-server/src/authorization/sessionRouting.typecheck.d.ts +2 -0
  252. package/dist/types/wallet-server/src/cloud-host.d.ts +31 -9
  253. package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +1 -22
  254. package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +1 -79
  255. package/dist/types/wallet-server/src/core/IdentityStore.d.ts +0 -10
  256. package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +0 -1
  257. package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +0 -2
  258. package/dist/types/wallet-server/src/core/ThresholdService/index.d.ts +1 -3
  259. package/dist/types/wallet-server/src/core/ThresholdService/kv.d.ts +0 -7
  260. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +0 -3
  261. package/dist/types/wallet-server/src/core/ThresholdService/routerAbNormalSigningPolicy.d.ts +0 -1
  262. package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +7 -19
  263. package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +0 -34
  264. package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +1 -5
  265. package/dist/types/wallet-server/src/core/WalletStore.d.ts +0 -3
  266. package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +0 -20
  267. package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +1 -27
  268. package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +2 -16
  269. package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +22 -14
  270. package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +0 -24
  271. package/dist/types/wallet-server/src/core/authService/emailOtpEnrollment.d.ts +1 -70
  272. package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +0 -13
  273. package/dist/types/wallet-server/src/core/authService/githubOAuth.d.ts +2 -1
  274. package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +1 -39
  275. package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +0 -17
  276. package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +0 -125
  277. package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +0 -3
  278. package/dist/types/wallet-server/src/core/authService/webauthnVerificationOutcomes.d.ts +1 -1
  279. package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +0 -12
  280. package/dist/types/wallet-server/src/core/config.d.ts +0 -10
  281. package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +0 -2
  282. package/dist/types/wallet-server/src/core/d1TenantStore.d.ts +0 -7
  283. package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +0 -1
  284. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceBootstrap.d.ts +19 -0
  285. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +8 -6
  286. package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +2 -5
  287. package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +10 -7
  288. package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +1 -5
  289. package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +0 -1
  290. package/dist/types/wallet-server/src/core/passkeyCredentialClaims.d.ts +9 -0
  291. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +0 -2
  292. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +0 -2
  293. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +1 -92
  294. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +4 -52
  295. package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +0 -1
  296. package/dist/types/wallet-server/src/core/types.d.ts +0 -299
  297. package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +15 -3
  298. package/dist/types/wallet-server/src/index.d.ts +8 -13
  299. package/dist/types/wallet-server/src/localRegistrationSetupAuthority.d.ts +13 -0
  300. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizationAssembly.d.ts +23 -0
  301. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +25 -3
  302. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +1 -1
  303. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +3 -1
  304. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +7 -1
  305. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.d.ts +1 -10
  306. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.d.ts +4 -0
  307. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +6 -0
  308. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +1 -13
  309. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.d.ts +2 -2
  310. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +1 -1
  311. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +0 -2
  312. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +18 -2
  313. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +29 -1
  314. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +3 -16
  315. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.d.ts +7 -2
  316. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.d.ts +23 -0
  317. package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityService.d.ts +0 -12
  318. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.d.ts +24 -0
  319. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.typecheck.d.ts +2 -0
  320. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcVerificationService.d.ts +0 -1
  321. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/googleOidcToken.d.ts +4 -0
  322. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +5 -0
  323. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +9 -0
  324. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +1 -1
  325. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +10 -11
  326. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +3 -2
  327. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +51 -0
  328. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +3 -0
  329. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +30 -47
  330. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +3 -30
  331. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.d.ts +11 -0
  332. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.d.ts +27 -0
  333. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +1 -10
  334. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +2 -2
  335. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +0 -4
  336. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.d.ts +3 -0
  337. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +0 -13
  338. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +23 -10
  339. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.typecheck.d.ts +2 -0
  340. package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflare.types.d.ts +0 -2
  341. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +1 -0
  342. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +2 -0
  343. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +1 -1
  344. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOps.d.ts +3 -0
  345. package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +0 -1
  346. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +1 -1
  347. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +2 -2
  348. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +2 -2
  349. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.typecheck.d.ts +2 -0
  350. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.d.ts +2 -0
  351. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.d.ts +2 -0
  352. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +0 -2
  353. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +0 -3
  354. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +0 -17
  355. package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +1 -2
  356. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +1 -0
  357. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationReservation.d.ts +51 -0
  358. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +2 -10
  359. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +2 -2
  360. package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +14 -34
  361. package/dist/types/wallet-server/src/router/framework/googleLoginResolution.typecheck.d.ts +2 -0
  362. package/dist/types/wallet-server/src/router/framework/registrationSetupDispatch.d.ts +13 -0
  363. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +1 -1
  364. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingResponses.d.ts +17 -0
  365. package/dist/types/wallet-server/src/router/transport/fetch/routes/ecdsaOperationStepUpFactor.d.ts +37 -0
  366. package/dist/types/wallet-server/src/storage/d1Sql.d.ts +0 -1
  367. package/migrations/d1-signer/0040_namespace_home_challenges.sql +16 -0
  368. package/migrations/d1-signer/0041_step_up_admission_expiry.sql +28 -0
  369. package/migrations/d1-signer/0042_deployment_resource_challenges.sql +4 -0
  370. package/migrations/d1-signer/0043_google_registration_candidate_claim.sql +2 -0
  371. package/migrations/d1-signer/0044_linked_device_bootstrap_imports.sql +6 -0
  372. package/migrations/d1-signer/0045_wallet_owned_capability_receipts.sql +29 -0
  373. package/migrations/d1-signer/0046_wallet_owned_signing_abuse.sql +41 -0
  374. package/migrations/d1-signer/0047_remove_unused_near_public_keys.sql +2 -0
  375. package/migrations/d1-signer/0048_operation_owner_scope.sql +45 -0
  376. package/package.json +2 -3
  377. package/src/README.md +11 -3
  378. package/dist/esm/core/AuthService.js +0 -2
  379. package/dist/esm/core/NearPublicKeyStore.js +0 -200
  380. package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +0 -397
  381. package/dist/esm/core/ThresholdService/stores/KeyStore.js +0 -140
  382. package/dist/esm/core/ThresholdService/stores/SessionStore.js +0 -361
  383. package/dist/esm/core/ThresholdService/stores/StoreConfig.js +0 -13
  384. package/dist/esm/core/ThresholdService/stores/exportReplayGuard.js +0 -7
  385. package/dist/esm/core/authService/AuthService.js +0 -594
  386. package/dist/esm/core/authService/bytes.js +0 -19
  387. package/dist/esm/core/authService/configValues.js +0 -15
  388. package/dist/esm/core/authService/emailOtpChallengeOperations.js +0 -123
  389. package/dist/esm/core/authService/emailOtpChallengeProof.js +0 -183
  390. package/dist/esm/core/authService/emailOtpChallengeVerification.js +0 -264
  391. package/dist/esm/core/authService/emailOtpChallenges.js +0 -225
  392. package/dist/esm/core/authService/emailOtpDelivery.js +0 -134
  393. package/dist/esm/core/authService/emailOtpGrant.js +0 -43
  394. package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +0 -144
  395. package/dist/esm/core/authService/emailOtpUnlock.js +0 -174
  396. package/dist/esm/core/authService/googleEmailOtpOperations.js +0 -141
  397. package/dist/esm/core/authService/googleEmailOtpRegistration.js +0 -587
  398. package/dist/esm/core/authService/identity.js +0 -42
  399. package/dist/esm/core/authService/identityOperations.js +0 -32
  400. package/dist/esm/core/authService/nearAccountOperations.js +0 -229
  401. package/dist/esm/core/authService/nearPublicKeyMetadata.js +0 -108
  402. package/dist/esm/core/authService/oidcVerification.js +0 -249
  403. package/dist/esm/core/authService/registrationThresholdHelpers.js +0 -30
  404. package/dist/esm/core/authService/runtime.js +0 -45
  405. package/dist/esm/core/authService/storeRegistry.js +0 -102
  406. package/dist/esm/core/authService/thresholdStoreSummary.js +0 -32
  407. package/dist/esm/core/authService/webauthnAuthority.js +0 -17
  408. package/dist/esm/core/defaultConfigsServer.js +0 -9
  409. package/dist/esm/core/hostedAccountIds.js +0 -225
  410. package/dist/esm/core/routerAbSigning/createRouterAbSigningRuntimes.js +0 -84
  411. package/dist/esm/core/signingLanes/LaneAggregateRevocationApplicationService.js +0 -86
  412. package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +0 -324
  413. package/dist/esm/core/signingLanes/LaneEnrollmentRevocation.js +0 -173
  414. package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +0 -198
  415. package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +0 -73
  416. package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +0 -68
  417. package/dist/esm/core/signingLanes/signingWorkerLaneMaterialIdentity.js +0 -0
  418. package/dist/esm/core/storeBackends.js +0 -208
  419. package/dist/esm/core/utils.js +0 -14
  420. package/dist/esm/core/webAuthnStoreBackends.js +0 -198
  421. package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +0 -49
  422. package/dist/esm/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.js +0 -10
  423. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.js +0 -22
  424. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +0 -166
  425. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.js +0 -38
  426. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.js +0 -20
  427. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +0 -1459
  428. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLockStore.js +0 -114
  429. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.js +0 -16
  430. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +0 -171
  431. package/dist/esm/router/cloudflare/d1/signingLanes/index.js +0 -10
  432. package/dist/esm/router/cloudflare/durableObjects/thresholdStore.js +0 -397
  433. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +0 -597
  434. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +0 -273
  435. package/dist/esm/router/cloudflare/signingLanes/index.js +0 -4
  436. package/dist/esm/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.js +0 -32
  437. package/dist/esm/router/transport/fetch/routes/nearPublicKeys.js +0 -27
  438. package/dist/esm/shared-ts/src/signing-lanes/rotation.js +0 -8
  439. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -358
  440. package/dist/esm/shared-ts/src/signing-lanes/rotationLifecycle.js +0 -313
  441. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -532
  442. package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -323
  443. package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -59
  444. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
  445. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
  446. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
  447. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
  448. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
  449. package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
  450. package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
  451. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
  452. package/dist/types/wallet-server/src/core/AuthService.d.ts +0 -3
  453. package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +0 -48
  454. package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +0 -21
  455. package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +0 -40
  456. package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +0 -98
  457. package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +0 -4
  458. package/dist/types/wallet-server/src/core/ThresholdService/stores/ThresholdStoreConfig.typecheck.d.ts +0 -2
  459. package/dist/types/wallet-server/src/core/ThresholdService/stores/exportReplayGuard.d.ts +0 -3
  460. package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +0 -490
  461. package/dist/types/wallet-server/src/core/authService/bytes.d.ts +0 -3
  462. package/dist/types/wallet-server/src/core/authService/configValues.d.ts +0 -7
  463. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +0 -109
  464. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +0 -169
  465. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +0 -47
  466. package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +0 -86
  467. package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +0 -66
  468. package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +0 -43
  469. package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +0 -49
  470. package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +0 -64
  471. package/dist/types/wallet-server/src/core/authService/googleEmailOtpOperations.d.ts +0 -126
  472. package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +0 -169
  473. package/dist/types/wallet-server/src/core/authService/identity.d.ts +0 -25
  474. package/dist/types/wallet-server/src/core/authService/identityOperations.d.ts +0 -19
  475. package/dist/types/wallet-server/src/core/authService/nearAccountOperations.d.ts +0 -55
  476. package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +0 -44
  477. package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +0 -66
  478. package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +0 -11
  479. package/dist/types/wallet-server/src/core/authService/runtime.d.ts +0 -20
  480. package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +0 -53
  481. package/dist/types/wallet-server/src/core/authService/thresholdStoreSummary.d.ts +0 -3
  482. package/dist/types/wallet-server/src/core/authService/webauthnAuthority.d.ts +0 -5
  483. package/dist/types/wallet-server/src/core/defaultConfigsServer.d.ts +0 -5
  484. package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +0 -16
  485. package/dist/types/wallet-server/src/core/routerAbSigning/createRouterAbSigningRuntimes.d.ts +0 -16
  486. package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +0 -36
  487. package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +0 -62
  488. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentActivation.d.ts +0 -13
  489. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentRevocation.d.ts +0 -24
  490. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleApplicationService.d.ts +0 -141
  491. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +0 -228
  492. package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +0 -58
  493. package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +0 -30
  494. package/dist/types/wallet-server/src/core/signingLanes/signingWorkerLaneMaterialIdentity.d.ts +0 -4
  495. package/dist/types/wallet-server/src/core/storeBackends.d.ts +0 -83
  496. package/dist/types/wallet-server/src/core/utils.d.ts +0 -3
  497. package/dist/types/wallet-server/src/core/webAuthnStoreBackends.d.ts +0 -96
  498. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +0 -29
  499. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.d.ts +0 -4
  500. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.d.ts +0 -4
  501. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +0 -24
  502. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.d.ts +0 -20
  503. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.d.ts +0 -13
  504. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.d.ts +0 -51
  505. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLockStore.d.ts +0 -28
  506. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.d.ts +0 -5
  507. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneRecords.d.ts +0 -107
  508. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/index.d.ts +0 -10
  509. package/dist/types/wallet-server/src/router/cloudflare/durableObjects/thresholdStore.d.ts +0 -18
  510. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.d.ts +0 -217
  511. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.d.ts +0 -73
  512. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/index.d.ts +0 -4
  513. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.d.ts +0 -6
  514. package/dist/types/wallet-server/src/router/transport/fetch/routes/nearPublicKeys.d.ts +0 -3
  515. /package/dist/esm/{core/signingLanes/LaneEffectJournalStore.js → authorization/recoveryRouting.js} +0 -0
  516. /package/dist/esm/{core/signingLanes/LaneLifecycleStore.js → authorization/sessionRouting.js} +0 -0
@@ -1,225 +0,0 @@
1
- import { base64UrlEncode } from "../../shared-ts/src/utils/base64.js";
2
- import "../../shared-ts/src/utils/encoders.js";
3
- import { normalizeOptionalTrimmedString } from "../../shared-ts/src/utils/normalize.js";
4
- import "../../shared-ts/src/utils/validation.js";
5
- import { failure } from "../../shared-ts/src/utils/failure.js";
6
- import { errorMessage } from "../../shared-ts/src/utils/errors.js";
7
- import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_ACTIONS, WALLET_EMAIL_OTP_REGISTRATION_OPERATION, WALLET_EMAIL_OTP_UNLOCK_OPERATION, isWalletEmailOtpLoginOperation } from "../../shared-ts/src/utils/emailOtpDomain.js";
8
- import { randomNumericCode } from "./bytes.js";
9
- //#region src/core/authService/emailOtpChallenges.ts
10
- function activeChallengeLimit(value) {
11
- return Math.max(1, Math.floor(value));
12
- }
13
- function emailOtpChallengeOperationFromRequest(input) {
14
- if (input.operationRaw && isWalletEmailOtpLoginOperation(input.operationRaw)) return input.operationRaw;
15
- if (input.operationRaw === "registration") return WALLET_EMAIL_OTP_REGISTRATION_OPERATION;
16
- return input.action === WALLET_EMAIL_OTP_ACTIONS.registration ? WALLET_EMAIL_OTP_REGISTRATION_OPERATION : WALLET_EMAIL_OTP_UNLOCK_OPERATION;
17
- }
18
- function createdEmailOtpChallengeFromRecord(input) {
19
- return {
20
- challengeId: input.record.challengeId,
21
- issuedAtMs: input.record.createdAtMs,
22
- expiresAtMs: input.record.expiresAtMs,
23
- challengeSubjectId: input.challengeSubjectId,
24
- walletId: input.walletId,
25
- orgId: input.orgId,
26
- otpChannel: EMAIL_OTP_CHANNEL,
27
- ownerProofBindingDigest: input.ownerProofBindingDigest,
28
- action: input.action,
29
- operation: input.operation
30
- };
31
- }
32
- function emailOtpChallengeContextInput(context) {
33
- return {
34
- challengeSubjectId: context.challengeSubjectId,
35
- walletId: context.walletId,
36
- orgId: context.orgId,
37
- otpChannel: context.otpChannel,
38
- ownerProofBindingDigest: context.ownerProofBindingDigest,
39
- action: context.action,
40
- operation: context.operation,
41
- nowMs: context.nowMs
42
- };
43
- }
44
- async function pruneExpiredEmailOtpChallengesWithStore(input) {
45
- const deleted = await input.challengeStore.deleteExpired(input.nowMs);
46
- for (const record of deleted) input.memoryOutbox.delete(record.challengeId);
47
- return deleted;
48
- }
49
- async function enforceEmailOtpActiveChallengeLimitWithStore(input) {
50
- const maxActive = activeChallengeLimit(input.maxActiveChallenges);
51
- const context = emailOtpChallengeContextInput(input.context);
52
- while (await input.challengeStore.countActiveByContext(context) >= maxActive) {
53
- const deleted = await input.challengeStore.deleteOldestActiveByContext(context);
54
- if (!deleted) break;
55
- input.memoryOutbox.delete(deleted.challengeId);
56
- }
57
- }
58
- async function createEmailOtpChallengeWithAction(input) {
59
- try {
60
- const request = input.request;
61
- const challengeSubjectId = normalizeOptionalTrimmedString(request.challengeSubjectId);
62
- const walletId = normalizeOptionalTrimmedString(request.walletId);
63
- const orgId = normalizeOptionalTrimmedString(request.orgId) || "";
64
- const email = normalizeOptionalTrimmedString(request.email)?.toLowerCase() || "";
65
- const otpChannel = normalizeOptionalTrimmedString(request.otpChannel);
66
- const ownerProofBindingDigest = normalizeOptionalTrimmedString(request.ownerProofBindingDigest);
67
- const clientIp = normalizeOptionalTrimmedString(request.clientIp) || void 0;
68
- const reuseActiveChallenge = request.reuseActiveChallenge === true;
69
- const action = request.action;
70
- const operation = emailOtpChallengeOperationFromRequest({
71
- action,
72
- operationRaw: normalizeOptionalTrimmedString(request.operation)
73
- });
74
- if (!challengeSubjectId) return failure("invalid_body", "Missing challengeSubjectId");
75
- if (!walletId) return failure("invalid_body", "Missing walletId");
76
- if (!orgId) return failure("invalid_body", "Missing orgId");
77
- if (otpChannel !== "email_otp") return failure("invalid_body", "otpChannel must be email_otp");
78
- if (!ownerProofBindingDigest) return failure("invalid_body", "Missing ownerProofBindingDigest");
79
- const activeEnrollment = action !== WALLET_EMAIL_OTP_ACTIONS.registration ? await input.readActiveEnrollment({
80
- walletId,
81
- orgId
82
- }) : null;
83
- if (activeEnrollment && !activeEnrollment.ok) return activeEnrollment;
84
- const existingEnrollment = activeEnrollment?.ok ? activeEnrollment.enrollment : null;
85
- const existingAuthStateResult = existingEnrollment ? await input.readEnrollmentAuthState(existingEnrollment) : {
86
- ok: true,
87
- state: null
88
- };
89
- if (!existingAuthStateResult.ok) return existingAuthStateResult;
90
- const existingAuthState = existingAuthStateResult.state;
91
- const challengeEmail = action === WALLET_EMAIL_OTP_ACTIONS.registration ? email : existingEnrollment?.verifiedEmail || "";
92
- if (!challengeEmail) return failure("recovery_email_missing", "Authenticated identity does not include a recovery email");
93
- if (existingAuthState?.otpLockedUntilMs && existingAuthState.otpLockedUntilMs > Date.now()) return {
94
- ok: false,
95
- code: "otp_locked_out",
96
- message: "Email OTP is temporarily locked for this wallet",
97
- lockedUntilMs: existingAuthState.otpLockedUntilMs
98
- };
99
- const issuedAtMs = Date.now();
100
- await pruneExpiredEmailOtpChallengesWithStore({
101
- challengeStore: input.challengeStore,
102
- memoryOutbox: input.memoryOutbox,
103
- nowMs: issuedAtMs
104
- });
105
- if (reuseActiveChallenge) {
106
- const existingChallenge = await input.challengeStore.findLatestActiveByContext({
107
- challengeSubjectId,
108
- walletId,
109
- orgId,
110
- otpChannel: EMAIL_OTP_CHANNEL,
111
- ownerProofBindingDigest,
112
- action,
113
- operation,
114
- nowMs: issuedAtMs
115
- });
116
- if (existingChallenge) return {
117
- ok: true,
118
- challenge: createdEmailOtpChallengeFromRecord({
119
- record: existingChallenge,
120
- challengeSubjectId,
121
- walletId,
122
- orgId,
123
- ownerProofBindingDigest,
124
- action,
125
- operation
126
- }),
127
- delivery: {
128
- status: "reused",
129
- mode: "memory",
130
- emailHint: existingChallenge.email
131
- }
132
- };
133
- }
134
- const rateLimit = await input.consumeRateLimit({
135
- scope: "challenge",
136
- action,
137
- userId: challengeSubjectId,
138
- walletId,
139
- orgId,
140
- clientIp
141
- });
142
- if (!rateLimit.ok) return rateLimit;
143
- if (typeof crypto === "undefined" || typeof crypto.getRandomValues !== "function") return failure("unsupported", "crypto.getRandomValues is unavailable in this runtime");
144
- const otpConfig = input.resolveConfig();
145
- const expiresAtMs = issuedAtMs + otpConfig.challengeTtlMs;
146
- const challengeId = base64UrlEncode(crypto.getRandomValues(new Uint8Array(16)));
147
- const otpCode = randomNumericCode(otpConfig.codeLength);
148
- await enforceEmailOtpActiveChallengeLimitWithStore({
149
- challengeStore: input.challengeStore,
150
- memoryOutbox: input.memoryOutbox,
151
- context: {
152
- challengeSubjectId,
153
- walletId,
154
- orgId,
155
- otpChannel: EMAIL_OTP_CHANNEL,
156
- ownerProofBindingDigest,
157
- action,
158
- operation,
159
- nowMs: issuedAtMs
160
- },
161
- maxActiveChallenges: otpConfig.maxActiveChallengesPerContext
162
- });
163
- const challengeRecord = {
164
- version: "email_otp_challenge_v1",
165
- challengeId,
166
- challengeSubjectId,
167
- walletId,
168
- orgId,
169
- otpChannel: EMAIL_OTP_CHANNEL,
170
- email: challengeEmail,
171
- otpCode,
172
- ownerProofBindingDigest,
173
- action,
174
- operation,
175
- createdAtMs: issuedAtMs,
176
- expiresAtMs,
177
- attemptCount: 0,
178
- maxAttempts: otpConfig.maxAttempts
179
- };
180
- await input.challengeStore.put(challengeRecord);
181
- if (!await input.challengeStore.get(challengeId)) return failure("internal", "Email OTP challenge could not be persisted");
182
- const delivery = await input.deliverCode({
183
- challengeId,
184
- walletId,
185
- userId: challengeSubjectId,
186
- otpChannel: EMAIL_OTP_CHANNEL,
187
- action,
188
- operation,
189
- email: challengeEmail,
190
- otpCode,
191
- expiresAtMs
192
- });
193
- if (!delivery.ok) {
194
- await input.challengeStore.del(challengeId);
195
- input.memoryOutbox.delete(challengeId);
196
- return delivery;
197
- }
198
- return {
199
- ok: true,
200
- challenge: {
201
- challengeId,
202
- issuedAtMs,
203
- expiresAtMs,
204
- challengeSubjectId,
205
- walletId,
206
- orgId,
207
- otpChannel: EMAIL_OTP_CHANNEL,
208
- ownerProofBindingDigest,
209
- action,
210
- operation
211
- },
212
- delivery: {
213
- status: "sent",
214
- mode: delivery.deliveryMode,
215
- emailHint: delivery.emailHint
216
- }
217
- };
218
- } catch (e) {
219
- return failure("internal", errorMessage(e) || "Failed to create Email OTP challenge");
220
- }
221
- }
222
- //#endregion
223
- export { createEmailOtpChallengeWithAction, pruneExpiredEmailOtpChallengesWithStore };
224
-
225
- //# sourceMappingURL=emailOtpChallenges.js.map
@@ -1,134 +0,0 @@
1
- import { normalizeOptionalTrimmedString } from "../../shared-ts/src/utils/normalize.js";
2
- import "../../shared-ts/src/utils/validation.js";
3
- import { failure } from "../../shared-ts/src/utils/failure.js";
4
- //#region src/core/authService/emailOtpDelivery.ts
5
- function logDevelopmentOtpCode(input) {
6
- input.logger.warn("[email-otp] development OTP code", {
7
- challengeId: input.challengeId,
8
- walletId: input.walletId,
9
- userId: input.userId,
10
- otpChannel: input.otpChannel,
11
- action: input.action,
12
- operation: input.operation,
13
- deliveryMode: input.deliveryMode,
14
- emailHint: input.emailHint,
15
- devOtpCode: input.otpCode,
16
- expiresAtMs: input.expiresAtMs
17
- });
18
- }
19
- function storeMemoryOtp(input) {
20
- input.memoryOutbox.set(input.challengeId, {
21
- walletId: input.walletId,
22
- userId: input.userId,
23
- otpChannel: input.otpChannel,
24
- email: input.email,
25
- emailHint: input.emailHint,
26
- otpCode: input.otpCode,
27
- expiresAtMs: input.expiresAtMs
28
- });
29
- }
30
- function logDevelopmentOtpDelivery(input) {
31
- logDevelopmentOtpCode({
32
- logger: input.logger,
33
- deliveryMode: input.config.deliveryMode,
34
- challengeId: input.challengeId,
35
- walletId: input.walletId,
36
- userId: input.userId,
37
- otpChannel: input.otpChannel,
38
- action: input.action,
39
- operation: input.operation,
40
- emailHint: input.emailHint,
41
- otpCode: input.otpCode,
42
- expiresAtMs: input.expiresAtMs
43
- });
44
- }
45
- async function deliverEmailOtpCode(input) {
46
- if (input.production && input.config.deliveryMode !== "email_provider") return failure("email_otp_delivery_not_allowed", `Email OTP delivery mode ${input.config.deliveryMode} is disabled in production`);
47
- const emailHint = input.email;
48
- if (input.config.deliveryMode === "email_provider") return failure("not_implemented", "Email OTP email_provider delivery is not implemented yet");
49
- if (input.config.deliveryMode === "memory") {
50
- storeMemoryOtp({
51
- memoryOutbox: input.memoryOutbox,
52
- challengeId: input.challengeId,
53
- walletId: input.walletId,
54
- userId: input.userId,
55
- otpChannel: input.otpChannel,
56
- email: input.email,
57
- emailHint,
58
- otpCode: input.otpCode,
59
- expiresAtMs: input.expiresAtMs
60
- });
61
- logDevelopmentOtpDelivery({
62
- config: input.config,
63
- production: input.production,
64
- logger: input.logger,
65
- memoryOutbox: input.memoryOutbox,
66
- challengeId: input.challengeId,
67
- walletId: input.walletId,
68
- userId: input.userId,
69
- otpChannel: input.otpChannel,
70
- action: input.action,
71
- operation: input.operation,
72
- email: input.email,
73
- otpCode: input.otpCode,
74
- expiresAtMs: input.expiresAtMs,
75
- emailHint
76
- });
77
- return {
78
- ok: true,
79
- deliveryMode: "memory",
80
- emailHint
81
- };
82
- }
83
- logDevelopmentOtpDelivery({
84
- config: input.config,
85
- production: input.production,
86
- logger: input.logger,
87
- memoryOutbox: input.memoryOutbox,
88
- challengeId: input.challengeId,
89
- walletId: input.walletId,
90
- userId: input.userId,
91
- otpChannel: input.otpChannel,
92
- action: input.action,
93
- operation: input.operation,
94
- email: input.email,
95
- otpCode: input.otpCode,
96
- expiresAtMs: input.expiresAtMs,
97
- emailHint
98
- });
99
- return {
100
- ok: true,
101
- deliveryMode: "log",
102
- emailHint
103
- };
104
- }
105
- function readEmailOtpOutboxEntry(input) {
106
- if (!input.config.devOutboxEnabled) return failure("not_found", "Email OTP dev outbox is not enabled");
107
- const challengeId = normalizeOptionalTrimmedString(input.request.challengeId);
108
- const userId = normalizeOptionalTrimmedString(input.request.userId);
109
- const walletId = normalizeOptionalTrimmedString(input.request.walletId);
110
- if (!challengeId) return failure("invalid_body", "Missing challengeId");
111
- if (!userId) return failure("invalid_body", "Missing userId");
112
- if (!walletId) return failure("invalid_body", "Missing walletId");
113
- const entry = input.memoryOutbox.get(challengeId);
114
- if (!entry) return failure("not_found", "Email OTP outbox entry was not found");
115
- if (entry.userId !== userId || entry.walletId !== walletId) return failure("not_found", "Email OTP outbox entry was not found");
116
- if (input.nowMs > entry.expiresAtMs) {
117
- input.memoryOutbox.delete(challengeId);
118
- return failure("not_found", "Email OTP outbox entry expired");
119
- }
120
- return {
121
- ok: true,
122
- challengeId,
123
- walletId,
124
- userId,
125
- otpChannel: entry.otpChannel,
126
- emailHint: entry.emailHint,
127
- otpCode: entry.otpCode,
128
- expiresAtMs: entry.expiresAtMs
129
- };
130
- }
131
- //#endregion
132
- export { deliverEmailOtpCode, readEmailOtpOutboxEntry };
133
-
134
- //# sourceMappingURL=emailOtpDelivery.js.map
@@ -1,43 +0,0 @@
1
- import { normalizeOptionalTrimmedString } from "../../shared-ts/src/utils/normalize.js";
2
- import "../../shared-ts/src/utils/validation.js";
3
- import { failure } from "../../shared-ts/src/utils/failure.js";
4
- import { errorMessage } from "../../shared-ts/src/utils/errors.js";
5
- import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_ACTIONS } from "../../shared-ts/src/utils/emailOtpDomain.js";
6
- //#region src/core/authService/emailOtpGrant.ts
7
- async function consumeEmailOtpGrantWithStore(input) {
8
- try {
9
- const loginGrant = normalizeOptionalTrimmedString(input.request.loginGrant);
10
- const userId = normalizeOptionalTrimmedString(input.request.userId);
11
- const walletId = normalizeOptionalTrimmedString(input.request.walletId);
12
- const orgId = normalizeOptionalTrimmedString(input.request.orgId) || "";
13
- const otpChannel = normalizeOptionalTrimmedString(input.request.otpChannel);
14
- const clientIp = normalizeOptionalTrimmedString(input.request.clientIp) || void 0;
15
- if (!loginGrant) return failure("invalid_body", "Missing loginGrant");
16
- if (!userId) return failure("invalid_body", "Missing userId");
17
- if (!walletId) return failure("invalid_body", "Missing walletId");
18
- if (!orgId) return failure("invalid_body", "Missing orgId");
19
- if (otpChannel !== "email_otp") return failure("invalid_body", "otpChannel must be email_otp");
20
- const rateLimit = await input.consumeRateLimit({
21
- scope: "grant",
22
- userId,
23
- walletId,
24
- orgId,
25
- clientIp
26
- });
27
- if (!rateLimit.ok) return rateLimit;
28
- const record = await input.grantStore.consume(loginGrant);
29
- if (!record || input.nowMs > record.expiresAtMs || record.action !== WALLET_EMAIL_OTP_ACTIONS.unseal) return failure("login_grant_invalid_or_expired", "Login grant is invalid or expired");
30
- if (record.userId !== userId || record.walletId !== walletId || record.otpChannel !== "email_otp" || record.orgId !== orgId) return failure("recovery_grant_binding_mismatch", "Recovery grant is not valid for the current Email OTP authority");
31
- return {
32
- ok: true,
33
- challengeId: record.challengeId,
34
- otpChannel: EMAIL_OTP_CHANNEL
35
- };
36
- } catch (error) {
37
- return failure("internal", errorMessage(error) || "Failed to consume Email OTP grant");
38
- }
39
- }
40
- //#endregion
41
- export { consumeEmailOtpGrantWithStore };
42
-
43
- //# sourceMappingURL=emailOtpGrant.js.map
@@ -1,144 +0,0 @@
1
- import { parseWalletId } from "../../shared-ts/src/utils/domainIds.js";
2
- import { normalizeOptionalTrimmedString } from "../../shared-ts/src/utils/normalize.js";
3
- import "../../shared-ts/src/utils/validation.js";
4
- import { failure } from "../../shared-ts/src/utils/failure.js";
5
- import { validateSecp256k1PublicKey33 } from "../ThresholdService/evmCryptoWasm.js";
6
- import { WALLET_EMAIL_OTP_ACTIONS, emailOtpDeviceEnrollmentId } from "../../shared-ts/src/utils/emailOtpDomain.js";
7
- import { validateEmailOtpEnrollmentMaterial } from "../../router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js";
8
- import { parseRawEmailOtpRegistrationChallengeProofInput } from "./emailOtpChallengeProof.js";
9
- import { completeGoogleEmailOtpRegistrationAttemptWithStore } from "./googleEmailOtpRegistration.js";
10
- //#region src/core/authService/emailOtpRegistrationEnrollment.ts
11
- function assertNever(value) {
12
- throw new Error(`Unexpected value: ${String(value)}`);
13
- }
14
- async function resolveEmailOtpRegistrationChallengeProof(input) {
15
- const proofInput = input.proofInput;
16
- switch (proofInput.kind) {
17
- case "google_registration_attempt": {
18
- const attempt = await input.registrationAttemptStore.get(proofInput.registrationAttemptId);
19
- if (!attempt) return failure("registration_attempt_missing", "Google Email OTP registration attempt expired or was not found");
20
- if (attempt.providerSubject !== proofInput.providerSubject) return failure("challenge_subject_mismatch", "Email OTP registration attempt does not match the provider subject");
21
- if (attempt.expiresAtMs <= input.nowMs) return failure("registration_attempt_expired", "Google Email OTP registration attempt expired");
22
- if (attempt.walletId !== proofInput.walletId) return failure("wallet_identity_mismatch", "registrationAttemptId does not match walletId");
23
- return {
24
- ok: true,
25
- proof: {
26
- kind: "registration_attempt",
27
- providerSubject: proofInput.providerSubject,
28
- challengeSubjectId: proofInput.challengeSubjectId,
29
- proofEmail: attempt.email.toLowerCase(),
30
- registrationAttemptId: proofInput.registrationAttemptId,
31
- challengeId: proofInput.challengeId,
32
- finalWalletId: proofInput.walletId,
33
- orgId: proofInput.orgId,
34
- ownerProofBindingDigest: proofInput.ownerProofBindingDigest
35
- }
36
- };
37
- }
38
- case "direct_proof_email": return {
39
- ok: true,
40
- proof: {
41
- kind: "direct_proof_email",
42
- providerSubject: proofInput.providerSubject,
43
- challengeSubjectId: proofInput.challengeSubjectId,
44
- proofEmail: proofInput.proofEmail,
45
- challengeId: proofInput.challengeId,
46
- finalWalletId: proofInput.finalWalletId,
47
- orgId: proofInput.orgId,
48
- ownerProofBindingDigest: proofInput.ownerProofBindingDigest
49
- }
50
- };
51
- }
52
- return assertNever(proofInput);
53
- }
54
- async function verifyEmailOtpEnrollment(input) {
55
- const request = input.request;
56
- const proofInput = parseRawEmailOtpRegistrationChallengeProofInput(request);
57
- if (!proofInput.ok) return proofInput;
58
- const proofResult = await resolveEmailOtpRegistrationChallengeProof({
59
- proofInput: proofInput.input,
60
- registrationAttemptStore: input.registrationAttemptStore,
61
- nowMs: Date.now()
62
- });
63
- if (!proofResult.ok) return proofResult;
64
- const verified = await input.verifyChallengeCode({
65
- ...request,
66
- challengeSubjectId: proofResult.proof.challengeSubjectId,
67
- registrationChallengeProof: proofResult.proof,
68
- allowRegistrationChallengeReroll: true,
69
- expectedAction: WALLET_EMAIL_OTP_ACTIONS.registration
70
- });
71
- if (!verified.ok) return verified;
72
- const verifiedEmail = normalizeOptionalTrimmedString(verified.email)?.toLowerCase();
73
- if (!verifiedEmail) return failure("internal", "Email OTP enrollment verification did not include a verified email");
74
- const enrollmentMaterial = await validateEmailOtpEnrollmentMaterial({
75
- material: request,
76
- validateSecp256k1PublicKey33
77
- });
78
- if (!enrollmentMaterial.ok) return enrollmentMaterial;
79
- const orgId = normalizeOptionalTrimmedString(verified.orgId) || "";
80
- if (!orgId) return failure("invalid_body", "Email OTP enrollment requires orgId tenant scope");
81
- const verifiedWalletId = parseWalletId(verified.walletId);
82
- if (!verifiedWalletId.ok) return failure("invalid_body", "Email OTP enrollment verification returned an invalid walletId");
83
- if (!await input.walletStore.getWallet({ walletId: verifiedWalletId.value })) return failure("wallet_registration_incomplete", "Email OTP enrollment requires a canonical wallet created by /wallets/register/activate.");
84
- const existing = await input.walletEnrollmentStore.get(verified.walletId);
85
- const existingState = await input.authStateStore.get(verified.walletId);
86
- const nowMs = Date.now();
87
- const enrollmentRecord = {
88
- version: "email_otp_wallet_enrollment_v1",
89
- walletId: verified.walletId,
90
- providerUserId: verified.challengeSubjectId,
91
- orgId,
92
- verifiedEmail,
93
- enrollmentId: emailOtpDeviceEnrollmentId(verified.walletId, verified.challengeSubjectId),
94
- enrollmentVersion: "1",
95
- enrollmentSealKeyVersion: enrollmentMaterial.enrollmentSealKeyVersion,
96
- serverSealedFactorCiphertextB64u: enrollmentMaterial.serverSealedFactorCiphertextB64u,
97
- clientUnlockPublicKeyB64u: enrollmentMaterial.clientUnlockPublicKeyB64u,
98
- unlockKeyVersion: enrollmentMaterial.unlockKeyVersion,
99
- createdAtMs: existing?.createdAtMs ?? nowMs,
100
- updatedAtMs: nowMs
101
- };
102
- const existingProviderEnrollment = await input.walletEnrollmentStore.getByProviderUserId({
103
- providerUserId: enrollmentRecord.providerUserId,
104
- orgId: enrollmentRecord.orgId
105
- });
106
- if (existingProviderEnrollment && existingProviderEnrollment.walletId !== enrollmentRecord.walletId) await input.walletEnrollmentStore.del(existingProviderEnrollment.walletId);
107
- await input.walletEnrollmentStore.put(enrollmentRecord);
108
- await input.authStateStore.put({
109
- version: "email_otp_auth_state_v1",
110
- walletId: enrollmentRecord.walletId,
111
- providerUserId: enrollmentRecord.providerUserId,
112
- orgId: enrollmentRecord.orgId,
113
- createdAtMs: existingState && existingState.providerUserId === enrollmentRecord.providerUserId && existingState.orgId === enrollmentRecord.orgId ? existingState.createdAtMs : nowMs,
114
- updatedAtMs: nowMs,
115
- otpFailureCount: 0,
116
- lastOtpFailureAtMs: void 0,
117
- otpLockedUntilMs: void 0,
118
- ...existingState?.lastEmailOtpLoginAtMs && existingState.providerUserId === enrollmentRecord.providerUserId && existingState.orgId === enrollmentRecord.orgId ? { lastEmailOtpLoginAtMs: existingState.lastEmailOtpLoginAtMs } : {},
119
- ...existingState?.lastStrongAuthAtMs && existingState.providerUserId === enrollmentRecord.providerUserId && existingState.orgId === enrollmentRecord.orgId ? { lastStrongAuthAtMs: existingState.lastStrongAuthAtMs } : {}
120
- });
121
- const completedRegistration = await completeGoogleEmailOtpRegistrationAttemptWithStore({
122
- registrationAttemptStore: input.registrationAttemptStore,
123
- identityStore: input.identityStore,
124
- nowMs: Date.now(),
125
- registrationAttemptId: request.googleEmailOtpRegistrationAttemptId,
126
- walletId: verified.walletId
127
- });
128
- if (!completedRegistration.ok) return completedRegistration;
129
- return {
130
- ok: true,
131
- walletId: verified.walletId,
132
- otpChannel: verified.otpChannel,
133
- enrollment: {
134
- createdAtMs: existing?.createdAtMs ?? nowMs,
135
- updatedAtMs: nowMs,
136
- enrollmentSealKeyVersion: enrollmentMaterial.enrollmentSealKeyVersion,
137
- unlockKeyVersion: enrollmentMaterial.unlockKeyVersion
138
- }
139
- };
140
- }
141
- //#endregion
142
- export { verifyEmailOtpEnrollment };
143
-
144
- //# sourceMappingURL=emailOtpRegistrationEnrollment.js.map