@seams/wallet-server 0.7.3 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/THIRD_PARTY_NOTICES.md +1 -9
  2. package/artifact-manifest.json +78 -33
  3. package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
  4. package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
  5. package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
  6. package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
  7. package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
  8. package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
  9. package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
  10. package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
  11. package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
  12. package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
  13. package/cloudflare-router-ab/build/router/index.js +2 -2
  14. package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
  15. package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
  16. package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
  17. package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
  18. package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
  19. package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
  20. package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
  21. package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +0 -2
  22. package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +77 -20
  23. package/dist/esm/authorization/lifecycleRouting.js +62 -0
  24. package/dist/esm/authorization/service.js +35 -12
  25. package/dist/esm/cloud-host.js +20 -22
  26. package/dist/esm/core/EmailOtpRecords.js +1 -217
  27. package/dist/esm/core/EmailOtpStores.js +0 -859
  28. package/dist/esm/core/IdentityStore.js +2 -339
  29. package/dist/esm/core/ThresholdService/config.js +1 -9
  30. package/dist/esm/core/ThresholdService/index.js +0 -4
  31. package/dist/esm/core/ThresholdService/kv.js +1 -66
  32. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +1 -13
  33. package/dist/esm/core/ThresholdService/routerAbNormalSigningPolicy.js +1 -11
  34. package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +0 -541
  35. package/dist/esm/core/ThresholdService/validation.js +2 -346
  36. package/dist/esm/core/WalletAuthMethodStore.js +2 -123
  37. package/dist/esm/core/WalletStore.js +3 -209
  38. package/dist/esm/core/WebAuthnAuthenticatorStore.js +0 -202
  39. package/dist/esm/core/WebAuthnCredentialBindingStore.js +2 -182
  40. package/dist/esm/core/WebAuthnLoginChallengeStore.js +0 -52
  41. package/dist/esm/core/WebAuthnSyncChallengeStore.js +0 -54
  42. package/dist/esm/core/authService/emailOtpConfig.js +1 -195
  43. package/dist/esm/core/authService/emailOtpEnrollment.js +0 -110
  44. package/dist/esm/core/authService/emailOtpSeal.js +0 -63
  45. package/dist/esm/core/authService/nearTransactions.js +3 -98
  46. package/dist/esm/core/authService/rateLimits.js +0 -84
  47. package/dist/esm/core/authService/webauthn.js +2 -298
  48. package/dist/esm/core/authService/webauthnOidcHelpers.js +1 -24
  49. package/dist/esm/core/authService/webauthnWalletBinding.js +0 -37
  50. package/dist/esm/core/config.js +1 -95
  51. package/dist/esm/core/d1EcdsaSignerRead.js +1 -1
  52. package/dist/esm/core/d1IdentityStore.js +1 -2
  53. package/dist/esm/core/d1TenantStore.js +1 -24
  54. package/dist/esm/core/d1WalletAuthMethodStore.js +2 -5
  55. package/dist/esm/core/d1WalletStore.js +2 -2
  56. package/dist/esm/core/deviceLinking/linkedDeviceBootstrap.js +13 -0
  57. package/dist/esm/core/deviceLinking/linkedDeviceSession.js +20 -14
  58. package/dist/esm/core/deviceLinking/requestProof.js +9 -6
  59. package/dist/esm/core/emailOtpD1Statements.js +107 -94
  60. package/dist/esm/core/keyMaterialBrands.js +2 -12
  61. package/dist/esm/core/nearKeys.js +0 -1
  62. package/dist/esm/core/nearRelayerAccountProvisioning.js +6 -9
  63. package/dist/esm/core/passkeyCredentialClaims.js +8 -0
  64. package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +2 -6
  65. package/dist/esm/core/routerAbSigning/RouterAbNormalSigningRuntime.js +2 -30
  66. package/dist/esm/core/thresholdEcdsaChainTarget.js +1 -4
  67. package/dist/esm/hosted-wallet-gateway.js +66 -43
  68. package/dist/esm/index.js +6 -19
  69. package/dist/esm/localHostedWalletGatewayHandler.js +12 -0
  70. package/dist/esm/localRegistrationSetupAuthority.js +89 -0
  71. package/dist/esm/router/auth/authRequestValidation.js +8 -16
  72. package/dist/esm/router/auth/webAuthnCredentialCodecs.js +0 -1
  73. package/dist/esm/router/cloudflare/d1/auth/d1AuthorizationAssembly.js +87 -0
  74. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +12 -2
  75. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +32 -281
  76. package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +24 -22
  77. package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +8 -6
  78. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +12 -13
  79. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +6 -1
  80. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +12 -2
  81. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +4 -4
  82. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
  83. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +3 -9
  84. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.js +2 -1
  85. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +89 -7
  86. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +23 -14
  87. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +9 -6
  88. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +0 -1
  89. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +0 -1
  90. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +1 -1
  91. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +0 -1
  92. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +1 -1
  93. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +1 -7
  94. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +19 -13
  95. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +0 -1
  96. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +0 -1
  97. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +2 -2
  98. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +0 -1
  99. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +44 -12
  100. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +1 -49
  101. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +19 -31
  102. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.js +85 -0
  103. package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +0 -1
  104. package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +0 -48
  105. package/dist/esm/router/cloudflare/d1/near/d1SponsoredNearAccount.js +242 -0
  106. package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +0 -1
  107. package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +2 -29
  108. package/dist/esm/router/cloudflare/d1/oidc/googleOidcToken.js +41 -0
  109. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +5 -0
  110. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +34 -0
  111. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +9 -3
  112. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +7 -13
  113. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +25 -13
  114. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +0 -1
  115. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +74 -0
  116. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +7 -1
  117. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +69 -238
  118. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +12 -56
  119. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +155 -0
  120. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +1 -3
  121. package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +12 -6
  122. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +68 -0
  123. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +7 -54
  124. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +9 -8
  125. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +2 -142
  126. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +25 -4
  127. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +4 -70
  128. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +23 -7
  129. package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +1 -0
  130. package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +1 -0
  131. package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +5 -0
  132. package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
  133. package/dist/esm/router/cloudflare/runtime/walletRuntimeOps.js +16 -4
  134. package/dist/esm/router/cloudflare-adaptor.js +1 -2
  135. package/dist/esm/router/cloudflare.js +1342 -1733
  136. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +11 -8
  137. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +3 -2
  138. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +6 -6
  139. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +6 -6
  140. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +3 -0
  141. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +8 -0
  142. package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +0 -1
  143. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +2 -8
  144. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +2 -8
  145. package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +5 -19
  146. package/dist/esm/router/domains/signingOperations/walletExecutionAdmission.js +2 -3
  147. package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +70 -0
  148. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +10 -11
  149. package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +2 -3
  150. package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +14 -0
  151. package/dist/esm/router/express.js +574 -479
  152. package/dist/esm/router/framework/http.js +2 -0
  153. package/dist/esm/router/framework/registrationSetupDispatch.js +14 -0
  154. package/dist/esm/router/framework/ror/normalize.js +0 -1
  155. package/dist/esm/router/framework/ror/options.js +0 -1
  156. package/dist/esm/router/framework/ror/provider.js +0 -1
  157. package/dist/esm/router/framework/ror/staticProvider.js +0 -1
  158. package/dist/esm/router/framework/routeDefinitions.js +1 -2
  159. package/dist/esm/router/framework/routerApiWebhooks.js +0 -1
  160. package/dist/esm/router/ror.js +0 -1
  161. package/dist/esm/router/transport/fetch/createFetchRouter.js +0 -2
  162. package/dist/esm/router/transport/fetch/routes/auth.js +2 -0
  163. package/dist/esm/router/transport/fetch/routes/deviceLinking.js +36 -147
  164. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +3 -2
  165. package/dist/esm/router/transport/fetch/routes/deviceLinkingResponses.js +130 -0
  166. package/dist/esm/router/transport/fetch/routes/ecdsaOperationStepUpFactor.js +171 -0
  167. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +1 -0
  168. package/dist/esm/router/transport/fetch/routes/syncAccount.js +7 -2
  169. package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +19 -115
  170. package/dist/esm/router/transport/fetch/routes/walletRegistration.js +3 -1
  171. package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +0 -1
  172. package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +0 -2
  173. package/dist/esm/shared-ts/src/device-linking/contracts.js +16 -1
  174. package/dist/esm/shared-ts/src/device-linking/digests.js +1 -8
  175. package/dist/esm/shared-ts/src/near/actions.js +0 -1
  176. package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
  177. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
  178. package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -6
  179. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +1 -1
  180. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +2 -81
  181. package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -219
  182. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +0 -3
  183. package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +1 -2
  184. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
  185. package/dist/esm/shared-ts/src/threshold/keyMaterialBrands.js +1 -22
  186. package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
  187. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +0 -1
  188. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +4 -13
  189. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +1 -7
  190. package/dist/esm/shared-ts/src/utils/domainIds.js +1 -16
  191. package/dist/esm/shared-ts/src/utils/ecdsaCapabilityActivation.js +1 -11
  192. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -1
  193. package/dist/esm/shared-ts/src/utils/errors.js +1 -19
  194. package/dist/esm/shared-ts/src/utils/near.js +1 -1
  195. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
  196. package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
  197. package/dist/esm/shared-ts/src/utils/registrationIntent.js +0 -1
  198. package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +8 -0
  199. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +1 -1
  200. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +0 -1
  201. package/dist/esm/shared-ts/src/utils/validation.js +1 -5
  202. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
  203. package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
  204. package/dist/esm/shared-ts/src/utils/wireSchema.js +2 -13
  205. package/dist/esm/shared-ts/src/wallet-recovery/backupAcknowledgement.js +6 -24
  206. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
  207. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +5 -6
  208. package/dist/esm/storage/d1Sql.js +1 -7
  209. package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +0 -1
  210. package/dist/esm/threshold/session/signingSessionSeal/guards/backends.js +1 -2
  211. package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +0 -1
  212. package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +0 -1
  213. package/dist/esm/threshold/session/signingSessionSeal/options.js +0 -1
  214. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
  215. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +0 -611
  216. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  217. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
  218. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
  219. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +1 -0
  220. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
  221. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +0 -11
  222. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +2 -7
  223. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
  224. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
  225. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
  226. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
  227. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -843
  228. package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
  229. package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
  230. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
  231. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
  232. package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
  233. package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
  234. package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
  235. package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
  236. package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
  237. package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
  238. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
  239. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
  240. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
  241. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
  242. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
  243. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
  244. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
  245. package/dist/types/wallet-server/src/authorization/lifecycleRouting.d.ts +32 -0
  246. package/dist/types/wallet-server/src/authorization/lifecycleRouting.typecheck.d.ts +2 -0
  247. package/dist/types/wallet-server/src/authorization/recoveryRouting.d.ts +22 -0
  248. package/dist/types/wallet-server/src/authorization/recoveryRouting.typecheck.d.ts +2 -0
  249. package/dist/types/wallet-server/src/authorization/service.d.ts +8 -1
  250. package/dist/types/wallet-server/src/authorization/sessionRouting.d.ts +20 -0
  251. package/dist/types/wallet-server/src/authorization/sessionRouting.typecheck.d.ts +2 -0
  252. package/dist/types/wallet-server/src/cloud-host.d.ts +31 -9
  253. package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +1 -22
  254. package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +1 -79
  255. package/dist/types/wallet-server/src/core/IdentityStore.d.ts +0 -10
  256. package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +0 -1
  257. package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +0 -2
  258. package/dist/types/wallet-server/src/core/ThresholdService/index.d.ts +1 -3
  259. package/dist/types/wallet-server/src/core/ThresholdService/kv.d.ts +0 -7
  260. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +0 -3
  261. package/dist/types/wallet-server/src/core/ThresholdService/routerAbNormalSigningPolicy.d.ts +0 -1
  262. package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +7 -19
  263. package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +0 -34
  264. package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +1 -5
  265. package/dist/types/wallet-server/src/core/WalletStore.d.ts +0 -3
  266. package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +0 -20
  267. package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +1 -27
  268. package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +2 -16
  269. package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +22 -14
  270. package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +0 -24
  271. package/dist/types/wallet-server/src/core/authService/emailOtpEnrollment.d.ts +1 -70
  272. package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +0 -13
  273. package/dist/types/wallet-server/src/core/authService/githubOAuth.d.ts +2 -1
  274. package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +1 -39
  275. package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +0 -17
  276. package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +0 -125
  277. package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +0 -3
  278. package/dist/types/wallet-server/src/core/authService/webauthnVerificationOutcomes.d.ts +1 -1
  279. package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +0 -12
  280. package/dist/types/wallet-server/src/core/config.d.ts +0 -10
  281. package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +0 -2
  282. package/dist/types/wallet-server/src/core/d1TenantStore.d.ts +0 -7
  283. package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +0 -1
  284. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceBootstrap.d.ts +19 -0
  285. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +8 -6
  286. package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +2 -5
  287. package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +10 -7
  288. package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +1 -5
  289. package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +0 -1
  290. package/dist/types/wallet-server/src/core/passkeyCredentialClaims.d.ts +9 -0
  291. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +0 -2
  292. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +0 -2
  293. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +1 -92
  294. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +4 -52
  295. package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +0 -1
  296. package/dist/types/wallet-server/src/core/types.d.ts +0 -299
  297. package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +15 -3
  298. package/dist/types/wallet-server/src/index.d.ts +8 -13
  299. package/dist/types/wallet-server/src/localRegistrationSetupAuthority.d.ts +13 -0
  300. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizationAssembly.d.ts +23 -0
  301. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +25 -3
  302. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +1 -1
  303. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +3 -1
  304. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +7 -1
  305. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.d.ts +1 -10
  306. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.d.ts +4 -0
  307. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +6 -0
  308. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +1 -13
  309. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.d.ts +2 -2
  310. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +1 -1
  311. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +0 -2
  312. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +18 -2
  313. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +29 -1
  314. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +3 -16
  315. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.d.ts +7 -2
  316. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.d.ts +23 -0
  317. package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityService.d.ts +0 -12
  318. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.d.ts +24 -0
  319. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.typecheck.d.ts +2 -0
  320. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcVerificationService.d.ts +0 -1
  321. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/googleOidcToken.d.ts +4 -0
  322. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +5 -0
  323. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +9 -0
  324. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +1 -1
  325. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +10 -11
  326. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +3 -2
  327. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +51 -0
  328. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +3 -0
  329. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +30 -47
  330. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +3 -30
  331. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.d.ts +11 -0
  332. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.d.ts +27 -0
  333. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +1 -10
  334. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +2 -2
  335. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +0 -4
  336. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.d.ts +3 -0
  337. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +0 -13
  338. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +23 -10
  339. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.typecheck.d.ts +2 -0
  340. package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflare.types.d.ts +0 -2
  341. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +1 -0
  342. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +2 -0
  343. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +1 -1
  344. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOps.d.ts +3 -0
  345. package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +0 -1
  346. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +1 -1
  347. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +2 -2
  348. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +2 -2
  349. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.typecheck.d.ts +2 -0
  350. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.d.ts +2 -0
  351. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.d.ts +2 -0
  352. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +0 -2
  353. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +0 -3
  354. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +0 -17
  355. package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +1 -2
  356. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +1 -0
  357. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationReservation.d.ts +51 -0
  358. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +2 -10
  359. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +2 -2
  360. package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +14 -34
  361. package/dist/types/wallet-server/src/router/framework/googleLoginResolution.typecheck.d.ts +2 -0
  362. package/dist/types/wallet-server/src/router/framework/registrationSetupDispatch.d.ts +13 -0
  363. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +1 -1
  364. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingResponses.d.ts +17 -0
  365. package/dist/types/wallet-server/src/router/transport/fetch/routes/ecdsaOperationStepUpFactor.d.ts +37 -0
  366. package/dist/types/wallet-server/src/storage/d1Sql.d.ts +0 -1
  367. package/migrations/d1-signer/0040_namespace_home_challenges.sql +16 -0
  368. package/migrations/d1-signer/0041_step_up_admission_expiry.sql +28 -0
  369. package/migrations/d1-signer/0042_deployment_resource_challenges.sql +4 -0
  370. package/migrations/d1-signer/0043_google_registration_candidate_claim.sql +2 -0
  371. package/migrations/d1-signer/0044_linked_device_bootstrap_imports.sql +6 -0
  372. package/migrations/d1-signer/0045_wallet_owned_capability_receipts.sql +29 -0
  373. package/migrations/d1-signer/0046_wallet_owned_signing_abuse.sql +41 -0
  374. package/migrations/d1-signer/0047_remove_unused_near_public_keys.sql +2 -0
  375. package/migrations/d1-signer/0048_operation_owner_scope.sql +45 -0
  376. package/package.json +2 -3
  377. package/src/README.md +11 -3
  378. package/dist/esm/core/AuthService.js +0 -2
  379. package/dist/esm/core/NearPublicKeyStore.js +0 -200
  380. package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +0 -397
  381. package/dist/esm/core/ThresholdService/stores/KeyStore.js +0 -140
  382. package/dist/esm/core/ThresholdService/stores/SessionStore.js +0 -361
  383. package/dist/esm/core/ThresholdService/stores/StoreConfig.js +0 -13
  384. package/dist/esm/core/ThresholdService/stores/exportReplayGuard.js +0 -7
  385. package/dist/esm/core/authService/AuthService.js +0 -594
  386. package/dist/esm/core/authService/bytes.js +0 -19
  387. package/dist/esm/core/authService/configValues.js +0 -15
  388. package/dist/esm/core/authService/emailOtpChallengeOperations.js +0 -123
  389. package/dist/esm/core/authService/emailOtpChallengeProof.js +0 -183
  390. package/dist/esm/core/authService/emailOtpChallengeVerification.js +0 -264
  391. package/dist/esm/core/authService/emailOtpChallenges.js +0 -225
  392. package/dist/esm/core/authService/emailOtpDelivery.js +0 -134
  393. package/dist/esm/core/authService/emailOtpGrant.js +0 -43
  394. package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +0 -144
  395. package/dist/esm/core/authService/emailOtpUnlock.js +0 -174
  396. package/dist/esm/core/authService/googleEmailOtpOperations.js +0 -141
  397. package/dist/esm/core/authService/googleEmailOtpRegistration.js +0 -587
  398. package/dist/esm/core/authService/identity.js +0 -42
  399. package/dist/esm/core/authService/identityOperations.js +0 -32
  400. package/dist/esm/core/authService/nearAccountOperations.js +0 -229
  401. package/dist/esm/core/authService/nearPublicKeyMetadata.js +0 -108
  402. package/dist/esm/core/authService/oidcVerification.js +0 -249
  403. package/dist/esm/core/authService/registrationThresholdHelpers.js +0 -30
  404. package/dist/esm/core/authService/runtime.js +0 -45
  405. package/dist/esm/core/authService/storeRegistry.js +0 -102
  406. package/dist/esm/core/authService/thresholdStoreSummary.js +0 -32
  407. package/dist/esm/core/authService/webauthnAuthority.js +0 -17
  408. package/dist/esm/core/defaultConfigsServer.js +0 -9
  409. package/dist/esm/core/hostedAccountIds.js +0 -225
  410. package/dist/esm/core/routerAbSigning/createRouterAbSigningRuntimes.js +0 -84
  411. package/dist/esm/core/signingLanes/LaneAggregateRevocationApplicationService.js +0 -86
  412. package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +0 -324
  413. package/dist/esm/core/signingLanes/LaneEnrollmentRevocation.js +0 -173
  414. package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +0 -198
  415. package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +0 -73
  416. package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +0 -68
  417. package/dist/esm/core/signingLanes/signingWorkerLaneMaterialIdentity.js +0 -0
  418. package/dist/esm/core/storeBackends.js +0 -208
  419. package/dist/esm/core/utils.js +0 -14
  420. package/dist/esm/core/webAuthnStoreBackends.js +0 -198
  421. package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +0 -49
  422. package/dist/esm/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.js +0 -10
  423. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.js +0 -22
  424. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +0 -166
  425. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.js +0 -38
  426. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.js +0 -20
  427. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +0 -1459
  428. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLockStore.js +0 -114
  429. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.js +0 -16
  430. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +0 -171
  431. package/dist/esm/router/cloudflare/d1/signingLanes/index.js +0 -10
  432. package/dist/esm/router/cloudflare/durableObjects/thresholdStore.js +0 -397
  433. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +0 -597
  434. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +0 -273
  435. package/dist/esm/router/cloudflare/signingLanes/index.js +0 -4
  436. package/dist/esm/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.js +0 -32
  437. package/dist/esm/router/transport/fetch/routes/nearPublicKeys.js +0 -27
  438. package/dist/esm/shared-ts/src/signing-lanes/rotation.js +0 -8
  439. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -358
  440. package/dist/esm/shared-ts/src/signing-lanes/rotationLifecycle.js +0 -313
  441. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -532
  442. package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -323
  443. package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -59
  444. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
  445. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
  446. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
  447. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
  448. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
  449. package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
  450. package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
  451. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
  452. package/dist/types/wallet-server/src/core/AuthService.d.ts +0 -3
  453. package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +0 -48
  454. package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +0 -21
  455. package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +0 -40
  456. package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +0 -98
  457. package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +0 -4
  458. package/dist/types/wallet-server/src/core/ThresholdService/stores/ThresholdStoreConfig.typecheck.d.ts +0 -2
  459. package/dist/types/wallet-server/src/core/ThresholdService/stores/exportReplayGuard.d.ts +0 -3
  460. package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +0 -490
  461. package/dist/types/wallet-server/src/core/authService/bytes.d.ts +0 -3
  462. package/dist/types/wallet-server/src/core/authService/configValues.d.ts +0 -7
  463. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +0 -109
  464. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +0 -169
  465. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +0 -47
  466. package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +0 -86
  467. package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +0 -66
  468. package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +0 -43
  469. package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +0 -49
  470. package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +0 -64
  471. package/dist/types/wallet-server/src/core/authService/googleEmailOtpOperations.d.ts +0 -126
  472. package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +0 -169
  473. package/dist/types/wallet-server/src/core/authService/identity.d.ts +0 -25
  474. package/dist/types/wallet-server/src/core/authService/identityOperations.d.ts +0 -19
  475. package/dist/types/wallet-server/src/core/authService/nearAccountOperations.d.ts +0 -55
  476. package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +0 -44
  477. package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +0 -66
  478. package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +0 -11
  479. package/dist/types/wallet-server/src/core/authService/runtime.d.ts +0 -20
  480. package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +0 -53
  481. package/dist/types/wallet-server/src/core/authService/thresholdStoreSummary.d.ts +0 -3
  482. package/dist/types/wallet-server/src/core/authService/webauthnAuthority.d.ts +0 -5
  483. package/dist/types/wallet-server/src/core/defaultConfigsServer.d.ts +0 -5
  484. package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +0 -16
  485. package/dist/types/wallet-server/src/core/routerAbSigning/createRouterAbSigningRuntimes.d.ts +0 -16
  486. package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +0 -36
  487. package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +0 -62
  488. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentActivation.d.ts +0 -13
  489. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentRevocation.d.ts +0 -24
  490. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleApplicationService.d.ts +0 -141
  491. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +0 -228
  492. package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +0 -58
  493. package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +0 -30
  494. package/dist/types/wallet-server/src/core/signingLanes/signingWorkerLaneMaterialIdentity.d.ts +0 -4
  495. package/dist/types/wallet-server/src/core/storeBackends.d.ts +0 -83
  496. package/dist/types/wallet-server/src/core/utils.d.ts +0 -3
  497. package/dist/types/wallet-server/src/core/webAuthnStoreBackends.d.ts +0 -96
  498. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +0 -29
  499. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.d.ts +0 -4
  500. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.d.ts +0 -4
  501. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +0 -24
  502. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.d.ts +0 -20
  503. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.d.ts +0 -13
  504. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.d.ts +0 -51
  505. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLockStore.d.ts +0 -28
  506. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.d.ts +0 -5
  507. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneRecords.d.ts +0 -107
  508. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/index.d.ts +0 -10
  509. package/dist/types/wallet-server/src/router/cloudflare/durableObjects/thresholdStore.d.ts +0 -18
  510. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.d.ts +0 -217
  511. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.d.ts +0 -73
  512. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/index.d.ts +0 -4
  513. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.d.ts +0 -6
  514. package/dist/types/wallet-server/src/router/transport/fetch/routes/nearPublicKeys.d.ts +0 -3
  515. /package/dist/esm/{core/signingLanes/LaneEffectJournalStore.js → authorization/recoveryRouting.js} +0 -0
  516. /package/dist/esm/{core/signingLanes/LaneLifecycleStore.js → authorization/sessionRouting.js} +0 -0
@@ -1,587 +0,0 @@
1
- import { parseGoogleProviderSubject, parseOrgId, parseVerifiedGoogleEmail } from "../../shared-ts/src/utils/domainIds.js";
2
- import { normalizeOptionalTrimmedString } from "../../shared-ts/src/utils/normalize.js";
3
- import "../../shared-ts/src/utils/validation.js";
4
- import { failure } from "../../shared-ts/src/utils/failure.js";
5
- import { GOOGLE_EMAIL_OTP_STALE_IDENTITY_MESSAGE } from "./googleEmailOtpErrors.js";
6
- import { randomBase64Url } from "./bytes.js";
7
- import { readActiveEmailOtpEnrollmentWithStore } from "./emailOtpEnrollment.js";
8
- //#region src/core/authService/googleEmailOtpRegistration.ts
9
- async function cleanupGoogleEmailOtpRegistrationAttemptsWithStore(input) {
10
- await input.registrationAttemptStore.deleteExpired(input.nowMs);
11
- }
12
- async function consumeGoogleEmailOtpRegistrationAttemptRateLimitWithDeps(input) {
13
- if (normalizeOptionalTrimmedString(input.request.accountMode)?.toLowerCase() !== "register") return { ok: true };
14
- const providerSubject = parseGoogleProviderSubject(input.request.providerSubject);
15
- if (!providerSubject.ok) return failure("invalid_body", providerSubject.error.message);
16
- const email = parseVerifiedGoogleEmail(input.request.email);
17
- if (!email.ok) return failure("invalid_body", email.error.message);
18
- const orgId = parseOrgId(input.request.runtimePolicyScope?.orgId);
19
- if (!orgId.ok) return failure("invalid_body", orgId.error.message);
20
- const restartOffer = isTruthyBoundaryFlag(input.request.restartRegistrationOffer);
21
- return await input.consumeRateLimit({
22
- scope: "googleRegistrationAttempt",
23
- action: restartOffer ? "google_email_otp_registration_offer_restart" : "google_email_otp_registration_create",
24
- userId: normalizeOptionalTrimmedString(input.request.providerUserId),
25
- providerSubject: providerSubject.value,
26
- orgId: orgId.value,
27
- clientIp: normalizeOptionalTrimmedString(input.request.clientIp)
28
- });
29
- }
30
- async function resolveGoogleEmailOtpSessionWithDeps(input) {
31
- const providerSubject = normalizeOptionalTrimmedString(input.request.providerSubject ?? input.request.sub);
32
- if (!providerSubject || !providerSubject.startsWith("google:")) throw new Error("Cannot resolve Google Email OTP session without Google provider subject");
33
- const accountMode = normalizeOptionalTrimmedString(input.request.accountMode)?.toLowerCase();
34
- if (accountMode !== "register" && accountMode !== "login") throw new Error("Google Email OTP accountMode must be register or login");
35
- const email = normalizeOptionalTrimmedString(input.request.email)?.toLowerCase() || "";
36
- const orgId = normalizeOptionalTrimmedString(input.request.runtimePolicyScope?.orgId) || "";
37
- if (!orgId) throw new Error("Google Email OTP requires orgId tenant scope");
38
- const ownerProofBindingDigest = normalizeOptionalTrimmedString(input.request.ownerProofBindingDigest);
39
- if (accountMode === "register" && !ownerProofBindingDigest) throw new Error("Google Email OTP registration requires ownerProofBindingDigest");
40
- if (accountMode === "login") return await resolveGoogleEmailOtpLoginSession({
41
- request: {
42
- providerSubject,
43
- email,
44
- orgId
45
- },
46
- identityStore: input.identityStore,
47
- walletEnrollmentStore: input.walletEnrollmentStore,
48
- isHostedHmacReadableWalletId: input.isHostedHmacReadableWalletId
49
- });
50
- return await resolveGoogleEmailOtpRegistrationSession({
51
- request: {
52
- providerSubject,
53
- email,
54
- orgId,
55
- ownerProofBindingDigest,
56
- runtimePolicyScope: input.request.runtimePolicyScope,
57
- restartRegistrationOffer: isTruthyBoundaryFlag(input.request.restartRegistrationOffer)
58
- },
59
- identityStore: input.identityStore,
60
- registrationAttemptStore: input.registrationAttemptStore,
61
- walletEnrollmentStore: input.walletEnrollmentStore,
62
- deriveHostedWalletId: input.deriveHostedWalletId,
63
- isHostedHmacReadableWalletId: input.isHostedHmacReadableWalletId
64
- });
65
- }
66
- async function completeGoogleEmailOtpRegistrationAttemptWithStore(input) {
67
- const registrationAttemptId = normalizeOptionalTrimmedString(input.registrationAttemptId);
68
- if (!registrationAttemptId) return { ok: true };
69
- const walletId = normalizeOptionalTrimmedString(input.walletId);
70
- const attempt = await input.registrationAttemptStore.get(registrationAttemptId);
71
- if (!attempt) return failure("registration_incomplete", "Google Email OTP registration attempt expired or was not found");
72
- if (attempt.expiresAtMs <= input.nowMs) {
73
- await input.registrationAttemptStore.put({
74
- ...attempt,
75
- state: "expired",
76
- updatedAtMs: input.nowMs
77
- });
78
- return failure("registration_incomplete", "Google Email OTP registration attempt expired");
79
- }
80
- if (walletId !== attempt.walletId) return failure("wallet_identity_mismatch", "registrationAttemptId does not match walletId");
81
- if (attempt.state === "active") return { ok: true };
82
- if (attempt.state !== "started" && attempt.state !== "key_finalized") return failure("registration_incomplete", "Google Email OTP registration attempt is no longer active");
83
- const linked = await input.identityStore.linkSubjectToUserId({
84
- userId: attempt.walletId,
85
- subject: `wallet:${attempt.providerSubject}`,
86
- allowMoveIfSoleIdentity: true
87
- });
88
- if (!linked.ok) {
89
- await input.registrationAttemptStore.put({
90
- ...attempt,
91
- state: "failed",
92
- failureCode: linked.code,
93
- updatedAtMs: input.nowMs
94
- });
95
- return failure(linked.code, linked.message);
96
- }
97
- await input.registrationAttemptStore.put({
98
- ...attempt,
99
- state: "active",
100
- updatedAtMs: input.nowMs
101
- });
102
- return { ok: true };
103
- }
104
- async function validateGoogleEmailOtpRegistrationCandidateWalletWithStore(input) {
105
- const registrationAttemptId = normalizeOptionalTrimmedString(input.registrationAttemptId);
106
- const walletId = normalizeOptionalTrimmedString(input.walletId);
107
- const ownerProofBindingDigest = normalizeOptionalTrimmedString(input.ownerProofBindingDigest);
108
- const providerSubject = normalizeOptionalTrimmedString(input.providerSubject);
109
- if (!registrationAttemptId || !walletId || !ownerProofBindingDigest || !providerSubject) return failure("invalid_body", "Google Email OTP registration candidate validation requires signed session scope");
110
- const attempt = await input.registrationAttemptStore.get(registrationAttemptId);
111
- if (!attempt) return failure("registration_attempt_missing", "Google Email OTP registration attempt expired or was not found");
112
- if (attempt.expiresAtMs <= input.nowMs) {
113
- await input.registrationAttemptStore.put({
114
- ...attempt,
115
- state: "expired",
116
- updatedAtMs: input.nowMs
117
- });
118
- return failure("registration_attempt_expired", "Google Email OTP registration attempt expired");
119
- }
120
- if (attempt.providerSubject !== providerSubject) return failure("challenge_subject_mismatch", "Email OTP registration attempt does not match the provider subject");
121
- if (attempt.ownerProofBindingDigest !== ownerProofBindingDigest) return failure("owner_proof_binding_mismatch", "Google Email OTP registration attempt does not match the owner proof binding");
122
- if (attempt.state !== "started" && attempt.state !== "key_finalized") return failure("registration_incomplete", "Google Email OTP registration attempt is no longer active");
123
- if (!findGoogleEmailOtpOfferCandidateByWalletId({
124
- candidates: attempt.offerCandidates,
125
- walletId
126
- })) return failure("wallet_identity_mismatch", "walletId is not an active Google Email OTP registration candidate");
127
- return { ok: true };
128
- }
129
- async function recordGoogleEmailOtpRegistrationAttemptPublicKeyWithStore(input) {
130
- const registrationAttemptId = normalizeOptionalTrimmedString(input.registrationAttemptId);
131
- if (!registrationAttemptId) return { ok: true };
132
- const walletId = normalizeOptionalTrimmedString(input.walletId);
133
- const finalizedPublicKey = normalizeOptionalTrimmedString(input.finalizedPublicKey);
134
- const attempt = await input.registrationAttemptStore.get(registrationAttemptId);
135
- if (!attempt) return failure("registration_incomplete", "Google Email OTP registration attempt expired or was not found");
136
- if (attempt.expiresAtMs <= input.nowMs) {
137
- await input.registrationAttemptStore.put({
138
- ...attempt,
139
- state: "expired",
140
- updatedAtMs: input.nowMs
141
- });
142
- return failure("registration_incomplete", "Google Email OTP registration attempt expired");
143
- }
144
- if (walletId !== attempt.walletId) return failure("wallet_identity_mismatch", "registrationAttemptId does not match walletId");
145
- if (attempt.state !== "started" && attempt.state !== "key_finalized" && attempt.state !== "active") return failure("registration_incomplete", "Google Email OTP registration attempt is no longer active");
146
- if (attempt.state === "started") {
147
- if (!finalizedPublicKey) await input.registrationAttemptStore.put({
148
- ...attempt,
149
- updatedAtMs: input.nowMs
150
- });
151
- else await input.registrationAttemptStore.put({
152
- ...attempt,
153
- state: "key_finalized",
154
- finalizedPublicKey,
155
- updatedAtMs: input.nowMs
156
- });
157
- return { ok: true };
158
- }
159
- await input.registrationAttemptStore.put({
160
- ...attempt,
161
- ...finalizedPublicKey ? { finalizedPublicKey } : {},
162
- updatedAtMs: input.nowMs
163
- });
164
- return { ok: true };
165
- }
166
- async function failGoogleEmailOtpRegistrationAttemptWithStore(input) {
167
- const registrationAttemptId = normalizeOptionalTrimmedString(input.registrationAttemptId);
168
- if (!registrationAttemptId) return;
169
- const attempt = await input.registrationAttemptStore.get(registrationAttemptId);
170
- if (!attempt) return;
171
- const walletId = normalizeOptionalTrimmedString(input.walletId);
172
- if (walletId && walletId !== attempt.walletId) return;
173
- await input.registrationAttemptStore.put({
174
- ...attempt,
175
- state: "failed",
176
- failureCode: normalizeOptionalTrimmedString(input.failureCode) || "failed",
177
- updatedAtMs: input.nowMs
178
- });
179
- }
180
- async function cleanupGoogleEmailOtpDevRegistrationStateWithStores(input) {
181
- if (input.isProductionEnvironment) return failure("not_found", "Google Email OTP dev cleanup is not available");
182
- const providerSubject = normalizeOptionalTrimmedString(input.providerSubject);
183
- if (!providerSubject || !providerSubject.startsWith("google:")) return failure("invalid_body", "Missing Google provider subject");
184
- const requestedWalletId = normalizeOptionalTrimmedString(input.walletId);
185
- const requestedOrgId = normalizeOptionalTrimmedString(input.orgId);
186
- const nowMsRaw = typeof input.nowMs === "number" ? input.nowMs : Number(input.nowMs);
187
- const nowMs = Number.isFinite(nowMsRaw) && nowMsRaw > 0 ? Math.floor(nowMsRaw) : Date.now();
188
- const expiredRegistrationAttemptsDeleted = await input.registrationAttemptStore.deleteExpired(nowMs);
189
- const subject = `wallet:${providerSubject}`;
190
- const linkedWalletId = await input.identityStore.getUserIdBySubject(subject);
191
- if (!linkedWalletId) return {
192
- ok: true,
193
- providerSubject,
194
- expiredRegistrationAttemptsDeleted,
195
- orphanedWalletMappingRemoved: false,
196
- orphanedWalletMappingSkippedReason: "no_linked_wallet"
197
- };
198
- if (requestedWalletId && requestedWalletId !== linkedWalletId) return {
199
- ok: true,
200
- providerSubject,
201
- expiredRegistrationAttemptsDeleted,
202
- linkedWalletId,
203
- orphanedWalletMappingRemoved: false,
204
- orphanedWalletMappingSkippedReason: "wallet_id_mismatch"
205
- };
206
- if (!input.isHostedHmacReadableWalletId(linkedWalletId)) return {
207
- ok: true,
208
- providerSubject,
209
- expiredRegistrationAttemptsDeleted,
210
- linkedWalletId,
211
- orphanedWalletMappingRemoved: false,
212
- orphanedWalletMappingSkippedReason: "not_relayer_subaccount"
213
- };
214
- const activeEnrollment = await input.walletEnrollmentStore.get(linkedWalletId);
215
- if (activeEnrollment) {
216
- const enrollmentMatchesProvider = activeEnrollment.providerUserId === providerSubject;
217
- const enrollmentMatchesOrg = !requestedOrgId || activeEnrollment.orgId === requestedOrgId;
218
- if (enrollmentMatchesProvider && enrollmentMatchesOrg) return {
219
- ok: true,
220
- providerSubject,
221
- expiredRegistrationAttemptsDeleted,
222
- linkedWalletId,
223
- orphanedWalletMappingRemoved: false,
224
- orphanedWalletMappingSkippedReason: "active_email_otp_enrollment"
225
- };
226
- }
227
- const deleted = await input.identityStore.deleteSubjectLinkForDevCleanup({
228
- userId: linkedWalletId,
229
- subject
230
- });
231
- if (!deleted.ok && deleted.code !== "not_found") return deleted;
232
- return {
233
- ok: true,
234
- providerSubject,
235
- expiredRegistrationAttemptsDeleted,
236
- linkedWalletId,
237
- orphanedWalletMappingRemoved: deleted.ok
238
- };
239
- }
240
- async function resolveGoogleEmailOtpLoginSession(input) {
241
- const wallet = `wallet:${input.request.providerSubject}`;
242
- const linkedWalletId = await input.identityStore.getUserIdBySubject(wallet);
243
- const hostedLinkedWalletId = linkedWalletId && input.isHostedHmacReadableWalletId(linkedWalletId) ? linkedWalletId : null;
244
- if (hostedLinkedWalletId) {
245
- const enrollment = await readActiveEmailOtpEnrollmentWithStore({
246
- walletEnrollmentStore: input.walletEnrollmentStore,
247
- request: {
248
- walletId: hostedLinkedWalletId,
249
- orgId: input.request.orgId,
250
- providerUserId: input.request.providerSubject
251
- }
252
- });
253
- if (enrollment.ok) return {
254
- ok: true,
255
- mode: "existing_wallet",
256
- walletId: hostedLinkedWalletId,
257
- providerSubject: input.request.providerSubject,
258
- email: enrollment.enrollment.verifiedEmail,
259
- hasEmailOtpEnrollment: true
260
- };
261
- if (!isGoogleEmailOtpEnrollmentLookupMiss(enrollment.code)) {
262
- const error = new Error(enrollment.message);
263
- error.code = enrollment.code;
264
- throw error;
265
- }
266
- }
267
- const discovered = await getGoogleEmailOtpEnrollmentBySubject({
268
- walletEnrollmentStore: input.walletEnrollmentStore,
269
- providerSubject: input.request.providerSubject,
270
- orgId: input.request.orgId,
271
- isHostedHmacReadableWalletId: input.isHostedHmacReadableWalletId
272
- });
273
- if (!discovered) {
274
- if (linkedWalletId) {
275
- const stale = googleEmailOtpStaleIdentityMapping({
276
- providerSubject: input.request.providerSubject,
277
- linkedWalletId,
278
- ...input.request.email ? { email: input.request.email } : {}
279
- });
280
- const error = new Error(stale.message);
281
- error.code = stale.code;
282
- throw error;
283
- }
284
- const error = /* @__PURE__ */ new Error("Email OTP enrollment not found");
285
- error.code = "not_found";
286
- throw error;
287
- }
288
- const repaired = await repairGoogleEmailOtpWalletLink({
289
- identityStore: input.identityStore,
290
- providerSubject: input.request.providerSubject,
291
- walletId: discovered.walletId
292
- });
293
- if (!repaired.ok) {
294
- const error = new Error(repaired.message);
295
- error.code = repaired.code;
296
- throw error;
297
- }
298
- return {
299
- ok: true,
300
- mode: "existing_wallet",
301
- walletId: discovered.walletId,
302
- providerSubject: input.request.providerSubject,
303
- email: discovered.verifiedEmail,
304
- hasEmailOtpEnrollment: true
305
- };
306
- }
307
- async function resolveGoogleEmailOtpRegistrationSession(input) {
308
- if (!input.request.email) throw new Error("Email is required to register a Google Email OTP wallet id");
309
- const discoveredExistingEnrollment = await getGoogleEmailOtpEnrollmentBySubject({
310
- walletEnrollmentStore: input.walletEnrollmentStore,
311
- providerSubject: input.request.providerSubject,
312
- orgId: input.request.orgId,
313
- isHostedHmacReadableWalletId: input.isHostedHmacReadableWalletId
314
- });
315
- if (discoveredExistingEnrollment && !input.request.restartRegistrationOffer) return await resolveRegistrationForExistingEnrollment({
316
- identityStore: input.identityStore,
317
- providerSubject: input.request.providerSubject,
318
- email: input.request.email,
319
- enrollment: discoveredExistingEnrollment
320
- });
321
- const wallet = `wallet:${input.request.providerSubject}`;
322
- const linkedWalletId = await input.identityStore.getUserIdBySubject(wallet);
323
- if (linkedWalletId && !input.request.restartRegistrationOffer) return googleEmailOtpStaleIdentityMapping({
324
- providerSubject: input.request.providerSubject,
325
- linkedWalletId,
326
- email: input.request.email
327
- });
328
- const now = Date.now();
329
- await input.registrationAttemptStore.abandonStartedBySubjectEmailExceptBinding({
330
- providerSubject: input.request.providerSubject,
331
- email: input.request.email,
332
- orgId: input.request.orgId,
333
- ownerProofBindingDigest: input.request.ownerProofBindingDigest,
334
- ...input.request.runtimePolicyScope ? { runtimePolicyScope: input.request.runtimePolicyScope } : {},
335
- nowMs: now,
336
- failureCode: "owner_proof_binding_replaced"
337
- });
338
- const startedAttempt = await findStartedGoogleEmailOtpRegistrationAttempt({
339
- registrationAttemptStore: input.registrationAttemptStore,
340
- providerSubject: input.request.providerSubject,
341
- email: input.request.email,
342
- orgId: input.request.orgId,
343
- ownerProofBindingDigest: input.request.ownerProofBindingDigest,
344
- runtimePolicyScope: input.request.runtimePolicyScope,
345
- isHostedHmacReadableWalletId: input.isHostedHmacReadableWalletId
346
- });
347
- if (startedAttempt) if (input.request.restartRegistrationOffer) await input.registrationAttemptStore.put({
348
- ...startedAttempt,
349
- state: "abandoned",
350
- failureCode: "offer_restarted_by_user",
351
- updatedAtMs: Date.now()
352
- });
353
- else return registrationAttemptStartedResponse({
354
- attempt: startedAttempt,
355
- providerSubject: input.request.providerSubject,
356
- email: input.request.email
357
- });
358
- return await createGoogleEmailOtpRegistrationOffer({
359
- request: input.request,
360
- identityStore: input.identityStore,
361
- registrationAttemptStore: input.registrationAttemptStore,
362
- walletEnrollmentStore: input.walletEnrollmentStore,
363
- deriveHostedWalletId: input.deriveHostedWalletId
364
- });
365
- }
366
- async function resolveRegistrationForExistingEnrollment(input) {
367
- const repaired = await repairGoogleEmailOtpWalletLink({
368
- identityStore: input.identityStore,
369
- providerSubject: input.providerSubject,
370
- walletId: input.enrollment.walletId
371
- });
372
- if (!repaired.ok) return {
373
- ok: false,
374
- mode: "registration_incomplete",
375
- code: "registration_incomplete",
376
- walletId: input.enrollment.walletId,
377
- providerSubject: input.providerSubject,
378
- email: input.email,
379
- message: repaired.message
380
- };
381
- return {
382
- ok: true,
383
- mode: "existing_wallet",
384
- walletId: input.enrollment.walletId,
385
- providerSubject: input.providerSubject,
386
- email: input.email,
387
- hasEmailOtpEnrollment: true
388
- };
389
- }
390
- async function createGoogleEmailOtpRegistrationOffer(input) {
391
- const nowMs = Date.now();
392
- const authProvider = "google_oidc";
393
- const walletIdDerivationNonce = randomBase64Url(18);
394
- const offerCandidates = [];
395
- for (let attempt = 0; attempt < 30 && offerCandidates.length < 5; attempt += 1) {
396
- const candidate = await input.deriveHostedWalletId({
397
- providerSubject: input.request.providerSubject,
398
- email: input.request.email,
399
- authProvider,
400
- walletIdDerivationNonce,
401
- ...input.request.runtimePolicyScope ? { runtimePolicyScope: input.request.runtimePolicyScope } : {},
402
- ...attempt ? { collisionCounter: attempt } : {}
403
- });
404
- const inUseByLiveAttempt = await input.registrationAttemptStore.hasLiveStartedWalletAttempt({
405
- walletId: candidate,
406
- nowMs
407
- });
408
- if (await input.walletEnrollmentStore.get(candidate) || inUseByLiveAttempt) continue;
409
- if (hasDifferentWalletIdentityLink(await input.identityStore.listSubjectsByUserId(candidate), `wallet:${input.request.providerSubject}`)) continue;
410
- offerCandidates.push({
411
- candidateId: randomBase64Url(18),
412
- walletId: candidate,
413
- collisionCounter: attempt
414
- });
415
- }
416
- const [selectedCandidate, ...remainingOfferCandidates] = offerCandidates;
417
- if (!selectedCandidate) return {
418
- ok: false,
419
- mode: "registration_incomplete",
420
- code: "registration_incomplete",
421
- providerSubject: input.request.providerSubject,
422
- email: input.request.email,
423
- message: "Unable to allocate a fresh Google Email OTP registration attempt"
424
- };
425
- const nonEmptyOfferCandidates = [selectedCandidate, ...remainingOfferCandidates];
426
- const walletId = selectedCandidate.walletId;
427
- const offerId = randomBase64Url(18);
428
- return registrationAttemptStartedResponse({
429
- attempt: await createGoogleEmailOtpRegistrationAttempt({
430
- registrationAttemptStore: input.registrationAttemptStore,
431
- providerSubject: input.request.providerSubject,
432
- email: input.request.email,
433
- walletId,
434
- offerId,
435
- offerCandidates: nonEmptyOfferCandidates,
436
- selectedCandidateId: selectedCandidate.candidateId,
437
- ownerProofBindingDigest: input.request.ownerProofBindingDigest,
438
- authProvider,
439
- walletIdDerivationNonce,
440
- collisionCounter: selectedCandidate.collisionCounter,
441
- runtimePolicyScope: input.request.runtimePolicyScope
442
- }),
443
- providerSubject: input.request.providerSubject,
444
- email: input.request.email
445
- });
446
- }
447
- async function createGoogleEmailOtpRegistrationAttempt(input) {
448
- const now = Date.now();
449
- await cleanupGoogleEmailOtpRegistrationAttemptsWithStore({
450
- registrationAttemptStore: input.registrationAttemptStore,
451
- nowMs: now
452
- });
453
- const attempt = {
454
- version: "google_email_otp_registration_attempt_v1",
455
- attemptId: randomBase64Url(18),
456
- providerSubject: input.providerSubject,
457
- email: input.email,
458
- walletId: input.walletId,
459
- offerId: input.offerId,
460
- offerCandidates: input.offerCandidates,
461
- selectedCandidateId: input.selectedCandidateId,
462
- ownerProofBindingDigest: input.ownerProofBindingDigest,
463
- authProvider: input.authProvider,
464
- accountIdSlugVersion: "hmac_readable_v1",
465
- walletIdDerivationNonce: input.walletIdDerivationNonce,
466
- collisionCounter: input.collisionCounter,
467
- state: "started",
468
- createdAtMs: now,
469
- updatedAtMs: now,
470
- expiresAtMs: now + 1800 * 1e3,
471
- ...input.runtimePolicyScope ? { runtimePolicyScope: input.runtimePolicyScope } : {}
472
- };
473
- await input.registrationAttemptStore.put(attempt);
474
- return attempt;
475
- }
476
- async function findStartedGoogleEmailOtpRegistrationAttempt(input) {
477
- const now = Date.now();
478
- await cleanupGoogleEmailOtpRegistrationAttemptsWithStore({
479
- registrationAttemptStore: input.registrationAttemptStore,
480
- nowMs: now
481
- });
482
- const attempt = await input.registrationAttemptStore.findStartedBySubjectEmail({
483
- providerSubject: input.providerSubject,
484
- email: input.email,
485
- orgId: input.orgId,
486
- ownerProofBindingDigest: input.ownerProofBindingDigest,
487
- ...input.runtimePolicyScope ? { runtimePolicyScope: input.runtimePolicyScope } : {},
488
- nowMs: now
489
- });
490
- if (!attempt) return null;
491
- if (!input.isHostedHmacReadableWalletId(attempt.walletId)) {
492
- await input.registrationAttemptStore.put({
493
- ...attempt,
494
- state: "failed",
495
- failureCode: "non_hmac_readable_wallet_id",
496
- updatedAtMs: now
497
- });
498
- return null;
499
- }
500
- const refreshedAttempt = {
501
- ...attempt,
502
- updatedAtMs: now
503
- };
504
- await input.registrationAttemptStore.put(refreshedAttempt);
505
- return refreshedAttempt;
506
- }
507
- async function getGoogleEmailOtpEnrollmentBySubject(input) {
508
- const providerSubject = normalizeOptionalTrimmedString(input.providerSubject);
509
- const orgId = normalizeOptionalTrimmedString(input.orgId);
510
- if (!providerSubject || !orgId) return null;
511
- const enrollment = await input.walletEnrollmentStore.getByProviderUserId({
512
- providerUserId: providerSubject,
513
- orgId
514
- });
515
- if (!enrollment || enrollment.providerUserId !== providerSubject || enrollment.orgId !== orgId || !input.isHostedHmacReadableWalletId(enrollment.walletId)) return null;
516
- return enrollment;
517
- }
518
- async function repairGoogleEmailOtpWalletLink(input) {
519
- const linked = await input.identityStore.linkSubjectToUserId({
520
- userId: input.walletId,
521
- subject: `wallet:${input.providerSubject}`,
522
- allowMoveIfSoleIdentity: true
523
- });
524
- if (!linked.ok) return failure(linked.code, linked.message);
525
- return { ok: true };
526
- }
527
- function isGoogleEmailOtpEnrollmentLookupMiss(code) {
528
- return code === "not_found" || code === "provider_identity_mismatch" || code === "tenant_scope_mismatch";
529
- }
530
- function googleEmailOtpStaleIdentityMapping(input) {
531
- return {
532
- ok: false,
533
- mode: "stale_identity_mapping",
534
- code: "stale_identity_mapping",
535
- walletId: input.linkedWalletId,
536
- providerSubject: input.providerSubject,
537
- ...input.email ? { email: input.email } : {},
538
- message: GOOGLE_EMAIL_OTP_STALE_IDENTITY_MESSAGE
539
- };
540
- }
541
- function registrationAttemptStartedResponse(input) {
542
- return {
543
- ok: true,
544
- mode: "register_started",
545
- walletId: input.attempt.walletId,
546
- providerSubject: input.providerSubject,
547
- email: input.email,
548
- registrationAttemptId: input.attempt.attemptId,
549
- expiresAtMs: input.attempt.expiresAtMs,
550
- offer: googleEmailOtpRegistrationOfferResponse(input.attempt)
551
- };
552
- }
553
- function googleEmailOtpRegistrationOfferResponse(attempt) {
554
- const [firstOfferCandidate, ...remainingOfferCandidates] = attempt.offerCandidates;
555
- const remainingCandidates = googleEmailOtpRegistrationOfferCandidateResponses(remainingOfferCandidates);
556
- return {
557
- offerId: attempt.offerId,
558
- selectedCandidateId: attempt.selectedCandidateId,
559
- candidates: [googleEmailOtpRegistrationOfferCandidateResponse(firstOfferCandidate), ...remainingCandidates]
560
- };
561
- }
562
- function googleEmailOtpRegistrationOfferCandidateResponses(candidates) {
563
- const out = [];
564
- for (const candidate of candidates) out.push(googleEmailOtpRegistrationOfferCandidateResponse(candidate));
565
- return out;
566
- }
567
- function googleEmailOtpRegistrationOfferCandidateResponse(candidate) {
568
- return {
569
- candidateId: candidate.candidateId,
570
- walletId: candidate.walletId
571
- };
572
- }
573
- function findGoogleEmailOtpOfferCandidateByWalletId(input) {
574
- for (const candidate of input.candidates) if (candidate.walletId === input.walletId) return candidate;
575
- return null;
576
- }
577
- function hasDifferentWalletIdentityLink(subjects, expectedWalletSubject) {
578
- for (const subject of subjects) if (subject.startsWith("wallet:") && subject !== expectedWalletSubject) return true;
579
- return false;
580
- }
581
- function isTruthyBoundaryFlag(value) {
582
- return value === true || String(value || "").trim().toLowerCase() === "true";
583
- }
584
- //#endregion
585
- export { cleanupGoogleEmailOtpDevRegistrationStateWithStores, completeGoogleEmailOtpRegistrationAttemptWithStore, consumeGoogleEmailOtpRegistrationAttemptRateLimitWithDeps, failGoogleEmailOtpRegistrationAttemptWithStore, recordGoogleEmailOtpRegistrationAttemptPublicKeyWithStore, resolveGoogleEmailOtpSessionWithDeps, validateGoogleEmailOtpRegistrationCandidateWalletWithStore };
586
-
587
- //# sourceMappingURL=googleEmailOtpRegistration.js.map
@@ -1,42 +0,0 @@
1
- import { normalizeOptionalTrimmedString } from "../../shared-ts/src/utils/normalize.js";
2
- import "../../shared-ts/src/utils/validation.js";
3
- import { failure } from "../../shared-ts/src/utils/failure.js";
4
- import { errorMessage } from "../../shared-ts/src/utils/errors.js";
5
- //#region src/core/authService/identity.ts
6
- async function listIdentitiesWithStore(input) {
7
- try {
8
- const userId = normalizeOptionalTrimmedString(input.userId);
9
- if (!userId) return failure("invalid_args", "Missing userId");
10
- return {
11
- ok: true,
12
- subjects: await input.store.listSubjectsByUserId(userId)
13
- };
14
- } catch (e) {
15
- return failure("internal", errorMessage(e) || "Failed to list identities");
16
- }
17
- }
18
- async function linkIdentityWithStore(input) {
19
- try {
20
- return await input.store.linkSubjectToUserId({
21
- userId: input.userId,
22
- subject: input.subject,
23
- allowMoveIfSoleIdentity: input.allowMoveIfSoleIdentity
24
- });
25
- } catch (e) {
26
- return failure("internal", errorMessage(e) || "Failed to link identity");
27
- }
28
- }
29
- async function unlinkIdentityWithStore(input) {
30
- try {
31
- return await input.store.unlinkSubjectFromUserId({
32
- userId: input.userId,
33
- subject: input.subject
34
- });
35
- } catch (e) {
36
- return failure("internal", errorMessage(e) || "Failed to unlink identity");
37
- }
38
- }
39
- //#endregion
40
- export { linkIdentityWithStore, listIdentitiesWithStore, unlinkIdentityWithStore };
41
-
42
- //# sourceMappingURL=identity.js.map
@@ -1,32 +0,0 @@
1
- import { linkIdentityWithStore, listIdentitiesWithStore, unlinkIdentityWithStore } from "./identity.js";
2
- //#region src/core/authService/identityOperations.ts
3
- var IdentityOperations = class {
4
- constructor(store) {
5
- this.store = store;
6
- }
7
- async listIdentities(input) {
8
- return await listIdentitiesWithStore({
9
- store: this.store,
10
- userId: input.userId
11
- });
12
- }
13
- async linkIdentity(input) {
14
- return await linkIdentityWithStore({
15
- store: this.store,
16
- userId: input.userId,
17
- subject: input.subject,
18
- allowMoveIfSoleIdentity: Boolean(input.allowMoveIfSoleIdentity)
19
- });
20
- }
21
- async unlinkIdentity(input) {
22
- return await unlinkIdentityWithStore({
23
- store: this.store,
24
- userId: input.userId,
25
- subject: input.subject
26
- });
27
- }
28
- };
29
- //#endregion
30
- export { IdentityOperations };
31
-
32
- //# sourceMappingURL=identityOperations.js.map