@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,8 @@
1
1
  import { type RouterAbEd25519YaoRegistrationAdmissionRequestV1 } from '../../../../../../shared-ts/src/utils/routerAbEd25519Yao';
2
2
  import { type AddSignerIntentGrant, type AddSignerIntentV1, type RegistrationIntentGrant, type RegistrationIntentV1 } from '../../../../../../shared-ts/src/utils/registrationIntent';
3
- import type { RouterAbEd25519YaoRegistrationAuthorizationAdapter, RouterAbEd25519YaoRegistrationAuthorizationInput, RouterAbEd25519YaoRegistrationAuthorizationResult } from './routerAbEd25519YaoRegistration';
3
+ import type { RouterAbEd25519YaoRegistrationAuthorizationAdapter, RouterAbEd25519YaoRegistrationAuthorizationInput, RouterAbEd25519YaoRegistrationAuthorizationFailure, RouterAbEd25519YaoRegistrationAuthorizationResult } from './routerAbEd25519YaoRegistration';
4
4
  type AvailableIntentAuthority = {
5
+ readonly ownershipGeneration: number;
5
6
  readonly kind: 'available';
6
7
  readonly purpose: RouterAbEd25519YaoActivationIntentPurposeV1;
7
8
  readonly credentialDigestSha256: Uint8Array;
@@ -10,6 +11,7 @@ type AvailableIntentAuthority = {
10
11
  readonly expiresAtMs: number;
11
12
  };
12
13
  type AdmittedIntentAuthority = {
14
+ readonly ownershipGeneration: number;
13
15
  readonly kind: 'admitted';
14
16
  readonly purpose: RouterAbEd25519YaoActivationIntentPurposeV1;
15
17
  readonly credentialDigestSha256: Uint8Array;
@@ -20,6 +22,7 @@ type AdmittedIntentAuthority = {
20
22
  type IntentAuthority = AvailableIntentAuthority | AdmittedIntentAuthority;
21
23
  type RouterAbEd25519YaoActivationIntentPurposeV1 = 'wallet_registration' | 'wallet_add_signer';
22
24
  export type RouterAbEd25519YaoVerifiedRegistrationIntentV1 = {
25
+ readonly ownershipGeneration: number;
23
26
  readonly kind: 'verified_registration_intent';
24
27
  readonly registrationIntentGrant: RegistrationIntentGrant;
25
28
  readonly intent: RegistrationIntentV1;
@@ -27,6 +30,7 @@ export type RouterAbEd25519YaoVerifiedRegistrationIntentV1 = {
27
30
  readonly expiresAtMs: number;
28
31
  };
29
32
  type RouterAbEd25519YaoVerifiedAddSignerIntentV1 = {
33
+ readonly ownershipGeneration: number;
30
34
  readonly kind: 'verified_add_signer_intent';
31
35
  readonly addSignerIntentGrant: AddSignerIntentGrant;
32
36
  readonly intent: AddSignerIntentV1 & {
@@ -72,6 +76,7 @@ export declare class InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAd
72
76
  constructor(state?: InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationStateV1);
73
77
  bindVerifiedIntent(verified: RouterAbEd25519YaoVerifiedActivationIntentV1): Promise<RouterAbEd25519YaoRegistrationIntentBindingResult>;
74
78
  bindVerifiedContinuation(verified: VerifiedNearRegistrationContinuationV1): Promise<RouterAbEd25519YaoRegistrationIntentBindingResult>;
79
+ bindAndAuthorizeAdmission(input: RouterAbEd25519YaoVerifiedActivationIntentV1): Promise<RouterAbEd25519YaoRegistrationIntentBindingResult | RouterAbEd25519YaoRegistrationAuthorizationFailure>;
75
80
  authorize(input: RouterAbEd25519YaoRegistrationAuthorizationInput): Promise<RouterAbEd25519YaoRegistrationAuthorizationResult>;
76
81
  private authorizeAdmission;
77
82
  private authorizeExecution;
@@ -1,4 +1,5 @@
1
1
  import type { VersionedJsonRecordPutResult, VersionedJsonRecordReadResult } from '../../../framework/versionedJsonRecordStore';
2
+ import type { RouterAbEd25519YaoPreparedWriteV1 } from '../capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore';
2
3
  export type RouterAbEd25519YaoRegistrationSideEffectOperationV1 = 'finalize' | 'registration_activate' | 'near_provisioning' | 'registration_start' | 'add_signer_start' | 'add_signer_finalize';
3
4
  type RouterAbEd25519YaoRetryableSideEffectFailureV1 = {
4
5
  readonly ok: false;
@@ -54,6 +55,8 @@ export type RouterAbEd25519YaoRegistrationSideEffectRecordV2<C, P> = RouterAbEd2
54
55
  export interface RouterAbEd25519YaoRegistrationSideEffectStoreV2<C, P> {
55
56
  read(key: string): Promise<VersionedJsonRecordReadResult<RouterAbEd25519YaoRegistrationSideEffectRecordV2<C, P>>>;
56
57
  put(key: string, value: RouterAbEd25519YaoRegistrationSideEffectRecordV2<C, P>, expectedVersion: string | null): Promise<VersionedJsonRecordPutResult>;
58
+ /** As `put`, with another store's write that commits in the same batch or not at all. */
59
+ putWithCompanion(key: string, value: RouterAbEd25519YaoRegistrationSideEffectRecordV2<C, P>, expectedVersion: string | null, companionWrite: RouterAbEd25519YaoPreparedWriteV1): Promise<VersionedJsonRecordPutResult>;
57
60
  }
58
61
  export declare function parseRouterAbEd25519YaoRegistrationSideEffectRecordV2<C, P>(raw: unknown, input: {
59
62
  readonly operation: RouterAbEd25519YaoRegistrationSideEffectOperationV1;
@@ -111,6 +114,8 @@ type RouterAbEd25519YaoRegistrationSideEffectRunInputV2<T, C, P> = {
111
114
  readonly kind: 'prepared_resumable';
112
115
  readonly operation: RouterAbEd25519YaoRegistrationSideEffectOperationV1;
113
116
  readonly key: string;
117
+ /** Read for this request. CAS reconciliation always reads the store again. */
118
+ readonly initialRecord: VersionedJsonRecordReadResult<RouterAbEd25519YaoRegistrationSideEffectRecordV2<C, P>>;
114
119
  readonly requestFingerprint: string;
115
120
  readonly resumeAfterMs: number;
116
121
  readonly nowMs: () => number;
@@ -118,6 +123,12 @@ type RouterAbEd25519YaoRegistrationSideEffectRunInputV2<T, C, P> = {
118
123
  readonly derivePreparedArtifactFingerprint: (prepared: P) => Promise<string>;
119
124
  readonly execute: (prepared: P, attempt: RouterAbEd25519YaoRegistrationSideEffectAttemptV1) => Promise<T>;
120
125
  readonly projectReceipt: (response: T) => Promise<C> | C;
126
+ /**
127
+ * Another store's write that the execution left for its completion, or
128
+ * none. It commits with the completion record: a completed operation
129
+ * implies that write, and a lost completion leaves it undone.
130
+ */
131
+ readonly completionWrite: (response: T) => RouterAbEd25519YaoPreparedWriteV1 | null;
121
132
  readonly replay: (receipt: C) => Promise<T>;
122
133
  };
123
134
  type RouterAbEd25519YaoRegistrationSideEffectRunResultV2<T, P> = RouterAbEd25519YaoRegistrationSideEffectRunResultV1<T, P>;
@@ -11,10 +11,19 @@ export type RouterAbEd25519YaoTenantRootWireV1 = {
11
11
  };
12
12
  export declare function parseRouterAbEd25519YaoTenantRootWireV1(input: unknown): RouterAbEd25519YaoTenantRootWireV1 | null;
13
13
  export declare function routerAbEd25519YaoTenantRootWireV1(root: RouterAbEd25519YaoResolvedTenantRootV1): Promise<RouterAbEd25519YaoTenantRootWireV1>;
14
- export type RouterAbEd25519YaoTenantRootResolutionInputV1 = {
14
+ /**
15
+ * Identifies the signing root that a registration is created under. Its
16
+ * tenant root depends on these two values alone, so it can be read before the
17
+ * admission request exists.
18
+ */
19
+ export type RouterAbEd25519YaoRegistrationSigningRootIdV1 = {
20
+ readonly signing_root_id: string;
21
+ readonly root_share_epoch: string;
22
+ };
23
+ export declare function routerAbEd25519YaoRegistrationSigningRootIdV1(admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1): RouterAbEd25519YaoRegistrationSigningRootIdV1;
24
+ export type RouterAbEd25519YaoTenantRootResolutionInputV1 = ({
15
25
  readonly operation: 'registration';
16
- readonly admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1;
17
- } | {
26
+ } & RouterAbEd25519YaoRegistrationSigningRootIdV1) | {
18
27
  readonly operation: 'recovery';
19
28
  readonly admissionRequest: RouterAbEd25519YaoRecoveryAdmissionRequestV1;
20
29
  } | {
@@ -5,12 +5,13 @@ import type { WalletCustodyCeremonyCommitPayload } from './walletCustodyRegistra
5
5
  import { type VerifiedEmailOtpEnrollmentFacts } from './verifiedCustodyFactor';
6
6
  import type { CloudflareD1WalletCustodyCommitStore } from '../../cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore';
7
7
  /**
8
- * The whole custody side-effect of one registration leg, in one call: resolve
9
- * the factor from the authority the leg verified, then admit the payload
10
- * against the wallet the leg registered.
8
+ * The whole custody side-effect of one registration leg, in two steps: resolve
9
+ * the factor from the authority the leg verified and admit the payload against
10
+ * the wallet the leg registers, which claims the recovery-code routes; then
11
+ * store the records once that wallet is committed.
11
12
  *
12
13
  * **Activation never fails because of custody.** The wallet's registration is
13
- * already committed by the time this runs, and the seed exists only in the
14
+ * already committed by the time the records are stored, and the seed exists only in the
14
15
  * client's worker — so the client is the one party that can retry, re-enter as
15
16
  * a join, or abandon the run. Failing activation here would leave the server
16
17
  * registered, the response an error, and the client with no instruction; the
@@ -25,7 +26,10 @@ import type { CloudflareD1WalletCustodyCommitStore } from '../../cloudflare/d1/p
25
26
  * payload it answers.
26
27
  */
27
28
  type RegistrationCustodyOutcome = WalletCustodyRegistrationOutcome;
28
- export declare function commitRegistrationCustody(input: {
29
+ /** Stores the admitted custody records. It reports every failure and never throws. */
30
+ export type RegistrationCustodyCommit = () => Promise<RegistrationCustodyOutcome>;
31
+ /** Admits the custody payload and claims its routes. It never throws either. */
32
+ export declare function reserveRegistrationCustody(input: {
29
33
  /** Absent when the client did not run a custody ceremony for this leg. */
30
34
  readonly payload?: WalletCustodyCeremonyCommitPayload;
31
35
  readonly verifiedWalletId: WalletId;
@@ -34,6 +38,6 @@ export declare function commitRegistrationCustody(input: {
34
38
  readonly verifiedEmailOtpEnrollment?: VerifiedEmailOtpEnrollmentFacts;
35
39
  readonly nowMs: number;
36
40
  readonly store: CloudflareD1WalletCustodyCommitStore;
37
- }): Promise<RegistrationCustodyOutcome>;
41
+ }): Promise<RegistrationCustodyCommit>;
38
42
  export {};
39
43
  //# sourceMappingURL=registrationCustodyOutcome.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import type { WalletId } from '../../../../../shared-ts/src/utils/domainIds';
2
2
  import type { WalletCustodyEnvelopeFactor } from '../../../../../shared-ts/src/passkey-custody';
3
- import { type WalletCustodyCeremonyCommitPayload, type WalletCustodyRegistrationCommitOutcome } from './walletCustodyRegistrationCommit';
3
+ import { type WalletCustodyCeremonyCommitPayload, type WalletCustodyRegistrationCommitOutcome, type WalletCustodyRegistrationReserved } from './walletCustodyRegistrationCommit';
4
4
  import type { CloudflareD1WalletCustodyCommitStore } from '../../cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore';
5
5
  /**
6
6
  * Admits one ceremony's custody commit against a registration this server has
@@ -12,7 +12,7 @@ import type { CloudflareD1WalletCustodyCommitStore } from '../../cloudflare/d1/p
12
12
  * leg's own auth proof. A separate endpoint would be a second, weaker way in.
13
13
  *
14
14
  * This module is where that decision is enforced, and it is deliberately the
15
- * only path to `commitWalletCustodyRegistration` from a route. Two checks, both
15
+ * only path to `reserveWalletCustodyRegistration` from a route. Two checks, both
16
16
  * cheap and both load-bearing:
17
17
  *
18
18
  * 1. **The payload names the wallet the registration named.** A ceremony
@@ -52,6 +52,13 @@ type WalletCustodyRegistrationAdmissionInput = {
52
52
  readonly nowMs: number;
53
53
  readonly store: CloudflareD1WalletCustodyCommitStore;
54
54
  };
55
- export declare function admitWalletCustodyRegistrationCommit(input: WalletCustodyRegistrationAdmissionInput): Promise<WalletCustodyRegistrationAdmissionOutcome>;
55
+ /**
56
+ * An admitted commit with its recovery-code routes claimed, or the outcome
57
+ * that ends the admission with nothing claimed or written.
58
+ */
59
+ export type WalletCustodyRegistrationAdmission = WalletCustodyRegistrationReserved | Extract<WalletCustodyRegistrationAdmissionOutcome, {
60
+ kind: 'rejected' | 'no_custody_records';
61
+ }>;
62
+ export declare function admitWalletCustodyRegistrationCommit(input: WalletCustodyRegistrationAdmissionInput): Promise<WalletCustodyRegistrationAdmission>;
56
63
  export {};
57
64
  //# sourceMappingURL=walletCustodyRegistrationAdmission.d.ts.map
@@ -19,18 +19,25 @@ export type WalletCustodyRegistrationCommitOutcome = ({
19
19
  readonly kind: 'rejected';
20
20
  readonly reason: string;
21
21
  };
22
+ /** The write that a reservation left for after the registration's wallet commit. */
23
+ export type WalletCustodyRegistrationReserved = {
24
+ readonly kind: 'reserved';
25
+ readonly commit: () => Promise<WalletCustodyRegistrationCommitOutcome>;
26
+ };
22
27
  /**
23
- * Builds and commits in one call.
28
+ * Builds the records and claims their recovery-code routes.
24
29
  *
25
30
  * A payload this server cannot parse becomes `rejected` rather than an
26
31
  * exception, so a malformed ceremony result is a request outcome and not a
27
- * route crash. Nothing is written in that case: the records are built before
28
- * the store is touched.
32
+ * route crash. Nothing is claimed or written in that case: the records are
33
+ * built before the store is touched.
29
34
  */
30
- export declare function commitWalletCustodyRegistration(input: {
35
+ export declare function reserveWalletCustodyRegistration(input: {
31
36
  readonly payload: WalletCustodyCeremonyCommitPayload;
32
37
  readonly factor: unknown;
33
38
  readonly nowMs: number;
34
39
  readonly store: CloudflareD1WalletCustodyCommitStore;
35
- }): Promise<WalletCustodyRegistrationCommitOutcome>;
40
+ }): Promise<WalletCustodyRegistrationReserved | Extract<WalletCustodyRegistrationCommitOutcome, {
41
+ kind: 'rejected';
42
+ }>>;
36
43
  //# sourceMappingURL=walletCustodyRegistrationCommit.d.ts.map
@@ -0,0 +1,97 @@
1
+ import type { Ed25519ReusableAuthorizedOperationReceipt } from './ed25519AuthorizedOperationReceipt';
2
+ import type { AuthorizedOperation } from '../../../authorization/domain';
3
+ export type AuthorizedOperationBindingWire = {
4
+ readonly kind: 'reusable_wallet_session';
5
+ readonly authorization_id: string;
6
+ readonly wallet_session_id: string;
7
+ readonly quota_id: string;
8
+ } | {
9
+ readonly kind: 'gateway_owner_wallet_session';
10
+ readonly ownership_generation: number;
11
+ readonly subject_id: string;
12
+ readonly account_id: string;
13
+ readonly authorization_id: string;
14
+ readonly wallet_session_id: string;
15
+ readonly quota_id: string;
16
+ readonly threshold_session_id: string;
17
+ readonly org_id: string;
18
+ readonly project_id: string;
19
+ readonly environment: string;
20
+ readonly project_environment_id: string;
21
+ readonly signing_worker_id: string;
22
+ readonly expires_at_ms: number;
23
+ } | {
24
+ readonly kind: 'operation_step_up';
25
+ readonly ownership_generation: number;
26
+ readonly authorization_session_id: string;
27
+ readonly org_id: string;
28
+ readonly project_id: string;
29
+ readonly environment: string;
30
+ readonly project_environment_id: string;
31
+ readonly subject_id: string;
32
+ readonly account_id: string;
33
+ };
34
+ export type AuthorizedOperationWireInput = {
35
+ readonly operation: AuthorizedOperation;
36
+ readonly binding: {
37
+ readonly kind: 'reusable_wallet_session';
38
+ readonly walletSessionId: string;
39
+ readonly quotaId: string;
40
+ };
41
+ } | {
42
+ readonly operation: AuthorizedOperation;
43
+ readonly binding: {
44
+ readonly kind: 'gateway_owner_wallet_session';
45
+ readonly ownershipGeneration: number;
46
+ readonly subjectId: string;
47
+ readonly accountId: string;
48
+ readonly authorizationId: string;
49
+ readonly walletSessionId: string;
50
+ readonly quotaId: string;
51
+ readonly thresholdSessionId: string;
52
+ readonly orgId: string;
53
+ readonly projectId: string;
54
+ readonly environment: string;
55
+ readonly projectEnvironmentId: string;
56
+ readonly signingWorkerId: string;
57
+ readonly expiresAtMs: number;
58
+ };
59
+ } | {
60
+ readonly operation: AuthorizedOperation;
61
+ readonly binding: OperationStepUpBinding;
62
+ };
63
+ export type OperationStepUpBinding = {
64
+ readonly kind: 'operation_step_up';
65
+ readonly ownershipGeneration: number;
66
+ readonly authorizationSessionId: string;
67
+ readonly orgId: string;
68
+ readonly projectId: string;
69
+ readonly environment: string;
70
+ readonly projectEnvironmentId: string;
71
+ readonly subjectId: string;
72
+ readonly accountId: string;
73
+ };
74
+ type AuthorizedOperationFields = {
75
+ readonly authorized_operation_id: string;
76
+ readonly operation_id: string;
77
+ readonly lane_digest_b64u: string;
78
+ readonly intent_digest_b64u: string;
79
+ readonly display_digest_b64u: string;
80
+ readonly operation_fingerprint_digest: string;
81
+ } & ({
82
+ readonly capability_kind: 'evm_ecdsa_mpc_signing';
83
+ readonly operation_kind: 'evm.sign_transaction';
84
+ } | Pick<Ed25519ReusableAuthorizedOperationReceipt, 'capability_kind' | 'operation_kind'>);
85
+ type AuthorizedOperationWire<T extends AuthorizedOperationFields> = {
86
+ readonly binding: AuthorizedOperationBindingWire;
87
+ readonly authorized_operation: (T & {
88
+ readonly kind: 'reusable_wallet_session_authorized_operation_v1';
89
+ }) | (T & {
90
+ readonly kind: 'verified_step_up_authorized_operation_v1';
91
+ readonly authorization_session_id: string;
92
+ readonly evidence_set_digest: string;
93
+ });
94
+ };
95
+ export declare function buildAuthorizedOperationWire<T extends AuthorizedOperationFields>(input: AuthorizedOperationWireInput, commonAuthorizedOperation: T): AuthorizedOperationWire<T>;
96
+ export {};
97
+ //# sourceMappingURL=authorizedOperationWire.d.ts.map
@@ -0,0 +1,13 @@
1
+ import type { AuthorizedOperation } from '../../../authorization/domain';
2
+ import type { RouterApiAuthorizedOperationService } from '../../framework/authServicePort';
3
+ export declare function finishRouterAbEcdsaSigningResponse(input: {
4
+ readonly upstream: Response;
5
+ readonly operation: AuthorizedOperation;
6
+ readonly authorizedOperations: RouterApiAuthorizedOperationService;
7
+ readonly timing: {
8
+ proxy: number | null;
9
+ complete: number | null;
10
+ };
11
+ readonly proxyStartedAt: number;
12
+ }): Promise<Response>;
13
+ //# sourceMappingURL=ecdsaSigningResponse.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { D1EcdsaAdmissionPolicyRead } from '../../cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore';
1
+ import type { D1EcdsaAdmissionPolicyRead, D1Ed25519AdmissionPolicyRead } from '../../cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore';
2
2
  import type { RouterAbNormalSigningAuthorizationIdentity } from '../../../core/routerAbSigning/RouterAbNormalSigningRuntime';
3
3
  import type { RouterAbNormalSigningRuntime } from '../../../core/routerAbSigning/RouterAbNormalSigningRuntime';
4
4
  import type { ThresholdEd25519AuthorityScope } from '../../../core/types';
@@ -8,205 +8,6 @@ import type { AuthorizationParseResult } from '../../../../../shared-ts/src/auth
8
8
  import type { AuthorizedOperation, AuthorizedOperationReplayResponse, OwnerOperationStepUpReason } from '../../../authorization/domain';
9
9
  import type { RouterAbMpcMaterialActivationRefWire } from '../../../../../shared-ts/src/utils/routerAbNormalSigningIdentity';
10
10
  import { type MpcMaterialActivationId } from '../../../../../shared-ts/src/utils/domainIds';
11
- type RouterAbAcceptedAuthorizedOperationBindingV1 = {
12
- readonly kind: 'reusable_wallet_session';
13
- readonly walletSessionId: string;
14
- readonly quotaId: string;
15
- } | {
16
- readonly kind: 'gateway_owner_wallet_session';
17
- readonly subjectId: string;
18
- readonly accountId: string;
19
- readonly authorizationId: string;
20
- readonly walletSessionId: string;
21
- readonly quotaId: string;
22
- readonly thresholdSessionId: string;
23
- readonly orgId: string;
24
- readonly projectId: string;
25
- readonly environment: string;
26
- readonly signingWorkerId: string;
27
- readonly expiresAtMs: number;
28
- } | {
29
- readonly kind: 'operation_step_up';
30
- readonly authorizationSessionId: string;
31
- readonly orgId: string;
32
- readonly projectId: string;
33
- readonly environment: string;
34
- readonly subjectId: string;
35
- };
36
- export declare function buildRouterAbEd25519AcceptedAuthorizedOperationV1(input: {
37
- readonly operation: AuthorizedOperation;
38
- readonly binding: RouterAbAcceptedAuthorizedOperationBindingV1;
39
- }): {
40
- binding: {
41
- kind: "reusable_wallet_session";
42
- authorization_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").WalletSessionAuthorizationId;
43
- wallet_session_id: string;
44
- quota_id: string;
45
- subject_id?: undefined;
46
- account_id?: undefined;
47
- threshold_session_id?: undefined;
48
- org_id?: undefined;
49
- project_id?: undefined;
50
- environment?: undefined;
51
- signing_worker_id?: undefined;
52
- expires_at_ms?: undefined;
53
- authorization_session_id?: undefined;
54
- };
55
- authorized_operation: {
56
- authorized_operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").AuthorizedOperationId;
57
- operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").CapabilityOperationId;
58
- capability_kind: "near_ed25519_mpc_signing" | "evm_ecdsa_mpc_signing";
59
- operation_kind: "near.sign_transaction" | "near.sign_delegate_action" | "near.sign_nep413_message" | "evm.sign_transaction";
60
- lane_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
61
- intent_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
62
- display_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
63
- operation_fingerprint_digest: import("../../../../../shared-ts/src/authorization").CapabilityOperationFingerprintDigest;
64
- kind: "reusable_wallet_session_authorized_operation_v1";
65
- };
66
- } | {
67
- binding: {
68
- kind: "gateway_owner_wallet_session";
69
- subject_id: string;
70
- account_id: string;
71
- authorization_id: string;
72
- wallet_session_id: string;
73
- quota_id: string;
74
- threshold_session_id: string;
75
- org_id: string;
76
- project_id: string;
77
- environment: string;
78
- signing_worker_id: string;
79
- expires_at_ms: number;
80
- authorization_session_id?: undefined;
81
- };
82
- authorized_operation: {
83
- authorized_operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").AuthorizedOperationId;
84
- operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").CapabilityOperationId;
85
- capability_kind: "near_ed25519_mpc_signing" | "evm_ecdsa_mpc_signing";
86
- operation_kind: "near.sign_transaction" | "near.sign_delegate_action" | "near.sign_nep413_message" | "evm.sign_transaction";
87
- lane_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
88
- intent_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
89
- display_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
90
- operation_fingerprint_digest: import("../../../../../shared-ts/src/authorization").CapabilityOperationFingerprintDigest;
91
- kind: "reusable_wallet_session_authorized_operation_v1";
92
- };
93
- } | {
94
- binding: {
95
- kind: "operation_step_up";
96
- authorization_session_id: string;
97
- org_id: string;
98
- project_id: string;
99
- environment: string;
100
- subject_id: string;
101
- authorization_id?: undefined;
102
- wallet_session_id?: undefined;
103
- quota_id?: undefined;
104
- account_id?: undefined;
105
- threshold_session_id?: undefined;
106
- signing_worker_id?: undefined;
107
- expires_at_ms?: undefined;
108
- };
109
- authorized_operation: {
110
- authorized_operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").AuthorizedOperationId;
111
- operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").CapabilityOperationId;
112
- capability_kind: "near_ed25519_mpc_signing" | "evm_ecdsa_mpc_signing";
113
- operation_kind: "near.sign_transaction" | "near.sign_delegate_action" | "near.sign_nep413_message" | "evm.sign_transaction";
114
- lane_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
115
- intent_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
116
- display_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
117
- operation_fingerprint_digest: import("../../../../../shared-ts/src/authorization").CapabilityOperationFingerprintDigest;
118
- kind: "verified_step_up_authorized_operation_v1";
119
- authorization_session_id: string;
120
- evidence_set_digest: import("../../../../../shared-ts/src/utils").DigestB64u;
121
- };
122
- };
123
- export declare function buildRouterAbEcdsaAcceptedAuthorizedOperationV1(input: {
124
- readonly operation: AuthorizedOperation;
125
- readonly binding: RouterAbAcceptedAuthorizedOperationBindingV1;
126
- }): {
127
- binding: {
128
- kind: "reusable_wallet_session";
129
- authorization_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").WalletSessionAuthorizationId;
130
- wallet_session_id: string;
131
- quota_id: string;
132
- subject_id?: undefined;
133
- account_id?: undefined;
134
- threshold_session_id?: undefined;
135
- org_id?: undefined;
136
- project_id?: undefined;
137
- environment?: undefined;
138
- signing_worker_id?: undefined;
139
- expires_at_ms?: undefined;
140
- authorization_session_id?: undefined;
141
- };
142
- authorized_operation: {
143
- authorized_operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").AuthorizedOperationId;
144
- operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").CapabilityOperationId;
145
- capability_kind: "near_ed25519_mpc_signing" | "evm_ecdsa_mpc_signing";
146
- operation_kind: "near.sign_transaction" | "near.sign_delegate_action" | "near.sign_nep413_message" | "evm.sign_transaction";
147
- lane_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
148
- intent_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
149
- display_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
150
- operation_fingerprint_digest: import("../../../../../shared-ts/src/authorization").CapabilityOperationFingerprintDigest;
151
- kind: "reusable_wallet_session_authorized_operation_v1";
152
- };
153
- } | {
154
- binding: {
155
- kind: "gateway_owner_wallet_session";
156
- subject_id: string;
157
- account_id: string;
158
- authorization_id: string;
159
- wallet_session_id: string;
160
- quota_id: string;
161
- threshold_session_id: string;
162
- org_id: string;
163
- project_id: string;
164
- environment: string;
165
- signing_worker_id: string;
166
- expires_at_ms: number;
167
- authorization_session_id?: undefined;
168
- };
169
- authorized_operation: {
170
- authorized_operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").AuthorizedOperationId;
171
- operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").CapabilityOperationId;
172
- capability_kind: "near_ed25519_mpc_signing" | "evm_ecdsa_mpc_signing";
173
- operation_kind: "near.sign_transaction" | "near.sign_delegate_action" | "near.sign_nep413_message" | "evm.sign_transaction";
174
- lane_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
175
- intent_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
176
- display_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
177
- operation_fingerprint_digest: import("../../../../../shared-ts/src/authorization").CapabilityOperationFingerprintDigest;
178
- kind: "reusable_wallet_session_authorized_operation_v1";
179
- };
180
- } | {
181
- binding: {
182
- kind: "operation_step_up";
183
- authorization_session_id: string;
184
- org_id: string;
185
- project_id: string;
186
- environment: string;
187
- subject_id: string;
188
- authorization_id?: undefined;
189
- wallet_session_id?: undefined;
190
- quota_id?: undefined;
191
- account_id?: undefined;
192
- threshold_session_id?: undefined;
193
- signing_worker_id?: undefined;
194
- expires_at_ms?: undefined;
195
- };
196
- authorized_operation: {
197
- authorized_operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").AuthorizedOperationId;
198
- operation_id: import("../../../../../shared-ts/src/authorization/capabilityKinds").CapabilityOperationId;
199
- capability_kind: "near_ed25519_mpc_signing" | "evm_ecdsa_mpc_signing";
200
- operation_kind: "near.sign_transaction" | "near.sign_delegate_action" | "near.sign_nep413_message" | "evm.sign_transaction";
201
- lane_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
202
- intent_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
203
- display_digest_b64u: import("../../../../../shared-ts/src/utils").DigestB64u;
204
- operation_fingerprint_digest: import("../../../../../shared-ts/src/authorization").CapabilityOperationFingerprintDigest;
205
- kind: "verified_step_up_authorized_operation_v1";
206
- authorization_session_id: string;
207
- evidence_set_digest: import("../../../../../shared-ts/src/utils").DigestB64u;
208
- };
209
- };
210
11
  export type RouterAbSigningWorkerJsonResult = {
211
12
  ok: true;
212
13
  body: unknown;
@@ -278,16 +79,18 @@ export type RouterAbNormalSigningAdmissionFailure = {
278
79
  export type RouterAbNormalSigningAdmissionResult = {
279
80
  ok: true;
280
81
  } | RouterAbNormalSigningAdmissionFailure;
281
- type RouterAbNormalSigningPolicyReadSource = {
82
+ /** Where a policy decision comes from: the store, or rows the credential read already holds. */
83
+ type RouterAbNormalSigningPolicyReadSource<PolicyRead> = {
282
84
  readonly kind: 'database';
283
85
  readonly policyRead?: never;
284
86
  } | {
285
87
  readonly kind: 'credential_snapshot';
286
- readonly policyRead: D1EcdsaAdmissionPolicyRead;
88
+ readonly policyRead: PolicyRead;
287
89
  };
90
+ export type RouterAbEd25519PolicyReadSource = RouterAbNormalSigningPolicyReadSource<D1Ed25519AdmissionPolicyRead>;
288
91
  export type RouterAbNormalSigningAdmissionInput = {
289
92
  curve: 'ed25519';
290
- readonly policyReadSource?: never;
93
+ readonly policyReadSource: RouterAbEd25519PolicyReadSource;
291
94
  authorityKind: 'wallet_authority_v1';
292
95
  authorityId: string;
293
96
  authorityScope?: never;
@@ -317,7 +120,7 @@ export type RouterAbNormalSigningAdmissionInput = {
317
120
  runtimePolicyScope: RuntimePolicyScope;
318
121
  } | {
319
122
  curve: 'ecdsa';
320
- readonly policyReadSource: RouterAbNormalSigningPolicyReadSource;
123
+ readonly policyReadSource: RouterAbNormalSigningPolicyReadSource<D1EcdsaAdmissionPolicyRead>;
321
124
  phase: 'prepare' | 'finalize';
322
125
  walletId: string;
323
126
  materialActivationId: MpcMaterialActivationId;
@@ -334,7 +137,7 @@ export interface RouterAbNormalSigningAdmissionAdapter {
334
137
  export type RouterAbNormalSigningAdmissionEvaluationInput = {
335
138
  adapter: RouterAbNormalSigningAdmissionAdapter | null | undefined;
336
139
  curve: 'ed25519';
337
- readonly policyReadSource?: never;
140
+ readonly policyReadSource: RouterAbEd25519PolicyReadSource;
338
141
  authorizationKind: 'wallet_session_operation_credential_v1';
339
142
  phase: 'prepare' | 'finalize';
340
143
  walletId: string;
@@ -349,7 +152,7 @@ export type RouterAbNormalSigningAdmissionEvaluationInput = {
349
152
  } | {
350
153
  adapter: RouterAbNormalSigningAdmissionAdapter | null | undefined;
351
154
  curve: 'ecdsa';
352
- readonly policyReadSource: RouterAbNormalSigningPolicyReadSource;
155
+ readonly policyReadSource: RouterAbNormalSigningPolicyReadSource<D1EcdsaAdmissionPolicyRead>;
353
156
  authorizationKind: 'wallet_session_operation_credential_v1';
354
157
  phase: 'prepare' | 'finalize';
355
158
  walletId: string;
@@ -0,0 +1,23 @@
1
+ import type { Variant } from '../../../../../shared-ts/src/utils/variant';
2
+ import type { RouterAbEd25519NormalSigningAuthorizationResult } from './routerAbEd25519NormalSigningRoute';
3
+ import type { RouterAbEcdsaNormalSigningAuthorizationResult } from './routerAbEcdsaDerivationNormalSigningRoute';
4
+ /** The session snapshot validated for this admission, before its quota claim. */
5
+ export declare function signingPrepareSessionResponse(signing: unknown, authorization: Variant<RouterAbEcdsaNormalSigningAuthorizationResult | RouterAbEd25519NormalSigningAuthorizationResult, 'ok', true>): {
6
+ kind: "operation_step_up";
7
+ signing: unknown;
8
+ session_status?: undefined;
9
+ } | {
10
+ kind: "reusable_wallet_session";
11
+ signing: unknown;
12
+ session_status: {
13
+ ok: boolean;
14
+ status: string;
15
+ walletSessionId: import("../../../../../shared-ts/src/authorization").WalletSessionId;
16
+ quotaId: import("../../../../../shared-ts/src/authorization").MpcWalletSigningQuotaId;
17
+ remainingUses: number;
18
+ expiresAtMs: number;
19
+ quotaLifecycle: string;
20
+ authorization: import("../../../../../shared-ts/src/device-linking").ActiveWalletSessionV1;
21
+ };
22
+ };
23
+ //# sourceMappingURL=signingPrepareSession.d.ts.map
@@ -0,0 +1,36 @@
1
+ import type { RegistrationEstablishedSessionProjectionV2 } from '../../../../../shared-ts/src/utils/registrationEstablishedSession';
2
+ import type { SigningSessionSealServerSealRequest, SigningSessionSealService } from '../../../threshold/session/signingSessionSeal/signingSessionSeal.types';
3
+ type SealSession = Pick<RegistrationEstablishedSessionProjectionV2, 'walletId' | 'walletSessionId' | 'expiresAtMs' | 'remainingUses' | 'tokens'>;
4
+ type SealFailure = {
5
+ readonly ok: false;
6
+ readonly code: string;
7
+ readonly message: string;
8
+ };
9
+ type SealResult = {
10
+ readonly ok: true;
11
+ readonly value: {
12
+ readonly ciphertext: string;
13
+ readonly keyVersion: string;
14
+ readonly expiresAtMs: number;
15
+ readonly remainingUses: number;
16
+ };
17
+ } | SealFailure;
18
+ /** Holds one request's computation until registration can publish its response. */
19
+ declare class RegistrationPreparedSessionSeal {
20
+ private readonly request;
21
+ private readonly service;
22
+ private prepared;
23
+ constructor(request: SigningSessionSealServerSealRequest, service: SigningSessionSealService | null);
24
+ prepare(session: RegistrationEstablishedSessionProjectionV2): Promise<void>;
25
+ finish(session: SealSession): Promise<SealResult>;
26
+ }
27
+ export declare function parseRegistrationPreparedSessionSeal(raw: unknown, service: SigningSessionSealService | null): {
28
+ readonly ok: true;
29
+ readonly value: RegistrationPreparedSessionSeal | null;
30
+ } | {
31
+ readonly ok: false;
32
+ readonly code: 'invalid_body';
33
+ readonly message: string;
34
+ };
35
+ export {};
36
+ //# sourceMappingURL=registrationSessionSeal.d.ts.map