@seams/wallet-server 0.7.3 → 0.9.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 (743) hide show
  1. package/THIRD_PARTY_NOTICES.md +7 -9
  2. package/artifact-manifest.json +241 -41
  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/migrations/deriver-a/0019_wallet_object_addresses.sql +10 -0
  22. package/cloudflare-router-ab/migrations/deriver-b/0019_wallet_object_addresses.sql +10 -0
  23. package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +3 -119
  24. package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +77 -20
  25. package/cloudflare-router-ab/wrangler.deriver-a.toml +0 -8
  26. package/cloudflare-router-ab/wrangler.deriver-b.toml +24 -8
  27. package/cloudflare-router-ab/wrangler.router.toml +0 -2
  28. package/cloudflare-router-ab/wrangler.signing-worker.toml +29 -0
  29. package/dist/esm/authorization/domain.js +3 -2
  30. package/dist/esm/authorization/lifecycleRouting.js +62 -0
  31. package/dist/esm/authorization/service.js +86 -35
  32. package/dist/esm/cloud-host.js +42 -39
  33. package/dist/esm/core/EmailOtpRecords.js +29 -222
  34. package/dist/esm/core/EmailOtpStores.js +0 -859
  35. package/dist/esm/core/IdentityStore.js +2 -339
  36. package/dist/esm/core/ThresholdService/config.js +1 -9
  37. package/dist/esm/core/ThresholdService/index.js +0 -4
  38. package/dist/esm/core/ThresholdService/kv.js +1 -66
  39. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +3 -13
  40. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.js +10 -0
  41. package/dist/esm/core/ThresholdService/routerAb/internalServiceHttp.js +1 -0
  42. package/dist/esm/core/ThresholdService/routerAbNormalSigningPolicy.js +1 -11
  43. package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +0 -541
  44. package/dist/esm/core/ThresholdService/validation.js +3 -347
  45. package/dist/esm/core/WalletAuthMethodStore.js +2 -123
  46. package/dist/esm/core/WalletStore.js +3 -209
  47. package/dist/esm/core/WebAuthnAuthenticatorStore.js +0 -202
  48. package/dist/esm/core/WebAuthnCredentialBindingStore.js +2 -182
  49. package/dist/esm/core/WebAuthnLoginChallengeStore.js +0 -52
  50. package/dist/esm/core/WebAuthnSyncChallengeStore.js +0 -54
  51. package/dist/esm/core/authService/emailOtpConfig.js +1 -195
  52. package/dist/esm/core/authService/emailOtpEnrollment.js +0 -110
  53. package/dist/esm/core/authService/emailOtpSeal.js +0 -63
  54. package/dist/esm/core/authService/nearPrivateKeySigning.js +1 -1
  55. package/dist/esm/core/authService/nearTransactions.js +3 -98
  56. package/dist/esm/core/authService/rateLimits.js +0 -84
  57. package/dist/esm/core/authService/webauthn.js +3 -299
  58. package/dist/esm/core/authService/webauthnOidcHelpers.js +1 -24
  59. package/dist/esm/core/authService/webauthnWalletBinding.js +0 -37
  60. package/dist/esm/core/config.js +1 -95
  61. package/dist/esm/core/d1EcdsaSignerRead.js +1 -1
  62. package/dist/esm/core/d1Ed25519SignerRead.js +55 -0
  63. package/dist/esm/core/d1IdentityStore.js +1 -2
  64. package/dist/esm/core/d1TenantStore.js +1 -24
  65. package/dist/esm/core/d1WalletAuthMethodStore.js +2 -5
  66. package/dist/esm/core/d1WalletStore.js +16 -13
  67. package/dist/esm/core/deviceLinking/linkedDeviceBootstrap.js +13 -0
  68. package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +2 -2
  69. package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +1 -1
  70. package/dist/esm/core/deviceLinking/linkedDeviceSession.js +20 -14
  71. package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +2 -2
  72. package/dist/esm/core/deviceLinking/requestProof.js +9 -6
  73. package/dist/esm/core/emailOtpD1Statements.js +108 -94
  74. package/dist/esm/core/keyMaterialBrands.js +2 -12
  75. package/dist/esm/core/nearKeys.js +0 -1
  76. package/dist/esm/core/nearRelayerAccountProvisioning.js +7 -10
  77. package/dist/esm/core/passkeyCredentialClaims.js +8 -0
  78. package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +6 -6
  79. package/dist/esm/core/routerAbSigning/RouterAbNormalSigningRuntime.js +2 -30
  80. package/dist/esm/core/signingLanes/WalletExecutionLaneProjection.js +1 -1
  81. package/dist/esm/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.js +1 -0
  82. package/dist/esm/core/thresholdEcdsaChainTarget.js +1 -4
  83. package/dist/esm/hosted-wallet-gateway.js +158 -52
  84. package/dist/esm/index.js +6 -19
  85. package/dist/esm/localHostedWalletGatewayHandler.js +18 -3
  86. package/dist/esm/localIntendedYaoSigningFault.js +2 -30
  87. package/dist/esm/localRegistrationSetupAuthority.js +96 -0
  88. package/dist/esm/router/auth/authRequestValidation.js +8 -16
  89. package/dist/esm/router/auth/commonRouterUtils.js +17 -10
  90. package/dist/esm/router/auth/routerApiCredentialAuth.js +26 -7
  91. package/dist/esm/router/auth/walletRegistrationContext.js +49 -0
  92. package/dist/esm/router/auth/webAuthnCredentialCodecs.js +1 -2
  93. package/dist/esm/router/cloudflare/d1/auth/d1AuthorizationAssembly.js +88 -0
  94. package/dist/esm/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.js +2 -0
  95. package/dist/esm/router/cloudflare/d1/auth/d1EmailOtpRouteService.js +25 -0
  96. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +24 -6
  97. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +75 -320
  98. package/dist/esm/router/cloudflare/d1/auth/walletSessionCredentialReaders.js +17 -1
  99. package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +57 -25
  100. package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +265 -104
  101. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +43 -17
  102. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +6 -1
  103. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +12 -2
  104. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +4 -4
  105. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +2 -2
  106. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +3 -9
  107. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.js +2 -1
  108. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.js +1 -1
  109. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +89 -7
  110. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +24 -15
  111. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.js +1 -1
  112. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.js +1 -1
  113. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +9 -6
  114. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.js +11 -2
  115. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +100 -10
  116. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoStateWriteFence.js +92 -0
  117. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1WalletCeremonyActivity.js +77 -0
  118. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +14 -9
  119. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +0 -1
  120. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +15 -9
  121. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +3 -2
  122. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +1 -1
  123. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +1 -7
  124. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +62 -36
  125. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +27 -21
  126. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +1 -1
  127. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +2 -2
  128. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +0 -1
  129. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +44 -12
  130. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +1 -49
  131. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +20 -31
  132. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.js +85 -0
  133. package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +0 -1
  134. package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +0 -48
  135. package/dist/esm/router/cloudflare/d1/near/d1SponsoredNearAccount.js +242 -0
  136. package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +1 -2
  137. package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +2 -29
  138. package/dist/esm/router/cloudflare/d1/oidc/googleOidcToken.js +41 -0
  139. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +5 -0
  140. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +52 -7
  141. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +83 -16
  142. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +8 -14
  143. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +60 -28
  144. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +0 -1
  145. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSessionTransaction.js +28 -0
  146. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +84 -0
  147. package/dist/esm/router/cloudflare/d1/registration/d1WalletExecutionAuthority.js +168 -0
  148. package/dist/esm/router/cloudflare/d1/registration/d1WalletOperationStore.js +53 -0
  149. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +85 -38
  150. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationInitialSession.js +33 -0
  151. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationPreparation.js +16 -0
  152. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationRead.js +58 -0
  153. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +478 -708
  154. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +13 -57
  155. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +169 -0
  156. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +79 -47
  157. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +11 -35
  158. package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +110 -45
  159. package/dist/esm/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js +12 -9
  160. package/dist/esm/router/cloudflare/d1/wallet/authorizationSnapshotLayout.js +168 -0
  161. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +68 -0
  162. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +22 -60
  163. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +12 -48
  164. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +56 -143
  165. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationCleanup.js +157 -0
  166. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationFreeze.js +56 -0
  167. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationHistory.js +238 -0
  168. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationIntake.js +287 -0
  169. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationSnapshot.js +295 -0
  170. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationApprovals.js +140 -0
  171. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationChallenges.js +170 -0
  172. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationEmailOtp.js +60 -0
  173. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationOwner.js +33 -0
  174. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationOwnerRequest.js +74 -0
  175. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationPasskey.js +77 -0
  176. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationReadAccess.js +37 -0
  177. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationSessions.js +97 -0
  178. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationWriteBlock.js +133 -0
  179. package/dist/esm/router/cloudflare/d1/walletObjectAddresses.js +47 -0
  180. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +26 -5
  181. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +4 -70
  182. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +23 -7
  183. package/dist/esm/router/cloudflare/runtime/routerAbServiceBindings.js +32 -1
  184. package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +20 -7
  185. package/dist/esm/router/cloudflare/runtime/walletAuthorizationRelocationRoutes.js +488 -0
  186. package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +1 -0
  187. package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +26 -1
  188. package/dist/esm/router/cloudflare/runtime/walletControlOps.js +3 -0
  189. package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
  190. package/dist/esm/router/cloudflare/runtime/walletObjectAddresses.js +105 -0
  191. package/dist/esm/router/cloudflare/runtime/walletPlacementRoutes.js +339 -0
  192. package/dist/esm/router/cloudflare/runtime/walletRelocationDeriver.js +244 -0
  193. package/dist/esm/router/cloudflare/runtime/walletRelocationEcdsa.js +212 -0
  194. package/dist/esm/router/cloudflare/runtime/walletRelocationEd25519.js +172 -0
  195. package/dist/esm/router/cloudflare/runtime/walletRelocationOps.js +183 -0
  196. package/dist/esm/router/cloudflare/runtime/walletRelocationPresign.js +185 -0
  197. package/dist/esm/router/cloudflare/runtime/walletRelocationSource.js +221 -0
  198. package/dist/esm/router/cloudflare/runtime/walletRuntimeOps.js +16 -4
  199. package/dist/esm/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js +30 -8
  200. package/dist/esm/router/cloudflare-adaptor.js +8 -9
  201. package/dist/esm/router/cloudflare.js +33043 -31559
  202. package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +35 -9
  203. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoCapabilityCommit.js +42 -0
  204. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +42 -13
  205. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +64 -3
  206. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +6 -6
  207. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js +70 -3
  208. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +59 -87
  209. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +58 -28
  210. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +13 -7
  211. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +108 -78
  212. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +27 -5
  213. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +71 -22
  214. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +37 -25
  215. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +3 -3
  216. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.js +2 -1
  217. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +24 -3
  218. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js +4 -3
  219. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js +20 -7
  220. package/dist/esm/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.js +7 -1
  221. package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +0 -1
  222. package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +2 -2
  223. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +3 -9
  224. package/dist/esm/router/domains/passkeyCustody/registrationCustodyOutcome.js +34 -18
  225. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.js +2 -2
  226. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +18 -14
  227. package/dist/esm/router/domains/signingOperations/authorizedOperationWire.js +73 -0
  228. package/dist/esm/router/domains/signingOperations/ecdsaSigningResponse.js +31 -0
  229. package/dist/esm/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.js +1 -1
  230. package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js +2 -1
  231. package/dist/esm/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.js +31 -121
  232. package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmission.js +2 -93
  233. package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +6 -20
  234. package/dist/esm/router/domains/signingOperations/signingPrepareSession.js +33 -0
  235. package/dist/esm/router/domains/signingOperations/walletExecutionAdmission.js +2 -3
  236. package/dist/esm/router/domains/walletRegistration/registrationSessionSeal.js +121 -0
  237. package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +70 -0
  238. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +56 -168
  239. package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +3 -4
  240. package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +14 -0
  241. package/dist/esm/router/express.js +1453 -1488
  242. package/dist/esm/router/framework/http.js +4 -1
  243. package/dist/esm/router/framework/registrationSetupDispatch.js +14 -0
  244. package/dist/esm/router/framework/ror/normalize.js +0 -1
  245. package/dist/esm/router/framework/ror/options.js +0 -1
  246. package/dist/esm/router/framework/ror/provider.js +0 -1
  247. package/dist/esm/router/framework/ror/staticProvider.js +0 -1
  248. package/dist/esm/router/framework/routeDefinitions.js +1 -2
  249. package/dist/esm/router/framework/routerApiWebhooks.js +0 -1
  250. package/dist/esm/router/ror.js +0 -1
  251. package/dist/esm/router/transport/fetch/createFetchRouter.js +2 -4
  252. package/dist/esm/router/transport/fetch/routes/auth.js +3 -1
  253. package/dist/esm/router/transport/fetch/routes/deviceLinking.js +38 -149
  254. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +5 -4
  255. package/dist/esm/router/transport/fetch/routes/deviceLinkingResponses.js +130 -0
  256. package/dist/esm/router/transport/fetch/routes/ecdsaOperationStepUpFactor.js +171 -0
  257. package/dist/esm/router/transport/fetch/routes/ed25519AuthorizedOperationRevalidation.js +65 -0
  258. package/dist/esm/router/transport/fetch/routes/normalSigningRouterProxy.js +13 -3
  259. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +4 -3
  260. package/dist/esm/router/transport/fetch/routes/sessions.js +3 -2
  261. package/dist/esm/router/transport/fetch/routes/syncAccount.js +7 -2
  262. package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +86 -245
  263. package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +76 -212
  264. package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +18 -41
  265. package/dist/esm/router/transport/fetch/routes/walletRegistration.js +6 -3
  266. package/dist/esm/router/transport/fetch/routes/webauthnAuthenticators.js +1 -1
  267. package/dist/esm/shared-ts/src/authorization/index.js +1 -1
  268. package/dist/esm/shared-ts/src/authorization/walletAuthority.js +2 -2
  269. package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +0 -1
  270. package/dist/esm/shared-ts/src/device-linking/activeWalletSession.js +12 -2
  271. package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +0 -2
  272. package/dist/esm/shared-ts/src/device-linking/contracts.js +16 -1
  273. package/dist/esm/shared-ts/src/device-linking/digests.js +2 -9
  274. package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +1 -1
  275. package/dist/esm/shared-ts/src/device-linking/index.js +1 -1
  276. package/dist/esm/shared-ts/src/device-linking/parsers.js +1 -1
  277. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +1 -1
  278. package/dist/esm/shared-ts/src/device-linking/wireFields.js +1 -1
  279. package/dist/esm/shared-ts/src/near/actions.js +0 -1
  280. package/dist/esm/shared-ts/src/near/nearClient.js +1 -3
  281. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
  282. package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -6
  283. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +3 -3
  284. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +2 -81
  285. package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -219
  286. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +0 -3
  287. package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +1 -2
  288. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
  289. package/dist/esm/shared-ts/src/threshold/keyMaterialBrands.js +1 -22
  290. package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
  291. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +0 -1
  292. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +4 -13
  293. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +1 -7
  294. package/dist/esm/shared-ts/src/utils/domainIds.js +1 -16
  295. package/dist/esm/shared-ts/src/utils/ecdsaCapabilityActivation.js +1 -11
  296. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -1
  297. package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +6 -1
  298. package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +4 -2
  299. package/dist/esm/shared-ts/src/utils/errors.js +1 -19
  300. package/dist/esm/shared-ts/src/utils/near.js +1 -1
  301. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
  302. package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
  303. package/dist/esm/shared-ts/src/utils/registrationIntent.js +0 -1
  304. package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +8 -0
  305. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +1 -1
  306. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -2
  307. package/dist/esm/shared-ts/src/utils/routerAbPublicKeyset.js +0 -27
  308. package/dist/esm/shared-ts/src/utils/validation.js +1 -5
  309. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
  310. package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
  311. package/dist/esm/shared-ts/src/utils/wireSchema.js +2 -13
  312. package/dist/esm/shared-ts/src/wallet-recovery/backupAcknowledgement.js +6 -24
  313. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
  314. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +5 -6
  315. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +1 -1
  316. package/dist/esm/storage/d1Sql.js +1 -7
  317. package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +0 -1
  318. package/dist/esm/threshold/session/signingSessionSeal/guards/backends.js +1 -2
  319. package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +0 -1
  320. package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +0 -1
  321. package/dist/esm/threshold/session/signingSessionSeal/options.js +1 -2
  322. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
  323. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +0 -611
  324. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  325. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
  326. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
  327. package/dist/types/shared-ts/src/device-linking/activeWalletSession.d.ts +2 -1
  328. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +11 -0
  329. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
  330. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +0 -11
  331. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +2 -7
  332. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
  333. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
  334. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
  335. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
  336. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -843
  337. package/dist/types/shared-ts/src/threshold/ed25519OperationFingerprint.d.ts +2 -1
  338. package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
  339. package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
  340. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
  341. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
  342. package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
  343. package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +3 -1
  344. package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
  345. package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
  346. package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
  347. package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
  348. package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +0 -9
  349. package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
  350. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
  351. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
  352. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
  353. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
  354. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
  355. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
  356. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
  357. package/dist/types/wallet-server/src/authorization/domain.d.ts +17 -1
  358. package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.d.ts +1 -0
  359. package/dist/types/wallet-server/src/authorization/ed25519WalletSessionAdmission.d.ts +35 -0
  360. package/dist/types/wallet-server/src/authorization/ed25519WalletSessionAdmission.typecheck.d.ts +2 -0
  361. package/dist/types/wallet-server/src/authorization/lifecycleRouting.d.ts +32 -0
  362. package/dist/types/wallet-server/src/authorization/lifecycleRouting.typecheck.d.ts +2 -0
  363. package/dist/types/wallet-server/src/authorization/recoveryRouting.d.ts +22 -0
  364. package/dist/types/wallet-server/src/authorization/recoveryRouting.typecheck.d.ts +2 -0
  365. package/dist/types/wallet-server/src/authorization/service.d.ts +50 -5
  366. package/dist/types/wallet-server/src/authorization/sessionRouting.d.ts +22 -0
  367. package/dist/types/wallet-server/src/authorization/sessionRouting.typecheck.d.ts +2 -0
  368. package/dist/types/wallet-server/src/cloud-host.d.ts +36 -10
  369. package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +2 -22
  370. package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +20 -84
  371. package/dist/types/wallet-server/src/core/IdentityStore.d.ts +0 -10
  372. package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +0 -1
  373. package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +0 -2
  374. package/dist/types/wallet-server/src/core/ThresholdService/index.d.ts +1 -3
  375. package/dist/types/wallet-server/src/core/ThresholdService/kv.d.ts +0 -7
  376. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +1 -3
  377. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.d.ts +6 -0
  378. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/internalServiceHttp.d.ts +1 -0
  379. package/dist/types/wallet-server/src/core/ThresholdService/routerAbNormalSigningPolicy.d.ts +0 -1
  380. package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +7 -19
  381. package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +0 -34
  382. package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +1 -5
  383. package/dist/types/wallet-server/src/core/WalletStore.d.ts +0 -3
  384. package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +0 -20
  385. package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +1 -27
  386. package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +2 -16
  387. package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +22 -14
  388. package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +0 -24
  389. package/dist/types/wallet-server/src/core/authService/emailOtpEnrollment.d.ts +1 -70
  390. package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +0 -13
  391. package/dist/types/wallet-server/src/core/authService/githubOAuth.d.ts +2 -1
  392. package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +1 -39
  393. package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +0 -17
  394. package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +0 -125
  395. package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +0 -3
  396. package/dist/types/wallet-server/src/core/authService/webauthnVerificationOutcomes.d.ts +1 -1
  397. package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +0 -12
  398. package/dist/types/wallet-server/src/core/config.d.ts +0 -10
  399. package/dist/types/wallet-server/src/core/d1Ed25519SignerRead.d.ts +17 -0
  400. package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +0 -2
  401. package/dist/types/wallet-server/src/core/d1TenantStore.d.ts +0 -7
  402. package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +0 -1
  403. package/dist/types/wallet-server/src/core/d1WalletStore.d.ts +6 -0
  404. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceBootstrap.d.ts +19 -0
  405. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +8 -6
  406. package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +2 -5
  407. package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +11 -7
  408. package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +1 -5
  409. package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +0 -1
  410. package/dist/types/wallet-server/src/core/passkeyCredentialClaims.d.ts +9 -0
  411. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +5 -3
  412. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +0 -2
  413. package/dist/types/wallet-server/src/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.d.ts +1 -0
  414. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +15 -140
  415. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +4 -52
  416. package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +0 -1
  417. package/dist/types/wallet-server/src/core/types.d.ts +0 -299
  418. package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +18 -5
  419. package/dist/types/wallet-server/src/index.d.ts +8 -13
  420. package/dist/types/wallet-server/src/localIntendedYaoSigningFault.d.ts +1 -16
  421. package/dist/types/wallet-server/src/localRegistrationSetupAuthority.d.ts +13 -0
  422. package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +7 -1
  423. package/dist/types/wallet-server/src/router/auth/routerApiCredentialAuth.d.ts +11 -3
  424. package/dist/types/wallet-server/src/router/auth/walletRegistrationContext.d.ts +8 -0
  425. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizationAssembly.d.ts +23 -0
  426. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1EmailOtpRouteService.d.ts +16 -0
  427. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +28 -3
  428. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthService.d.ts +4 -1
  429. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/walletSessionCredentialReaders.d.ts +7 -1
  430. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +33 -2
  431. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +5 -1
  432. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +7 -1
  433. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.d.ts +1 -10
  434. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.d.ts +4 -0
  435. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +6 -0
  436. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +1 -13
  437. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.d.ts +3 -1
  438. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts +1 -0
  439. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoStateWriteFence.d.ts +8 -0
  440. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1WalletCeremonyActivity.d.ts +15 -0
  441. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.d.ts +6 -1
  442. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.d.ts +2 -2
  443. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +2 -1
  444. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.d.ts +4 -1
  445. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpCounters.typecheck.d.ts +2 -0
  446. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +0 -2
  447. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +6 -13
  448. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +21 -7
  449. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +29 -1
  450. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +3 -16
  451. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.d.ts +7 -2
  452. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.d.ts +23 -0
  453. package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityService.d.ts +0 -12
  454. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.d.ts +24 -0
  455. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.typecheck.d.ts +2 -0
  456. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcVerificationService.d.ts +0 -1
  457. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/googleOidcToken.d.ts +4 -0
  458. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +5 -0
  459. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +26 -1
  460. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +33 -8
  461. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +10 -11
  462. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +17 -7
  463. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSessionTransaction.d.ts +13 -0
  464. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +58 -0
  465. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletExecutionAuthority.d.ts +41 -0
  466. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletOperationStore.d.ts +28 -0
  467. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +9 -9
  468. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationInitialSession.d.ts +17 -0
  469. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationPreparation.d.ts +12 -0
  470. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts +43 -0
  471. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +52 -90
  472. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +3 -30
  473. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.d.ts +16 -0
  474. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.d.ts +42 -14
  475. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.d.ts +5 -4
  476. package/dist/types/wallet-server/src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.d.ts +24 -1
  477. package/dist/types/wallet-server/src/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.d.ts +10 -4
  478. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/authorizationSnapshotLayout.d.ts +21 -0
  479. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.d.ts +27 -0
  480. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +4 -10
  481. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +5 -9
  482. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +8 -4
  483. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationCleanup.d.ts +20 -0
  484. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationFreeze.d.ts +12 -0
  485. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationHistory.d.ts +20 -0
  486. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationIntake.d.ts +29 -0
  487. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationSnapshot.d.ts +31 -0
  488. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationApprovals.d.ts +49 -0
  489. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationChallenges.d.ts +47 -0
  490. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationEmailOtp.d.ts +25 -0
  491. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationOwner.d.ts +88 -0
  492. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationOwnerRequest.d.ts +37 -0
  493. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationPasskey.d.ts +12 -0
  494. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationReadAccess.d.ts +18 -0
  495. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationSessions.d.ts +23 -0
  496. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationWriteBlock.d.ts +16 -0
  497. package/dist/types/wallet-server/src/router/cloudflare/d1/walletObjectAddresses.d.ts +14 -0
  498. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.d.ts +3 -0
  499. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +0 -13
  500. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +23 -10
  501. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.typecheck.d.ts +2 -0
  502. package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflare.types.d.ts +0 -2
  503. package/dist/types/wallet-server/src/router/cloudflare/runtime/routerAbServiceBindings.d.ts +13 -0
  504. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletAuthorizationRelocationRoutes.d.ts +21 -0
  505. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +1 -0
  506. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +3 -1
  507. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletControlOps.d.ts +2 -1
  508. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +3 -1
  509. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletObjectAddresses.d.ts +45 -0
  510. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletPlacementRoutes.d.ts +30 -0
  511. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationDeriver.d.ts +11 -0
  512. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationEcdsa.d.ts +7 -0
  513. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationEd25519.d.ts +7 -0
  514. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationOps.d.ts +11 -0
  515. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationPresign.d.ts +7 -0
  516. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationSource.d.ts +26 -0
  517. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOps.d.ts +3 -0
  518. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.d.ts +5 -0
  519. package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +0 -1
  520. package/dist/types/wallet-server/src/router/domains/ecdsa/routerAbEcdsaStrictRegistration.d.ts +3 -0
  521. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoCapabilityCommit.d.ts +7 -0
  522. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +42 -8
  523. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +33 -2
  524. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +2 -2
  525. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +14 -8
  526. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.typecheck.d.ts +2 -0
  527. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.d.ts +2 -0
  528. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.d.ts +17 -9
  529. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.d.ts +2 -0
  530. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.d.ts +2 -0
  531. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.d.ts +13 -14
  532. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.d.ts +7 -3
  533. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.d.ts +1 -0
  534. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.d.ts +6 -1
  535. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.d.ts +11 -0
  536. package/dist/types/wallet-server/src/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.d.ts +12 -3
  537. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +0 -2
  538. package/dist/types/wallet-server/src/router/domains/passkeyCustody/registrationCustodyOutcome.d.ts +10 -6
  539. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.d.ts +10 -3
  540. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +12 -8
  541. package/dist/types/wallet-server/src/router/domains/signingOperations/authorizedOperationWire.d.ts +97 -0
  542. package/dist/types/wallet-server/src/router/domains/signingOperations/ecdsaSigningResponse.d.ts +13 -0
  543. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmission.d.ts +9 -206
  544. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +0 -17
  545. package/dist/types/wallet-server/src/router/domains/signingOperations/signingPrepareSession.d.ts +23 -0
  546. package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +1 -2
  547. package/dist/types/wallet-server/src/router/domains/walletRegistration/registrationSessionSeal.d.ts +36 -0
  548. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +8 -7
  549. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationReservation.d.ts +125 -0
  550. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +17 -15
  551. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +2 -2
  552. package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +24 -0
  553. package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +35 -41
  554. package/dist/types/wallet-server/src/router/framework/googleLoginResolution.typecheck.d.ts +2 -0
  555. package/dist/types/wallet-server/src/router/framework/registrationSetupDispatch.d.ts +13 -0
  556. package/dist/types/wallet-server/src/router/framework/routerApi.d.ts +3 -12
  557. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +1 -1
  558. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingResponses.d.ts +17 -0
  559. package/dist/types/wallet-server/src/router/transport/fetch/routes/ecdsaOperationStepUpFactor.d.ts +37 -0
  560. package/dist/types/wallet-server/src/router/transport/fetch/routes/ed25519AuthorizedOperationRevalidation.d.ts +37 -0
  561. package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +1 -17
  562. package/dist/types/wallet-server/src/storage/d1Sql.d.ts +0 -1
  563. package/dist/types/wallet-server/src/storage/tenantRoute.d.ts +1 -1
  564. package/migrations/d1-signer/0040_namespace_home_challenges.sql +16 -0
  565. package/migrations/d1-signer/0041_step_up_admission_expiry.sql +28 -0
  566. package/migrations/d1-signer/0042_deployment_resource_challenges.sql +4 -0
  567. package/migrations/d1-signer/0043_google_registration_candidate_claim.sql +2 -0
  568. package/migrations/d1-signer/0044_linked_device_bootstrap_imports.sql +6 -0
  569. package/migrations/d1-signer/0045_wallet_owned_capability_receipts.sql +29 -0
  570. package/migrations/d1-signer/0046_wallet_owned_signing_abuse.sql +41 -0
  571. package/migrations/d1-signer/0047_remove_unused_near_public_keys.sql +2 -0
  572. package/migrations/d1-signer/0048_operation_owner_scope.sql +45 -0
  573. package/migrations/d1-signer/0049_wallet_relocation_challenges.sql +16 -0
  574. package/migrations/d1-signer/0050_wallet_relocation_approvals.sql +14 -0
  575. package/migrations/d1-signer/0051_wallet_relocation_email_otp.sql +92 -0
  576. package/migrations/d1-signer/0052_wallet_relocation_session_fences.sql +91 -0
  577. package/migrations/d1-signer/0053_wallet_hosted_history_import.sql +164 -0
  578. package/migrations/d1-signer/0054_wallet_authorization_freeze.sql +318 -0
  579. package/migrations/d1-signer/0055_wallet_authorization_snapshot.sql +120 -0
  580. package/migrations/d1-signer/0056_wallet_authorization_history_import.sql +424 -0
  581. package/migrations/d1-signer/0057_wallet_authorization_intake.sql +44 -0
  582. package/migrations/d1-signer/0058_wallet_ceremony_activity.sql +59 -0
  583. package/migrations/d1-signer/0059_wallet_authorization_activation.sql +45 -0
  584. package/migrations/d1-signer/0060_wallet_authorization_cleanup.sql +153 -0
  585. package/migrations/d1-signer/0061_wallet_session_operation_settlement.sql +28 -0
  586. package/migrations/d1-signer/0062_wallet_step_up_operation_settlement.sql +204 -0
  587. package/migrations/d1-signer/0063_wallet_operation_history_transfer.sql +466 -0
  588. package/migrations/d1-signer/0064_wallet_execution_generations.sql +93 -0
  589. package/migrations/d1-signer/0065_wallet_operation_execution_generation.sql +37 -0
  590. package/migrations/d1-signer/0066_regional_deployment_admission.sql +59 -0
  591. package/migrations/d1-signer/0067_registration_completion_decision.sql +12 -0
  592. package/migrations/d1-signer/0068_registration_cancellation_write_fence.sql +24 -0
  593. package/migrations/d1-signer/0069_cancelled_registration_session_fence.sql +11 -0
  594. package/migrations/d1-signer/0070_wallet_passkey_relocation.sql +369 -0
  595. package/migrations/d1-signer/0071_regional_wallet_otp_counters.sql +98 -0
  596. package/migrations/d1-signer/0072_linked_device_relocation_history.sql +899 -0
  597. package/migrations/d1-signer/0073_wallet_recovery_relocation.sql +86 -0
  598. package/migrations/d1-signer/0074_email_otp_relocation.sql +158 -0
  599. package/migrations/d1-signer/0075_wallet_authorization_return.sql +107 -0
  600. package/migrations/d1-signer/0076_wallet_relocation_write_block.sql +406 -0
  601. package/migrations/d1-signer/0077_wallet_object_addresses.sql +24 -0
  602. package/package.json +2 -3
  603. package/src/README.md +33 -3
  604. package/cloudflare-router-ab/scripts/local-key-material.mjs +0 -29
  605. package/dist/esm/core/AuthService.js +0 -2
  606. package/dist/esm/core/NearPublicKeyStore.js +0 -200
  607. package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +0 -397
  608. package/dist/esm/core/ThresholdService/stores/KeyStore.js +0 -140
  609. package/dist/esm/core/ThresholdService/stores/SessionStore.js +0 -361
  610. package/dist/esm/core/ThresholdService/stores/StoreConfig.js +0 -13
  611. package/dist/esm/core/ThresholdService/stores/exportReplayGuard.js +0 -7
  612. package/dist/esm/core/authService/AuthService.js +0 -594
  613. package/dist/esm/core/authService/bytes.js +0 -19
  614. package/dist/esm/core/authService/configValues.js +0 -15
  615. package/dist/esm/core/authService/emailOtpChallengeOperations.js +0 -123
  616. package/dist/esm/core/authService/emailOtpChallengeProof.js +0 -183
  617. package/dist/esm/core/authService/emailOtpChallengeVerification.js +0 -264
  618. package/dist/esm/core/authService/emailOtpChallenges.js +0 -225
  619. package/dist/esm/core/authService/emailOtpDelivery.js +0 -134
  620. package/dist/esm/core/authService/emailOtpGrant.js +0 -43
  621. package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +0 -144
  622. package/dist/esm/core/authService/emailOtpUnlock.js +0 -174
  623. package/dist/esm/core/authService/googleEmailOtpOperations.js +0 -141
  624. package/dist/esm/core/authService/googleEmailOtpRegistration.js +0 -587
  625. package/dist/esm/core/authService/identity.js +0 -42
  626. package/dist/esm/core/authService/identityOperations.js +0 -32
  627. package/dist/esm/core/authService/nearAccountOperations.js +0 -229
  628. package/dist/esm/core/authService/nearPublicKeyMetadata.js +0 -108
  629. package/dist/esm/core/authService/oidcVerification.js +0 -249
  630. package/dist/esm/core/authService/registrationThresholdHelpers.js +0 -30
  631. package/dist/esm/core/authService/runtime.js +0 -45
  632. package/dist/esm/core/authService/storeRegistry.js +0 -102
  633. package/dist/esm/core/authService/thresholdStoreSummary.js +0 -32
  634. package/dist/esm/core/authService/webauthnAuthority.js +0 -17
  635. package/dist/esm/core/defaultConfigsServer.js +0 -9
  636. package/dist/esm/core/hostedAccountIds.js +0 -225
  637. package/dist/esm/core/routerAbSigning/createRouterAbSigningRuntimes.js +0 -84
  638. package/dist/esm/core/signingLanes/LaneAggregateRevocationApplicationService.js +0 -86
  639. package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +0 -324
  640. package/dist/esm/core/signingLanes/LaneEnrollmentRevocation.js +0 -173
  641. package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +0 -198
  642. package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +0 -73
  643. package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +0 -68
  644. package/dist/esm/core/storeBackends.js +0 -208
  645. package/dist/esm/core/utils.js +0 -14
  646. package/dist/esm/core/webAuthnStoreBackends.js +0 -198
  647. package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +0 -49
  648. package/dist/esm/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.js +0 -10
  649. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.js +0 -22
  650. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +0 -166
  651. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.js +0 -38
  652. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.js +0 -20
  653. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +0 -1459
  654. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLockStore.js +0 -114
  655. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.js +0 -16
  656. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +0 -171
  657. package/dist/esm/router/cloudflare/d1/signingLanes/index.js +0 -10
  658. package/dist/esm/router/cloudflare/durableObjects/thresholdStore.js +0 -397
  659. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +0 -597
  660. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +0 -273
  661. package/dist/esm/router/cloudflare/signingLanes/index.js +0 -4
  662. package/dist/esm/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.js +0 -32
  663. package/dist/esm/router/transport/fetch/routes/nearPublicKeys.js +0 -27
  664. package/dist/esm/shared-ts/src/signing-lanes/rotation.js +0 -8
  665. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -358
  666. package/dist/esm/shared-ts/src/signing-lanes/rotationLifecycle.js +0 -313
  667. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -532
  668. package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -323
  669. package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -59
  670. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
  671. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
  672. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
  673. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
  674. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
  675. package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
  676. package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
  677. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
  678. package/dist/types/wallet-server/src/core/AuthService.d.ts +0 -3
  679. package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +0 -48
  680. package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +0 -21
  681. package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +0 -40
  682. package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +0 -98
  683. package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +0 -4
  684. package/dist/types/wallet-server/src/core/ThresholdService/stores/ThresholdStoreConfig.typecheck.d.ts +0 -2
  685. package/dist/types/wallet-server/src/core/ThresholdService/stores/exportReplayGuard.d.ts +0 -3
  686. package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +0 -490
  687. package/dist/types/wallet-server/src/core/authService/bytes.d.ts +0 -3
  688. package/dist/types/wallet-server/src/core/authService/configValues.d.ts +0 -7
  689. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +0 -109
  690. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +0 -169
  691. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +0 -47
  692. package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +0 -86
  693. package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +0 -66
  694. package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +0 -43
  695. package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +0 -49
  696. package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +0 -64
  697. package/dist/types/wallet-server/src/core/authService/googleEmailOtpOperations.d.ts +0 -126
  698. package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +0 -169
  699. package/dist/types/wallet-server/src/core/authService/identity.d.ts +0 -25
  700. package/dist/types/wallet-server/src/core/authService/identityOperations.d.ts +0 -19
  701. package/dist/types/wallet-server/src/core/authService/nearAccountOperations.d.ts +0 -55
  702. package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +0 -44
  703. package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +0 -66
  704. package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +0 -11
  705. package/dist/types/wallet-server/src/core/authService/runtime.d.ts +0 -20
  706. package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +0 -53
  707. package/dist/types/wallet-server/src/core/authService/thresholdStoreSummary.d.ts +0 -3
  708. package/dist/types/wallet-server/src/core/authService/webauthnAuthority.d.ts +0 -5
  709. package/dist/types/wallet-server/src/core/defaultConfigsServer.d.ts +0 -5
  710. package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +0 -16
  711. package/dist/types/wallet-server/src/core/routerAbSigning/createRouterAbSigningRuntimes.d.ts +0 -16
  712. package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +0 -36
  713. package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +0 -62
  714. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentActivation.d.ts +0 -13
  715. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentRevocation.d.ts +0 -24
  716. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleApplicationService.d.ts +0 -141
  717. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +0 -228
  718. package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +0 -58
  719. package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +0 -30
  720. package/dist/types/wallet-server/src/core/signingLanes/signingWorkerLaneMaterialIdentity.d.ts +0 -4
  721. package/dist/types/wallet-server/src/core/storeBackends.d.ts +0 -83
  722. package/dist/types/wallet-server/src/core/utils.d.ts +0 -3
  723. package/dist/types/wallet-server/src/core/webAuthnStoreBackends.d.ts +0 -96
  724. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +0 -29
  725. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.d.ts +0 -4
  726. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.d.ts +0 -4
  727. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +0 -24
  728. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.d.ts +0 -20
  729. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.d.ts +0 -13
  730. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.d.ts +0 -51
  731. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLockStore.d.ts +0 -28
  732. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.d.ts +0 -5
  733. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneRecords.d.ts +0 -107
  734. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/index.d.ts +0 -10
  735. package/dist/types/wallet-server/src/router/cloudflare/durableObjects/thresholdStore.d.ts +0 -18
  736. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.d.ts +0 -217
  737. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.d.ts +0 -73
  738. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/index.d.ts +0 -4
  739. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.d.ts +0 -6
  740. package/dist/types/wallet-server/src/router/transport/fetch/routes/nearPublicKeys.d.ts +0 -3
  741. /package/dist/esm/{core/signingLanes/LaneEffectJournalStore.js → authorization/ed25519WalletSessionAdmission.js} +0 -0
  742. /package/dist/esm/{core/signingLanes/LaneLifecycleStore.js → authorization/recoveryRouting.js} +0 -0
  743. /package/dist/esm/{core/signingLanes/signingWorkerLaneMaterialIdentity.js → authorization/sessionRouting.js} +0 -0
@@ -2,74 +2,100 @@ import { emailOtpRateLimitExceeded, emailOtpRateLimitKeys } from "./d1EmailOtpRe
2
2
  //#region src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.ts
3
3
  var CloudflareD1EmailOtpRateLimitStore = class {
4
4
  constructor(input) {
5
- this.prepare = input.prepare;
6
- this.rateLimits = input.rateLimits;
5
+ this.input = input;
7
6
  }
8
7
  async consume(input) {
9
- const policy = this.rateLimits[input.scope];
10
- const keys = emailOtpRateLimitKeys({
11
- ...input,
12
- policy
13
- });
14
- for (const key of keys) {
15
- const consumed = await this.consumeKey({
16
- key,
17
- policy,
18
- nowMs: Date.now()
19
- });
20
- if (!consumed.ok) return consumed;
8
+ const policy = this.input.rateLimits[input.scope];
9
+ const keys = emailOtpRateLimitKeys(input, policy);
10
+ if (keys.length === 0) return { ok: true };
11
+ const nowMs = Date.now();
12
+ const statements = [];
13
+ for (const [index, counter] of keys.entries()) statements.push(this.prepareConsume(counter, policy, nowMs, index === 0));
14
+ const results = await this.input.batch(statements);
15
+ if (results.length !== keys.length) throw new Error("OTP counter batch omitted results");
16
+ for (const [index, result] of results.entries()) {
17
+ if (!result.success) throw new Error("OTP counter batch failed");
18
+ if (result.results?.length) continue;
19
+ return emailOtpRateLimitExceeded(await this.readCounter(keys[index]));
21
20
  }
22
21
  return { ok: true };
23
22
  }
24
- async consumeKey(input) {
25
- const resetAtMs = input.nowMs + input.policy.windowMs;
26
- if (await this.prepare(`INSERT INTO email_otp_rate_limits (
23
+ prepareConsume(counter, policy, nowMs, first) {
24
+ const resetAtMs = nowMs + policy.windowMs;
25
+ let walletId;
26
+ switch (counter.kind) {
27
+ case "wallet":
28
+ walletId = counter.walletId;
29
+ break;
30
+ case "regional":
31
+ walletId = null;
32
+ break;
33
+ default: return assertNever(counter);
34
+ }
35
+ const table = walletId === null ? "email_otp_rate_limits" : "wallet_email_otp_rate_limits";
36
+ const ownerColumn = walletId === null ? "" : "wallet_id,";
37
+ const ownerPlaceholder = walletId === null ? "" : "?,";
38
+ const ownerValues = walletId === null ? [] : [walletId];
39
+ return this.input.prepare(`INSERT INTO ${table} (
27
40
  namespace,
28
41
  org_id,
29
42
  project_id,
30
43
  env_id,
44
+ ${ownerColumn}
31
45
  rate_key,
32
46
  consumed_count,
33
47
  reset_at_ms,
34
48
  updated_at_ms
35
49
  )
36
- VALUES (?, ?, ?, ?, ?, 1, ?, ?)
37
- ON CONFLICT (namespace, org_id, project_id, env_id, rate_key)
50
+ SELECT ?, ?, ?, ?, ${ownerPlaceholder} ?, 1, ?, ?
51
+ WHERE ? OR changes() > 0
52
+ ON CONFLICT (namespace, org_id, project_id, env_id, ${ownerColumn} rate_key)
38
53
  DO UPDATE SET
39
54
  consumed_count = CASE
40
- WHEN email_otp_rate_limits.reset_at_ms <= ?
55
+ WHEN ${table}.reset_at_ms <= ?
41
56
  THEN 1
42
- ELSE email_otp_rate_limits.consumed_count + 1
57
+ ELSE ${table}.consumed_count + 1
43
58
  END,
44
59
  reset_at_ms = CASE
45
- WHEN email_otp_rate_limits.reset_at_ms <= ?
60
+ WHEN ${table}.reset_at_ms <= ?
46
61
  THEN ?
47
- ELSE email_otp_rate_limits.reset_at_ms
62
+ ELSE ${table}.reset_at_ms
48
63
  END,
49
64
  updated_at_ms = ?
50
- WHERE email_otp_rate_limits.reset_at_ms <= ?
51
- OR email_otp_rate_limits.consumed_count < ?
65
+ WHERE ${table}.reset_at_ms <= ?
66
+ OR ${table}.consumed_count < ?
52
67
  RETURNING consumed_count, reset_at_ms`, [
53
- input.key,
68
+ ...ownerValues,
69
+ counter.key,
54
70
  resetAtMs,
55
- input.nowMs,
56
- input.nowMs,
57
- input.nowMs,
71
+ nowMs,
72
+ first ? 1 : 0,
73
+ nowMs,
74
+ nowMs,
58
75
  resetAtMs,
59
- input.nowMs,
60
- input.nowMs,
61
- input.policy.limit
62
- ]).first()) return { ok: true };
63
- return emailOtpRateLimitExceeded(await this.prepare(`SELECT consumed_count, reset_at_ms
64
- FROM email_otp_rate_limits
76
+ nowMs,
77
+ nowMs,
78
+ policy.limit
79
+ ]);
80
+ }
81
+ async readCounter(counter) {
82
+ const walletId = counter.kind === "wallet" ? counter.walletId : null;
83
+ const table = walletId === null ? "email_otp_rate_limits" : "wallet_email_otp_rate_limits";
84
+ const ownerValues = walletId === null ? [] : [walletId];
85
+ return this.input.prepare(`SELECT consumed_count, reset_at_ms
86
+ FROM ${table}
65
87
  WHERE namespace = ?
66
88
  AND org_id = ?
67
89
  AND project_id = ?
68
90
  AND env_id = ?
91
+ ${walletId === null ? "" : "AND wallet_id = ?"}
69
92
  AND rate_key = ?
70
- LIMIT 1`, [input.key]).first());
93
+ LIMIT 1`, [...ownerValues, counter.key]).first();
71
94
  }
72
95
  };
96
+ function assertNever(value) {
97
+ throw new Error(`Unexpected OTP counter ownership: ${String(value)}`);
98
+ }
73
99
  //#endregion
74
100
  export { CloudflareD1EmailOtpRateLimitStore };
75
101
 
@@ -1,12 +1,11 @@
1
+ import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
1
2
  import { base64UrlDecode } from "../../../../shared-ts/src/utils/base64.js";
2
3
  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
4
  import { hasExactKeys } from "../../../../shared-ts/src/utils/exactKeys.js";
6
5
  import { failure } from "../../../../shared-ts/src/utils/failure.js";
7
- import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_ACTIONS, WALLET_EMAIL_OTP_DEVICE_LINK_OPERATION, WALLET_EMAIL_OTP_REGISTRATION_OPERATION, WALLET_EMAIL_OTP_UNLOCK_OPERATION, isWalletEmailOtpLoginOperation } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
6
+ import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_ACTIONS, WALLET_EMAIL_OTP_UNLOCK_OPERATION, isWalletEmailOtpLoginOperation } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
8
7
  import { isB64uString, nonNegativeSafeInteger, parseJsonObject, positiveSafeInteger } from "../auth/d1RouterApiAuthBoundary.js";
9
- import { parseCurrentEmailOtpChallengeRow, parseCurrentEmailOtpGrantRow, parseCurrentEmailOtpUnlockChallengeRow } from "../../../../core/EmailOtpRecords.js";
8
+ import { parseCurrentEmailOtpChallengeRow, parseCurrentEmailOtpGrantRow, parseCurrentEmailOtpUnlockChallengeRow, parseEmailOtpChallengePurpose } from "../../../../core/EmailOtpRecords.js";
10
9
  //#region src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.ts
11
10
  function maskEmail(email) {
12
11
  const trimmed = email.trim().toLowerCase();
@@ -45,20 +44,30 @@ function bytesEqual(left, right) {
45
44
  for (let index = 0; index < left.length; index += 1) difference |= (left[index] || 0) ^ (right[index] || 0);
46
45
  return difference === 0;
47
46
  }
48
- function emailOtpRateLimitKeys(input) {
47
+ function emailOtpRateLimitKeys(input, policy) {
49
48
  const keySuffix = [
50
49
  `scope=${input.scope}`,
51
50
  `action=${input.action || "default"}`,
52
- `limit=${input.policy.limit}`,
53
- `windowMs=${input.policy.windowMs}`
51
+ `limit=${policy.limit}`,
52
+ `windowMs=${policy.windowMs}`
54
53
  ].join(":");
55
- return [
54
+ const counters = [];
55
+ if (input.kind === "wallet") counters.push({
56
+ kind: "wallet",
57
+ walletId: input.walletId,
58
+ key: keySuffix
59
+ });
60
+ const regionalKeys = [
56
61
  input.clientIp ? `${keySuffix}:ip:${input.clientIp}` : "",
57
62
  input.userId ? `${keySuffix}:user:${input.userId}` : "",
58
- input.walletId ? `${keySuffix}:wallet:${input.walletId}` : "",
59
63
  input.providerSubject ? `${keySuffix}:provider:${input.providerSubject}` : "",
60
64
  input.orgId ? `${keySuffix}:org:${input.orgId}` : ""
61
- ].filter(Boolean);
65
+ ];
66
+ for (const key of regionalKeys) if (key) counters.push({
67
+ kind: "regional",
68
+ key
69
+ });
70
+ return counters;
62
71
  }
63
72
  function emailOtpRateLimitExceeded(row) {
64
73
  const resetAtMs = positiveSafeInteger(row?.reset_at_ms);
@@ -159,7 +168,7 @@ function parseEmailOtpChallengeRow(row) {
159
168
  recordJson: row?.record_json,
160
169
  expiresAtMs: row?.expires_at_ms
161
170
  });
162
- if (!record || record.expiresAtMs <= record.createdAtMs || !emailOtpChallengePurposeIsValid(record)) return null;
171
+ if (!record || record.expiresAtMs <= record.createdAtMs) return null;
163
172
  return {
164
173
  ...record,
165
174
  email: record.email.toLowerCase()
@@ -227,6 +236,8 @@ function emailOtpChallengeContextValues(input) {
227
236
  ];
228
237
  }
229
238
  function emailOtpChallengeRecord(input) {
239
+ const purpose = parseEmailOtpChallengePurpose(input.action, input.operation);
240
+ if (!purpose) throw new Error("Invalid Email OTP challenge purpose");
230
241
  return {
231
242
  version: "email_otp_challenge_v1",
232
243
  challengeId: input.challengeId,
@@ -237,8 +248,7 @@ function emailOtpChallengeRecord(input) {
237
248
  email: input.email,
238
249
  otpCode: input.otpCode,
239
250
  ownerProofBindingDigest: input.ownerProofBindingDigest,
240
- action: input.action,
241
- operation: input.operation,
251
+ ...purpose,
242
252
  createdAtMs: input.createdAtMs,
243
253
  expiresAtMs: input.expiresAtMs,
244
254
  attemptCount: 0,
@@ -246,6 +256,8 @@ function emailOtpChallengeRecord(input) {
246
256
  };
247
257
  }
248
258
  function emailOtpChallengeWithAttemptCount(record, attemptCount) {
259
+ const purpose = parseEmailOtpChallengePurpose(record.action, record.operation);
260
+ if (!purpose) throw new Error("Invalid Email OTP challenge purpose");
249
261
  return {
250
262
  version: "email_otp_challenge_v1",
251
263
  challengeId: record.challengeId,
@@ -256,8 +268,7 @@ function emailOtpChallengeWithAttemptCount(record, attemptCount) {
256
268
  email: record.email,
257
269
  otpCode: record.otpCode,
258
270
  ownerProofBindingDigest: record.ownerProofBindingDigest,
259
- action: record.action,
260
- operation: record.operation,
271
+ ...purpose,
261
272
  createdAtMs: record.createdAtMs,
262
273
  expiresAtMs: record.expiresAtMs,
263
274
  attemptCount,
@@ -373,12 +384,7 @@ function emailOtpAuthStateRecord(input) {
373
384
  };
374
385
  }
375
386
  function emailOtpChallengePurposeIsValid(input) {
376
- switch (input.action) {
377
- case WALLET_EMAIL_OTP_ACTIONS.login: return isWalletEmailOtpLoginOperation(input.operation);
378
- case WALLET_EMAIL_OTP_ACTIONS.registration: return input.operation === WALLET_EMAIL_OTP_REGISTRATION_OPERATION;
379
- case WALLET_EMAIL_OTP_ACTIONS.recoveryBootstrap: return input.operation === WALLET_EMAIL_OTP_UNLOCK_OPERATION;
380
- case WALLET_EMAIL_OTP_ACTIONS.deviceLink: return input.operation === WALLET_EMAIL_OTP_DEVICE_LINK_OPERATION;
381
- }
387
+ return parseEmailOtpChallengePurpose(input.action, input.operation) !== null;
382
388
  }
383
389
  function optionalPositiveSafeIntegerField(record, field) {
384
390
  if (!hasRecordField(record, field) || record[field] == null) return void 0;
@@ -1,5 +1,4 @@
1
1
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
2
- import "../../../../shared-ts/src/utils/validation.js";
3
2
  import { secureRandomBase64Url } from "../../../../shared-ts/src/utils/secureRandomId.js";
4
3
  import { failedVerification, failure } from "../../../../shared-ts/src/utils/failure.js";
5
4
  import { validateSecp256k1PublicKey33, verifySecp256k1RecoverableSignatureAgainstPublicKey33 } from "../../../../core/ThresholdService/evmCryptoWasm.js";
@@ -230,6 +229,7 @@ var CloudflareD1EmailOtpRecoveryService = class {
230
229
  const parsed = normalizeGrantConsumptionInput(input);
231
230
  if (!parsed.ok) return parsed.result;
232
231
  const rateLimit = await this.emailOtpRateLimits.consume({
232
+ kind: "wallet",
233
233
  scope: "grant",
234
234
  userId: parsed.value.userId,
235
235
  walletId: parsed.value.walletId,
@@ -1,5 +1,4 @@
1
1
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
2
- import "../../../../shared-ts/src/utils/validation.js";
3
2
  import { failure } from "../../../../shared-ts/src/utils/failure.js";
4
3
  import { validateSecp256k1PublicKey33 } from "../../../../core/ThresholdService/evmCryptoWasm.js";
5
4
  import { emailOtpDeviceEnrollmentId } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
@@ -59,8 +58,9 @@ var CloudflareD1EmailOtpRegistrationEnrollmentFinalizer = class {
59
58
  case "passkey": return { ok: true };
60
59
  case "email_otp": switch (input.authority.proofKind) {
61
60
  case "otp_challenge": return { ok: true };
62
- case "google_sso_registration": return await this.googleEmailOtpSessions.completeRegistrationAttempt({
61
+ case "google_sso_registration": return await this.googleEmailOtpSessions.completeCommittedRegistrationAttempt({
63
62
  registrationAttemptId: input.authority.googleEmailOtpRegistrationAttemptId,
63
+ intentDigest: input.authority.registrationIntentDigestB64u,
64
64
  walletId: input.walletId
65
65
  });
66
66
  }
@@ -1,5 +1,4 @@
1
1
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
2
- import "../../../../shared-ts/src/utils/validation.js";
3
2
  import { failure } from "../../../../shared-ts/src/utils/failure.js";
4
3
  import { createSigningSessionSealShamir3PassCipherAdapter } from "../../../../threshold/session/signingSessionSeal/crypto/cipher.js";
5
4
  //#region src/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.ts
@@ -1,15 +1,31 @@
1
1
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
2
- import "../../../../shared-ts/src/utils/validation.js";
3
2
  import { secureRandomBase64Url } from "../../../../shared-ts/src/utils/secureRandomId.js";
4
3
  import { d1MutationChanges } from "../auth/d1RouterApiAuthBoundary.js";
5
4
  import { registrationAttemptMatchesReplacementScope, registrationAttemptMatchesStartedScope } from "../../../../core/EmailOtpRecords.js";
5
+ import { completeGoogleRegistration } from "./d1GoogleRegistrationCompletion.js";
6
6
  import { emailOtpRegistrationAttemptRows } from "../../../../core/emailOtpD1Statements.js";
7
- import { abandonedGoogleEmailOtpRegistrationAttemptRecord, parseGoogleEmailOtpRegistrationAttemptRow, pendingGoogleEmailOtpRegistrationAttemptWithUpdatedAt } from "./d1GoogleEmailOtpRegistrationRecords.js";
7
+ import { abandonedGoogleEmailOtpRegistrationAttemptRecord, parseGoogleEmailOtpRegistrationAttemptRow } from "./d1GoogleEmailOtpRegistrationRecords.js";
8
8
  //#region src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.ts
9
9
  var CloudflareD1GoogleEmailOtpRegistrationAttemptStore = class {
10
10
  constructor(input) {
11
11
  this.prepare = input.prepare;
12
12
  this.orgId = input.orgId;
13
+ this.batch = input.batch;
14
+ }
15
+ complete(input) {
16
+ return completeGoogleRegistration(this.prepare, this.batch, {
17
+ kind: "live_offer",
18
+ attemptId: input.attemptId,
19
+ walletId: input.walletId
20
+ });
21
+ }
22
+ completeCommitted(input) {
23
+ return completeGoogleRegistration(this.prepare, this.batch, {
24
+ kind: "committed_wallet",
25
+ attemptId: input.attemptId,
26
+ walletId: input.walletId,
27
+ intentDigest: input.intentDigest
28
+ });
13
29
  }
14
30
  async cleanupExpired(nowMs) {
15
31
  return d1MutationChanges(await emailOtpRegistrationAttemptRows.deleteExpired(this.prepare, nowMs).run());
@@ -37,8 +53,16 @@ var CloudflareD1GoogleEmailOtpRegistrationAttemptStore = class {
37
53
  expiresAtMs: nowMs + 30 * 6e4,
38
54
  runtimePolicyScope: input.runtimePolicyScope
39
55
  };
40
- await this.put(attempt);
41
- return attempt;
56
+ await emailOtpRegistrationAttemptRows.insertPendingIfAbsent(this.prepare, attempt).run();
57
+ const winner = await this.findStarted({
58
+ providerSubject: input.providerSubject,
59
+ email: input.email,
60
+ orgId: this.orgId,
61
+ ownerProofBindingDigest: input.ownerProofBindingDigest,
62
+ runtimePolicyScope: input.runtimePolicyScope
63
+ });
64
+ if (!winner) throw new Error("Registration offer changed during creation; retry the request");
65
+ return winner;
42
66
  }
43
67
  async findStarted(input) {
44
68
  const nowMs = Date.now();
@@ -51,13 +75,11 @@ var CloudflareD1GoogleEmailOtpRegistrationAttemptStore = class {
51
75
  const parsed = parseGoogleEmailOtpRegistrationAttemptRow(row);
52
76
  if (!parsed) {
53
77
  const malformedAttemptId = normalizeOptionalTrimmedString(row?.attempt_id);
54
- if (malformedAttemptId) await this.delete(malformedAttemptId);
78
+ if (malformedAttemptId) await this.deleteMalformedUnclaimed(malformedAttemptId);
55
79
  return null;
56
80
  }
57
81
  if (!registrationAttemptMatchesStartedScope(parsed, scope)) return null;
58
- const refreshed = pendingGoogleEmailOtpRegistrationAttemptWithUpdatedAt(parsed, nowMs);
59
- await this.put(refreshed);
60
- return refreshed;
82
+ return parsed;
61
83
  }
62
84
  async abandonStartedExceptBinding(input) {
63
85
  const result = await emailOtpRegistrationAttemptRows.selectPending(this.prepare, input).all();
@@ -65,7 +87,7 @@ var CloudflareD1GoogleEmailOtpRegistrationAttemptStore = class {
65
87
  const parsed = parseGoogleEmailOtpRegistrationAttemptRow(row);
66
88
  if (!parsed) {
67
89
  const malformedAttemptId = normalizeOptionalTrimmedString(row.attempt_id);
68
- if (malformedAttemptId) await this.delete(malformedAttemptId);
90
+ if (malformedAttemptId) await this.deleteMalformedUnclaimed(malformedAttemptId);
69
91
  continue;
70
92
  }
71
93
  if (!registrationAttemptMatchesReplacementScope(parsed, input)) continue;
@@ -80,16 +102,26 @@ var CloudflareD1GoogleEmailOtpRegistrationAttemptStore = class {
80
102
  const row = await emailOtpRegistrationAttemptRows.selectLiveForWallet(this.prepare, input.walletId, input.nowMs).first();
81
103
  return Boolean(row);
82
104
  }
105
+ async claimCandidate(input) {
106
+ return d1MutationChanges(await emailOtpRegistrationAttemptRows.claimCandidate(this.prepare, {
107
+ ...input,
108
+ nowMs: Date.now()
109
+ }).run()) === 1 ? { ok: true } : {
110
+ ok: false,
111
+ code: "registration_candidate_unavailable",
112
+ message: "Registration offer is unavailable or already claimed by another candidate or intent"
113
+ };
114
+ }
83
115
  async read(attemptId) {
84
116
  const record = parseGoogleEmailOtpRegistrationAttemptRow(await emailOtpRegistrationAttemptRows.select(this.prepare, attemptId).first());
85
117
  return record?.runtimePolicyScope?.orgId === this.orgId ? record : null;
86
118
  }
87
119
  async put(record) {
88
120
  if (record.runtimePolicyScope?.orgId !== this.orgId) throw new Error("Google Email OTP registration attempt org scope mismatch");
89
- await emailOtpRegistrationAttemptRows.upsert(this.prepare, record).run();
121
+ if (d1MutationChanges(await emailOtpRegistrationAttemptRows.updatePending(this.prepare, record).run()) !== 1) throw new Error("Registration offer is no longer pending or has changed");
90
122
  }
91
- async delete(attemptId) {
92
- await emailOtpRegistrationAttemptRows.delete(this.prepare, attemptId).run();
123
+ async deleteMalformedUnclaimed(attemptId) {
124
+ await emailOtpRegistrationAttemptRows.deleteUnclaimed(this.prepare, attemptId).run();
93
125
  }
94
126
  };
95
127
  //#endregion
@@ -1,5 +1,4 @@
1
1
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
2
- import "../../../../shared-ts/src/utils/validation.js";
3
2
  import { isB64uString, nonNegativeSafeInteger, parseJsonObject, positiveSafeInteger } from "../auth/d1RouterApiAuthBoundary.js";
4
3
  //#region src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.ts
5
4
  const GOOGLE_EMAIL_OTP_AUTH_PROVIDER = "google";
@@ -8,18 +7,6 @@ function requireRuntimePolicyScope(input) {
8
7
  if (scope) return scope;
9
8
  throw new Error("runtimePolicyScope.orgId, runtimePolicyScope.projectId, runtimePolicyScope.envId, and runtimePolicyScope.signingRootVersion are required for Google Email OTP registration");
10
9
  }
11
- function activeGoogleEmailOtpRegistrationAttemptRecord(input) {
12
- const terminal = terminalGoogleEmailOtpRegistrationAttemptRecord({
13
- fields: {
14
- ...input.record,
15
- updatedAtMs: input.updatedAtMs
16
- },
17
- state: "active",
18
- ...input.record.state === "key_finalized" ? { finalizedPublicKey: input.record.finalizedPublicKey } : {}
19
- });
20
- if (!terminal) throw new Error("Failed to build active Google Email OTP registration attempt");
21
- return terminal;
22
- }
23
10
  function expiredGoogleEmailOtpRegistrationAttemptRecord(input) {
24
11
  const terminal = terminalGoogleEmailOtpRegistrationAttemptRecord({
25
12
  fields: {
@@ -33,19 +20,6 @@ function expiredGoogleEmailOtpRegistrationAttemptRecord(input) {
33
20
  if (!terminal) throw new Error("Failed to build expired Google Email OTP registration attempt");
34
21
  return terminal;
35
22
  }
36
- function failedGoogleEmailOtpRegistrationAttemptWithCode(input) {
37
- const terminal = terminalGoogleEmailOtpRegistrationAttemptRecord({
38
- fields: {
39
- ...input.record,
40
- updatedAtMs: input.updatedAtMs
41
- },
42
- state: "failed",
43
- failureCode: input.failureCode,
44
- ...input.record.state === "key_finalized" ? { finalizedPublicKey: input.record.finalizedPublicKey } : {}
45
- });
46
- if (!terminal) throw new Error("Failed to build failed Google Email OTP registration attempt");
47
- return terminal;
48
- }
49
23
  function parseGoogleEmailOtpRegistrationAttemptRecord(input) {
50
24
  const record = parseJsonObject(input);
51
25
  if (!record) return null;
@@ -137,21 +111,6 @@ function googleEmailOtpRegistrationOfferForResponse(input) {
137
111
  candidates: [candidates[0], ...candidates.slice(1)]
138
112
  };
139
113
  }
140
- function pendingGoogleEmailOtpRegistrationAttemptWithUpdatedAt(record, updatedAtMs) {
141
- return pendingRegistrationAttemptRecord({
142
- ...record,
143
- updatedAtMs
144
- }, record);
145
- }
146
- function pendingGoogleEmailOtpRegistrationAttemptWithSelectedCandidate(input) {
147
- return pendingRegistrationAttemptRecord({
148
- ...input.record,
149
- walletId: input.candidate.walletId,
150
- selectedCandidateId: input.candidate.candidateId,
151
- collisionCounter: input.candidate.collisionCounter,
152
- updatedAtMs: input.updatedAtMs
153
- }, input.record);
154
- }
155
114
  function abandonedGoogleEmailOtpRegistrationAttemptRecord(input) {
156
115
  return registrationAttemptRecord({
157
116
  ...input.record,
@@ -244,13 +203,6 @@ function registrationAttemptRecord(fields, state) {
244
203
  ...fields.runtimePolicyScope ? { runtimePolicyScope: fields.runtimePolicyScope } : {}
245
204
  };
246
205
  }
247
- /** Rebuilds a pending attempt from changed fields, keeping its state. */
248
- function pendingRegistrationAttemptRecord(fields, record) {
249
- return record.state === "started" ? registrationAttemptRecord(fields, { state: "started" }) : registrationAttemptRecord(fields, {
250
- state: "key_finalized",
251
- finalizedPublicKey: record.finalizedPublicKey
252
- });
253
- }
254
206
  function terminalGoogleEmailOtpRegistrationAttemptRecord(input) {
255
207
  const finalized = input.finalizedPublicKey ? { finalizedPublicKey: input.finalizedPublicKey } : {};
256
208
  switch (input.state) {
@@ -274,6 +226,6 @@ function terminalGoogleEmailOtpRegistrationAttemptRecord(input) {
274
226
  }
275
227
  }
276
228
  //#endregion
277
- export { abandonedGoogleEmailOtpRegistrationAttemptRecord, activeGoogleEmailOtpRegistrationAttemptRecord, expiredGoogleEmailOtpRegistrationAttemptRecord, failedGoogleEmailOtpRegistrationAttemptWithCode, googleEmailOtpRegistrationOfferForResponse, parseGoogleEmailOtpRegistrationAttemptRow, pendingGoogleEmailOtpRegistrationAttemptWithSelectedCandidate, pendingGoogleEmailOtpRegistrationAttemptWithUpdatedAt, requireRuntimePolicyScope };
229
+ export { abandonedGoogleEmailOtpRegistrationAttemptRecord, expiredGoogleEmailOtpRegistrationAttemptRecord, googleEmailOtpRegistrationOfferForResponse, parseGoogleEmailOtpRegistrationAttemptRecord, parseGoogleEmailOtpRegistrationAttemptRow, parseGoogleEmailOtpRegistrationOfferCandidates, requireRuntimePolicyScope };
278
230
 
279
231
  //# sourceMappingURL=d1GoogleEmailOtpRegistrationRecords.js.map
@@ -1,12 +1,11 @@
1
1
  import { parseGoogleProviderSubject, parseOrgId, parseVerifiedGoogleEmail } from "../../../../shared-ts/src/utils/domainIds.js";
2
2
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
3
- import "../../../../shared-ts/src/utils/validation.js";
4
3
  import { secureRandomBase64Url } from "../../../../shared-ts/src/utils/secureRandomId.js";
5
4
  import { failure } from "../../../../shared-ts/src/utils/failure.js";
6
5
  import { createServerAllocatedWalletId } from "../../../../shared-ts/src/utils/registrationIds.js";
7
6
  import { hashEmailOtpOperationBinding } from "../../../domains/emailOtp/emailOtpSessionRouteHelpers.js";
8
7
  import { parseD1BoundaryWalletId, parseD1BoundaryWalletIdResult } from "../auth/d1RouterApiAuthBoundary.js";
9
- import { abandonedGoogleEmailOtpRegistrationAttemptRecord, activeGoogleEmailOtpRegistrationAttemptRecord, expiredGoogleEmailOtpRegistrationAttemptRecord, failedGoogleEmailOtpRegistrationAttemptWithCode, googleEmailOtpRegistrationOfferForResponse, requireRuntimePolicyScope } from "./d1GoogleEmailOtpRegistrationRecords.js";
8
+ import { abandonedGoogleEmailOtpRegistrationAttemptRecord, expiredGoogleEmailOtpRegistrationAttemptRecord, googleEmailOtpRegistrationOfferForResponse, requireRuntimePolicyScope } from "./d1GoogleEmailOtpRegistrationRecords.js";
10
9
  import { googleEmailOtpStaleIdentityMapping, hasDifferentWalletIdentitySubject } from "../identity/d1IdentityRecords.js";
11
10
  //#region src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.ts
12
11
  var CloudflareD1GoogleEmailOtpSessionResolver = class {
@@ -122,6 +121,7 @@ var CloudflareD1GoogleEmailOtpSessionResolver = class {
122
121
  if (!orgId.ok) return failure("invalid_body", orgId.error.message);
123
122
  const restartOffer = isTrueFlag(input.restartRegistrationOffer);
124
123
  return await this.emailOtpRateLimits.consume({
124
+ kind: "regional",
125
125
  scope: "googleRegistrationAttempt",
126
126
  action: restartOffer ? "google_email_otp_registration_offer_restart" : "google_email_otp_registration_create",
127
127
  userId: normalizeOptionalTrimmedString(input.providerUserId),
@@ -130,41 +130,22 @@ var CloudflareD1GoogleEmailOtpSessionResolver = class {
130
130
  clientIp: normalizeOptionalTrimmedString(input.clientIp)
131
131
  });
132
132
  }
133
+ completeCommittedRegistrationAttempt(input) {
134
+ return this.registrationAttempts.completeCommitted({
135
+ attemptId: input.registrationAttemptId,
136
+ walletId: input.walletId,
137
+ intentDigest: input.intentDigest
138
+ });
139
+ }
133
140
  async completeRegistrationAttempt(input) {
134
141
  const registrationAttemptId = normalizeOptionalTrimmedString(input.registrationAttemptId);
135
142
  if (!registrationAttemptId) return { ok: true };
136
143
  const walletId = parseD1BoundaryWalletIdResult(input.walletId);
137
144
  if (!walletId.ok) return failure("invalid_body", walletId.code === "missing" ? "Missing walletId" : "Invalid walletId");
138
- const attempt = await this.registrationAttempts.read(registrationAttemptId);
139
- if (!attempt) return failure("registration_incomplete", "Google Email OTP registration attempt expired or was not found");
140
- if (attempt.expiresAtMs <= Date.now()) {
141
- await this.registrationAttempts.put(expiredGoogleEmailOtpRegistrationAttemptRecord({
142
- record: attempt,
143
- updatedAtMs: Date.now()
144
- }));
145
- return failure("registration_incomplete", "Google Email OTP registration attempt expired");
146
- }
147
- if (walletId.value !== attempt.walletId) return failure("wallet_identity_mismatch", "registrationAttemptId does not match walletId");
148
- if (attempt.state === "active") return { ok: true };
149
- if (attempt.state !== "started" && attempt.state !== "key_finalized") return failure("registration_incomplete", "Google Email OTP registration attempt is no longer active");
150
- const linked = await this.linkIdentity({
151
- userId: attempt.walletId,
152
- subject: `wallet:${attempt.providerSubject}`,
153
- allowMoveIfSoleIdentity: true
145
+ return this.registrationAttempts.complete({
146
+ attemptId: registrationAttemptId,
147
+ walletId: walletId.value
154
148
  });
155
- if (!linked.ok) {
156
- await this.registrationAttempts.put(failedGoogleEmailOtpRegistrationAttemptWithCode({
157
- record: attempt,
158
- failureCode: linked.code,
159
- updatedAtMs: Date.now()
160
- }));
161
- return failure(linked.code, linked.message);
162
- }
163
- await this.registrationAttempts.put(activeGoogleEmailOtpRegistrationAttemptRecord({
164
- record: attempt,
165
- updatedAtMs: Date.now()
166
- }));
167
- return { ok: true };
168
149
  }
169
150
  async validateRegistrationCandidateWallet(input) {
170
151
  const registrationAttemptId = normalizeOptionalTrimmedString(input.registrationAttemptId);
@@ -206,6 +187,14 @@ var CloudflareD1GoogleEmailOtpSessionResolver = class {
206
187
  hasEmailOtpEnrollment: true
207
188
  };
208
189
  }
190
+ return {
191
+ ok: false,
192
+ mode: "wallet_identity_mismatch",
193
+ code: "wallet_identity_mismatch",
194
+ walletId: input.loginWalletId,
195
+ providerSubject: input.providerSubject,
196
+ message: "The selected wallet does not match the verified Google account"
197
+ };
209
198
  }
210
199
  if (input.linkedWalletId) {
211
200
  const enrollment = await this.readActiveEnrollment({
@@ -0,0 +1,85 @@
1
+ //#region src/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.ts
2
+ const PENDING_OFFER = `SELECT * FROM email_otp_registration_attempts
3
+ WHERE namespace = ? AND org_id = ? AND project_id = ? AND env_id = ?
4
+ AND attempt_id = ? AND wallet_id = ? AND selection_digest IS NOT NULL
5
+ AND state IN ('started', 'key_finalized')`;
6
+ async function completeGoogleRegistration(prepare, batch, input) {
7
+ const nowMs = Date.now();
8
+ const eligibility = input.kind === "live_offer" ? `${PENDING_OFFER} AND expires_at_ms > ?` : `${PENDING_OFFER} AND selection_digest = ?`;
9
+ const scopeValues = [
10
+ input.attemptId,
11
+ input.walletId,
12
+ input.kind === "live_offer" ? nowMs : input.intentDigest
13
+ ];
14
+ const results = await batch([
15
+ prepare(`WITH offer AS (${eligibility})
16
+ INSERT INTO identity_links (
17
+ namespace, org_id, project_id, env_id, subject, user_id, record_json,
18
+ created_at_ms, updated_at_ms
19
+ )
20
+ SELECT namespace, org_id, project_id, env_id, 'wallet:' || provider_subject,
21
+ wallet_id, json_object('version', 'identity_subject_v1',
22
+ 'subject', 'wallet:' || provider_subject, 'userId', wallet_id,
23
+ 'createdAtMs', ?, 'updatedAtMs', ?), ?, ?
24
+ FROM offer WHERE 1
25
+ ON CONFLICT (namespace, org_id, project_id, env_id, subject) DO UPDATE SET
26
+ user_id = excluded.user_id,
27
+ record_json = json_set(identity_links.record_json,
28
+ '$.userId', excluded.user_id,
29
+ '$.updatedAtMs', MAX(identity_links.updated_at_ms, excluded.updated_at_ms)),
30
+ updated_at_ms = MAX(identity_links.updated_at_ms, excluded.updated_at_ms)
31
+ WHERE identity_links.user_id = excluded.user_id OR (
32
+ SELECT COUNT(*) FROM identity_links old
33
+ WHERE old.namespace = identity_links.namespace AND old.org_id = identity_links.org_id
34
+ AND old.project_id = identity_links.project_id AND old.env_id = identity_links.env_id
35
+ AND old.user_id = identity_links.user_id
36
+ ) = 1`, [
37
+ ...scopeValues,
38
+ nowMs,
39
+ nowMs,
40
+ nowMs,
41
+ nowMs
42
+ ]),
43
+ prepare(`WITH offer AS (${eligibility})
44
+ UPDATE email_otp_registration_attempts AS attempt
45
+ SET state = 'active', updated_at_ms = MAX(updated_at_ms, ?),
46
+ record_json = json_set(record_json, '$.state', 'active', '$.updatedAtMs', MAX(updated_at_ms, ?))
47
+ WHERE EXISTS (SELECT 1 FROM offer
48
+ JOIN identity_links link ON link.namespace = offer.namespace AND link.org_id = offer.org_id
49
+ AND link.project_id = offer.project_id AND link.env_id = offer.env_id
50
+ AND link.subject = 'wallet:' || offer.provider_subject AND link.user_id = offer.wallet_id
51
+ WHERE attempt.namespace = offer.namespace AND attempt.org_id = offer.org_id
52
+ AND attempt.project_id = offer.project_id AND attempt.env_id = offer.env_id
53
+ AND attempt.attempt_id = offer.attempt_id)`, [
54
+ ...scopeValues,
55
+ nowMs,
56
+ nowMs
57
+ ]),
58
+ prepare(`SELECT 1 AS completed FROM email_otp_registration_attempts offer
59
+ JOIN identity_links link ON link.namespace = offer.namespace AND link.org_id = offer.org_id
60
+ AND link.project_id = offer.project_id AND link.env_id = offer.env_id
61
+ AND link.subject = 'wallet:' || offer.provider_subject AND link.user_id = offer.wallet_id
62
+ WHERE offer.namespace = ? AND offer.org_id = ? AND offer.project_id = ? AND offer.env_id = ?
63
+ AND offer.attempt_id = ? AND offer.wallet_id = ?
64
+ AND offer.selection_digest IS NOT NULL AND offer.state = 'active'
65
+ ${input.kind === "committed_wallet" ? "AND offer.selection_digest = ?" : ""}`, input.kind === "committed_wallet" ? [
66
+ input.attemptId,
67
+ input.walletId,
68
+ input.intentDigest
69
+ ] : [input.attemptId, input.walletId])
70
+ ]);
71
+ if (results.some(batchFailed)) throw new Error("Registration completion transaction failed");
72
+ if (results[2]?.results?.[0]?.completed === 1) return { ok: true };
73
+ return {
74
+ ok: false,
75
+ code: "registration_incomplete",
76
+ message: "Registration offer or identity link is unavailable for completion"
77
+ };
78
+ }
79
+ function batchFailed(result) {
80
+ return !result.success;
81
+ }
82
+ //#endregion
83
+ export { completeGoogleRegistration };
84
+
85
+ //# sourceMappingURL=d1GoogleRegistrationCompletion.js.map