@seams/wallet-server 0.8.0 → 0.9.1

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
@@ -0,0 +1,26 @@
1
+ import { type WalletObjectIdentity } from './walletObjectAddresses';
2
+ import type { WalletConsoleServiceBinding } from './walletConsoleOpsClient';
3
+ export type RuntimeSourceOperation = 'ed25519-settle' | 'ed25519-capture' | 'ecdsa-freeze' | 'router-freeze' | 'router-export' | 'router-status' | 'router-verify' | 'router-import' | 'router-activate' | 'router-cleanup';
4
+ export type RuntimeSourceDirectory = {
5
+ readonly WALLET_CONSOLE: WalletConsoleServiceBinding;
6
+ readonly CF_VERSION_METADATA: {
7
+ readonly id: unknown;
8
+ };
9
+ readonly SEAMS_D1_HOME_ACCOUNT_ID: string;
10
+ readonly SEAMS_D1_HOME_DATABASE_ID: string;
11
+ };
12
+ type SourceAuthorization = {
13
+ readonly ok: true;
14
+ readonly body: string;
15
+ readonly identity: WalletObjectIdentity;
16
+ readonly code?: never;
17
+ } | {
18
+ readonly ok: false;
19
+ readonly code: 'invalid_input' | 'source_command_unavailable' | 'source_command_denied';
20
+ readonly body?: never;
21
+ readonly identity?: never;
22
+ };
23
+ export declare function authorizeRuntimeSource(input: unknown, operation: RuntimeSourceOperation, env: RuntimeSourceDirectory): Promise<SourceAuthorization>;
24
+ export declare function recordRuntimeRouterReceipt(operation: 'router-freeze' | 'router-activate', input: unknown, response: Response, env: RuntimeSourceDirectory): Promise<Response>;
25
+ export {};
26
+ //# sourceMappingURL=walletRelocationSource.d.ts.map
@@ -1,3 +1,4 @@
1
+ import type { WalletExecutionAuthority } from '../../domains/walletRegistration/walletRegistrationReservation';
1
2
  import { type OrdinaryEcdsaSignerMaterialReservationRequestV1, type OrdinaryEcdsaSignerMaterialDeactivationRequestV1, type OrdinaryEcdsaSignerMaterialWorkerReservationV1, type OrdinaryEd25519SignerMaterialReservationRequestV1, type OrdinaryEd25519SignerMaterialDeactivationRequestV1, type OrdinaryEd25519SignerMaterialWorkerReservationV1, type OrdinaryInactiveSignerMaterialDeactivationPortV1, type OrdinaryInactiveSignerMaterialDeactivationRequestV1, type OrdinaryInactiveSignerMaterialReservationServiceV1, type OrdinaryInactiveSignerMaterialReservationWorkerPortV1 } from '../../../core/signingMaterial/ordinaryInactiveSignerMaterialReservation';
2
3
  import { type LinkedDeviceEd25519SourceContributionPreparationV1 } from '../../../../../shared-ts/src/device-linking/sourceContribution';
3
4
  import type { DeviceLinkingEd25519SourcePreservingRouterPortV1 } from '../../transport/fetch/routes/deviceLinking';
@@ -34,16 +35,19 @@ export type CloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1 = {
34
35
  };
35
36
  export type CloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1 = DeviceLinkingEd25519SourcePreservingRouterPortV1;
36
37
  export declare function createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1(input: {
38
+ readonly admitEstablishedHome: WalletExecutionAuthority['admitEstablishedHome'];
37
39
  readonly fetch: typeof fetch;
38
40
  readonly internalServiceAuthSecret: string;
39
41
  readonly resolveTenantRoot: (context: Pick<LinkedDeviceEd25519SourceContributionPreparationV1, 'applicationBinding' | 'targetAdmission' | 'participantIds'>) => Promise<RouterAbEd25519YaoResolvedTenantRootV1>;
40
42
  }): CloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1;
41
43
  export type CloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1 = {
42
44
  activateInactiveEd25519SignerMaterialV1(input: {
45
+ readonly ownershipGeneration: number;
43
46
  readonly sourceContribution: OrdinaryEd25519SignerMaterialReservationPreparationV1['sourceContribution'];
44
47
  readonly reservationId: string;
45
48
  }): Promise<unknown>;
46
49
  activateInactiveEcdsaSignerMaterialV1(input: {
50
+ readonly ownershipGeneration: number;
47
51
  readonly preparation: OrdinaryEcdsaSignerMaterialReservationPreparationV1;
48
52
  readonly reservationId: string;
49
53
  }): Promise<unknown>;
@@ -67,6 +71,7 @@ export declare function createCloudflareOrdinaryInactiveSignerMaterialActivation
67
71
  readonly tenant: CloudflareSigningWorkerTenantV1;
68
72
  }): CloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1;
69
73
  export declare function createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1(input: {
74
+ readonly admitEstablishedHome: WalletExecutionAuthority['admitEstablishedHome'];
70
75
  readonly fetch: typeof fetch;
71
76
  readonly internalServiceAuthSecret: string;
72
77
  readonly tenant: CloudflareSigningWorkerTenantV1;
@@ -64,6 +64,7 @@ export type RouterAbEcdsaRegistrationRequestPolicyV1 = {
64
64
  readonly requestDigestB64u: string;
65
65
  };
66
66
  export type RouterAbEcdsaRegistrationTenantRootV1 = {
67
+ readonly ownershipGeneration: number;
67
68
  readonly identityDigestB64u: string;
68
69
  readonly custodyLineageB64u: string;
69
70
  readonly projectEnvironmentId: string;
@@ -145,6 +146,7 @@ export interface RouterAbEcdsaStrictPostRegistrationPort {
145
146
  }): Promise<RouterAbEcdsaStrictRefreshResult>;
146
147
  }
147
148
  export type RouterAbEcdsaCeremonyTokenClaims = {
149
+ readonly ownershipGeneration: number;
148
150
  readonly subjectId: string;
149
151
  readonly sessionId: string;
150
152
  readonly orgId: string;
@@ -174,6 +176,7 @@ export interface RouterAbEcdsaCeremonyTokenIssuer {
174
176
  };
175
177
  }
176
178
  type StrictRegistrationForwarderConfig = {
179
+ readonly internalServiceAuthSecret: string;
177
180
  readonly router: {
178
181
  fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
179
182
  };
@@ -0,0 +1,7 @@
1
+ import type { WalletEd25519YaoActiveCapabilityRecord } from '../../../../core/WalletStore';
2
+ import { type RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallationV1, type RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallResultV1 } from '../recovery/routerAbEd25519YaoRecovery';
3
+ import type { RouterAbEd25519YaoPreparedWriteV1, RouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1 } from './routerAbEd25519YaoProductRegistrationPartitionedStateStore';
4
+ /** The wallet and its initial capability become visible in the same transaction. */
5
+ export declare function commitRouterAbEd25519YaoRegistrationCapability(store: RouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, installation: RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallationV1, walletWrite: Promise<RouterAbEd25519YaoPreparedWriteV1>): Promise<RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallResultV1>;
6
+ export declare function rehydrateRouterAbEd25519YaoCapability(store: RouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, capability: WalletEd25519YaoActiveCapabilityRecord): Promise<RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallResultV1>;
7
+ //# sourceMappingURL=routerAbEd25519YaoCapabilityCommit.d.ts.map
@@ -4,7 +4,7 @@ import { type RegistrationNearEd25519SignerPlan } from '../../../../../../shared
4
4
  import { type RouterAbEd25519YaoActivationAdmissionReceiptV1, type RouterAbEd25519YaoRegistrationAdmissionRequestV1 } from '../../../../../../shared-ts/src/utils/routerAbEd25519Yao';
5
5
  import { type RouterAbMpcMaterialActivationRefWire } from '../../../../../../shared-ts/src/utils/routerAbNormalSigningIdentity';
6
6
  import type { RouterAbEd25519YaoActivationConsumerV1, RouterAbEd25519YaoActivationConsumptionRequestV1, RouterAbEd25519YaoActivationConsumptionResultV1, RouterAbEd25519YaoRegistrationServiceResult } from '../registration/routerAbEd25519YaoRegistration';
7
- import { InMemoryRouterAbEd25519YaoRegistrationStateV1, type RouterAbEd25519YaoRegistrationAuthorizationAdapter, type RouterAbEd25519YaoRegistrationService } from '../registration/routerAbEd25519YaoRegistration';
7
+ import { InMemoryRouterAbEd25519YaoRegistrationStateV1, type RouterAbEd25519YaoRegistrationAuthorizationAdapter, type RouterAbEd25519YaoRegistrationAuthorizationResult, type RouterAbEd25519YaoRegistrationAuthorizationFailure, type RouterAbEd25519YaoRegistrationService } from '../registration/routerAbEd25519YaoRegistration';
8
8
  import { InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationStateV1, type RouterAbEd25519YaoVerifiedActivationIntentV1, type RouterAbEd25519YaoRegistrationIntentBindingResult } from '../registration/routerAbEd25519YaoRegistrationIntentAuthorization';
9
9
  import { type RouterApiModule } from '../../../framework/modules';
10
10
  import type { MpcWalletSigningQuotaId, WalletSessionAuthorizationId, WalletSessionId } from '../../../../../../shared-ts/src/authorization/capabilityKinds';
@@ -13,9 +13,11 @@ import { type RuntimePolicyScope } from '../../../../../../shared-ts/src/thresho
13
13
  import type { WalletAuthAuthority } from '../../../../../../shared-ts/src/utils/walletAuthAuthority';
14
14
  import type { WalletSessionOperationCredentialV1 } from '../../../../../../shared-ts/src/device-linking';
15
15
  import type { WalletRegistrationEd25519YaoBootstrapSession } from '../../../../../../shared-ts/src/utils/registrationContracts';
16
- import { InMemoryRouterAbEd25519YaoRecoveryStateV1, type RouterAbEd25519YaoActiveCapabilityLookupV1, type RouterAbEd25519YaoActiveCapabilityResolverV1, type RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1, type RouterAbEd25519YaoRecoveryAuthorizationAdapter, type RouterAbEd25519YaoRecoveryService, type RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallerV1, type WarmBootstrapLinkedEd25519AuthorityReaderV1 } from '../recovery/routerAbEd25519YaoRecovery';
16
+ import { InMemoryRouterAbEd25519YaoRecoveryStateV1, type RouterAbEd25519YaoActiveCapabilityLookupV1, type RouterAbEd25519YaoActiveCapabilityResolverV1, type RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1, type RouterAbEd25519YaoRecoveryAuthorizationAdapter, type RouterAbEd25519YaoRecoveryService, type WarmBootstrapLinkedEd25519AuthorityReaderV1 } from '../recovery/routerAbEd25519YaoRecovery';
17
17
  import type { WalletEd25519YaoActiveCapabilityRecord } from '../../../../core/WalletStore';
18
18
  import { InMemoryRouterAbEd25519YaoExportStateV1, type RouterAbEd25519YaoExportAuthorizationAdapter, type RouterAbEd25519YaoExportService } from '../export/routerAbEd25519YaoExport';
19
+ import { type RouterAbEd25519YaoRegistrationSigningRootIdV1, type RouterAbEd25519YaoTenantRootWireV1 } from '../routerAbEd25519YaoGatewayEnvelope';
20
+ import type { RouterAbEd25519YaoPreparedWriteV1 } from './routerAbEd25519YaoProductRegistrationPartitionedStateStore';
19
21
  import type { DigestB64u } from '../../../../../../shared-ts/src/utils/canonicalPrimitives';
20
22
  /**
21
23
  * How the Ed25519 Yao session response reaches its primary credential. A
@@ -54,16 +56,47 @@ export type RouterAbEd25519YaoWalletSessionMintInputV1 = (RouterAbEd25519YaoWall
54
56
  readonly expiresAtMs: number;
55
57
  readonly remainingUses: number;
56
58
  });
57
- export type RouterAbEd25519YaoProductRegistrationRuntimeV1 = RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallerV1 & RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1 & RouterAbEd25519YaoActiveCapabilityResolverV1 & {
59
+ export type RouterAbEd25519YaoProductRegistrationRuntimeV1 = RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1 & RouterAbEd25519YaoActiveCapabilityResolverV1 & {
58
60
  readonly kind: 'router_ab_ed25519_yao_product_registration_runtime_v1';
59
61
  readonly signingWorkerId: string;
60
- bindAndAdmitVerifiedRegistration(input: RouterAbEd25519YaoVerifiedActivationIntentV1): Promise<RouterAbEd25519YaoVerifiedRegistrationAdmissionResultV1>;
62
+ /**
63
+ * Starts the tenant-root read of a registration admission. The read
64
+ * needs the signing root ID and epoch alone, so it can run before the
65
+ * proof is verified. A runtime that pins no tenant root at admission
66
+ * starts nothing.
67
+ */
68
+ startRegistrationDispatchRoot(signingRootId: RouterAbEd25519YaoRegistrationSigningRootIdV1): RouterAbEd25519YaoStartedDispatchRootV1 | null;
69
+ bindAndAdmitVerifiedRegistration(input: RouterAbEd25519YaoVerifiedActivationIntentV1, companionWrite: RouterAbEd25519YaoAdmissionCompanionWriteV1 | null, startedDispatchRoot: RouterAbEd25519YaoStartedDispatchRootV1 | null): Promise<RouterAbEd25519YaoVerifiedRegistrationAdmissionResultV1>;
61
70
  bindVerifiedIntent(input: RouterAbEd25519YaoVerifiedActivationIntentV1): Promise<RouterAbEd25519YaoRegistrationIntentBindingResult>;
62
71
  consumeActivated(request: RouterAbEd25519YaoActivationConsumptionRequestV1): Promise<RouterAbEd25519YaoActivationConsumptionResultV1>;
63
72
  };
73
+ /** A tenant-root read in flight, with the signing root ID that it was started for. */
74
+ export type RouterAbEd25519YaoStartedDispatchRootV1 = {
75
+ readonly signingRootId: RouterAbEd25519YaoRegistrationSigningRootIdV1;
76
+ readonly dispatchRoot: Promise<RouterAbEd25519YaoTenantRootWireV1>;
77
+ };
78
+ /**
79
+ * Prepares another store's write for the admission request that was bound.
80
+ * It commits in the batch of a new admission, or it does not run.
81
+ */
82
+ export type RouterAbEd25519YaoAdmissionCompanionWriteV1 = (admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1) => RouterAbEd25519YaoPreparedWriteV1;
64
83
  export type RouterAbEd25519YaoVerifiedRegistrationAdmissionResultV1 = Extract<RouterAbEd25519YaoRegistrationIntentBindingResult, {
65
84
  readonly ok: false;
66
- }> | RouterAbEd25519YaoRegistrationServiceResult<RouterAbEd25519YaoActivationAdmissionReceiptV1<'registration'>>;
85
+ }> | Extract<RouterAbEd25519YaoRegistrationAuthorizationResult, {
86
+ readonly ok: false;
87
+ }> | Extract<RouterAbEd25519YaoRegistrationServiceResult<never>, {
88
+ readonly ok: false;
89
+ }> | {
90
+ readonly ok: true;
91
+ readonly status: 200;
92
+ readonly admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1;
93
+ readonly value: RouterAbEd25519YaoActivationAdmissionReceiptV1<'registration'>;
94
+ /**
95
+ * `not_committed` when the admission already existed, or when this
96
+ * runtime has no batch to share: the caller then writes for itself.
97
+ */
98
+ readonly companionWrite: 'committed' | 'not_committed';
99
+ };
67
100
  export type RouterAbEd25519YaoProductRegistrationCompositionV1 = {
68
101
  readonly kind: 'router_ab_ed25519_yao_product_registration_composition_v1';
69
102
  readonly registrationService: RouterAbEd25519YaoProductRegistrationServicePortV1;
@@ -78,9 +111,10 @@ export type RouterAbEd25519YaoProductRegistrationCompositionV1 = {
78
111
  export interface RouterAbEd25519YaoProductRegistrationServicePortV1 extends RouterAbEd25519YaoRegistrationService, RouterAbEd25519YaoActivationConsumerV1 {
79
112
  }
80
113
  export interface RouterAbEd25519YaoProductRegistrationAuthorizationPortV1 extends RouterAbEd25519YaoRegistrationAuthorizationAdapter {
114
+ bindAndAuthorizeAdmission(input: RouterAbEd25519YaoVerifiedActivationIntentV1): Promise<RouterAbEd25519YaoRegistrationIntentBindingResult | RouterAbEd25519YaoRegistrationAuthorizationFailure>;
81
115
  bindVerifiedIntent(input: RouterAbEd25519YaoVerifiedActivationIntentV1): Promise<RouterAbEd25519YaoRegistrationIntentBindingResult>;
82
116
  }
83
- export interface RouterAbEd25519YaoProductRecoveryServicePortV1 extends RouterAbEd25519YaoRecoveryService, RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallerV1, RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1, RouterAbEd25519YaoActiveCapabilityResolverV1 {
117
+ export interface RouterAbEd25519YaoProductRecoveryServicePortV1 extends RouterAbEd25519YaoRecoveryService, RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1, RouterAbEd25519YaoActiveCapabilityResolverV1 {
84
118
  }
85
119
  export type RouterAbEd25519YaoProductRegistrationPortsV1 = {
86
120
  readonly signingWorkerId: string;
@@ -130,7 +164,7 @@ export declare function createRouterAbEd25519YaoProductRegistrationRuntimeV1(inp
130
164
  readonly signingWorkerId: string;
131
165
  readonly registrationService: RouterAbEd25519YaoProductRegistrationServicePortV1;
132
166
  readonly authorization: RouterAbEd25519YaoProductRegistrationAuthorizationPortV1;
133
- readonly capabilityInstaller: RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallerV1 & RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1;
167
+ readonly capabilityInstaller: RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1;
134
168
  readonly capabilityResolver: RouterAbEd25519YaoActiveCapabilityResolverV1;
135
169
  }): RouterAbEd25519YaoProductRegistrationRuntimeV1;
136
170
  export declare function routerAbEd25519YaoPersistedCapabilityMatchesLookupV1(capability: WalletEd25519YaoActiveCapabilityRecord, lookup: RouterAbEd25519YaoActiveCapabilityLookupV1): boolean;
@@ -1,5 +1,6 @@
1
1
  import type { VersionedJsonObject, VersionedJsonRecordReadResult } from '../../../framework/versionedJsonRecordStore';
2
- import type { D1PreparedStatementLike } from '../../../../storage/tenantRoute';
2
+ import type { D1PreparedStatementLike, D1ResultLike } from '../../../../storage/tenantRoute';
3
+ import type { InMemoryRouterAbEd25519YaoRecoveryStateV1 } from '../recovery/routerAbEd25519YaoRecovery';
3
4
  import { type RouterAbEd25519YaoRegistrationExecutionAuthorityV1 } from '../registration/routerAbEd25519YaoRegistrationExecutionRecord';
4
5
  import type { RouterAbEd25519YaoProductRegistrationStateV1 } from './routerAbEd25519YaoProductRegistration';
5
6
  import { type RouterAbEd25519YaoProductRegistrationCeremonyStateV1, type RouterAbEd25519YaoProductRegistrationSharedStateV1 } from './routerAbEd25519YaoProductRegistrationPartitioning';
@@ -35,6 +36,7 @@ export type RouterAbEd25519YaoProductRegistrationPartitionBatchResultV1 = {
35
36
  */
36
37
  export type RouterAbEd25519YaoPreparedWriteV1 = {
37
38
  readonly statements: readonly D1PreparedStatementLike[];
39
+ readonly executeBatch?: (statements: readonly D1PreparedStatementLike[]) => Promise<readonly D1ResultLike[]>;
38
40
  };
39
41
  export type RouterAbEd25519YaoProductRegistrationPartitionRecordStoreV1 = {
40
42
  readonly readMany: (keys: readonly string[]) => Promise<readonly {
@@ -71,7 +73,36 @@ export type RouterAbEd25519YaoProductRegistrationPartitionedStateCommitResultV1
71
73
  readonly kind: 'version_mismatch';
72
74
  readonly key: 'shared' | 'ceremony';
73
75
  };
76
+ /** Registration changes only its own ceremony. Shared capabilities are inaccessible here. */
77
+ export type RouterAbEd25519YaoRegistrationCeremonySnapshotV1 = {
78
+ readonly lifecycleId: string;
79
+ readonly state: {
80
+ readonly registration: RouterAbEd25519YaoProductRegistrationStateV1['registration'];
81
+ readonly authorization: RouterAbEd25519YaoProductRegistrationStateV1['authorization'];
82
+ readonly recovery?: never;
83
+ readonly export?: never;
84
+ };
85
+ readonly baseline: {
86
+ readonly version: string | null;
87
+ readonly recovery: RouterAbEd25519YaoProductRegistrationCeremonyStateV1['recovery'];
88
+ readonly export: RouterAbEd25519YaoProductRegistrationCeremonyStateV1['export'];
89
+ };
90
+ };
91
+ export type RouterAbEd25519YaoCapabilitySnapshotV1 = {
92
+ readonly value: RouterAbEd25519YaoProductRegistrationSharedStateV1;
93
+ readonly version: string | null;
94
+ };
95
+ export type RouterAbEd25519YaoCapabilityMutationV1 = {
96
+ readonly capabilities: InMemoryRouterAbEd25519YaoRecoveryStateV1['capabilities'];
97
+ readonly identityCapabilities: InMemoryRouterAbEd25519YaoRecoveryStateV1['identityCapabilities'];
98
+ readonly recoveries?: never;
99
+ readonly recoverySessions?: never;
100
+ };
74
101
  export interface RouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1 {
102
+ loadCapabilities(): Promise<RouterAbEd25519YaoCapabilitySnapshotV1>;
103
+ commitCapabilities(snapshot: RouterAbEd25519YaoCapabilitySnapshotV1, mutation: RouterAbEd25519YaoCapabilityMutationV1, companionWrite: RouterAbEd25519YaoPreparedWriteV1 | null): Promise<RouterAbEd25519YaoProductRegistrationPartitionBatchResultV1>;
104
+ loadRegistration(lifecycleId: string): Promise<RouterAbEd25519YaoRegistrationCeremonySnapshotV1>;
105
+ commitRegistration(snapshot: RouterAbEd25519YaoRegistrationCeremonySnapshotV1, companionWrite: RouterAbEd25519YaoPreparedWriteV1 | null): Promise<RouterAbEd25519YaoProductRegistrationPartitionBatchResultV1>;
75
106
  load(lifecycleId: string): Promise<RouterAbEd25519YaoProductRegistrationPartitionedStateV1>;
76
107
  commit(input: RouterAbEd25519YaoProductRegistrationPartitionedStateCommitInputV1): Promise<RouterAbEd25519YaoProductRegistrationPartitionedStateCommitResultV1>;
77
108
  }
@@ -87,7 +118,7 @@ export declare function createRouterAbEd25519YaoProductRegistrationPartitionedSt
87
118
  * The admitted authority a registration execute is checked against, from a
88
119
  * loaded ceremony state, or `null` when the lifecycle is not admitted.
89
120
  */
90
- export declare function routerAbEd25519YaoAdmittedRegistrationAuthorityV1(state: RouterAbEd25519YaoProductRegistrationStateV1, lifecycleId: string): RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
121
+ export declare function routerAbEd25519YaoAdmittedRegistrationAuthorityV1(state: RouterAbEd25519YaoRegistrationCeremonySnapshotV1['state'], lifecycleId: string): RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
91
122
  export declare function encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1(record: RouterAbEd25519YaoProductRegistrationPartitionRecordV1): VersionedJsonObject;
92
123
  export declare function sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1(left: RouterAbEd25519YaoSharedStateCanonicalEncodingV1, right: RouterAbEd25519YaoSharedStateCanonicalEncodingV1): boolean;
93
124
  export declare function parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1(input: unknown): RouterAbEd25519YaoProductRegistrationPartitionRecordV1 | null;
@@ -1,3 +1,4 @@
1
+ import type { WalletExecutionAuthority } from '../../walletRegistration/walletRegistrationReservation';
1
2
  import { type RouterAbEd25519YaoExportAdmissionReceiptV1, type RouterAbEd25519YaoExportAdmissionRequestV1, type RouterAbEd25519YaoExportExecuteRequestV1, type RouterAbEd25519YaoExportResultV1 } from '../../../../../../shared-ts/src/utils/routerAbEd25519Yao';
2
3
  import { type RouterAbTraceContextV1 } from '../../../../../../shared-ts/src/utils/routerAbTraceContext';
3
4
  import { type ThresholdEd25519SessionId } from '../../../../../../shared-ts/src/utils/domainIds';
@@ -29,10 +30,10 @@ export type RouterAbEd25519YaoExportBackendResult = {
29
30
  };
30
31
  export interface RouterAbEd25519YaoExportBackend {
31
32
  admitExport(request: RouterAbEd25519YaoExportAdmissionRequestV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoExportBackendResult> | RouterAbEd25519YaoExportBackendResult;
32
- executeExport(request: RouterAbEd25519YaoExportExecuteRequestV1, admissionRequest: RouterAbEd25519YaoExportExecuteAdmissionContextV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoExportBackendResult> | RouterAbEd25519YaoExportBackendResult;
33
+ executeExport(request: RouterAbEd25519YaoExportExecuteRequestV1, claim: RouterAbEd25519YaoExportExecuteClaimV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoExportBackendResult> | RouterAbEd25519YaoExportBackendResult;
33
34
  }
34
35
  export interface RouterAbEd25519YaoExportService {
35
- admitExport(request: RouterAbEd25519YaoExportAdmissionRequestV1, authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1, admission: RouterAbEd25519YaoExportOperationAdmissionV1, factorRelease: RouterAbEd25519YaoExportEmailOtpFactorReleaseV1 | null, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoExportServiceResult<RouterAbEd25519YaoExportAdmissionReceiptV1>>;
36
+ admitExport(request: RouterAbEd25519YaoExportAdmissionRequestV1, authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1, ownershipGeneration: number, admission: RouterAbEd25519YaoExportOperationAdmissionV1, factorRelease: RouterAbEd25519YaoExportEmailOtpFactorReleaseV1 | null, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoExportServiceResult<RouterAbEd25519YaoExportAdmissionReceiptV1>>;
36
37
  executeExport(request: RouterAbEd25519YaoExportExecuteRequestV1, authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoExportServiceResult<RouterAbEd25519YaoExportResultV1>>;
37
38
  }
38
39
  /**
@@ -77,6 +78,7 @@ export type RouterAbEd25519YaoExportExecuteClaimV1 = {
77
78
  readonly sessionId: string;
78
79
  readonly executeFingerprint: string;
79
80
  readonly admissionRequest: RouterAbEd25519YaoExportExecuteAdmissionContextV1;
81
+ readonly ownershipGeneration: number;
80
82
  };
81
83
  export type RouterAbEd25519YaoExportExecutePreparationV1 = {
82
84
  readonly kind: 'claimed';
@@ -131,6 +133,7 @@ export type RouterAbEd25519YaoExportAuthorizationResult = {
131
133
  readonly factorRelease?: RouterAbEd25519YaoExportEmailOtpFactorReleaseV1;
132
134
  } | {
133
135
  readonly ok: false;
136
+ readonly ownershipGeneration?: never;
134
137
  readonly status: 401 | 403 | 409 | 429 | 503;
135
138
  readonly code: string;
136
139
  readonly message: string;
@@ -167,6 +170,7 @@ export type RouterAbEd25519YaoExportAdmissionAuthorizationResultV1 = {
167
170
  readonly ok: true;
168
171
  readonly authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1;
169
172
  readonly admission: RouterAbEd25519YaoExportOperationAdmissionV1;
173
+ readonly ownershipGeneration: number;
170
174
  readonly factorRelease?: RouterAbEd25519YaoExportEmailOtpFactorReleaseV1;
171
175
  } | RouterAbEd25519YaoExportAuthorizationFailure;
172
176
  export type RouterAbEd25519YaoExportAuthorizationIdentityResolutionResult = {
@@ -182,6 +186,7 @@ export interface RouterAbEd25519YaoExportAuthorizationAdapter {
182
186
  resolveAuthorizationIdentity(body: RouterAbEd25519YaoExportAdmissionRequestV1): Promise<RouterAbEd25519YaoExportAuthorizationIdentityResolutionResult> | RouterAbEd25519YaoExportAuthorizationIdentityResolutionResult;
183
187
  }
184
188
  type ExportAuthorizationContext = {
189
+ readonly ownershipGeneration: number;
185
190
  readonly request: RouterAbEd25519YaoExportAdmissionRequestV1;
186
191
  readonly authorizationFingerprint: string;
187
192
  readonly authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1;
@@ -235,15 +240,15 @@ export declare class InMemoryRouterAbEd25519YaoExportService implements RouterAb
235
240
  constructor(backend: RouterAbEd25519YaoExportBackend, capabilities: RouterAbEd25519YaoActiveCapabilityResolverV1, state?: InMemoryRouterAbEd25519YaoExportStateV1);
236
241
  authorizationIsUncertain(request: RouterAbEd25519YaoExportAdmissionRequestV1): boolean;
237
242
  recordAuthorizationUncertain(request: RouterAbEd25519YaoExportAdmissionRequestV1): void;
238
- admitExport(request: RouterAbEd25519YaoExportAdmissionRequestV1, authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1, admission: RouterAbEd25519YaoExportOperationAdmissionV1, factorRelease: RouterAbEd25519YaoExportEmailOtpFactorReleaseV1 | null, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoExportServiceResult<RouterAbEd25519YaoExportAdmissionReceiptV1>>;
243
+ admitExport(request: RouterAbEd25519YaoExportAdmissionRequestV1, authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1, ownershipGeneration: number, admission: RouterAbEd25519YaoExportOperationAdmissionV1, factorRelease: RouterAbEd25519YaoExportEmailOtpFactorReleaseV1 | null, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoExportServiceResult<RouterAbEd25519YaoExportAdmissionReceiptV1>>;
239
244
  /**
240
245
  * Authorizes one export: its nonce claimed and its state `authorized`, in
241
246
  * this state for the caller to commit with the export's operation
242
247
  * admission. An export already here answers from its state instead, with
243
248
  * the factor release it recorded.
244
249
  */
245
- authorizeExport(request: RouterAbEd25519YaoExportAdmissionRequestV1, authorizationFingerprint: string, authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1, factorRelease: RouterAbEd25519YaoExportEmailOtpFactorReleaseV1 | null): RouterAbEd25519YaoExportAuthorizationDecisionV1;
246
- readAuthorizationIdentity(request: RouterAbEd25519YaoExportAdmissionRequestV1): RouterAbEd25519YaoExportServerAuthorizationIdentityV1 | null;
250
+ authorizeExport(request: RouterAbEd25519YaoExportAdmissionRequestV1, authorizationFingerprint: string, authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1, ownershipGeneration: number, factorRelease: RouterAbEd25519YaoExportEmailOtpFactorReleaseV1 | null): RouterAbEd25519YaoExportAuthorizationDecisionV1;
251
+ readAdmissionAuthority(request: RouterAbEd25519YaoExportAdmissionRequestV1): Pick<ExportAuthorizationContext, 'authorizationIdentity' | 'ownershipGeneration'> | null;
247
252
  prepareAdmitExport(request: RouterAbEd25519YaoExportAdmissionRequestV1, _authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1): Promise<RouterAbEd25519YaoExportAdmissionPreparationV1>;
248
253
  commitAdmitExport(input: RouterAbEd25519YaoExportAdmissionCommitInputV1): RouterAbEd25519YaoExportServiceResult<RouterAbEd25519YaoExportAdmissionReceiptV1>;
249
254
  executeExport(request: RouterAbEd25519YaoExportExecuteRequestV1, authorizationIdentity: RouterAbEd25519YaoExportServerAuthorizationIdentityV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoExportServiceResult<RouterAbEd25519YaoExportResultV1>>;
@@ -261,7 +266,8 @@ export declare class RouterAbEd25519YaoExportOwnerProofAuthorizationAdapter impl
261
266
  private readonly walletAuthMethods;
262
267
  private readonly authorizedOperations;
263
268
  private readonly resolveEd25519MaterialActivation;
264
- constructor(webAuthn: Pick<RouterApiWebAuthnService, 'verifyWebAuthnAuthenticationLite'>, emailOtp: Pick<RouterApiEmailOtpRouteService, 'verifyEmailOtpChallenge'>, walletAuthMethods: Pick<RouterApiWalletAuthMethodService, 'resolveActivePasskeyAuthorityForVerifiedCredential' | 'resolveActiveEmailOtpAuthorityForVerifiedMethod'>, authorizedOperations: RouterApiAuthorizedOperationService, resolveEd25519MaterialActivation: RouterApiWalletRegistrationService['resolveEd25519MaterialActivation']);
269
+ private readonly admitEstablishedHome;
270
+ constructor(webAuthn: Pick<RouterApiWebAuthnService, 'verifyWebAuthnAuthenticationLite'>, emailOtp: Pick<RouterApiEmailOtpRouteService, 'verifyEmailOtpChallenge'>, walletAuthMethods: Pick<RouterApiWalletAuthMethodService, 'resolveActivePasskeyAuthorityForVerifiedCredential' | 'resolveActiveEmailOtpAuthorityForVerifiedMethod'>, authorizedOperations: RouterApiAuthorizedOperationService, resolveEd25519MaterialActivation: RouterApiWalletRegistrationService['resolveEd25519MaterialActivation'], admitEstablishedHome: WalletExecutionAuthority['admitEstablishedHome']);
265
271
  authorizeAdmission(input: RouterAbEd25519YaoExportAdmissionAuthorizationInputV1): Promise<RouterAbEd25519YaoExportAdmissionAuthorizationResultV1>;
266
272
  authorizeExecution(input: RouterAbEd25519YaoExportExecutionAuthorizationInputV1): RouterAbEd25519YaoExportAuthorizationIdentityResolutionResult;
267
273
  resolveAuthorizationIdentity(body: RouterAbEd25519YaoExportAdmissionRequestV1): Promise<RouterAbEd25519YaoExportAuthorizationIdentityResolutionResult>;
@@ -41,6 +41,8 @@ type RouterAbEd25519YaoRecoveryAuthorityProjectionV1 = {
41
41
  readonly kind: 'replace_active_authority_projection';
42
42
  };
43
43
  type RouterAbEd25519YaoRecoveryAuthorizationBindingV1 = {
44
+ readonly ownershipGeneration: number;
45
+ } & ({
44
46
  readonly kind: 'wallet_recovery';
45
47
  readonly walletId: string;
46
48
  } | {
@@ -54,7 +56,7 @@ type RouterAbEd25519YaoRecoveryAuthorizationBindingV1 = {
54
56
  readonly authorizationId: RouterApiWalletSessionAuthorizationV2AdmissionContext['authorization']['session']['authorizationId'];
55
57
  readonly walletSessionId: RouterApiWalletSessionAuthorizationV2AdmissionContext['authorization']['session']['walletSessionId'];
56
58
  readonly quotaId: RouterApiWalletSessionAuthorizationV2AdmissionContext['authorization']['session']['quotaId'];
57
- };
59
+ });
58
60
  export interface RouterAbEd25519YaoRecoveryBackend {
59
61
  admitRecovery(request: RouterAbEd25519YaoRecoveryAdmissionRequestV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRecoveryBackendResult> | RouterAbEd25519YaoRecoveryBackendResult;
60
62
  /**
@@ -68,11 +70,12 @@ export interface RouterAbEd25519YaoRecoveryBackend {
68
70
  * the Router, which then reconciles the roles' records instead of starting
69
71
  * fresh.
70
72
  */
71
- executeRecovery(request: RecoveryExecuteRequest, admissionRequest: RouterAbEd25519YaoRecoveryExecuteAdmissionContextV1, dispatchRoot: RouterAbEd25519YaoTenantRootWireV1, attempt: number, replay: boolean, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRecoveryBackendResult> | RouterAbEd25519YaoRecoveryBackendResult;
73
+ executeRecovery(request: RecoveryExecuteRequest, claim: RouterAbEd25519YaoRecoveryExecuteClaimV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRecoveryBackendResult> | RouterAbEd25519YaoRecoveryBackendResult;
72
74
  /** Promotes the recovery at the SigningWorker of the attempt's tenant root. */
73
- activateRecovery(request: RouterAbEd25519YaoRecoveryActivationRequestV1, dispatchRoot: RouterAbEd25519YaoTenantRootWireV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRecoveryBackendResult> | RouterAbEd25519YaoRecoveryBackendResult;
75
+ activateRecovery(request: RouterAbEd25519YaoRecoveryActivationRequestV1, dispatchRoot: RouterAbEd25519YaoTenantRootWireV1, ownershipGeneration: number, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRecoveryBackendResult> | RouterAbEd25519YaoRecoveryBackendResult;
74
76
  }
75
77
  export interface RouterAbEd25519YaoRecoveryService {
78
+ recoveryOwnershipGeneration(binding: RecoveryExecuteRequest['binding']): RouterAbEd25519YaoRecoveryServiceResult<number>;
76
79
  admitRecovery(request: RouterAbEd25519YaoRecoveryAdmissionRequestV1, authorization: RouterAbEd25519YaoRecoveryAuthorizationBindingV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRecoveryServiceResult<RecoveryAdmissionReceipt>>;
77
80
  executeRecovery(request: RecoveryExecuteRequest, authorization: RouterAbEd25519YaoRecoveryAuthorizationBindingV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRecoveryServiceResult<RecoveryExecutionResult>>;
78
81
  activateRecovery(request: RouterAbEd25519YaoRecoveryActivationRequestV1, authorization: RouterAbEd25519YaoRecoveryAuthorizationBindingV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRecoveryServiceResult<RouterAbEd25519YaoRecoveryActivationReceiptV1>>;
@@ -106,6 +109,7 @@ interface RouterAbEd25519YaoRecoveryAdmissionBoundaryV1 {
106
109
  }
107
110
  export type RouterAbEd25519YaoRecoveryExecuteClaimV1 = {
108
111
  readonly kind: 'router_ab_ed25519_yao_recovery_execute_claim_v1';
112
+ readonly ownershipGeneration: number;
109
113
  readonly lifecycleId: string;
110
114
  readonly recoveryKey: string;
111
115
  readonly sessionId: string;
@@ -140,6 +144,7 @@ interface RouterAbEd25519YaoRecoveryExecuteBoundaryV1 {
140
144
  commitExecuteRecovery(input: RouterAbEd25519YaoRecoveryExecuteCommitInputV1): RouterAbEd25519YaoRecoveryServiceResult<RecoveryExecutionResult>;
141
145
  }
142
146
  export type RouterAbEd25519YaoRecoveryActivationClaimV1 = {
147
+ readonly ownershipGeneration: number;
143
148
  readonly kind: 'router_ab_ed25519_yao_recovery_activation_claim_v1';
144
149
  readonly lifecycleId: string;
145
150
  readonly recoveryKey: string;
@@ -201,15 +206,18 @@ export type RouterAbEd25519YaoRecoveryAuthorizationInput = {
201
206
  readonly body: RouterAbEd25519YaoRecoveryAdmissionRequestV1;
202
207
  } | {
203
208
  readonly kind: 'execute';
209
+ readonly ownershipGeneration: number;
204
210
  readonly request: Request;
205
211
  readonly body: RecoveryExecuteRequest;
206
212
  } | {
207
213
  readonly kind: 'activate';
214
+ readonly ownershipGeneration: number;
208
215
  readonly request: Request;
209
216
  readonly body: RouterAbEd25519YaoRecoveryActivationRequestV1;
210
217
  };
211
218
  export type RouterAbEd25519YaoRecoveryAuthorizationResult = {
212
219
  readonly ok: true;
220
+ readonly ownershipGeneration: number;
213
221
  readonly authorization: {
214
222
  readonly kind: 'wallet_session_v2';
215
223
  readonly context: RouterApiWalletSessionAuthorizationV2AdmissionContext;
@@ -222,13 +230,14 @@ export type RouterAbEd25519YaoRecoveryAuthorizationResult = {
222
230
  };
223
231
  } | {
224
232
  readonly ok: false;
233
+ readonly ownershipGeneration?: never;
225
234
  readonly status: 401 | 403 | 409 | 429 | 503;
226
235
  readonly code: string;
227
236
  readonly message: string;
228
237
  };
229
- export declare function recoveryAuthorizationBinding(authorization: Extract<RouterAbEd25519YaoRecoveryAuthorizationResult, {
238
+ export declare function recoveryAuthorizationBinding(admitted: Extract<RouterAbEd25519YaoRecoveryAuthorizationResult, {
230
239
  readonly ok: true;
231
- }>['authorization']): RouterAbEd25519YaoRecoveryAuthorizationBindingV1;
240
+ }>): RouterAbEd25519YaoRecoveryAuthorizationBindingV1;
232
241
  type WarmBootstrapWalletSessionContext = {
233
242
  readonly session: RouterApiWalletSessionAuthorizationV2AdmissionContext['authorization']['session'];
234
243
  readonly quota: RouterApiWalletSessionAuthorizationV2AdmissionContext['authorization']['quota'] | RouterApiWalletSessionAuthorizationV2ExhaustedCandidateContext['status']['quota'];
@@ -259,9 +268,6 @@ export type RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallResultV1 = {
259
268
  readonly code: 'invalid_installation' | 'capability_conflict' | 'capability_retired';
260
269
  readonly message: string;
261
270
  };
262
- export interface RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallerV1 {
263
- installRegistrationFinalizeCapability(input: RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallationV1): Promise<RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallResultV1> | RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallResultV1;
264
- }
265
271
  export interface RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1 {
266
272
  installPersistedActiveCapability(input: WalletEd25519YaoActiveCapabilityRecord): Promise<RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallResultV1> | RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallResultV1;
267
273
  }
@@ -540,7 +546,8 @@ type RouterAbEd25519YaoActiveCapabilityRecordBuildResultV1 = {
540
546
  readonly ok: false;
541
547
  }>;
542
548
  export declare function buildRouterAbEd25519YaoRegistrationCapabilityRecordV1(input: RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallationV1): RouterAbEd25519YaoActiveCapabilityRecordBuildResultV1;
543
- export declare class InMemoryRouterAbEd25519YaoRecoveryService implements RouterAbEd25519YaoRecoveryService, RouterAbEd25519YaoRecoveryAdmissionBoundaryV1, RouterAbEd25519YaoRecoveryExecuteBoundaryV1, RouterAbEd25519YaoRecoveryActivationBoundaryV1, RouterAbEd25519YaoRegistrationFinalizeCapabilityInstallerV1, RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1, RouterAbEd25519YaoActiveCapabilityResolverV1 {
549
+ export declare function resolveRouterAbEd25519YaoActiveCapability(capabilities: ReadonlyMap<string, CapabilityState>, input: RouterAbEd25519YaoActiveCapabilityLookupV1): RouterAbEd25519YaoActiveCapabilityLookupResultV1;
550
+ export declare class InMemoryRouterAbEd25519YaoRecoveryService implements RouterAbEd25519YaoRecoveryService, RouterAbEd25519YaoRecoveryAdmissionBoundaryV1, RouterAbEd25519YaoRecoveryExecuteBoundaryV1, RouterAbEd25519YaoRecoveryActivationBoundaryV1, RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1, RouterAbEd25519YaoActiveCapabilityResolverV1 {
544
551
  private readonly backend;
545
552
  private readonly capabilityPersistence;
546
553
  private readonly capabilities;
@@ -557,6 +564,7 @@ export declare class InMemoryRouterAbEd25519YaoRecoveryService implements Router
557
564
  prepareAdmitRecovery(request: RouterAbEd25519YaoRecoveryAdmissionRequestV1, authorization: RouterAbEd25519YaoRecoveryAuthorizationBindingV1, dispatchRoot: RouterAbEd25519YaoTenantRootWireV1, nowMs: number): RouterAbEd25519YaoRecoveryAdmissionPreparationV1;
558
565
  commitAdmitRecovery(input: RouterAbEd25519YaoRecoveryAdmissionCommitInputV1): RouterAbEd25519YaoRecoveryServiceResult<RecoveryAdmissionReceipt>;
559
566
  executeRecovery(request: RecoveryExecuteRequest, authorization: RouterAbEd25519YaoRecoveryAuthorizationBindingV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRecoveryServiceResult<RecoveryExecutionResult>>;
567
+ recoveryOwnershipGeneration(binding: RecoveryExecuteRequest['binding']): RouterAbEd25519YaoRecoveryServiceResult<number>;
560
568
  prepareExecuteRecovery(request: RecoveryExecuteRequest, authorization: RouterAbEd25519YaoRecoveryAuthorizationBindingV1, nowMs: number): RouterAbEd25519YaoRecoveryExecutePreparationV1;
561
569
  commitExecuteRecovery(input: RouterAbEd25519YaoRecoveryExecuteCommitInputV1): RouterAbEd25519YaoRecoveryServiceResult<RecoveryExecutionResult>;
562
570
  activateRecovery(request: RouterAbEd25519YaoRecoveryActivationRequestV1, authorization: RouterAbEd25519YaoRecoveryAuthorizationBindingV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRecoveryServiceResult<RouterAbEd25519YaoRecoveryActivationReceiptV1>>;
@@ -1,3 +1,4 @@
1
+ import type { WalletExecutionAuthority } from '../../walletRegistration/walletRegistrationReservation';
1
2
  import type { RouterApiAuthorizationSessionService, RouterApiWalletRegistrationService } from '../../../framework/authServicePort';
2
3
  import type { PreparedEd25519RecoveryAdmissionV1 } from '../../passkeyCustody/walletRecoveryKeyManifest';
3
4
  import type { RouterAbEd25519YaoRecoveryAuthorizationAdapter, RouterAbEd25519YaoRecoveryAuthorizationInput, RouterAbEd25519YaoRecoveryAuthorizationResult } from './routerAbEd25519YaoRecovery';
@@ -8,6 +9,7 @@ export interface PreparedEd25519RecoveryAdmissionReaderV1 {
8
9
  }): Promise<PreparedEd25519RecoveryAdmissionV1 | null>;
9
10
  }
10
11
  export type RouterAbEd25519YaoRecoveryAuthorizationServicesV1 = {
12
+ readonly admitEstablishedHome: WalletExecutionAuthority['admitEstablishedHome'];
11
13
  readonly authorizationSessions: RouterApiAuthorizationSessionService;
12
14
  readonly preparedRecoveryAdmission: PreparedEd25519RecoveryAdmissionReaderV1;
13
15
  readonly resolveEd25519MaterialActivation: RouterApiWalletRegistrationService['resolveEd25519MaterialActivation'];
@@ -1,8 +1,9 @@
1
+ import type { RouterAbEd25519YaoRegistrationExecutionAuthorityV1 } from './routerAbEd25519YaoRegistrationExecutionRecord';
1
2
  import { type RouterAbEd25519YaoActivationExecuteRequestV1, type RouterAbEd25519YaoActivationKeysetV1, type RouterAbEd25519YaoRecoveryActivationRequestV1, type RouterAbEd25519YaoRecoveryAdmissionRequestV1, type RouterAbEd25519YaoRegistrationAdmissionRequestV1, type RouterAbEd25519YaoExportAdmissionRequestV1, type RouterAbEd25519YaoExportExecuteRequestV1 } from '../../../../../../shared-ts/src/utils/routerAbEd25519Yao';
2
3
  import type { RouterAbEd25519YaoRegistrationBackend, RouterAbEd25519YaoRegistrationBackendResult } from './routerAbEd25519YaoRegistration';
3
- import type { RouterAbEd25519YaoExportBackend } from '../export/routerAbEd25519YaoExport';
4
- import type { RouterAbEd25519YaoRecoveryBackend } from '../recovery/routerAbEd25519YaoRecovery';
5
- import { type RouterAbEd25519YaoTenantRootResolverV1, type RouterAbEd25519YaoTenantRootWireV1 } from '../routerAbEd25519YaoGatewayEnvelope';
4
+ import type { RouterAbEd25519YaoExportBackend, RouterAbEd25519YaoExportExecuteClaimV1 } from '../export/routerAbEd25519YaoExport';
5
+ import type { RouterAbEd25519YaoRecoveryBackend, RouterAbEd25519YaoRecoveryExecuteClaimV1 } from '../recovery/routerAbEd25519YaoRecovery';
6
+ import { type RouterAbEd25519YaoRegistrationSigningRootIdV1, type RouterAbEd25519YaoTenantRootResolverV1, type RouterAbEd25519YaoTenantRootWireV1 } from '../routerAbEd25519YaoGatewayEnvelope';
6
7
  import { type RouterAbTraceContextV1 } from '../../../../../../shared-ts/src/utils/routerAbTraceContext';
7
8
  type RouterAbEd25519YaoRegistrationExecuteRequestV1 = RouterAbEd25519YaoActivationExecuteRequestV1<'registration'>;
8
9
  type RouterAbEd25519YaoRecoveryExecuteRequestV1 = RouterAbEd25519YaoActivationExecuteRequestV1<'recovery'>;
@@ -28,14 +29,12 @@ export type RouterAbEd25519YaoGatewaySpanV1 = {
28
29
  export type RouterAbEd25519YaoHttpRegistrationBackendRawEnv = Readonly<Record<string, unknown>>;
29
30
  export declare function parseRouterAbEd25519YaoActivationKeysetFromEnvV1(env: RouterAbEd25519YaoHttpRegistrationBackendRawEnv): RouterAbEd25519YaoActivationKeysetV1;
30
31
  export interface RouterAbEd25519YaoPinnedRegistrationBackend extends RouterAbEd25519YaoRegistrationBackend {
31
- resolveRegistrationDispatchRoot(admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1): Promise<RouterAbEd25519YaoTenantRootWireV1>;
32
- executePinnedRegistration(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1, dispatchRoot: RouterAbEd25519YaoTenantRootWireV1, traceContext: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
32
+ resolveRegistrationDispatchRoot(signingRootId: RouterAbEd25519YaoRegistrationSigningRootIdV1): Promise<RouterAbEd25519YaoTenantRootWireV1>;
33
+ executePinnedRegistration(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, authority: RouterAbEd25519YaoRegistrationExecutionAuthorityV1, traceContext: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
33
34
  consumeRegistration(input: RouterAbEd25519YaoRegistrationConsumeInputV1): Promise<RouterAbEd25519YaoRegistrationConsumeOutcomeV1>;
34
35
  }
35
36
  export type RouterAbEd25519YaoRegistrationConsumeInputV1 = {
36
- readonly tenantRoot: RouterAbEd25519YaoTenantRootWireV1;
37
- readonly walletId: string;
38
- readonly lifecycleId: string;
37
+ readonly authority: RouterAbEd25519YaoRegistrationExecutionAuthorityV1;
39
38
  readonly sessionId: readonly number[];
40
39
  readonly consumerBinding: string;
41
40
  };
@@ -61,18 +60,18 @@ export declare class RouterAbEd25519YaoHttpRegistrationBackend implements Router
61
60
  admit(request: RouterAbEd25519YaoRegistrationAdmissionRequestV1, _traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
62
61
  admitRecovery(request: RouterAbEd25519YaoRecoveryAdmissionRequestV1, _traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
63
62
  admitExport(request: RouterAbEd25519YaoExportAdmissionRequestV1, _traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
64
- executeExport(request: RouterAbEd25519YaoExportExecuteRequestV1, admissionRequest: RouterAbEd25519YaoExportAdmissionRequestV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
63
+ executeExport(request: RouterAbEd25519YaoExportExecuteRequestV1, claim: RouterAbEd25519YaoExportExecuteClaimV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
65
64
  private keyset;
66
65
  private admitActivation;
67
- execute(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
68
- resolveRegistrationDispatchRoot(admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1): Promise<RouterAbEd25519YaoTenantRootWireV1>;
69
- executePinnedRegistration(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1, dispatchRoot: RouterAbEd25519YaoTenantRootWireV1, traceContext: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
66
+ execute(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1, ownershipGeneration: number, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
67
+ resolveRegistrationDispatchRoot(signingRootId: RouterAbEd25519YaoRegistrationSigningRootIdV1): Promise<RouterAbEd25519YaoTenantRootWireV1>;
68
+ executePinnedRegistration(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, authority: RouterAbEd25519YaoRegistrationExecutionAuthorityV1, traceContext: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
70
69
  consumeRegistration(input: RouterAbEd25519YaoRegistrationConsumeInputV1): Promise<RouterAbEd25519YaoRegistrationConsumeOutcomeV1>;
71
70
  resolveRecoveryDispatchRoot(admissionRequest: RouterAbEd25519YaoRecoveryAdmissionRequestV1): Promise<RouterAbEd25519YaoTenantRootWireV1>;
72
- executeRecovery(request: RouterAbEd25519YaoRecoveryExecuteRequestV1, admissionRequest: RouterAbEd25519YaoRecoveryAdmissionRequestV1, dispatchRoot: RouterAbEd25519YaoTenantRootWireV1, attempt: number, replay: boolean, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
71
+ executeRecovery(request: RouterAbEd25519YaoRecoveryExecuteRequestV1, claim: RouterAbEd25519YaoRecoveryExecuteClaimV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
73
72
  private executeRouterRequest;
74
73
  private sendRouterRequest;
75
- activateRecovery(request: RouterAbEd25519YaoRecoveryActivationRequestV1, dispatchRoot: RouterAbEd25519YaoTenantRootWireV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
74
+ activateRecovery(request: RouterAbEd25519YaoRecoveryActivationRequestV1, dispatchRoot: RouterAbEd25519YaoTenantRootWireV1, ownershipGeneration: number, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult>;
76
75
  private post;
77
76
  private headers;
78
77
  private request;
@@ -1,5 +1,6 @@
1
1
  import { type RouterAbEd25519YaoActivationAdmissionReceiptV1, type RouterAbEd25519YaoActivationExecuteRequestV1, type RouterAbEd25519YaoActivationResultV1, type RouterAbEd25519YaoRegistrationAdmissionRequestV1, type RouterAbEd25519YaoBytes32V1 } from '../../../../../../shared-ts/src/utils/routerAbEd25519Yao';
2
2
  import { type RouterAbTraceContextV1 } from '../../../../../../shared-ts/src/utils/routerAbTraceContext';
3
+ import type { Variant } from '../../../../../../shared-ts/src/utils/variant';
3
4
  import { type RouterApiModule } from '../../../framework/modules';
4
5
  import type { RouterAbEd25519YaoRegistrationExecuteAdmissionContextV1, RouterAbEd25519YaoTenantRootWireV1 } from '../routerAbEd25519YaoGatewayEnvelope';
5
6
  type RouterAbEd25519YaoRegistrationAdmissionReceiptV1 = RouterAbEd25519YaoActivationAdmissionReceiptV1<'registration'>;
@@ -30,11 +31,11 @@ export type RouterAbEd25519YaoRegistrationBackendResult = {
30
31
  export interface RouterAbEd25519YaoRegistrationBackend {
31
32
  takeLastRouterServerTiming?(): string | null;
32
33
  admit(request: RouterAbEd25519YaoRegistrationAdmissionRequestV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult> | RouterAbEd25519YaoRegistrationBackendResult;
33
- execute(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, admissionRequest: RouterAbEd25519YaoRegistrationExecuteAdmissionContextV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult> | RouterAbEd25519YaoRegistrationBackendResult;
34
+ execute(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, admissionRequest: RouterAbEd25519YaoRegistrationExecuteAdmissionContextV1, ownershipGeneration: number, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationBackendResult> | RouterAbEd25519YaoRegistrationBackendResult;
34
35
  }
35
36
  export interface RouterAbEd25519YaoRegistrationService {
36
37
  admit(request: RouterAbEd25519YaoRegistrationAdmissionRequestV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationServiceResult<RouterAbEd25519YaoRegistrationAdmissionReceiptV1>>;
37
- execute(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationServiceResult<RouterAbEd25519YaoRegistrationResultV1>>;
38
+ execute(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, ownershipGeneration: number, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationServiceResult<RouterAbEd25519YaoRegistrationResultV1>>;
38
39
  }
39
40
  export type RouterAbEd25519YaoRegistrationAdmissionClaimV1 = {
40
41
  readonly kind: 'router_ab_ed25519_yao_registration_admission_claim_v1';
@@ -109,12 +110,15 @@ export type RouterAbEd25519YaoRegistrationAuthorizationInput = {
109
110
  };
110
111
  export type RouterAbEd25519YaoRegistrationAuthorizationResult = {
111
112
  ok: true;
113
+ ownershipGeneration: number;
112
114
  } | {
113
115
  ok: false;
116
+ ownershipGeneration?: never;
114
117
  status: 401 | 403 | 409 | 429 | 503;
115
118
  code: string;
116
119
  message: string;
117
120
  };
121
+ export type RouterAbEd25519YaoRegistrationAuthorizationFailure = Variant<RouterAbEd25519YaoRegistrationAuthorizationResult, 'ok', false>;
118
122
  export interface RouterAbEd25519YaoRegistrationAuthorizationAdapter {
119
123
  authorize(input: RouterAbEd25519YaoRegistrationAuthorizationInput): Promise<RouterAbEd25519YaoRegistrationAuthorizationResult> | RouterAbEd25519YaoRegistrationAuthorizationResult;
120
124
  }
@@ -191,7 +195,7 @@ export declare class InMemoryRouterAbEd25519YaoRegistrationService implements Ro
191
195
  admit(request: RouterAbEd25519YaoRegistrationAdmissionRequestV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationServiceResult<RouterAbEd25519YaoRegistrationAdmissionReceiptV1>>;
192
196
  prepareAdmit(request: RouterAbEd25519YaoRegistrationAdmissionRequestV1): RouterAbEd25519YaoRegistrationAdmissionPreparationV1;
193
197
  commitAdmit(input: RouterAbEd25519YaoRegistrationAdmissionCommitInputV1): RouterAbEd25519YaoRegistrationServiceResult<RouterAbEd25519YaoRegistrationAdmissionReceiptV1>;
194
- execute(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationServiceResult<RouterAbEd25519YaoRegistrationResultV1>>;
198
+ execute(request: RouterAbEd25519YaoRegistrationExecuteRequestV1, ownershipGeneration: number, traceContext?: RouterAbTraceContextV1): Promise<RouterAbEd25519YaoRegistrationServiceResult<RouterAbEd25519YaoRegistrationResultV1>>;
195
199
  prepareExecute(request: RouterAbEd25519YaoRegistrationExecuteRequestV1): RouterAbEd25519YaoRegistrationExecutePreparationV1;
196
200
  commitExecute(input: RouterAbEd25519YaoRegistrationExecuteCommitInputV1): RouterAbEd25519YaoRegistrationServiceResult<RouterAbEd25519YaoRegistrationResultV1>;
197
201
  consumeActivated(request: RouterAbEd25519YaoActivationConsumptionRequestV1): RouterAbEd25519YaoActivationConsumptionResultV1;
@@ -11,6 +11,7 @@ type AdmissionReceipt = RouterAbEd25519YaoActivationAdmissionReceiptV1<'registra
11
11
  * that consumes it) belongs to the Router's wallet object.
12
12
  */
13
13
  export type RouterAbEd25519YaoRegistrationExecutionAuthorityV1 = {
14
+ readonly ownershipGeneration: number;
14
15
  readonly lifecycleId: string;
15
16
  readonly admissionRequest: RouterAbEd25519YaoRegistrationAdmissionRequestV1;
16
17
  readonly admissionReceipt: AdmissionReceipt;