@seams/wallet-server 0.8.0 → 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 (369) hide show
  1. package/THIRD_PARTY_NOTICES.md +7 -1
  2. package/artifact-manifest.json +196 -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 -117
  24. package/cloudflare-router-ab/wrangler.deriver-a.toml +0 -8
  25. package/cloudflare-router-ab/wrangler.deriver-b.toml +24 -8
  26. package/cloudflare-router-ab/wrangler.router.toml +0 -2
  27. package/cloudflare-router-ab/wrangler.signing-worker.toml +29 -0
  28. package/dist/esm/authorization/domain.js +3 -2
  29. package/dist/esm/authorization/ed25519WalletSessionAdmission.js +0 -0
  30. package/dist/esm/authorization/service.js +64 -36
  31. package/dist/esm/cloud-host.js +24 -19
  32. package/dist/esm/core/EmailOtpRecords.js +29 -6
  33. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +2 -0
  34. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.js +10 -0
  35. package/dist/esm/core/ThresholdService/routerAb/internalServiceHttp.js +1 -0
  36. package/dist/esm/core/ThresholdService/validation.js +2 -2
  37. package/dist/esm/core/authService/nearPrivateKeySigning.js +1 -1
  38. package/dist/esm/core/authService/webauthn.js +1 -1
  39. package/dist/esm/core/d1Ed25519SignerRead.js +55 -0
  40. package/dist/esm/core/d1WalletStore.js +14 -11
  41. package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +2 -2
  42. package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +1 -1
  43. package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +2 -2
  44. package/dist/esm/core/emailOtpD1Statements.js +1 -0
  45. package/dist/esm/core/nearRelayerAccountProvisioning.js +1 -1
  46. package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +4 -0
  47. package/dist/esm/core/signingLanes/WalletExecutionLaneProjection.js +1 -1
  48. package/dist/esm/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.js +1 -0
  49. package/dist/esm/hosted-wallet-gateway.js +93 -10
  50. package/dist/esm/localHostedWalletGatewayHandler.js +12 -9
  51. package/dist/esm/localIntendedYaoSigningFault.js +2 -30
  52. package/dist/esm/localRegistrationSetupAuthority.js +8 -1
  53. package/dist/esm/router/auth/commonRouterUtils.js +17 -10
  54. package/dist/esm/router/auth/routerApiCredentialAuth.js +26 -7
  55. package/dist/esm/router/auth/walletRegistrationContext.js +49 -0
  56. package/dist/esm/router/auth/webAuthnCredentialCodecs.js +1 -1
  57. package/dist/esm/router/cloudflare/d1/auth/d1AuthorizationAssembly.js +4 -3
  58. package/dist/esm/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.js +2 -0
  59. package/dist/esm/router/cloudflare/d1/auth/d1EmailOtpRouteService.js +25 -0
  60. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +14 -6
  61. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +44 -40
  62. package/dist/esm/router/cloudflare/d1/auth/walletSessionCredentialReaders.js +17 -1
  63. package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +35 -5
  64. package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +258 -99
  65. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +31 -4
  66. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
  67. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +1 -1
  68. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.js +1 -1
  69. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +1 -1
  70. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.js +1 -1
  71. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.js +1 -1
  72. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.js +11 -2
  73. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +100 -10
  74. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoStateWriteFence.js +92 -0
  75. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1WalletCeremonyActivity.js +77 -0
  76. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +14 -8
  77. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +14 -8
  78. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +3 -1
  79. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +58 -38
  80. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +27 -20
  81. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +1 -0
  82. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +1 -0
  83. package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +1 -1
  84. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +18 -7
  85. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +75 -14
  86. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +1 -1
  87. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +49 -29
  88. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSessionTransaction.js +28 -0
  89. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +11 -1
  90. package/dist/esm/router/cloudflare/d1/registration/d1WalletExecutionAuthority.js +168 -0
  91. package/dist/esm/router/cloudflare/d1/registration/d1WalletOperationStore.js +53 -0
  92. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +83 -42
  93. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationInitialSession.js +33 -0
  94. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationPreparation.js +16 -0
  95. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationRead.js +58 -0
  96. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +439 -500
  97. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +1 -1
  98. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +104 -90
  99. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +78 -44
  100. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +11 -35
  101. package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +98 -39
  102. package/dist/esm/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js +12 -9
  103. package/dist/esm/router/cloudflare/d1/wallet/authorizationSnapshotLayout.js +168 -0
  104. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +1 -1
  105. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +15 -6
  106. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +3 -40
  107. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +54 -1
  108. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationCleanup.js +157 -0
  109. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationFreeze.js +56 -0
  110. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationHistory.js +238 -0
  111. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationIntake.js +287 -0
  112. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationSnapshot.js +295 -0
  113. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationApprovals.js +140 -0
  114. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationChallenges.js +170 -0
  115. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationEmailOtp.js +60 -0
  116. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationOwner.js +33 -0
  117. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationOwnerRequest.js +74 -0
  118. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationPasskey.js +77 -0
  119. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationReadAccess.js +37 -0
  120. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationSessions.js +97 -0
  121. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationWriteBlock.js +133 -0
  122. package/dist/esm/router/cloudflare/d1/walletObjectAddresses.js +47 -0
  123. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +1 -1
  124. package/dist/esm/router/cloudflare/runtime/routerAbServiceBindings.js +32 -1
  125. package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +20 -8
  126. package/dist/esm/router/cloudflare/runtime/walletAuthorizationRelocationRoutes.js +488 -0
  127. package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +1 -1
  128. package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +26 -6
  129. package/dist/esm/router/cloudflare/runtime/walletControlOps.js +3 -0
  130. package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
  131. package/dist/esm/router/cloudflare/runtime/walletObjectAddresses.js +105 -0
  132. package/dist/esm/router/cloudflare/runtime/walletPlacementRoutes.js +339 -0
  133. package/dist/esm/router/cloudflare/runtime/walletRelocationDeriver.js +244 -0
  134. package/dist/esm/router/cloudflare/runtime/walletRelocationEcdsa.js +212 -0
  135. package/dist/esm/router/cloudflare/runtime/walletRelocationEd25519.js +172 -0
  136. package/dist/esm/router/cloudflare/runtime/walletRelocationOps.js +183 -0
  137. package/dist/esm/router/cloudflare/runtime/walletRelocationPresign.js +185 -0
  138. package/dist/esm/router/cloudflare/runtime/walletRelocationSource.js +221 -0
  139. package/dist/esm/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js +30 -8
  140. package/dist/esm/router/cloudflare-adaptor.js +8 -8
  141. package/dist/esm/router/cloudflare.js +34115 -32240
  142. package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +35 -9
  143. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoCapabilityCommit.js +42 -0
  144. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +32 -6
  145. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +61 -1
  146. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js +70 -3
  147. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +59 -87
  148. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +52 -22
  149. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +10 -7
  150. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +108 -78
  151. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +19 -5
  152. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +71 -22
  153. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +37 -25
  154. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +3 -3
  155. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.js +2 -1
  156. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +24 -3
  157. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js +4 -3
  158. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js +20 -7
  159. package/dist/esm/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.js +7 -1
  160. package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +2 -2
  161. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +1 -1
  162. package/dist/esm/router/domains/passkeyCustody/registrationCustodyOutcome.js +34 -18
  163. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.js +2 -2
  164. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +16 -6
  165. package/dist/esm/router/domains/signingOperations/authorizedOperationWire.js +73 -0
  166. package/dist/esm/router/domains/signingOperations/ecdsaSigningResponse.js +31 -0
  167. package/dist/esm/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.js +1 -1
  168. package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js +2 -1
  169. package/dist/esm/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.js +31 -121
  170. package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmission.js +2 -93
  171. package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +1 -1
  172. package/dist/esm/router/domains/signingOperations/signingPrepareSession.js +33 -0
  173. package/dist/esm/router/domains/walletRegistration/registrationSessionSeal.js +121 -0
  174. package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +4 -4
  175. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +46 -157
  176. package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +1 -1
  177. package/dist/esm/router/express.js +764 -894
  178. package/dist/esm/router/framework/http.js +2 -1
  179. package/dist/esm/router/transport/fetch/createFetchRouter.js +2 -2
  180. package/dist/esm/router/transport/fetch/routes/auth.js +1 -1
  181. package/dist/esm/router/transport/fetch/routes/deviceLinking.js +3 -3
  182. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +2 -2
  183. package/dist/esm/router/transport/fetch/routes/ed25519AuthorizedOperationRevalidation.js +65 -0
  184. package/dist/esm/router/transport/fetch/routes/normalSigningRouterProxy.js +13 -3
  185. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +3 -3
  186. package/dist/esm/router/transport/fetch/routes/sessions.js +3 -2
  187. package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +67 -130
  188. package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +76 -212
  189. package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +18 -41
  190. package/dist/esm/router/transport/fetch/routes/walletRegistration.js +6 -5
  191. package/dist/esm/router/transport/fetch/routes/webauthnAuthenticators.js +1 -1
  192. package/dist/esm/shared-ts/src/authorization/index.js +1 -1
  193. package/dist/esm/shared-ts/src/authorization/walletAuthority.js +2 -2
  194. package/dist/esm/shared-ts/src/device-linking/activeWalletSession.js +12 -2
  195. package/dist/esm/shared-ts/src/device-linking/digests.js +1 -1
  196. package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +1 -1
  197. package/dist/esm/shared-ts/src/device-linking/index.js +1 -1
  198. package/dist/esm/shared-ts/src/device-linking/parsers.js +1 -1
  199. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +1 -1
  200. package/dist/esm/shared-ts/src/device-linking/wireFields.js +1 -1
  201. package/dist/esm/shared-ts/src/near/nearClient.js +1 -1
  202. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +2 -2
  203. package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +6 -1
  204. package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +4 -2
  205. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -1
  206. package/dist/esm/shared-ts/src/utils/routerAbPublicKeyset.js +0 -27
  207. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +1 -1
  208. package/dist/esm/threshold/session/signingSessionSeal/options.js +1 -1
  209. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  210. package/dist/types/shared-ts/src/device-linking/activeWalletSession.d.ts +2 -1
  211. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +10 -0
  212. package/dist/types/shared-ts/src/threshold/ed25519OperationFingerprint.d.ts +2 -1
  213. package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +3 -1
  214. package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +0 -9
  215. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +1 -1
  216. package/dist/types/wallet-server/src/authorization/domain.d.ts +17 -1
  217. package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.d.ts +1 -0
  218. package/dist/types/wallet-server/src/authorization/ed25519WalletSessionAdmission.d.ts +35 -0
  219. package/dist/types/wallet-server/src/authorization/ed25519WalletSessionAdmission.typecheck.d.ts +2 -0
  220. package/dist/types/wallet-server/src/authorization/service.d.ts +43 -5
  221. package/dist/types/wallet-server/src/authorization/sessionRouting.d.ts +2 -0
  222. package/dist/types/wallet-server/src/cloud-host.d.ts +7 -3
  223. package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +2 -1
  224. package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +19 -5
  225. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +1 -0
  226. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.d.ts +6 -0
  227. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/internalServiceHttp.d.ts +1 -0
  228. package/dist/types/wallet-server/src/core/d1Ed25519SignerRead.d.ts +17 -0
  229. package/dist/types/wallet-server/src/core/d1WalletStore.d.ts +6 -0
  230. package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +1 -0
  231. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +5 -1
  232. package/dist/types/wallet-server/src/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.d.ts +1 -0
  233. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +14 -48
  234. package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +4 -3
  235. package/dist/types/wallet-server/src/localIntendedYaoSigningFault.d.ts +1 -16
  236. package/dist/types/wallet-server/src/localRegistrationSetupAuthority.d.ts +1 -1
  237. package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +7 -1
  238. package/dist/types/wallet-server/src/router/auth/routerApiCredentialAuth.d.ts +11 -3
  239. package/dist/types/wallet-server/src/router/auth/walletRegistrationContext.d.ts +8 -0
  240. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizationAssembly.d.ts +1 -1
  241. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1EmailOtpRouteService.d.ts +16 -0
  242. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +7 -4
  243. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthService.d.ts +4 -1
  244. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/walletSessionCredentialReaders.d.ts +7 -1
  245. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +32 -1
  246. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +2 -0
  247. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.d.ts +3 -1
  248. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts +1 -0
  249. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoStateWriteFence.d.ts +8 -0
  250. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1WalletCeremonyActivity.d.ts +15 -0
  251. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.d.ts +6 -1
  252. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +1 -0
  253. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.d.ts +4 -1
  254. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpCounters.typecheck.d.ts +2 -0
  255. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +6 -29
  256. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +21 -7
  257. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +17 -1
  258. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +32 -7
  259. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +16 -7
  260. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSessionTransaction.d.ts +13 -0
  261. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +7 -0
  262. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletExecutionAuthority.d.ts +41 -0
  263. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletOperationStore.d.ts +28 -0
  264. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +6 -9
  265. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationInitialSession.d.ts +17 -0
  266. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationPreparation.d.ts +12 -0
  267. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts +43 -0
  268. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +24 -45
  269. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.d.ts +9 -4
  270. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.d.ts +42 -14
  271. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.d.ts +5 -4
  272. package/dist/types/wallet-server/src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.d.ts +24 -1
  273. package/dist/types/wallet-server/src/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.d.ts +10 -4
  274. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/authorizationSnapshotLayout.d.ts +21 -0
  275. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +3 -0
  276. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +3 -7
  277. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +8 -0
  278. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationCleanup.d.ts +20 -0
  279. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationFreeze.d.ts +12 -0
  280. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationHistory.d.ts +20 -0
  281. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationIntake.d.ts +29 -0
  282. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorizationSnapshot.d.ts +31 -0
  283. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationApprovals.d.ts +49 -0
  284. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationChallenges.d.ts +47 -0
  285. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationEmailOtp.d.ts +25 -0
  286. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationOwner.d.ts +88 -0
  287. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationOwnerRequest.d.ts +37 -0
  288. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationPasskey.d.ts +12 -0
  289. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationReadAccess.d.ts +18 -0
  290. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationSessions.d.ts +23 -0
  291. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletRelocationWriteBlock.d.ts +16 -0
  292. package/dist/types/wallet-server/src/router/cloudflare/d1/walletObjectAddresses.d.ts +14 -0
  293. package/dist/types/wallet-server/src/router/cloudflare/runtime/routerAbServiceBindings.d.ts +13 -0
  294. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletAuthorizationRelocationRoutes.d.ts +21 -0
  295. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +1 -1
  296. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +3 -3
  297. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletControlOps.d.ts +2 -1
  298. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +3 -1
  299. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletObjectAddresses.d.ts +45 -0
  300. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletPlacementRoutes.d.ts +30 -0
  301. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationDeriver.d.ts +11 -0
  302. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationEcdsa.d.ts +7 -0
  303. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationEd25519.d.ts +7 -0
  304. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationOps.d.ts +11 -0
  305. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationPresign.d.ts +7 -0
  306. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRelocationSource.d.ts +26 -0
  307. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.d.ts +5 -0
  308. package/dist/types/wallet-server/src/router/domains/ecdsa/routerAbEcdsaStrictRegistration.d.ts +3 -0
  309. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoCapabilityCommit.d.ts +7 -0
  310. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +41 -7
  311. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +33 -2
  312. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +12 -6
  313. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.d.ts +17 -9
  314. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.d.ts +2 -0
  315. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.d.ts +13 -14
  316. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.d.ts +7 -3
  317. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.d.ts +1 -0
  318. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.d.ts +6 -1
  319. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.d.ts +11 -0
  320. package/dist/types/wallet-server/src/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.d.ts +12 -3
  321. package/dist/types/wallet-server/src/router/domains/passkeyCustody/registrationCustodyOutcome.d.ts +10 -6
  322. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.d.ts +10 -3
  323. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +12 -5
  324. package/dist/types/wallet-server/src/router/domains/signingOperations/authorizedOperationWire.d.ts +97 -0
  325. package/dist/types/wallet-server/src/router/domains/signingOperations/ecdsaSigningResponse.d.ts +13 -0
  326. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmission.d.ts +9 -206
  327. package/dist/types/wallet-server/src/router/domains/signingOperations/signingPrepareSession.d.ts +23 -0
  328. package/dist/types/wallet-server/src/router/domains/walletRegistration/registrationSessionSeal.d.ts +36 -0
  329. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +7 -7
  330. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationReservation.d.ts +80 -6
  331. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +15 -5
  332. package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +24 -0
  333. package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +21 -7
  334. package/dist/types/wallet-server/src/router/framework/routerApi.d.ts +3 -12
  335. package/dist/types/wallet-server/src/router/transport/fetch/routes/ed25519AuthorizedOperationRevalidation.d.ts +37 -0
  336. package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +1 -17
  337. package/dist/types/wallet-server/src/storage/tenantRoute.d.ts +1 -1
  338. package/migrations/d1-signer/0049_wallet_relocation_challenges.sql +16 -0
  339. package/migrations/d1-signer/0050_wallet_relocation_approvals.sql +14 -0
  340. package/migrations/d1-signer/0051_wallet_relocation_email_otp.sql +92 -0
  341. package/migrations/d1-signer/0052_wallet_relocation_session_fences.sql +91 -0
  342. package/migrations/d1-signer/0053_wallet_hosted_history_import.sql +164 -0
  343. package/migrations/d1-signer/0054_wallet_authorization_freeze.sql +318 -0
  344. package/migrations/d1-signer/0055_wallet_authorization_snapshot.sql +120 -0
  345. package/migrations/d1-signer/0056_wallet_authorization_history_import.sql +424 -0
  346. package/migrations/d1-signer/0057_wallet_authorization_intake.sql +44 -0
  347. package/migrations/d1-signer/0058_wallet_ceremony_activity.sql +59 -0
  348. package/migrations/d1-signer/0059_wallet_authorization_activation.sql +45 -0
  349. package/migrations/d1-signer/0060_wallet_authorization_cleanup.sql +153 -0
  350. package/migrations/d1-signer/0061_wallet_session_operation_settlement.sql +28 -0
  351. package/migrations/d1-signer/0062_wallet_step_up_operation_settlement.sql +204 -0
  352. package/migrations/d1-signer/0063_wallet_operation_history_transfer.sql +466 -0
  353. package/migrations/d1-signer/0064_wallet_execution_generations.sql +93 -0
  354. package/migrations/d1-signer/0065_wallet_operation_execution_generation.sql +37 -0
  355. package/migrations/d1-signer/0066_regional_deployment_admission.sql +59 -0
  356. package/migrations/d1-signer/0067_registration_completion_decision.sql +12 -0
  357. package/migrations/d1-signer/0068_registration_cancellation_write_fence.sql +24 -0
  358. package/migrations/d1-signer/0069_cancelled_registration_session_fence.sql +11 -0
  359. package/migrations/d1-signer/0070_wallet_passkey_relocation.sql +369 -0
  360. package/migrations/d1-signer/0071_regional_wallet_otp_counters.sql +98 -0
  361. package/migrations/d1-signer/0072_linked_device_relocation_history.sql +899 -0
  362. package/migrations/d1-signer/0073_wallet_recovery_relocation.sql +86 -0
  363. package/migrations/d1-signer/0074_email_otp_relocation.sql +158 -0
  364. package/migrations/d1-signer/0075_wallet_authorization_return.sql +107 -0
  365. package/migrations/d1-signer/0076_wallet_relocation_write_block.sql +406 -0
  366. package/migrations/d1-signer/0077_wallet_object_addresses.sql +24 -0
  367. package/package.json +1 -1
  368. package/src/README.md +23 -1
  369. package/cloudflare-router-ab/scripts/local-key-material.mjs +0 -29
@@ -1,7 +1,7 @@
1
1
  import { parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseLinkedDeviceId, parseWalletId, parseWalletKeyId } from "../utils/domainIds.js";
2
- import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
3
2
  import { requireRecord } from "../utils/validation.js";
4
3
  import { rejectUnknownFields } from "../utils/exactRecord.js";
4
+ import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
5
5
  import { parseDigestField, parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, requireParsed } from "../passkey-custody/primitives.js";
6
6
  //#region ../shared-ts/src/device-linking/ed25519ExportRoot.ts
7
7
  /**
@@ -1,5 +1,5 @@
1
- import "./contracts.js";
2
1
  import "./activeWalletSession.js";
2
+ import "./contracts.js";
3
3
  import "./ed25519ExportRoot.js";
4
4
  import "./delegatedActivationPlan.js";
5
5
  import "./sourceContribution.js";
@@ -1,8 +1,8 @@
1
- import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
2
1
  import { requireArray, requireRecord } from "../utils/validation.js";
3
2
  import { exactRecord } from "../utils/exactRecord.js";
4
3
  import { wireLiteral, wireNullable, wireObject, wireUnion } from "../utils/wireSchema.js";
5
4
  import "../authorization/delegatedAuthority.js";
5
+ import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
6
6
  import { parseEd25519PublicKeyB64u } from "../passkey-custody/primitives.js";
7
7
  import { authorizationDeviceId, credentialId, digest, enrollmentId, linkedDeviceId, parseDelegatedWalletAuthority, parseNonEmptyToken, parseNonNegativeSafeInteger, parseTargetEmail, parseUnixTime, rpId, sessionId, walletAuthMethodId, walletAuthorityId, walletId, walletKeyId, walletSessionAuthorizationId, walletSessionId } from "./wireFields.js";
8
8
  import { parseWalletAddAuthMethodRegistrationOptions } from "../utils/addAuthMethodRegistration.js";
@@ -1,8 +1,8 @@
1
1
  import { mpcMaterialActivationRefsEqual, parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseMpcMaterialActivationRef, parseWalletAuthorityId, parseWalletKeyId } from "../utils/domainIds.js";
2
2
  import { parseDeviceId } from "../authorization/capabilityKinds.js";
3
+ import { requireRecordCopy } from "../utils/validation.js";
3
4
  import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
4
5
  import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
5
- import { requireRecordCopy } from "../utils/validation.js";
6
6
  import { parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseSecp256k1CompressedPublicKeyB64u } from "../passkey-custody/primitives.js";
7
7
  import { routerAbMpcMaterialActivationRefFromWire } from "../utils/routerAbNormalSigningIdentity.js";
8
8
  import { parseRouterAbEd25519YaoActivationPublicReceiptV1, parseRouterAbEd25519YaoApplicationBindingFactsV1, parseRouterAbEd25519YaoCeremonyBindingV1, parseRouterAbEd25519YaoEncryptedPackageV1, parseRouterAbEd25519YaoParticipantIdsV1, parseRouterAbEd25519YaoRegistrationActivationAdmissionReceiptV1, sameRouterAbEd25519YaoByteSequence } from "../utils/routerAbEd25519Yao.js";
@@ -1,8 +1,8 @@
1
1
  import { parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseLinkedDeviceId, parseMpcMaterialActivationRef, parseVerifiedEmailAddress, parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId, parseWalletKeyId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../utils/domainIds.js";
2
2
  import { parseDeviceId, parseMpcWalletSigningQuotaId, parseWalletSessionAuthorizationId, parseWalletSessionId } from "../authorization/capabilityKinds.js";
3
- import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
4
3
  import { wireLabeled, wireNullable, wireResult } from "../utils/wireSchema.js";
5
4
  import { parseDelegatedWalletAuthorityV1 } from "../authorization/delegatedAuthority.js";
5
+ import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
6
6
  import { parseUnixMs } from "../passkey-custody/primitives.js";
7
7
  //#region ../shared-ts/src/device-linking/wireFields.ts
8
8
  const sessionId = /* @__PURE__ */ wireResult(parseLinkDeviceSessionId);
@@ -1,5 +1,5 @@
1
- import { base64Decode, base64Encode } from "../utils/base64.js";
2
1
  import { isFunction } from "../utils/validation.js";
2
+ import { base64Decode, base64Encode } from "../utils/base64.js";
3
3
  import { secureRandomId } from "../utils/secureRandomId.js";
4
4
  import { errorMessage } from "../utils/errors.js";
5
5
  import { decodeJsonRpcEnvelope } from "../utils/jsonRpc.js";
@@ -1,8 +1,8 @@
1
1
  import { hasWhitespaceOrControlCharacters, parseMpcSigningWorkerRef } from "../utils/domainIds.js";
2
- import { base64UrlEncode } from "../utils/base64.js";
3
- import { sha256Bytes } from "../utils/digests.js";
4
2
  import { requireRecord } from "../utils/validation.js";
5
3
  import { rejectUnknownFields } from "../utils/exactRecord.js";
4
+ import { base64UrlEncode } from "../utils/base64.js";
5
+ import { sha256Bytes } from "../utils/digests.js";
6
6
  import { parseDigestField, requireParsed } from "../passkey-custody/primitives.js";
7
7
  import { concat } from "../utils/digestEncoding.js";
8
8
  import { parseLaneParticipantBindingDigestB64u } from "./participants.js";
@@ -1,5 +1,9 @@
1
1
  //#region ../shared-ts/src/utils/ecdsaServerTiming.ts
2
2
  const ECDSA_TIMING_METRICS = new Set([
3
+ "wallet_gateway_binding",
4
+ "wallet_gateway_total",
5
+ "wallet_console_binding_d1",
6
+ "wallet_console_binding_sql",
3
7
  "ecdsa_sign_authorize",
4
8
  "ecdsa_sign_admit",
5
9
  "ecdsa_sign_proxy",
@@ -12,7 +16,8 @@ const ECDSA_TIMING_METRICS = new Set([
12
16
  "ecdsa_presign_total",
13
17
  "ecdsa_presign_sw_material",
14
18
  "ecdsa_presign_sw_session",
15
- "ecdsa_presign_sw_do_total",
19
+ "ecdsa_presign_sw_do_response_headers",
20
+ "ecdsa_presign_sw_do_response_body",
16
21
  "ecdsa_presign_sw_admit",
17
22
  "ecdsa_presign_sw_total"
18
23
  ]);
@@ -18,12 +18,14 @@ const WALLET_EMAIL_OTP_REGISTRATION_OPERATION = "registration";
18
18
  /** Linked-device enrollment: prove control of the wallet's enrolled email
19
19
  * destination to complete one device link. */
20
20
  const WALLET_EMAIL_OTP_DEVICE_LINK_OPERATION = "device_link";
21
+ const WALLET_EMAIL_OTP_RELOCATION_OPERATION = "wallet_relocation";
21
22
  const WALLET_EMAIL_OTP_ACTIONS = {
22
23
  login: "wallet_email_otp_login",
23
24
  registration: "wallet_email_otp_registration",
24
25
  recoveryBootstrap: "wallet_email_otp_recovery_bootstrap",
25
26
  unseal: "wallet_email_otp_unseal",
26
- deviceLink: "wallet_email_otp_device_link"
27
+ deviceLink: "wallet_email_otp_device_link",
28
+ relocation: "wallet_email_otp_relocation"
27
29
  };
28
30
  const WALLET_EMAIL_OTP_EXPORT_OPERATION = "export_key";
29
31
  const WALLET_EMAIL_OTP_UNLOCK_OPERATION = "wallet_unlock";
@@ -35,6 +37,6 @@ function isWalletEmailOtpLoginOperation(value) {
35
37
  return WALLET_EMAIL_OTP_LOGIN_OPERATIONS.includes(value);
36
38
  }
37
39
  //#endregion
38
- export { EMAIL_OTP_CHANNEL, EMAIL_OTP_FACTOR_RELEASE_AAD_DOMAIN_V1, WALLET_EMAIL_OTP_ACTIONS, WALLET_EMAIL_OTP_DEVICE_LINK_OPERATION, WALLET_EMAIL_OTP_EXPORT_OPERATION, WALLET_EMAIL_OTP_REGISTRATION_OPERATION, WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION, WALLET_EMAIL_OTP_UNLOCK_OPERATION, emailOtpDeviceEnrollmentId, isWalletEmailOtpLoginOperation, isWalletUnlockBackend };
40
+ export { EMAIL_OTP_CHANNEL, EMAIL_OTP_FACTOR_RELEASE_AAD_DOMAIN_V1, WALLET_EMAIL_OTP_ACTIONS, WALLET_EMAIL_OTP_DEVICE_LINK_OPERATION, WALLET_EMAIL_OTP_EXPORT_OPERATION, WALLET_EMAIL_OTP_REGISTRATION_OPERATION, WALLET_EMAIL_OTP_RELOCATION_OPERATION, WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION, WALLET_EMAIL_OTP_UNLOCK_OPERATION, emailOtpDeviceEnrollmentId, isWalletEmailOtpLoginOperation, isWalletUnlockBackend };
39
41
 
40
42
  //# sourceMappingURL=emailOtpDomain.js.map
@@ -1,9 +1,9 @@
1
1
  import { parseEcdsaActiveStateId, parseRootShareEpoch, parseThresholdEcdsaSessionId } from "./domainIds.js";
2
2
  import { EVM_ECDSA_MPC_OPERATION_KINDS, parseEcdsaAuthorizationSessionId, parseMpcWalletSigningQuotaId, parseWalletSessionAuthorizationId, parseWalletSessionId, parseWalletSessionMintId } from "../authorization/capabilityKinds.js";
3
+ import { requireRecord } from "./validation.js";
3
4
  import { base64UrlDecode, base64UrlEncode } from "./base64.js";
4
5
  import { alphabetizeStringify, sha256BytesUtf8 } from "./digests.js";
5
6
  import { parseCorrelationId } from "./canonicalPrimitives.js";
6
- import { requireRecord } from "./validation.js";
7
7
  import { parseActiveWalletSessionV1, parseWalletSessionOperationCredentialV1 } from "../device-linking/activeWalletSession.js";
8
8
  import { requireRouterAbX25519PublicKey } from "./routerAbPublicKeyset.js";
9
9
  import { canonicalRouterAbMpcMaterialActivationRefBytes, canonicalRouterAbNormalSigningAuthorizationBytes, parseRouterAbMpcMaterialActivationRef, parseRouterAbNormalSigningAuthorization, routerAbMpcMaterialActivationRefToWire, sameRouterAbMpcMaterialActivationRef } from "./routerAbNormalSigningIdentity.js";
@@ -20,11 +20,6 @@ function requireSignerRole(value, label) {
20
20
  default: throw new Error(`${label} must be signer_a or signer_b`);
21
21
  }
22
22
  }
23
- function requireLowerHex(value, label, byteLength) {
24
- const hex = coerceNonEmptyString(value, label);
25
- if (!new RegExp(`^[0-9a-f]{${byteLength * 2}}$`).test(hex)) throw new Error(`${label} must be ${byteLength} lowercase-hex bytes`);
26
- return hex;
27
- }
28
23
  function requireRouterAbX25519PublicKey(value, label) {
29
24
  const publicKey = coerceNonEmptyString(value, label);
30
25
  if (!/^x25519:[0-9a-f]{64}$/.test(publicKey)) throw new Error(`${label} must use x25519:<64 lowercase hex chars> encoding`);
@@ -79,26 +74,6 @@ function parseSignerEnvelopeHpkeRotationPublicKeySet(value, label) {
79
74
  previous_retire_at_ms: requirePositiveInteger(record.previous_retire_at_ms, `${label}.previous_retire_at_ms`)
80
75
  };
81
76
  }
82
- function parseSignerPeerVerifyingKey(value, label) {
83
- const record = requireRecord(value, label);
84
- requireExactKeys(record, ["role", "verifying_key_hex"], label);
85
- return {
86
- role: requireSignerRole(record.role, `${label}.role`),
87
- verifying_key_hex: requireLowerHex(record.verifying_key_hex, `${label}.verifying_key_hex`, 32)
88
- };
89
- }
90
- function parseSignerPeerVerifyingKeySet(value, label) {
91
- const record = requireRecord(value, label);
92
- requireExactKeys(record, ["deriver_a", "deriver_b"], label);
93
- const deriverA = parseSignerPeerVerifyingKey(record.deriver_a, `${label}.deriver_a`);
94
- const deriverB = parseSignerPeerVerifyingKey(record.deriver_b, `${label}.deriver_b`);
95
- if (deriverA.role !== "signer_a") throw new Error(`${label}.deriver_a.role must be signer_a`);
96
- if (deriverB.role !== "signer_b") throw new Error(`${label}.deriver_b.role must be signer_b`);
97
- return {
98
- deriver_a: deriverA,
99
- deriver_b: deriverB
100
- };
101
- }
102
77
  function parsePublicHpkeKeyDescriptor(value, label) {
103
78
  const record = requireRecord(value, label);
104
79
  requireExactKeys(record, ["key_epoch", "public_key"], label);
@@ -112,7 +87,6 @@ function parseRouterAbPublicKeysetV2(value) {
112
87
  requireExactKeys(record, [
113
88
  "keyset_version",
114
89
  "signer_envelope_hpke",
115
- "signer_peer_verifying_keys",
116
90
  "signing_worker_server_output_hpke"
117
91
  ], "Router A/B public keyset");
118
92
  const keysetVersion = coerceNonEmptyString(record.keyset_version, "keyset_version");
@@ -120,7 +94,6 @@ function parseRouterAbPublicKeysetV2(value) {
120
94
  return {
121
95
  keyset_version: ROUTER_AB_PUBLIC_KEYSET_VERSION_V2,
122
96
  signer_envelope_hpke: parseSignerEnvelopeHpkeRotationPublicKeySet(record.signer_envelope_hpke, "signer_envelope_hpke"),
123
- signer_peer_verifying_keys: parseSignerPeerVerifyingKeySet(record.signer_peer_verifying_keys, "signer_peer_verifying_keys"),
124
97
  signing_worker_server_output_hpke: parsePublicHpkeKeyDescriptor(record.signing_worker_server_output_hpke, "signing_worker_server_output_hpke")
125
98
  };
126
99
  }
@@ -1,6 +1,6 @@
1
+ import { requireRecord } from "../utils/validation.js";
1
2
  import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
2
3
  import { parseDigestB64u, sha256DigestB64u } from "../utils/canonicalPrimitives.js";
3
- import { requireRecord } from "../utils/validation.js";
4
4
  //#region ../shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.ts
5
5
  const POSSESSION_CHALLENGE_DOMAIN_V1 = "seams/wallet-recovery/ecdsa-existing-material-possession/v1";
6
6
  const POSSESSION_PROOF_SCHEME_V1 = "secp256k1_bip340_sha256_v1";
@@ -1,6 +1,6 @@
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
4
  import { SIGNING_SESSION_SEAL_ALG, SIGNING_SESSION_SEAL_GROUP_ID } from "../../../shared-ts/src/utils/signingSessionSeal.js";
5
5
  import { parseSigningSessionSealKeyVersion } from "../../../shared-ts/src/threshold/keyMaterialBrands.js";
6
6
  import { createSigningSessionSealShamir3PassCipherAdapter } from "./crypto/cipher.js";
@@ -1,6 +1,7 @@
1
- import type { ActiveWalletSessionV1, WalletSessionOperationCredentialV1 } from './contracts';
1
+ import type { ActiveWalletSessionV1, WalletSessionOperationCredentialV1, WalletSessionHome } from './contracts';
2
2
  export declare function activeWalletSessionV1RecordsEqual(left: ActiveWalletSessionV1, right: ActiveWalletSessionV1): boolean;
3
3
  export declare function walletSessionPreservesCapabilities(previous: ActiveWalletSessionV1, next: ActiveWalletSessionV1): boolean;
4
+ export declare function parseWalletSessionHome(raw: unknown): WalletSessionHome;
4
5
  export declare function parseWalletSessionOperationCredentialV1(raw: unknown): WalletSessionOperationCredentialV1;
5
6
  export declare function parseActiveWalletSessionV1(raw: unknown): ActiveWalletSessionV1;
6
7
  //# sourceMappingURL=activeWalletSession.d.ts.map
@@ -670,9 +670,19 @@ export type ActiveWalletSessionV1 = {
670
670
  readonly issuedAtMs: number;
671
671
  readonly expiresAtMs: number;
672
672
  };
673
+ /** Routing metadata selects an endpoint and grants no execution authority. */
674
+ export type WalletSessionHome = {
675
+ readonly kind: 'direct';
676
+ readonly region?: never;
677
+ } | {
678
+ readonly kind: 'regional';
679
+ readonly region: 'US' | 'WEUR' | 'APAC' | 'OC';
680
+ };
673
681
  /** The bearer used to authenticate ordinary operations for an active session. */
674
682
  export type WalletSessionOperationCredentialV1 = {
675
683
  readonly kind: 'opaque_wallet_session_operation_credential_v1';
684
+ readonly ownershipGeneration: number;
685
+ readonly home: WalletSessionHome;
676
686
  readonly token: string;
677
687
  readonly walletSessionId: WalletSessionId;
678
688
  };
@@ -81,7 +81,8 @@ type ThresholdEd25519Nep413FingerprintInput = ThresholdEd25519CanonicalScope & {
81
81
  message: string;
82
82
  recipient: string;
83
83
  nonce: string;
84
- state?: string | null;
84
+ callbackUrl: string | null;
85
+ state?: never;
85
86
  };
86
87
  type ThresholdEd25519DelegateActionFingerprintInput = ThresholdEd25519CanonicalScope & {
87
88
  delegate: {
@@ -12,13 +12,15 @@ export declare const WALLET_EMAIL_OTP_REGISTRATION_OPERATION: "registration";
12
12
  /** Linked-device enrollment: prove control of the wallet's enrolled email
13
13
  * destination to complete one device link. */
14
14
  export declare const WALLET_EMAIL_OTP_DEVICE_LINK_OPERATION: "device_link";
15
- export type WalletEmailOtpOperation = WalletEmailOtpLoginOperation | typeof WALLET_EMAIL_OTP_REGISTRATION_OPERATION | typeof WALLET_EMAIL_OTP_DEVICE_LINK_OPERATION;
15
+ export declare const WALLET_EMAIL_OTP_RELOCATION_OPERATION: "wallet_relocation";
16
+ export type WalletEmailOtpOperation = WalletEmailOtpLoginOperation | typeof WALLET_EMAIL_OTP_REGISTRATION_OPERATION | typeof WALLET_EMAIL_OTP_DEVICE_LINK_OPERATION | typeof WALLET_EMAIL_OTP_RELOCATION_OPERATION;
16
17
  export declare const WALLET_EMAIL_OTP_ACTIONS: {
17
18
  readonly login: "wallet_email_otp_login";
18
19
  readonly registration: "wallet_email_otp_registration";
19
20
  readonly recoveryBootstrap: "wallet_email_otp_recovery_bootstrap";
20
21
  readonly unseal: "wallet_email_otp_unseal";
21
22
  readonly deviceLink: "wallet_email_otp_device_link";
23
+ readonly relocation: "wallet_email_otp_relocation";
22
24
  };
23
25
  export type WalletEmailOtpAction = (typeof WALLET_EMAIL_OTP_ACTIONS)[keyof typeof WALLET_EMAIL_OTP_ACTIONS];
24
26
  export declare const WALLET_EMAIL_OTP_EXPORT_OPERATION: "export_key";
@@ -22,14 +22,6 @@ type RouterAbSignerEnvelopeHpkeRotatingPublicKeySetV1 = {
22
22
  previous_retire_at_ms: number;
23
23
  };
24
24
  type RouterAbSignerEnvelopeHpkeRotationPublicKeySetV1 = RouterAbSignerEnvelopeHpkeCurrentPublicKeySetV1 | RouterAbSignerEnvelopeHpkeRotatingPublicKeySetV1;
25
- type RouterAbSignerPeerVerifyingKeyHexV1 = {
26
- role: RouterAbSignerRoleV1;
27
- verifying_key_hex: string;
28
- };
29
- type RouterAbSignerPeerVerifyingKeyHexSetV1 = {
30
- deriver_a: RouterAbSignerPeerVerifyingKeyHexV1;
31
- deriver_b: RouterAbSignerPeerVerifyingKeyHexV1;
32
- };
33
25
  type RouterAbPublicHpkeKeyDescriptorV1 = {
34
26
  key_epoch: string;
35
27
  public_key: string;
@@ -37,7 +29,6 @@ type RouterAbPublicHpkeKeyDescriptorV1 = {
37
29
  export type RouterAbPublicKeysetV2 = {
38
30
  keyset_version: typeof ROUTER_AB_PUBLIC_KEYSET_VERSION_V2;
39
31
  signer_envelope_hpke: RouterAbSignerEnvelopeHpkeRotationPublicKeySetV1;
40
- signer_peer_verifying_keys: RouterAbSignerPeerVerifyingKeyHexSetV1;
41
32
  signing_worker_server_output_hpke: RouterAbPublicHpkeKeyDescriptorV1;
42
33
  };
43
34
  export declare function requireRouterAbX25519PublicKey(value: unknown, label: string): string;
@@ -1,3 +1,3 @@
1
1
  export declare const WALLET_MANAGEMENT_PROTOCOL_HEADER = "X-Seams-Wallet-Protocol";
2
- export declare const WALLET_MANAGEMENT_PROTOCOL_VERSION = "2";
2
+ export declare const WALLET_MANAGEMENT_PROTOCOL_VERSION = "3";
3
3
  //# sourceMappingURL=walletManagementProtocol.d.ts.map
@@ -1,3 +1,4 @@
1
+ import type { WalletSessionHome } from '../../../shared-ts/src/device-linking/contracts';
1
2
  import type { Variant } from '../../../shared-ts/src/utils/variant';
2
3
  import type { ActiveWalletAuthMethodRecordV2, WalletAuthMethodRecordV2 } from '../../../shared-ts/src/utils/walletAuthMethodRecord';
3
4
  import { CAPABILITY_KINDS, EVM_ECDSA_MPC_OPERATION_KINDS, NEAR_ED25519_MPC_OPERATION_KINDS } from '../../../shared-ts/src/authorization/capabilityKinds';
@@ -78,6 +79,7 @@ export type IssuedHostedWalletSeamsSessionExchangeV2 = {
78
79
  };
79
80
  export type HostedWalletSeamsSessionExchangeDeliveryV2 = {
80
81
  readonly kind: 'hosted_wallet_session_exchange_delivery_v2';
82
+ readonly home: WalletSessionHome;
81
83
  readonly exchangeCode: HostedWalletSeamsSessionExchangeCode;
82
84
  readonly nonce: HostedWalletSeamsSessionExchangeNonce;
83
85
  readonly appOrigin: SessionOrigin;
@@ -112,6 +114,7 @@ export type RedeemHostedWalletSeamsSessionExchangeV2Input = {
112
114
  };
113
115
  export type HostedWalletSessionOperationCredentialV1 = {
114
116
  readonly kind: 'opaque_hosted_wallet_session_operation_credential_v1';
117
+ readonly home: WalletSessionHome;
115
118
  readonly token: HostedWalletSessionOperationCredentialToken;
116
119
  readonly walletSessionId: WalletSessionId;
117
120
  };
@@ -213,6 +216,7 @@ export type WalletSessionExactOperationContext = {
213
216
  readonly authMethod: ActiveWalletAuthMethodRecordV2;
214
217
  readonly retiredAtMs: null;
215
218
  readonly ownerWalletScope: {
219
+ readonly ownershipGeneration: number;
216
220
  readonly orgId: string;
217
221
  readonly projectId: string;
218
222
  readonly projectEnvironmentId: string;
@@ -318,12 +322,24 @@ export type WalletSessionAuthorizationV2MintRead = {
318
322
  readonly primaryOperationCredentialDigestB64u: DigestB64u;
319
323
  readonly retiredAtMs: number | null;
320
324
  };
325
+ /** The registration decision fixed in the Wallet Session transaction. */
326
+ export type CommittedWalletRegistration = {
327
+ readonly ceremonyId: string;
328
+ readonly walletId: WalletId;
329
+ readonly state: 'registering' | 'active';
330
+ };
321
331
  export type DirectV2CommitResult = {
332
+ /** Ordinary session issuance has no registration decision. */
333
+ readonly registration: CommittedWalletRegistration | null;
334
+ } & ({
322
335
  readonly kind: 'inserted';
336
+ readonly ownershipGeneration: number;
337
+ readonly committed?: never;
323
338
  } | {
324
339
  readonly kind: 'already_committed';
340
+ readonly ownershipGeneration?: never;
325
341
  readonly committed: WalletSessionAuthorizationV2MintRead;
326
- };
342
+ });
327
343
  export type DirectV2IssueResult = {
328
344
  readonly kind: 'issued';
329
345
  readonly session: WalletSessionAuthorizationV2;
@@ -21,6 +21,7 @@ export type EcdsaWalletSessionAdmissionInput = {
21
21
  };
22
22
  };
23
23
  export type PinnedOwnerWalletScope = {
24
+ readonly ownershipGeneration: number;
24
25
  readonly orgId: string;
25
26
  readonly projectId: string;
26
27
  readonly projectEnvironmentId: string;
@@ -0,0 +1,35 @@
1
+ import type { TenantId } from '../../../shared-ts/src/authorization/capabilityKinds';
2
+ import type { CapabilityOperationEnvelope, CapabilityOperationFingerprintDigest } from '../../../shared-ts/src/authorization/operationFingerprint';
3
+ import type { WalletId } from '../../../shared-ts/src/utils/domainIds';
4
+ import type { AuthorizedOperationInput } from './domain';
5
+ import type { EcdsaWalletSessionAdmissionResult, EcdsaWalletSessionResolutionResult } from './ecdsaWalletSessionAdmission';
6
+ /** An Ed25519 signing operation a reusable Wallet Session admits for the wallet it signs for. */
7
+ export type Ed25519WalletSessionAdmissionInput = {
8
+ readonly operation: AuthorizedOperationInput & {
9
+ readonly operation: CapabilityOperationEnvelope<{
10
+ readonly capabilityKind: 'near_ed25519_mpc_signing';
11
+ readonly operationKind: 'near.sign_transaction' | 'near.sign_delegate_action' | 'near.sign_nep413_message';
12
+ }>;
13
+ readonly authorization: {
14
+ readonly kind: 'authorization_grant';
15
+ };
16
+ readonly quota: {
17
+ readonly kind: 'consume_reusable_wallet_session';
18
+ };
19
+ };
20
+ readonly walletId: WalletId;
21
+ };
22
+ /**
23
+ * The outcomes of the ECDSA admission: a live operation carries the owner
24
+ * scope its own admission row pinned, so dispatch needs no second read.
25
+ */
26
+ export type Ed25519WalletSessionAdmissionResult = EcdsaWalletSessionAdmissionResult;
27
+ /** The operation a finalize request names, found by the fingerprint its prepare claimed. */
28
+ export type Ed25519WalletSessionResolutionInput = {
29
+ readonly tenantId: TenantId;
30
+ readonly operationFingerprintDigest: CapabilityOperationFingerprintDigest;
31
+ readonly walletId: WalletId;
32
+ readonly nowMs: number;
33
+ };
34
+ export type Ed25519WalletSessionResolutionResult = EcdsaWalletSessionResolutionResult;
35
+ //# sourceMappingURL=ed25519WalletSessionAdmission.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ed25519WalletSessionAdmission.typecheck.d.ts.map
@@ -1,6 +1,7 @@
1
- import type { WalletSessionRoutingPublisher } from './sessionRouting';
2
- import type { D1EcdsaAdmissionPolicyRead } from '../router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore';
1
+ import type { WalletSessionLocatorPublication, WalletSessionRoutingPublisher } from './sessionRouting';
2
+ import type { D1EcdsaAdmissionPolicyRead, D1Ed25519AdmissionPolicyRead } from '../router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore';
3
3
  import type { EcdsaMaterialRead } from '../core/d1EcdsaSignerRead';
4
+ import type { Ed25519SignerRead } from '../core/d1Ed25519SignerRead';
4
5
  import type { D1PreparedStatementLike } from '../storage/tenantRoute';
5
6
  import type { WalletAuthMethodId, WalletId } from '../../../shared-ts/src/utils/domainIds';
6
7
  import type { ActiveWalletAuthorityV1 } from '../../../shared-ts/src/authorization/walletAuthority';
@@ -18,6 +19,11 @@ export type EcdsaWalletSessionAdmissionRead = {
18
19
  readonly materialRead: EcdsaMaterialRead;
19
20
  readonly policyRead: D1EcdsaAdmissionPolicyRead;
20
21
  };
22
+ export type Ed25519WalletSessionAdmissionRead = {
23
+ readonly snapshot: WalletSessionAdmissionSnapshotV2;
24
+ readonly signerRead: Ed25519SignerRead;
25
+ readonly policyRead: D1Ed25519AdmissionPolicyRead;
26
+ };
21
27
  export interface AuthorizationSessionPort {
22
28
  putIssuedHostedWalletSeamsSessionExchange(exchange: IssuedHostedWalletSeamsSessionExchangeV2): Promise<void>;
23
29
  redeemHostedWalletSeamsSessionExchange(input: RedeemHostedWalletSeamsSessionExchangeV2Input, publishCredentialLocator?: () => Promise<void>): Promise<PersistedHostedWalletSeamsSessionExchangeV2Result>;
@@ -33,6 +39,7 @@ export interface AuthorizationEvidencePort {
33
39
  consumeVerifiedOwnerProof(proof: VerifiedOwnerProof, consumedAtMs: number, consumptionScopeId: string): Promise<boolean>;
34
40
  }
35
41
  export interface AuthorizationGrantPort {
42
+ readWalletSessionIssuanceGeneration(walletId: WalletId): Promise<number>;
36
43
  retireWalletSessionAuthorizationsForAuthMethod(input: {
37
44
  readonly tenantId: TenantId;
38
45
  readonly walletId: WalletId;
@@ -54,6 +61,7 @@ export interface AuthorizationGrantPort {
54
61
  /** Inserted confirms readback of the exact session identity and primary credential digest. */
55
62
  commitDirectReplayableWalletSessionAuthorizationV2(input: {
56
63
  readonly persisted: PersistedActiveWalletSessionAuthorizationV2;
64
+ readonly purpose: DirectWalletSessionCommitPurpose;
57
65
  }): Promise<DirectV2CommitResult>;
58
66
  readWalletSessionAuthorizationV2ByAuthorizationId(input: {
59
67
  readonly expected: WalletSessionAuthorizationV2;
@@ -82,6 +90,12 @@ export interface AuthorizationGrantPort {
82
90
  readonly nowMs: number;
83
91
  readonly materialActivation: RouterAbMpcMaterialActivationRefWire;
84
92
  }): Promise<EcdsaWalletSessionAdmissionRead | null>;
93
+ readEd25519WalletSessionAdmissionSnapshotByOperationCredential(input: {
94
+ readonly tenantId: TenantId;
95
+ readonly tokenHash: DigestB64u;
96
+ readonly nowMs: number;
97
+ readonly materialActivation: RouterAbMpcMaterialActivationRefWire;
98
+ }): Promise<Ed25519WalletSessionAdmissionRead | null>;
85
99
  readWalletSessionExactOperationContextByCredential(input: {
86
100
  readonly tenantId: TenantId;
87
101
  readonly tokenHash: DigestB64u;
@@ -182,6 +196,18 @@ type IssueWalletSessionAuthorizationV2InputBase = {
182
196
  readonly expiresAtMs: number;
183
197
  };
184
198
  export type IssueWalletSessionAuthorizationV2Input = IssueWalletSessionAuthorizationV2InputBase;
199
+ export type DirectWalletSessionCommitPurpose = {
200
+ readonly kind: 'ordinary';
201
+ readonly ceremonyId?: never;
202
+ } | {
203
+ readonly kind: 'registration';
204
+ readonly ceremonyId: string;
205
+ };
206
+ type DirectWalletSessionReplayMode = {
207
+ readonly kind: 'strict';
208
+ } | {
209
+ readonly kind: 'validated_registration_authority_projection';
210
+ };
185
211
  export type PreparedWalletSessionAuthorizationV2 = {
186
212
  readonly session: WalletSessionAuthorizationV2;
187
213
  readonly quota: ActiveWalletSessionQuota;
@@ -239,13 +265,19 @@ export declare class AuthorizationService {
239
265
  * committed digest cannot reproduce plaintext.
240
266
  */
241
267
  issueDirectWalletSessionAuthorizationV2(input: IssueWalletSessionAuthorizationV2Input): Promise<DirectV2IssueResult>;
242
- /** The Ed25519 registration caller validates current authority and owner proof first. */
243
- issueDirectRegistrationPromotedWalletSessionAuthorizationV2(input: IssueWalletSessionAuthorizationV2Input): Promise<DirectV2IssueResult>;
244
- private issueDirectWalletSessionAuthorizationV2WithReplayMode;
268
+ /** Commits locally. Registration publishes the locator with home completion. */
269
+ commitDirectWalletSessionAuthorizationV2(input: IssueWalletSessionAuthorizationV2Input, replayMode: DirectWalletSessionReplayMode, purpose: DirectWalletSessionCommitPurpose, commitSession?: AuthorizationGrantPort['commitDirectReplayableWalletSessionAuthorizationV2']): Promise<{
270
+ readonly result: DirectV2IssueResult;
271
+ readonly publication: WalletSessionLocatorPublication & {
272
+ readonly kind: 'credential';
273
+ };
274
+ readonly registration: DirectV2CommitResult['registration'];
275
+ }>;
245
276
  prepareDirectWalletSessionCredential(prepared: PreparedWalletSessionAuthorizationV2): Promise<{
246
277
  persisted: PersistedActiveWalletSessionAuthorizationV2;
247
278
  operationCredential: import("../../../shared-ts/src/device-linking").WalletSessionOperationCredentialV1;
248
279
  }>;
280
+ private prepareDirectWalletSessionIssuance;
249
281
  refreshWalletSessionAuthorizationV2AuthorityProjection(input: {
250
282
  readonly existing: IssuedWalletSessionAuthorizationV2;
251
283
  readonly authority: ActiveWalletAuthorityV1;
@@ -286,6 +318,12 @@ export declare class AuthorizationService {
286
318
  readonly nowMs: number;
287
319
  readonly materialActivation: RouterAbMpcMaterialActivationRefWire;
288
320
  }): Promise<EcdsaWalletSessionAdmissionRead | null>;
321
+ readEd25519WalletSessionAdmissionSnapshotByOperationCredential(input: {
322
+ readonly tenantId: TenantId;
323
+ readonly token: string;
324
+ readonly nowMs: number;
325
+ readonly materialActivation: RouterAbMpcMaterialActivationRefWire;
326
+ }): Promise<Ed25519WalletSessionAdmissionRead | null>;
289
327
  readLiveWalletSessionAuthorizationProjectionByCredential(input: {
290
328
  readonly tenantId: TenantId;
291
329
  readonly token: string;
@@ -1,3 +1,4 @@
1
+ import type { WalletSessionHome } from '../../../shared-ts/src/device-linking/contracts';
1
2
  import type { WalletId } from '../../../shared-ts/src/utils/domainIds';
2
3
  import type { DigestB64u } from '../../../shared-ts/src/utils/canonicalPrimitives';
3
4
  export type WalletSessionLocatorPublication = {
@@ -15,6 +16,7 @@ export type WalletSessionLocatorPublication = {
15
16
  };
16
17
  /** Publishes digest-to-wallet metadata; home-local storage authorizes its use. */
17
18
  export interface WalletSessionRoutingPublisher {
19
+ home(): WalletSessionHome;
18
20
  publish(input: WalletSessionLocatorPublication): Promise<void>;
19
21
  }
20
22
  //# sourceMappingURL=sessionRouting.d.ts.map
@@ -7,6 +7,8 @@ export * from './core/routerAbSigning/RouterAbEcdsaPresignRuntime';
7
7
  export * from './core/types';
8
8
  export * from './delegateAction';
9
9
  export * from './router/framework/apiCredentialPorts';
10
+ export { createWalletRegistrationContextResolver, unavailableRegistrationContext, walletRegistrationContext, } from './router/auth/walletRegistrationContext';
11
+ export { parseWalletRegistrationSetupRequest } from './router/domains/walletRegistration/walletRegistrationRoutes';
10
12
  export * from './router/framework/applyRouteMetering';
11
13
  export * from './router/cloudflare-adaptor';
12
14
  export type { CfEnv, CfExecutionContext, CfScheduledEvent, FetchHandler, RouterApiCloudflareSignerWorkerEnv, ScheduledHandler, SeamsD1SignerTenantStorageWorkerEnv, } from './router/cloudflare/runtime/cloudflare.types';
@@ -29,6 +31,7 @@ export * from './router/cloudflare/runtime/sessionAdapterRuntime';
29
31
  export * from './router/cloudflare/runtime/walletConsoleOps';
30
32
  export * from './router/cloudflare/runtime/walletConsoleOpsClient';
31
33
  export * from './router/cloudflare/runtime/walletGateway';
34
+ export { WalletPlacementRoutes } from './router/cloudflare/runtime/walletPlacementRoutes';
32
35
  export * from './router/cloudflare/runtime/walletRuntimeOps';
33
36
  export * from './router/cloudflare/runtime/walletRuntimeOpsHandler';
34
37
  export * from './router/cloudflare/runtime/walletControlOps';
@@ -57,7 +60,7 @@ export * from './router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRe
57
60
  export * from './router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization';
58
61
  export * from './router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare';
59
62
  export * from './router/domains/signingOperations/routerAbNormalSigningAdmissionCore';
60
- export { buildRouterAbEcdsaAcceptedAuthorizedOperationV1, buildRouterAbEd25519AcceptedAuthorizedOperationV1, evaluateRouterAbNormalSigningAdmission, type RouterAbEcdsaOperationAdmission, type RouterAbEcdsaOperationAdmissionKind, type RouterAbJsonRouteResult, type RouterAbNormalSigningAdmissionAdapter, type RouterAbNormalSigningAdmissionEvaluationInput, type RouterAbNormalSigningAdmissionFailure, type RouterAbNormalSigningAdmissionFailureCode, type RouterAbNormalSigningAdmissionInput, type RouterAbNormalSigningAdmissionResult, type RouterAbNormalSigningRouteAdmission, type RouterAbNormalSigningRouteRuntime, type RouterAbSigningWorkerJsonResult, } from './router/domains/signingOperations/routerAbNormalSigningAdmission';
63
+ export { evaluateRouterAbNormalSigningAdmission, type RouterAbEcdsaOperationAdmission, type RouterAbEcdsaOperationAdmissionKind, type RouterAbJsonRouteResult, type RouterAbNormalSigningAdmissionAdapter, type RouterAbNormalSigningAdmissionEvaluationInput, type RouterAbNormalSigningAdmissionFailure, type RouterAbNormalSigningAdmissionFailureCode, type RouterAbNormalSigningAdmissionInput, type RouterAbNormalSigningAdmissionResult, type RouterAbNormalSigningRouteAdmission, type RouterAbNormalSigningRouteRuntime, type RouterAbSigningWorkerJsonResult, } from './router/domains/signingOperations/routerAbNormalSigningAdmission';
61
64
  export { authenticateRouterAbWalletOperationStepUpIdentity } from './router/domains/signingOperations/routerAbOperationStepUp';
62
65
  export { buildRouterAbEcdsaDerivationPrivateSigningWorkerBody, buildRouterAbEd25519PrivateSigningWorkerBody, computeRouterAbEd25519NormalSigningAdmissionMaterial, parseRouterAbEd25519NormalSigningScopeV2, postRouterAbSigningWorkerJson, ROUTER_AB_ECDSA_DERIVATION_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_PRIVATE_SIGNING_PATHS, type RouterAbEcdsaDerivationPrivateSigningPath, type RouterAbEcdsaDerivationPrivateSigningWorkerBody, type RouterAbEd25519NormalSigningScopeV2, type RouterAbEd25519PrivateSigningPath, type RouterAbEd25519PrivateSigningWorkerBody, type RouterAbNormalSigningMaterialSourceV1, } from './router/domains/signingOperations/routerAbPrivateSigningWorker';
63
66
  export * from './router/domains/signingOperations/routerAbEd25519NormalSigningRoute';
@@ -104,8 +107,6 @@ export { CloudflareD1GoogleEmailOtpRegistrationAttemptStore } from './router/clo
104
107
  export type { GoogleEmailOtpRegistrationAttemptStore } from './router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore';
105
108
  export { parseGoogleEmailOtpRegistrationAttemptRecord, parseGoogleEmailOtpRegistrationOfferCandidates, requireRuntimePolicyScope, } from './router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords';
106
109
  export { prepareD1TenantStatement } from './core/d1TenantStore';
107
- export { D1EmailOtpRateLimitCounter } from './router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore';
108
- export type { EmailOtpRateLimitCounter } from './router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore';
109
110
  export type { PasskeyCredentialClaims } from './core/passkeyCredentialClaims';
110
111
  export type { WebAuthnSyncChallengeStore, WebAuthnSyncChallengeRecord, } from './core/WebAuthnSyncChallengeStore';
111
112
  export { parseWebAuthnSyncChallengeRecord } from './router/cloudflare/d1/webauthn/d1WebAuthnRecords';
@@ -117,4 +118,7 @@ export type { LinkedDeviceBootstrapStore, LinkedDeviceBootstrapResult, } from '.
117
118
  export { parseLinkedDeviceSessionRecordV1 } from './core/deviceLinking/linkedDeviceSessionRecord';
118
119
  export type { LinkedDeviceSessionRecordV1 } from './core/deviceLinking/linkedDeviceSessionRecord';
119
120
  export { computeLinkedDeviceSessionClaimDigestV1 } from '../../shared-ts/src/device-linking/digests';
121
+ export { admitD1EstablishedWalletHome } from './router/cloudflare/d1/registration/d1WalletExecutionAuthority';
122
+ export { D1WalletObjectAddresses } from './router/cloudflare/d1/walletObjectAddresses';
123
+ export { walletObjectIdentity, WalletObjectAddressSnapshot, type WalletObjectIdentity } from './router/cloudflare/runtime/walletObjectAddresses';
120
124
  //# sourceMappingURL=cloud-host.d.ts.map
@@ -1,5 +1,6 @@
1
1
  import type { ThresholdRuntimePolicyScope } from './types';
2
- import type { EmailOtpChallengeRecord, EmailOtpGrantRecord, EmailOtpUnlockChallengeRecord, GoogleEmailOtpRegistrationAttemptRecord, GoogleEmailOtpRegistrationAttemptScopeInput, PendingGoogleEmailOtpRegistrationAttemptRecord } from './EmailOtpStores';
2
+ import type { EmailOtpChallengeRecord, EmailOtpChallengePurpose, EmailOtpGrantRecord, EmailOtpUnlockChallengeRecord, GoogleEmailOtpRegistrationAttemptRecord, GoogleEmailOtpRegistrationAttemptScopeInput, PendingGoogleEmailOtpRegistrationAttemptRecord } from './EmailOtpStores';
3
+ export declare function parseEmailOtpChallengePurpose(action: unknown, operation: unknown): EmailOtpChallengePurpose | null;
3
4
  export declare function parseCurrentEmailOtpChallengeRow(input: {
4
5
  recordJson: unknown;
5
6
  expiresAtMs: unknown;
@@ -1,11 +1,27 @@
1
1
  import type { ThresholdRuntimePolicyScope } from './types';
2
2
  import type { WalletEmailOtpChannel, WalletEmailOtpLoginOperation, WalletEmailOtpOperation } from '../../../shared-ts/src/utils/emailOtpDomain';
3
- import { WALLET_EMAIL_OTP_ACTIONS } from '../../../shared-ts/src/utils/emailOtpDomain';
3
+ import { WALLET_EMAIL_OTP_ACTIONS, WALLET_EMAIL_OTP_REGISTRATION_OPERATION, WALLET_EMAIL_OTP_UNLOCK_OPERATION, WALLET_EMAIL_OTP_DEVICE_LINK_OPERATION, WALLET_EMAIL_OTP_RELOCATION_OPERATION } from '../../../shared-ts/src/utils/emailOtpDomain';
4
4
  export type EmailOtpChannel = WalletEmailOtpChannel;
5
5
  export type EmailOtpGrantAction = typeof WALLET_EMAIL_OTP_ACTIONS.unseal | typeof WALLET_EMAIL_OTP_ACTIONS.recoveryBootstrap;
6
- export type EmailOtpChallengeAction = typeof WALLET_EMAIL_OTP_ACTIONS.login | typeof WALLET_EMAIL_OTP_ACTIONS.registration | typeof WALLET_EMAIL_OTP_ACTIONS.recoveryBootstrap | typeof WALLET_EMAIL_OTP_ACTIONS.deviceLink;
6
+ export type EmailOtpChallengeAction = typeof WALLET_EMAIL_OTP_ACTIONS.login | typeof WALLET_EMAIL_OTP_ACTIONS.registration | typeof WALLET_EMAIL_OTP_ACTIONS.recoveryBootstrap | typeof WALLET_EMAIL_OTP_ACTIONS.deviceLink | typeof WALLET_EMAIL_OTP_ACTIONS.relocation;
7
7
  export type EmailOtpChallengeOperation = WalletEmailOtpOperation;
8
8
  export type EmailOtpLoginChallengeOperation = WalletEmailOtpLoginOperation;
9
+ export type EmailOtpChallengePurpose = {
10
+ readonly action: typeof WALLET_EMAIL_OTP_ACTIONS.login;
11
+ readonly operation: WalletEmailOtpLoginOperation;
12
+ } | {
13
+ readonly action: typeof WALLET_EMAIL_OTP_ACTIONS.registration;
14
+ readonly operation: typeof WALLET_EMAIL_OTP_REGISTRATION_OPERATION;
15
+ } | {
16
+ readonly action: typeof WALLET_EMAIL_OTP_ACTIONS.recoveryBootstrap;
17
+ readonly operation: typeof WALLET_EMAIL_OTP_UNLOCK_OPERATION;
18
+ } | {
19
+ readonly action: typeof WALLET_EMAIL_OTP_ACTIONS.deviceLink;
20
+ readonly operation: typeof WALLET_EMAIL_OTP_DEVICE_LINK_OPERATION;
21
+ } | {
22
+ readonly action: typeof WALLET_EMAIL_OTP_ACTIONS.relocation;
23
+ readonly operation: typeof WALLET_EMAIL_OTP_RELOCATION_OPERATION;
24
+ };
9
25
  export type EmailOtpChallengeRecord = {
10
26
  version: 'email_otp_challenge_v1';
11
27
  challengeId: string;
@@ -25,13 +41,11 @@ export type EmailOtpChallengeRecord = {
25
41
  otpCode: string;
26
42
  /** Exact wallet, owner, operation, origin, and audience binding digest. */
27
43
  ownerProofBindingDigest: string;
28
- action: EmailOtpChallengeAction;
29
- operation: EmailOtpChallengeOperation;
30
44
  createdAtMs: number;
31
45
  expiresAtMs: number;
32
46
  attemptCount: number;
33
47
  maxAttempts: number;
34
- };
48
+ } & EmailOtpChallengePurpose;
35
49
  export type EmailOtpGrantRecord = {
36
50
  version: 'email_otp_grant_v1';
37
51
  grantToken: string;