@seams/wallet-server 0.5.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 (1075) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -0
  3. package/artifact-manifest.json +464 -0
  4. package/cloudflare-router-ab/build/deriver-a/index.js +2 -0
  5. package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
  6. package/cloudflare-router-ab/build/deriver-a/package.json +16 -0
  7. package/cloudflare-router-ab/build/deriver-a/worker/shim.mjs +4 -0
  8. package/cloudflare-router-ab/build/deriver-b/index.js +2 -0
  9. package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
  10. package/cloudflare-router-ab/build/deriver-b/package.json +16 -0
  11. package/cloudflare-router-ab/build/deriver-b/worker/shim.mjs +4 -0
  12. package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
  13. package/cloudflare-router-ab/build/router/index.js +2 -0
  14. package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
  15. package/cloudflare-router-ab/build/router/package.json +16 -0
  16. package/cloudflare-router-ab/build/router/worker/shim.mjs +4 -0
  17. package/cloudflare-router-ab/build/signing-worker/index.js +2 -0
  18. package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
  19. package/cloudflare-router-ab/build/signing-worker/package.json +16 -0
  20. package/cloudflare-router-ab/build/signing-worker/worker/shim.mjs +4 -0
  21. package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -0
  22. package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
  23. package/cloudflare-router-ab/build/tenant-root-control-plane/package.json +16 -0
  24. package/cloudflare-router-ab/build/tenant-root-control-plane/worker/shim.mjs +4 -0
  25. package/cloudflare-router-ab/env/tenant-root-control-plane.local.example +6 -0
  26. package/cloudflare-router-ab/migrations/deriver-a/0001_role_private_storage.sql +14 -0
  27. package/cloudflare-router-ab/migrations/deriver-a/0002_tenant_root_role_shares.sql +32 -0
  28. package/cloudflare-router-ab/migrations/deriver-a/0003_tenant_root_command_replays.sql +76 -0
  29. package/cloudflare-router-ab/migrations/deriver-a/0004_tenant_root_creation_admission.sql +7 -0
  30. package/cloudflare-router-ab/migrations/deriver-a/0005_tenant_root_refresh_state.sql +15 -0
  31. package/cloudflare-router-ab/migrations/deriver-a/0006_tenant_root_restore_import_keys.sql +119 -0
  32. package/cloudflare-router-ab/migrations/deriver-a/0007_tenant_root_restore_refresh_attempts.sql +103 -0
  33. package/cloudflare-router-ab/migrations/deriver-a/0008_tenant_root_restore_promotion.sql +40 -0
  34. package/cloudflare-router-ab/migrations/deriver-a/0009_tenant_root_restore_preactivation_cleanup.sql +8 -0
  35. package/cloudflare-router-ab/migrations/deriver-a/0010_tenant_root_recovery_attempts.sql +26 -0
  36. package/cloudflare-router-ab/migrations/deriver-a/0011_tenant_root_source_retirement.sql +100 -0
  37. package/cloudflare-router-ab/migrations/deriver-b/0001_role_private_storage.sql +14 -0
  38. package/cloudflare-router-ab/migrations/deriver-b/0002_tenant_root_role_shares.sql +32 -0
  39. package/cloudflare-router-ab/migrations/deriver-b/0003_tenant_root_command_replays.sql +76 -0
  40. package/cloudflare-router-ab/migrations/deriver-b/0004_tenant_root_creation_admission.sql +7 -0
  41. package/cloudflare-router-ab/migrations/deriver-b/0005_tenant_root_refresh_state.sql +15 -0
  42. package/cloudflare-router-ab/migrations/deriver-b/0006_tenant_root_restore_import_keys.sql +119 -0
  43. package/cloudflare-router-ab/migrations/deriver-b/0007_tenant_root_restore_refresh_attempts.sql +103 -0
  44. package/cloudflare-router-ab/migrations/deriver-b/0008_tenant_root_restore_promotion.sql +40 -0
  45. package/cloudflare-router-ab/migrations/deriver-b/0009_tenant_root_restore_preactivation_cleanup.sql +8 -0
  46. package/cloudflare-router-ab/migrations/deriver-b/0010_tenant_root_recovery_attempts.sql +26 -0
  47. package/cloudflare-router-ab/migrations/deriver-b/0011_tenant_root_source_retirement.sql +100 -0
  48. package/cloudflare-router-ab/migrations/signing-worker/0001_private_storage.sql +67 -0
  49. package/cloudflare-router-ab/migrations/signing-worker/0002_activation_revocation_fences.sql +3 -0
  50. package/cloudflare-router-ab/scripts/bootstrap-local-tenant-root.mjs +182 -0
  51. package/cloudflare-router-ab/scripts/initialize-local-wallet.mjs +17 -0
  52. package/cloudflare-router-ab/scripts/local-key-material.mjs +29 -0
  53. package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +1110 -0
  54. package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +333 -0
  55. package/cloudflare-router-ab/scripts/start-local-wallet-system.mjs +427 -0
  56. package/cloudflare-router-ab/wrangler.deriver-a.toml +123 -0
  57. package/cloudflare-router-ab/wrangler.deriver-b.toml +123 -0
  58. package/cloudflare-router-ab/wrangler.router.toml +126 -0
  59. package/cloudflare-router-ab/wrangler.signing-worker.toml +86 -0
  60. package/cloudflare-router-ab/wrangler.tenant-root-control-plane.toml +56 -0
  61. package/dist/esm/authorization/capabilityPolicy.js +96 -0
  62. package/dist/esm/authorization/domain.js +434 -0
  63. package/dist/esm/authorization/factorEvidence.js +405 -0
  64. package/dist/esm/authorization/service.js +319 -0
  65. package/dist/esm/authorization/vaultProxyUse.js +295 -0
  66. package/dist/esm/cloud-host.js +126 -0
  67. package/dist/esm/core/AuthService.js +2 -0
  68. package/dist/esm/core/EmailOtpRecords.js +361 -0
  69. package/dist/esm/core/EmailOtpStores.js +1460 -0
  70. package/dist/esm/core/IdentityStore.js +617 -0
  71. package/dist/esm/core/NearPublicKeyStore.js +242 -0
  72. package/dist/esm/core/RegistrationCeremonyStore.js +2101 -0
  73. package/dist/esm/core/SessionService.js +255 -0
  74. package/dist/esm/core/ThresholdService/config.js +111 -0
  75. package/dist/esm/core/ThresholdService/ecdsaClientRootProof.js +27 -0
  76. package/dist/esm/core/ThresholdService/evmCryptoWasm.js +167 -0
  77. package/dist/esm/core/ThresholdService/index.js +4 -0
  78. package/dist/esm/core/ThresholdService/kv.js +368 -0
  79. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +360 -0
  80. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillLiveSession.js +282 -0
  81. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.js +272 -0
  82. package/dist/esm/core/ThresholdService/routerAb/internalServiceHttp.js +57 -0
  83. package/dist/esm/core/ThresholdService/routerAbEcdsaSigningWorkerWasm.js +115 -0
  84. package/dist/esm/core/ThresholdService/routerAbNormalSigningPolicy.js +31 -0
  85. package/dist/esm/core/ThresholdService/secureRandomId.js +9 -0
  86. package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +603 -0
  87. package/dist/esm/core/ThresholdService/stores/EcdsaSigningStore.js +422 -0
  88. package/dist/esm/core/ThresholdService/stores/KeyStore.js +140 -0
  89. package/dist/esm/core/ThresholdService/stores/SessionStore.js +437 -0
  90. package/dist/esm/core/ThresholdService/stores/StoreConfig.js +13 -0
  91. package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +722 -0
  92. package/dist/esm/core/ThresholdService/validation.js +718 -0
  93. package/dist/esm/core/WalletAuthMethodStore.js +180 -0
  94. package/dist/esm/core/WalletStore.js +495 -0
  95. package/dist/esm/core/WebAuthnAuthenticatorStore.js +485 -0
  96. package/dist/esm/core/WebAuthnCredentialBindingStore.js +594 -0
  97. package/dist/esm/core/WebAuthnLoginChallengeStore.js +432 -0
  98. package/dist/esm/core/WebAuthnSyncChallengeStore.js +434 -0
  99. package/dist/esm/core/authService/AuthService.js +611 -0
  100. package/dist/esm/core/authService/bytes.js +22 -0
  101. package/dist/esm/core/authService/configValues.js +15 -0
  102. package/dist/esm/core/authService/emailOtpChallengeOperations.js +126 -0
  103. package/dist/esm/core/authService/emailOtpChallengeProof.js +214 -0
  104. package/dist/esm/core/authService/emailOtpChallengeVerification.js +335 -0
  105. package/dist/esm/core/authService/emailOtpChallenges.js +260 -0
  106. package/dist/esm/core/authService/emailOtpConfig.js +231 -0
  107. package/dist/esm/core/authService/emailOtpDelivery.js +169 -0
  108. package/dist/esm/core/authService/emailOtpEnrollment.js +141 -0
  109. package/dist/esm/core/authService/emailOtpGrant.js +74 -0
  110. package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +322 -0
  111. package/dist/esm/core/authService/emailOtpSeal.js +78 -0
  112. package/dist/esm/core/authService/emailOtpUnlock.js +264 -0
  113. package/dist/esm/core/authService/githubOAuth.js +140 -0
  114. package/dist/esm/core/authService/googleEmailOtpErrors.js +6 -0
  115. package/dist/esm/core/authService/googleEmailOtpOperations.js +141 -0
  116. package/dist/esm/core/authService/googleEmailOtpRegistration.js +674 -0
  117. package/dist/esm/core/authService/identity.js +57 -0
  118. package/dist/esm/core/authService/identityOperations.js +32 -0
  119. package/dist/esm/core/authService/nearAccountOperations.js +229 -0
  120. package/dist/esm/core/authService/nearPrivateKeySigning.js +110 -0
  121. package/dist/esm/core/authService/nearPublicKeyMetadata.js +127 -0
  122. package/dist/esm/core/authService/nearTransactions.js +139 -0
  123. package/dist/esm/core/authService/oidcVerification.js +262 -0
  124. package/dist/esm/core/authService/portableCrypto.js +19 -0
  125. package/dist/esm/core/authService/rateLimits.js +117 -0
  126. package/dist/esm/core/authService/record.js +8 -0
  127. package/dist/esm/core/authService/registrationThresholdHelpers.js +131 -0
  128. package/dist/esm/core/authService/runtime.js +45 -0
  129. package/dist/esm/core/authService/signerWasmUrls.js +20 -0
  130. package/dist/esm/core/authService/storeRegistry.js +113 -0
  131. package/dist/esm/core/authService/thresholdEcdsaKeyInventory.js +146 -0
  132. package/dist/esm/core/authService/thresholdRuntimePolicy.js +19 -0
  133. package/dist/esm/core/authService/thresholdStoreSummary.js +32 -0
  134. package/dist/esm/core/authService/walletRegistrationPlanning.js +49 -0
  135. package/dist/esm/core/authService/wasm.js +78 -0
  136. package/dist/esm/core/authService/webauthn.js +746 -0
  137. package/dist/esm/core/authService/webauthnAuthority.js +17 -0
  138. package/dist/esm/core/authService/webauthnOidcHelpers.js +91 -0
  139. package/dist/esm/core/authService/webauthnWalletBinding.js +157 -0
  140. package/dist/esm/core/config.js +110 -0
  141. package/dist/esm/core/d1IdentityStore.js +340 -0
  142. package/dist/esm/core/d1WalletAuthMethodStore.js +768 -0
  143. package/dist/esm/core/d1WalletStore.js +724 -0
  144. package/dist/esm/core/defaultConfigsServer.js +9 -0
  145. package/dist/esm/core/deviceLinking/index.js +5 -0
  146. package/dist/esm/core/deviceLinking/linkedDeviceEd25519ExportRoot.js +0 -0
  147. package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +211 -0
  148. package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +279 -0
  149. package/dist/esm/core/deviceLinking/linkedDeviceSession.js +1419 -0
  150. package/dist/esm/core/deviceLinking/requestProof.js +172 -0
  151. package/dist/esm/core/errors.js +54 -0
  152. package/dist/esm/core/hostedAccountIds.js +225 -0
  153. package/dist/esm/core/keyMaterialBrands.js +58 -0
  154. package/dist/esm/core/logger.js +39 -0
  155. package/dist/esm/core/nearKeys.js +20 -0
  156. package/dist/esm/core/nearRelayerAccountProvisioning.js +713 -0
  157. package/dist/esm/core/nearSignerWasmRuntime.js +87 -0
  158. package/dist/esm/core/registrationContracts.js +2 -0
  159. package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +88 -0
  160. package/dist/esm/core/routerAbSigning/RouterAbNormalSigningRuntime.js +101 -0
  161. package/dist/esm/core/routerAbSigning/createCloudflareDurableObjectRouterAbSigningRuntimes.js +39 -0
  162. package/dist/esm/core/routerAbSigning/createRouterAbSigningRuntimes.js +91 -0
  163. package/dist/esm/core/rpcClients/near/NearClient.js +389 -0
  164. package/dist/esm/core/sessionValidation.js +0 -0
  165. package/dist/esm/core/signingLanes/LaneAggregateRevocationApplicationService.js +86 -0
  166. package/dist/esm/core/signingLanes/LaneEffectJournalStore.js +0 -0
  167. package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +324 -0
  168. package/dist/esm/core/signingLanes/LaneEnrollmentRevocation.js +173 -0
  169. package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +200 -0
  170. package/dist/esm/core/signingLanes/LaneLifecycleStore.js +24 -0
  171. package/dist/esm/core/signingLanes/SigningLaneStore.js +0 -0
  172. package/dist/esm/core/signingLanes/WalletExecutionLaneProjection.js +296 -0
  173. package/dist/esm/core/signingLanes/WalletKeyStore.js +0 -0
  174. package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +78 -0
  175. package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +71 -0
  176. package/dist/esm/core/signingLanes/index.js +8 -0
  177. package/dist/esm/core/signingLanes/signingWorkerLaneMaterialIdentity.js +0 -0
  178. package/dist/esm/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.js +305 -0
  179. package/dist/esm/core/threeRouteRegistrationContracts.js +5 -0
  180. package/dist/esm/core/thresholdEcdsaChainTarget.js +49 -0
  181. package/dist/esm/core/types.js +8 -0
  182. package/dist/esm/core/utils.js +14 -0
  183. package/dist/esm/delegateAction/index.js +136 -0
  184. package/dist/esm/hosted-wallet-gateway-worker.js +18 -0
  185. package/dist/esm/hosted-wallet-gateway.js +701 -0
  186. package/dist/esm/index.js +53 -0
  187. package/dist/esm/local-hosted-wallet-gateway-worker.js +23 -0
  188. package/dist/esm/node_modules/@near-js/types/lib/esm/provider/response.js +17 -0
  189. package/dist/esm/router/auth/authRequestValidation.js +264 -0
  190. package/dist/esm/router/auth/commonRouterUtils.js +305 -0
  191. package/dist/esm/router/auth/routerApiCredentialAuth.js +91 -0
  192. package/dist/esm/router/auth/routerApiKeyAuth.js +63 -0
  193. package/dist/esm/router/auth/walletSessionFailure.js +49 -0
  194. package/dist/esm/router/auth/webAuthnCredentialCodecs.js +107 -0
  195. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.js +84 -0
  196. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +321 -0
  197. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +1581 -0
  198. package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +1820 -0
  199. package/dist/esm/router/cloudflare/d1/authorization/d1VaultProxyStore.js +122 -0
  200. package/dist/esm/router/cloudflare/d1/authorization/walletSessionAuthorityProjection.js +119 -0
  201. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +1831 -0
  202. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +118 -0
  203. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +81 -0
  204. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +539 -0
  205. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceManagementService.js +92 -0
  206. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +560 -0
  207. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +136 -0
  208. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.js +95 -0
  209. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.js +91 -0
  210. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionService.js +15 -0
  211. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +732 -0
  212. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.js +195 -0
  213. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetAuthenticatorStore.js +100 -0
  214. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +867 -0
  215. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.js +169 -0
  216. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.js +255 -0
  217. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkSourceReader.js +128 -0
  218. package/dist/esm/router/cloudflare/d1/deviceLinking/index.js +15 -0
  219. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +311 -0
  220. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +21 -0
  221. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoWalletSigner.js +65 -0
  222. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +216 -0
  223. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +326 -0
  224. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +346 -0
  225. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +495 -0
  226. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpDeliveryRuntime.js +157 -0
  227. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +248 -0
  228. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +66 -0
  229. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +76 -0
  230. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +539 -0
  231. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +404 -0
  232. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +200 -0
  233. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +84 -0
  234. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +217 -0
  235. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +485 -0
  236. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +509 -0
  237. package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +51 -0
  238. package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +135 -0
  239. package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +62 -0
  240. package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +272 -0
  241. package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +132 -0
  242. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyEnvelopeStore.js +628 -0
  243. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +871 -0
  244. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +823 -0
  245. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpAttemptStore.js +38 -0
  246. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.js +304 -0
  247. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js +793 -0
  248. package/dist/esm/router/cloudflare/d1/registration/d1EvmFamilyEcdsaRegistrationBranch.js +120 -0
  249. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +317 -0
  250. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +2084 -0
  251. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +309 -0
  252. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +120 -0
  253. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +263 -0
  254. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +3887 -0
  255. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +182 -0
  256. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +399 -0
  257. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +486 -0
  258. package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +146 -0
  259. package/dist/esm/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.js +10 -0
  260. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.js +22 -0
  261. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +167 -0
  262. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.js +38 -0
  263. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.js +20 -0
  264. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +1459 -0
  265. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLockStore.js +114 -0
  266. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.js +16 -0
  267. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +170 -0
  268. package/dist/esm/router/cloudflare/d1/signingLanes/index.js +10 -0
  269. package/dist/esm/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js +412 -0
  270. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +1396 -0
  271. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodBoundary.js +285 -0
  272. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +2018 -0
  273. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +792 -0
  274. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +635 -0
  275. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +538 -0
  276. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +264 -0
  277. package/dist/esm/router/cloudflare/durableObjects/thresholdStore.js +514 -0
  278. package/dist/esm/router/cloudflare/durableObjects/versionedJsonRecordStore.js +192 -0
  279. package/dist/esm/router/cloudflare/runtime/cloudflare.types.js +0 -0
  280. package/dist/esm/router/cloudflare/runtime/cloudflareSignerWasm.js +8 -0
  281. package/dist/esm/router/cloudflare/runtime/createCloudflareRouter.js +19 -0
  282. package/dist/esm/router/cloudflare/runtime/createSelfHostedCloudflareSigningWorker.js +94 -0
  283. package/dist/esm/router/cloudflare/runtime/ed25519SessionAdapter.js +106 -0
  284. package/dist/esm/router/cloudflare/runtime/environment.js +25 -0
  285. package/dist/esm/router/cloudflare/runtime/routerAbPrewarm.js +34 -0
  286. package/dist/esm/router/cloudflare/runtime/routerAbServiceBindings.js +33 -0
  287. package/dist/esm/router/cloudflare/runtime/sessionAdapterRuntime.js +104 -0
  288. package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +168 -0
  289. package/dist/esm/router/cloudflare/runtime/tenantRootCreationGrant.js +147 -0
  290. package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +143 -0
  291. package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +227 -0
  292. package/dist/esm/router/cloudflare/runtime/walletConsoleTenantRootLineage.js +30 -0
  293. package/dist/esm/router/cloudflare/runtime/walletControlOps.js +107 -0
  294. package/dist/esm/router/cloudflare/runtime/walletGateway.js +149 -0
  295. package/dist/esm/router/cloudflare/runtime/walletRuntimeOps.js +322 -0
  296. package/dist/esm/router/cloudflare/runtime/walletRuntimeOpsHandler.js +48 -0
  297. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +597 -0
  298. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +272 -0
  299. package/dist/esm/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js +477 -0
  300. package/dist/esm/router/cloudflare/signingLanes/index.js +4 -0
  301. package/dist/esm/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.js +32 -0
  302. package/dist/esm/router/cloudflare-adaptor.js +45 -0
  303. package/dist/esm/router/cloudflare.js +42794 -0
  304. package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +738 -0
  305. package/dist/esm/router/domains/ecdsa/thresholdEcdsaRequestValidation.js +134 -0
  306. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +368 -0
  307. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +624 -0
  308. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +143 -0
  309. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js +270 -0
  310. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRunner.js +31 -0
  311. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +162 -0
  312. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +1366 -0
  313. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +465 -0
  314. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +1609 -0
  315. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +540 -0
  316. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +394 -0
  317. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +572 -0
  318. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +555 -0
  319. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.js +268 -0
  320. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +329 -0
  321. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js +423 -0
  322. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js +432 -0
  323. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationTwoPhaseRunner.js +58 -0
  324. package/dist/esm/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.js +0 -0
  325. package/dist/esm/router/domains/ed25519Yao/session/routerAbEd25519YaoWalletSession.js +0 -0
  326. package/dist/esm/router/domains/ed25519Yao/session/thresholdEd25519RequestValidation.js +275 -0
  327. package/dist/esm/router/domains/emailOtp/emailOtpExportPolicy.js +70 -0
  328. package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +34 -0
  329. package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +218 -0
  330. package/dist/esm/router/domains/emailOtp/emailOtpSessionRouteHelpers.js +210 -0
  331. package/dist/esm/router/domains/passkeyCustody/envelopeRevocationAdmission.js +26 -0
  332. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +107 -0
  333. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrievalRoute.js +45 -0
  334. package/dist/esm/router/domains/passkeyCustody/registrationCustodyOutcome.js +47 -0
  335. package/dist/esm/router/domains/passkeyCustody/verifiedCustodyFactor.js +46 -0
  336. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.js +32 -0
  337. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +170 -0
  338. package/dist/esm/router/domains/passkeyCustody/walletRecoveryAttempt.js +64 -0
  339. package/dist/esm/router/domains/passkeyCustody/walletRecoveryFinalization.js +652 -0
  340. package/dist/esm/router/domains/passkeyCustody/walletRecoveryKeyManifest.js +396 -0
  341. package/dist/esm/router/domains/passkeyCustody/walletRecoveryRotation.js +87 -0
  342. package/dist/esm/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.js +89 -0
  343. package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.js +106 -0
  344. package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +2669 -0
  345. package/dist/esm/router/domains/signingOperations/walletExecutionAdmission.js +228 -0
  346. package/dist/esm/router/domains/syncAccount/syncAccountRequestValidation.js +78 -0
  347. package/dist/esm/router/domains/tenantRoot/tenantRootCustodyLineage.js +0 -0
  348. package/dist/esm/router/domains/tenantRoot/tenantRootEcdsaWalletSessionComposition.js +55 -0
  349. package/dist/esm/router/domains/tenantRoot/tenantRootEd25519WalletSessionComposition.js +56 -0
  350. package/dist/esm/router/domains/tenantRoot/tenantRootIdentityResolution.js +111 -0
  351. package/dist/esm/router/domains/walletRegistration/walletRegistrationInputs.js +0 -0
  352. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +2199 -0
  353. package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +155 -0
  354. package/dist/esm/router/domains/walletUnlock/walletUnlockRequestedCapabilitiesValidation.js +84 -0
  355. package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +1142 -0
  356. package/dist/esm/router/express-adaptor.js +84 -0
  357. package/dist/esm/router/express.js +26616 -0
  358. package/dist/esm/router/framework/apiCredentialPorts.js +11 -0
  359. package/dist/esm/router/framework/applyRouteMetering.js +26 -0
  360. package/dist/esm/router/framework/authServicePort.js +30 -0
  361. package/dist/esm/router/framework/enforceRoutePolicy.js +92 -0
  362. package/dist/esm/router/framework/http.js +87 -0
  363. package/dist/esm/router/framework/logger.js +7 -0
  364. package/dist/esm/router/framework/modules.js +34 -0
  365. package/dist/esm/router/framework/ror/index.js +5 -0
  366. package/dist/esm/router/framework/ror/normalize.js +57 -0
  367. package/dist/esm/router/framework/ror/options.js +33 -0
  368. package/dist/esm/router/framework/ror/provider.js +33 -0
  369. package/dist/esm/router/framework/ror/staticProvider.js +24 -0
  370. package/dist/esm/router/framework/routeAuthPolicy.js +16 -0
  371. package/dist/esm/router/framework/routeDefinitions.js +446 -0
  372. package/dist/esm/router/framework/routeExecutionContext.js +24 -0
  373. package/dist/esm/router/framework/routeExtensions.js +50 -0
  374. package/dist/esm/router/framework/routeMeteringPolicy.js +0 -0
  375. package/dist/esm/router/framework/routeRequestValidation.js +32 -0
  376. package/dist/esm/router/framework/routeResponses.js +33 -0
  377. package/dist/esm/router/framework/routerApi.js +42 -0
  378. package/dist/esm/router/framework/routerApiRouteSurface.js +54 -0
  379. package/dist/esm/router/framework/routerApiWebhooks.js +60 -0
  380. package/dist/esm/router/framework/runtimeSnapshotConsumer.js +145 -0
  381. package/dist/esm/router/framework/versionedJsonRecordStore.js +0 -0
  382. package/dist/esm/router/ror-adaptor.js +5 -0
  383. package/dist/esm/router/ror.js +178 -0
  384. package/dist/esm/router/transport/fetch/createFetchRouter.js +309 -0
  385. package/dist/esm/router/transport/fetch/fetchRouter.types.js +0 -0
  386. package/dist/esm/router/transport/fetch/routes/auth.js +219 -0
  387. package/dist/esm/router/transport/fetch/routes/deviceLinking.js +1196 -0
  388. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +264 -0
  389. package/dist/esm/router/transport/fetch/routes/deviceManagement.js +289 -0
  390. package/dist/esm/router/transport/fetch/routes/health.js +42 -0
  391. package/dist/esm/router/transport/fetch/routes/nearPublicKeys.js +39 -0
  392. package/dist/esm/router/transport/fetch/routes/normalSigningRouterProxy.js +118 -0
  393. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +1618 -0
  394. package/dist/esm/router/transport/fetch/routes/sessions.js +1033 -0
  395. package/dist/esm/router/transport/fetch/routes/syncAccount.js +187 -0
  396. package/dist/esm/router/transport/fetch/routes/syncAccountBootstrap.js +214 -0
  397. package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +1729 -0
  398. package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +1321 -0
  399. package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +228 -0
  400. package/dist/esm/router/transport/fetch/routes/walletRegistration.js +73 -0
  401. package/dist/esm/router/transport/fetch/routes/webauthnAuthenticators.js +43 -0
  402. package/dist/esm/router/transport/fetch/routes/wellKnown.js +48 -0
  403. package/dist/esm/shared-ts/src/authorization/capabilityKinds.js +224 -0
  404. package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +134 -0
  405. package/dist/esm/shared-ts/src/authorization/index.js +6 -0
  406. package/dist/esm/shared-ts/src/authorization/operationFingerprint.js +58 -0
  407. package/dist/esm/shared-ts/src/authorization/walletAuthority.js +802 -0
  408. package/dist/esm/shared-ts/src/authorization/walletCustodyOperation.js +18 -0
  409. package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +5 -0
  410. package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +332 -0
  411. package/dist/esm/shared-ts/src/device-linking/contracts.js +8 -0
  412. package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +132 -0
  413. package/dist/esm/shared-ts/src/device-linking/digests.js +273 -0
  414. package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +158 -0
  415. package/dist/esm/shared-ts/src/device-linking/index.js +9 -0
  416. package/dist/esm/shared-ts/src/device-linking/parsers.js +1412 -0
  417. package/dist/esm/shared-ts/src/device-linking/requestProof.js +114 -0
  418. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +563 -0
  419. package/dist/esm/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +207 -0
  420. package/dist/esm/shared-ts/src/near/actions.js +75 -0
  421. package/dist/esm/shared-ts/src/passkey-custody/ceremonyCommitPayload.js +69 -0
  422. package/dist/esm/shared-ts/src/passkey-custody/credentialActivity.js +81 -0
  423. package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +272 -0
  424. package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +175 -0
  425. package/dist/esm/shared-ts/src/passkey-custody/index.js +5 -0
  426. package/dist/esm/shared-ts/src/passkey-custody/primitives.js +92 -0
  427. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +53 -0
  428. package/dist/esm/shared-ts/src/signing-lanes/execution.js +14 -0
  429. package/dist/esm/shared-ts/src/signing-lanes/index.js +11 -0
  430. package/dist/esm/shared-ts/src/signing-lanes/linkedEcdsaScope.js +1 -0
  431. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +91 -0
  432. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +124 -0
  433. package/dist/esm/shared-ts/src/signing-lanes/participants.js +262 -0
  434. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +143 -0
  435. package/dist/esm/shared-ts/src/signing-lanes/rotation.js +8 -0
  436. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +397 -0
  437. package/dist/esm/shared-ts/src/signing-lanes/rotationLifecycle.js +313 -0
  438. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +1620 -0
  439. package/dist/esm/shared-ts/src/tenant-root/index.js +2 -0
  440. package/dist/esm/shared-ts/src/tenant-root/tenantRootIdentity.js +198 -0
  441. package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +440 -0
  442. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +85 -0
  443. package/dist/esm/shared-ts/src/threshold/participants.js +26 -0
  444. package/dist/esm/shared-ts/src/threshold/sessionPolicy.js +9 -0
  445. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +40 -0
  446. package/dist/esm/shared-ts/src/utils/addAuthMethodRegistration.js +104 -0
  447. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +36 -0
  448. package/dist/esm/shared-ts/src/utils/base58.js +28 -0
  449. package/dist/esm/shared-ts/src/utils/base64.js +70 -0
  450. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +27 -0
  451. package/dist/esm/shared-ts/src/utils/digests.js +33 -0
  452. package/dist/esm/shared-ts/src/utils/domainIds.js +309 -0
  453. package/dist/esm/shared-ts/src/utils/ecdsaCapabilityActivation.js +34 -0
  454. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +46 -0
  455. package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +38 -0
  456. package/dist/esm/shared-ts/src/utils/emailOtpRecoveryKey.js +10 -0
  457. package/dist/esm/shared-ts/src/utils/encoders.js +2 -0
  458. package/dist/esm/shared-ts/src/utils/errors.js +88 -0
  459. package/dist/esm/shared-ts/src/utils/evmRpcResults.js +97 -0
  460. package/dist/esm/shared-ts/src/utils/jsonRpc.js +64 -0
  461. package/dist/esm/shared-ts/src/utils/keccak.js +150 -0
  462. package/dist/esm/shared-ts/src/utils/near.js +99 -0
  463. package/dist/esm/shared-ts/src/utils/nearRpcResults.js +205 -0
  464. package/dist/esm/shared-ts/src/utils/normalize.js +87 -0
  465. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +201 -0
  466. package/dist/esm/shared-ts/src/utils/registrationIntent.js +1268 -0
  467. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1655 -0
  468. package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +984 -0
  469. package/dist/esm/shared-ts/src/utils/routerAbNormalSigningIdentity.js +118 -0
  470. package/dist/esm/shared-ts/src/utils/routerAbPublicKeyset.js +138 -0
  471. package/dist/esm/shared-ts/src/utils/routerAbTraceContext.js +36 -0
  472. package/dist/esm/shared-ts/src/utils/secureRandomId.js +35 -0
  473. package/dist/esm/shared-ts/src/utils/signingSessionSeal.js +118 -0
  474. package/dist/esm/shared-ts/src/utils/thresholdEcdsaKeyHandle.js +28 -0
  475. package/dist/esm/shared-ts/src/utils/validation.js +23 -0
  476. package/dist/esm/shared-ts/src/utils/walletAddSignerActivation.js +32 -0
  477. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +207 -0
  478. package/dist/esm/shared-ts/src/utils/walletSessionFailure.js +15 -0
  479. package/dist/esm/shared-ts/src/utils/webauthnDeviceInfo.js +207 -0
  480. package/dist/esm/shared-ts/src/wallet-recovery/backupAcknowledgement.js +66 -0
  481. package/dist/esm/shared-ts/src/wallet-recovery/index.js +10 -0
  482. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeIssuance.js +1 -0
  483. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +34 -0
  484. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +80 -0
  485. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodes.js +4 -0
  486. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +53 -0
  487. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +108 -0
  488. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +157 -0
  489. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +233 -0
  490. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryRotation.js +3 -0
  491. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryTarget.js +29 -0
  492. package/dist/esm/storage/d1Sql.js +85 -0
  493. package/dist/esm/storage/tenantRoute.js +89 -0
  494. package/dist/esm/tenant-root.js +5 -0
  495. package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +204 -0
  496. package/dist/esm/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js +87 -0
  497. package/dist/esm/threshold/session/signingSessionSeal/guards/backends.js +192 -0
  498. package/dist/esm/threshold/session/signingSessionSeal/guards/index.js +121 -0
  499. package/dist/esm/threshold/session/signingSessionSeal/idempotency.js +38 -0
  500. package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +131 -0
  501. package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +55 -0
  502. package/dist/esm/threshold/session/signingSessionSeal/index.js +13 -0
  503. package/dist/esm/threshold/session/signingSessionSeal/observability/audit.js +38 -0
  504. package/dist/esm/threshold/session/signingSessionSeal/options.js +54 -0
  505. package/dist/esm/threshold/session/signingSessionSeal/routesOptions.js +45 -0
  506. package/dist/esm/threshold/session/signingSessionSeal/service.js +316 -0
  507. package/dist/esm/threshold/session/signingSessionSeal/signingSessionSeal.types.js +0 -0
  508. package/dist/esm/threshold/session/signingSessionSeal/transport/express.js +151 -0
  509. package/dist/esm/threshold/session/signingSessionSeal/transport/fetch.js +106 -0
  510. package/dist/esm/threshold/session/signingSessionSeal/transport/shared.js +159 -0
  511. package/dist/esm/threshold/statusCodes.js +39 -0
  512. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto.js +601 -0
  513. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
  514. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +1078 -0
  515. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  516. package/dist/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_worker.js +503 -0
  517. package/dist/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_worker_bg.wasm +0 -0
  518. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime.js +393 -0
  519. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
  520. package/dist/esm/wasm/signer.js +2 -0
  521. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +147 -0
  522. package/dist/types/shared-ts/src/authorization/capabilityKinds.typecheck.d.ts +2 -0
  523. package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +44 -0
  524. package/dist/types/shared-ts/src/authorization/index.d.ts +7 -0
  525. package/dist/types/shared-ts/src/authorization/operationFingerprint.d.ts +39 -0
  526. package/dist/types/shared-ts/src/authorization/operationFingerprint.typecheck.d.ts +2 -0
  527. package/dist/types/shared-ts/src/authorization/walletAuthority.d.ts +168 -0
  528. package/dist/types/shared-ts/src/authorization/walletAuthority.typecheck.d.ts +2 -0
  529. package/dist/types/shared-ts/src/authorization/walletCustodyOperation.d.ts +10 -0
  530. package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +28 -0
  531. package/dist/types/shared-ts/src/device-linking/activeWalletSession.d.ts +3 -0
  532. package/dist/types/shared-ts/src/device-linking/activeWalletSession.typecheck.d.ts +2 -0
  533. package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +71 -0
  534. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +843 -0
  535. package/dist/types/shared-ts/src/device-linking/contracts.typecheck.d.ts +2 -0
  536. package/dist/types/shared-ts/src/device-linking/delegatedActivationPlan.d.ts +37 -0
  537. package/dist/types/shared-ts/src/device-linking/digests.d.ts +23 -0
  538. package/dist/types/shared-ts/src/device-linking/ed25519ExportRoot.d.ts +93 -0
  539. package/dist/types/shared-ts/src/device-linking/index.d.ts +11 -0
  540. package/dist/types/shared-ts/src/device-linking/parsers.d.ts +124 -0
  541. package/dist/types/shared-ts/src/device-linking/requestProof.d.ts +26 -0
  542. package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +182 -0
  543. package/dist/types/shared-ts/src/device-linking/walletSessionCredentialDelivery.d.ts +84 -0
  544. package/dist/types/shared-ts/src/index.d.ts +10 -0
  545. package/dist/types/shared-ts/src/near/actions.d.ts +141 -0
  546. package/dist/types/shared-ts/src/near/delegate.d.ts +55 -0
  547. package/dist/types/shared-ts/src/near/index.d.ts +3 -0
  548. package/dist/types/shared-ts/src/passkey-custody/ceremonyCommitPayload.d.ts +211 -0
  549. package/dist/types/shared-ts/src/passkey-custody/credentialActivity.d.ts +49 -0
  550. package/dist/types/shared-ts/src/passkey-custody/credentialObservations.d.ts +74 -0
  551. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +191 -0
  552. package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +140 -0
  553. package/dist/types/shared-ts/src/passkey-custody/envelopeIndex.d.ts +29 -0
  554. package/dist/types/shared-ts/src/passkey-custody/index.d.ts +9 -0
  555. package/dist/types/shared-ts/src/passkey-custody/kekContext.d.ts +34 -0
  556. package/dist/types/shared-ts/src/passkey-custody/passkeyCustody.typecheck.d.ts +2 -0
  557. package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +34 -0
  558. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +27 -0
  559. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +91 -0
  560. package/dist/types/shared-ts/src/signing-lanes/execution.typecheck.d.ts +2 -0
  561. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +18 -0
  562. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +14 -0
  563. package/dist/types/shared-ts/src/signing-lanes/linkedEcdsaScope.d.ts +62 -0
  564. package/dist/types/shared-ts/src/signing-lanes/linkedEcdsaScope.typecheck.d.ts +2 -0
  565. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +30 -0
  566. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.typecheck.d.ts +2 -0
  567. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +48 -0
  568. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +2 -0
  569. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +89 -0
  570. package/dist/types/shared-ts/src/signing-lanes/recordParsers.d.ts +128 -0
  571. package/dist/types/shared-ts/src/signing-lanes/records.d.ts +160 -0
  572. package/dist/types/shared-ts/src/signing-lanes/records.typecheck.d.ts +2 -0
  573. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +894 -0
  574. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +2 -0
  575. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +32 -0
  576. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +99 -0
  577. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +67 -0
  578. package/dist/types/shared-ts/src/signing-lanes/validation.d.ts +11 -0
  579. package/dist/types/shared-ts/src/tenant-root/index.d.ts +3 -0
  580. package/dist/types/shared-ts/src/tenant-root/tenantRootIdentity.d.ts +72 -0
  581. package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +192 -0
  582. package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +77 -0
  583. package/dist/types/shared-ts/src/threshold/ed25519OperationFingerprint.d.ts +130 -0
  584. package/dist/types/shared-ts/src/threshold/index.d.ts +7 -0
  585. package/dist/types/shared-ts/src/threshold/participants.d.ts +38 -0
  586. package/dist/types/shared-ts/src/threshold/secp256k1.d.ts +39 -0
  587. package/dist/types/shared-ts/src/threshold/sessionPolicy.d.ts +5 -0
  588. package/dist/types/shared-ts/src/threshold/signingRootScope.d.ts +24 -0
  589. package/dist/types/shared-ts/src/utils/addAuthMethodRegistration.d.ts +63 -0
  590. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +295 -0
  591. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +11 -0
  592. package/dist/types/shared-ts/src/utils/authenticatorOptions.d.ts +25 -0
  593. package/dist/types/shared-ts/src/utils/base58.d.ts +17 -0
  594. package/dist/types/shared-ts/src/utils/base64.d.ts +53 -0
  595. package/dist/types/shared-ts/src/utils/bigint.d.ts +3 -0
  596. package/dist/types/shared-ts/src/utils/canonicalPrimitives.d.ts +12 -0
  597. package/dist/types/shared-ts/src/utils/digests.d.ts +6 -0
  598. package/dist/types/shared-ts/src/utils/domainIds.d.ts +140 -0
  599. package/dist/types/shared-ts/src/utils/domainIds.typecheck.d.ts +2 -0
  600. package/dist/types/shared-ts/src/utils/ecdsaCapabilityActivation.d.ts +29 -0
  601. package/dist/types/shared-ts/src/utils/ecdsaKeyFactsInventory.d.ts +24 -0
  602. package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +30 -0
  603. package/dist/types/shared-ts/src/utils/emailOtpRecoveryKey.d.ts +31 -0
  604. package/dist/types/shared-ts/src/utils/encoders.d.ts +3 -0
  605. package/dist/types/shared-ts/src/utils/errors.d.ts +44 -0
  606. package/dist/types/shared-ts/src/utils/evmRpcResults.d.ts +31 -0
  607. package/dist/types/shared-ts/src/utils/generated/routerAbEd25519YaoCore.d.ts +128 -0
  608. package/dist/types/shared-ts/src/utils/index.d.ts +34 -0
  609. package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +30 -0
  610. package/dist/types/shared-ts/src/utils/keccak.d.ts +2 -0
  611. package/dist/types/shared-ts/src/utils/near.d.ts +81 -0
  612. package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +101 -0
  613. package/dist/types/shared-ts/src/utils/normalize.d.ts +57 -0
  614. package/dist/types/shared-ts/src/utils/paillier.d.ts +37 -0
  615. package/dist/types/shared-ts/src/utils/recoveryDomain.d.ts +12 -0
  616. package/dist/types/shared-ts/src/utils/registrationEstablishedSession.d.ts +85 -0
  617. package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +621 -0
  618. package/dist/types/shared-ts/src/utils/registrationIntent.typecheck.d.ts +2 -0
  619. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +715 -0
  620. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.typecheck.d.ts +2 -0
  621. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivationRefresh.typecheck.d.ts +2 -0
  622. package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +339 -0
  623. package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.typecheck.d.ts +2 -0
  624. package/dist/types/shared-ts/src/utils/routerAbNormalSigningIdentity.d.ts +71 -0
  625. package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +51 -0
  626. package/dist/types/shared-ts/src/utils/routerAbTraceContext.d.ts +16 -0
  627. package/dist/types/shared-ts/src/utils/secureRandomId.d.ts +6 -0
  628. package/dist/types/shared-ts/src/utils/signerDomain.d.ts +75 -0
  629. package/dist/types/shared-ts/src/utils/signerDomain.typecheck.d.ts +2 -0
  630. package/dist/types/shared-ts/src/utils/signerSlot.d.ts +11 -0
  631. package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +153 -0
  632. package/dist/types/shared-ts/src/utils/signingSessionSeal.typecheck.d.ts +2 -0
  633. package/dist/types/shared-ts/src/utils/theme.d.ts +2 -0
  634. package/dist/types/shared-ts/src/utils/thresholdEcdsaKeyHandle.d.ts +11 -0
  635. package/dist/types/shared-ts/src/utils/validation.d.ts +35 -0
  636. package/dist/types/shared-ts/src/utils/walletAddSignerActivation.d.ts +23 -0
  637. package/dist/types/shared-ts/src/utils/walletAuthAuthority.d.ts +150 -0
  638. package/dist/types/shared-ts/src/utils/walletAuthAuthority.typecheck.d.ts +2 -0
  639. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +106 -0
  640. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.typecheck.d.ts +2 -0
  641. package/dist/types/shared-ts/src/utils/walletSessionFailure.d.ts +13 -0
  642. package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +48 -0
  643. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +56 -0
  644. package/dist/types/shared-ts/src/wallet-recovery/index.d.ts +10 -0
  645. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +59 -0
  646. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeIssuance.d.ts +37 -0
  647. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeLocator.d.ts +22 -0
  648. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +79 -0
  649. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +11 -0
  650. package/dist/types/shared-ts/src/wallet-recovery/recoveryEnvelopes.d.ts +42 -0
  651. package/dist/types/shared-ts/src/wallet-recovery/recoveryKekContext.d.ts +37 -0
  652. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +58 -0
  653. package/dist/types/shared-ts/src/wallet-recovery/walletRecovery.typecheck.d.ts +2 -0
  654. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.d.ts +110 -0
  655. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.d.ts +29 -0
  656. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.d.ts +115 -0
  657. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryRotation.d.ts +18 -0
  658. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.d.ts +12 -0
  659. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.typecheck.d.ts +2 -0
  660. package/dist/types/wallet-server/src/authorization/capabilityPolicy.d.ts +45 -0
  661. package/dist/types/wallet-server/src/authorization/capabilityPolicy.typecheck.d.ts +2 -0
  662. package/dist/types/wallet-server/src/authorization/domain.d.ts +454 -0
  663. package/dist/types/wallet-server/src/authorization/domain.typecheck.d.ts +2 -0
  664. package/dist/types/wallet-server/src/authorization/factorEvidence.d.ts +165 -0
  665. package/dist/types/wallet-server/src/authorization/factorEvidence.typecheck.d.ts +2 -0
  666. package/dist/types/wallet-server/src/authorization/service.d.ts +227 -0
  667. package/dist/types/wallet-server/src/authorization/vaultProxyUse.d.ts +75 -0
  668. package/dist/types/wallet-server/src/cloud-host.d.ts +94 -0
  669. package/dist/types/wallet-server/src/core/AuthService.d.ts +3 -0
  670. package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +33 -0
  671. package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +336 -0
  672. package/dist/types/wallet-server/src/core/IdentityStore.d.ts +57 -0
  673. package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +58 -0
  674. package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +551 -0
  675. package/dist/types/wallet-server/src/core/SessionService.d.ts +70 -0
  676. package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +23 -0
  677. package/dist/types/wallet-server/src/core/ThresholdService/ecdsaClientRootProof.d.ts +12 -0
  678. package/dist/types/wallet-server/src/core/ThresholdService/evmCryptoWasm.d.ts +32 -0
  679. package/dist/types/wallet-server/src/core/ThresholdService/index.d.ts +4 -0
  680. package/dist/types/wallet-server/src/core/ThresholdService/kv.d.ts +52 -0
  681. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +45 -0
  682. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillLiveSession.d.ts +93 -0
  683. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.d.ts +138 -0
  684. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/internalServiceHttp.d.ts +30 -0
  685. package/dist/types/wallet-server/src/core/ThresholdService/routerAbEcdsaSigningWorkerWasm.d.ts +17 -0
  686. package/dist/types/wallet-server/src/core/ThresholdService/routerAbNormalSigningPolicy.d.ts +21 -0
  687. package/dist/types/wallet-server/src/core/ThresholdService/secureRandomId.d.ts +2 -0
  688. package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +128 -0
  689. package/dist/types/wallet-server/src/core/ThresholdService/stores/EcdsaSigningStore.d.ts +76 -0
  690. package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +39 -0
  691. package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +102 -0
  692. package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +3 -0
  693. package/dist/types/wallet-server/src/core/ThresholdService/stores/ThresholdStoreConfig.typecheck.d.ts +2 -0
  694. package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +98 -0
  695. package/dist/types/wallet-server/src/core/ThresholdService/thresholdEd25519AuthorityScope.typecheck.d.ts +2 -0
  696. package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +193 -0
  697. package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +12 -0
  698. package/dist/types/wallet-server/src/core/WalletStore.d.ts +143 -0
  699. package/dist/types/wallet-server/src/core/WalletStore.typecheck.d.ts +2 -0
  700. package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +62 -0
  701. package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +116 -0
  702. package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.typecheck.d.ts +13 -0
  703. package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +50 -0
  704. package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +50 -0
  705. package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +493 -0
  706. package/dist/types/wallet-server/src/core/authService/bytes.d.ts +4 -0
  707. package/dist/types/wallet-server/src/core/authService/configValues.d.ts +7 -0
  708. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +108 -0
  709. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +177 -0
  710. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +46 -0
  711. package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +110 -0
  712. package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +34 -0
  713. package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +65 -0
  714. package/dist/types/wallet-server/src/core/authService/emailOtpEnrollment.d.ts +79 -0
  715. package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +42 -0
  716. package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +116 -0
  717. package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +35 -0
  718. package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +70 -0
  719. package/dist/types/wallet-server/src/core/authService/githubOAuth.d.ts +35 -0
  720. package/dist/types/wallet-server/src/core/authService/googleEmailOtpErrors.d.ts +2 -0
  721. package/dist/types/wallet-server/src/core/authService/googleEmailOtpOperations.d.ts +126 -0
  722. package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +172 -0
  723. package/dist/types/wallet-server/src/core/authService/identity.d.ts +25 -0
  724. package/dist/types/wallet-server/src/core/authService/identityOperations.d.ts +19 -0
  725. package/dist/types/wallet-server/src/core/authService/nearAccountOperations.d.ts +55 -0
  726. package/dist/types/wallet-server/src/core/authService/nearPrivateKeySigning.d.ts +16 -0
  727. package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +43 -0
  728. package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +49 -0
  729. package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +65 -0
  730. package/dist/types/wallet-server/src/core/authService/portableCrypto.d.ts +3 -0
  731. package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +30 -0
  732. package/dist/types/wallet-server/src/core/authService/record.d.ts +2 -0
  733. package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +37 -0
  734. package/dist/types/wallet-server/src/core/authService/runtime.d.ts +20 -0
  735. package/dist/types/wallet-server/src/core/authService/signerWasmUrls.d.ts +3 -0
  736. package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +58 -0
  737. package/dist/types/wallet-server/src/core/authService/thresholdEcdsaKeyInventory.d.ts +72 -0
  738. package/dist/types/wallet-server/src/core/authService/thresholdRuntimePolicy.d.ts +4 -0
  739. package/dist/types/wallet-server/src/core/authService/thresholdStoreSummary.d.ts +3 -0
  740. package/dist/types/wallet-server/src/core/authService/walletRegistrationPlanning.d.ts +19 -0
  741. package/dist/types/wallet-server/src/core/authService/wasm.d.ts +12 -0
  742. package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +207 -0
  743. package/dist/types/wallet-server/src/core/authService/webauthnAuthority.d.ts +5 -0
  744. package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +52 -0
  745. package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +48 -0
  746. package/dist/types/wallet-server/src/core/config.d.ts +13 -0
  747. package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +44 -0
  748. package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +214 -0
  749. package/dist/types/wallet-server/src/core/d1WalletStore.d.ts +108 -0
  750. package/dist/types/wallet-server/src/core/defaultConfigsServer.d.ts +5 -0
  751. package/dist/types/wallet-server/src/core/deviceLinking/index.d.ts +5 -0
  752. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceEd25519ExportRoot.d.ts +36 -0
  753. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceEmailOtpGrant.d.ts +87 -0
  754. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceManagement.d.ts +137 -0
  755. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +462 -0
  756. package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +55 -0
  757. package/dist/types/wallet-server/src/core/errors.d.ts +10 -0
  758. package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +31 -0
  759. package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +28 -0
  760. package/dist/types/wallet-server/src/core/keyMaterialBrands.typecheck.d.ts +2 -0
  761. package/dist/types/wallet-server/src/core/logger.d.ts +21 -0
  762. package/dist/types/wallet-server/src/core/nearKeys.d.ts +3 -0
  763. package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +78 -0
  764. package/dist/types/wallet-server/src/core/nearSignerWasmRuntime.d.ts +3 -0
  765. package/dist/types/wallet-server/src/core/registrationContracts.d.ts +747 -0
  766. package/dist/types/wallet-server/src/core/registrationRequests.typecheck.d.ts +2 -0
  767. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +53 -0
  768. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +71 -0
  769. package/dist/types/wallet-server/src/core/routerAbSigning/createCloudflareDurableObjectRouterAbSigningRuntimes.d.ts +28 -0
  770. package/dist/types/wallet-server/src/core/routerAbSigning/createRouterAbSigningRuntimes.d.ts +16 -0
  771. package/dist/types/wallet-server/src/core/rpcClients/near/NearClient.d.ts +134 -0
  772. package/dist/types/wallet-server/src/core/sessionValidation.d.ts +9 -0
  773. package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +35 -0
  774. package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +63 -0
  775. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentActivation.d.ts +13 -0
  776. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentRevocation.d.ts +24 -0
  777. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleApplicationService.d.ts +141 -0
  778. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +229 -0
  779. package/dist/types/wallet-server/src/core/signingLanes/SigningLaneStore.d.ts +15 -0
  780. package/dist/types/wallet-server/src/core/signingLanes/WalletExecutionLaneProjection.d.ts +59 -0
  781. package/dist/types/wallet-server/src/core/signingLanes/WalletKeyStore.d.ts +13 -0
  782. package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +58 -0
  783. package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +30 -0
  784. package/dist/types/wallet-server/src/core/signingLanes/index.d.ts +11 -0
  785. package/dist/types/wallet-server/src/core/signingLanes/signingWorkerLaneMaterialIdentity.d.ts +21 -0
  786. package/dist/types/wallet-server/src/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.d.ts +155 -0
  787. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +442 -0
  788. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +58 -0
  789. package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +15 -0
  790. package/dist/types/wallet-server/src/core/types.d.ts +757 -0
  791. package/dist/types/wallet-server/src/core/utils.d.ts +3 -0
  792. package/dist/types/wallet-server/src/delegateAction/index.d.ts +88 -0
  793. package/dist/types/wallet-server/src/hosted-wallet-gateway-worker.d.ts +10 -0
  794. package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +126 -0
  795. package/dist/types/wallet-server/src/index.d.ts +34 -0
  796. package/dist/types/wallet-server/src/local-hosted-wallet-gateway-worker.d.ts +13 -0
  797. package/dist/types/wallet-server/src/router/auth/authRequestValidation.d.ts +97 -0
  798. package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +142 -0
  799. package/dist/types/wallet-server/src/router/auth/routerApiCredentialAuth.d.ts +26 -0
  800. package/dist/types/wallet-server/src/router/auth/routerApiKeyAuth.d.ts +16 -0
  801. package/dist/types/wallet-server/src/router/auth/walletSessionFailure.d.ts +14 -0
  802. package/dist/types/wallet-server/src/router/auth/webAuthnCredentialCodecs.d.ts +20 -0
  803. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.d.ts +28 -0
  804. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +192 -0
  805. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthService.d.ts +13 -0
  806. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +174 -0
  807. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1VaultProxyStore.d.ts +13 -0
  808. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/walletSessionAuthorityProjection.d.ts +24 -0
  809. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +241 -0
  810. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.d.ts +23 -0
  811. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +32 -0
  812. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.d.ts +118 -0
  813. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceManagementService.d.ts +22 -0
  814. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.d.ts +80 -0
  815. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.d.ts +29 -0
  816. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.d.ts +17 -0
  817. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.d.ts +37 -0
  818. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionService.d.ts +12 -0
  819. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +149 -0
  820. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.d.ts +38 -0
  821. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetAuthenticatorStore.d.ts +19 -0
  822. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.d.ts +220 -0
  823. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +88 -0
  824. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.d.ts +54 -0
  825. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkSourceReader.d.ts +23 -0
  826. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/index.d.ts +15 -0
  827. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.d.ts +33 -0
  828. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts +6 -0
  829. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoWalletSigner.d.ts +27 -0
  830. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.d.ts +80 -0
  831. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.d.ts +48 -0
  832. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +64 -0
  833. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.d.ts +126 -0
  834. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpDeliveryRuntime.d.ts +22 -0
  835. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.d.ts +68 -0
  836. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +15 -0
  837. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +37 -0
  838. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +186 -0
  839. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.d.ts +45 -0
  840. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.d.ts +124 -0
  841. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.d.ts +24 -0
  842. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +51 -0
  843. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +69 -0
  844. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.d.ts +57 -0
  845. package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityRecords.d.ts +38 -0
  846. package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityService.d.ts +31 -0
  847. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +30 -0
  848. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcBoundary.d.ts +60 -0
  849. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcVerificationService.d.ts +39 -0
  850. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyEnvelopeStore.d.ts +335 -0
  851. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +448 -0
  852. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +256 -0
  853. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpAttemptStore.d.ts +32 -0
  854. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.d.ts +116 -0
  855. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.d.ts +180 -0
  856. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1EvmFamilyEcdsaRegistrationBranch.d.ts +24 -0
  857. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +86 -0
  858. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +121 -0
  859. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +84 -0
  860. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationIntentService.d.ts +31 -0
  861. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +49 -0
  862. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +369 -0
  863. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +106 -0
  864. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.d.ts +104 -0
  865. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.d.ts +70 -0
  866. package/dist/types/wallet-server/src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.d.ts +26 -0
  867. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.d.ts +4 -0
  868. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.d.ts +4 -0
  869. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +25 -0
  870. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.d.ts +20 -0
  871. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.d.ts +13 -0
  872. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.d.ts +51 -0
  873. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLockStore.d.ts +28 -0
  874. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.d.ts +5 -0
  875. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneRecords.d.ts +107 -0
  876. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/index.d.ts +10 -0
  877. package/dist/types/wallet-server/src/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.d.ts +118 -0
  878. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +114 -0
  879. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.typecheck.d.ts +2 -0
  880. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodBoundary.d.ts +90 -0
  881. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +359 -0
  882. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +143 -0
  883. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.d.ts +42 -0
  884. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +135 -0
  885. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +89 -0
  886. package/dist/types/wallet-server/src/router/cloudflare/durableObjects/thresholdStore.d.ts +19 -0
  887. package/dist/types/wallet-server/src/router/cloudflare/durableObjects/versionedJsonRecordStore.d.ts +32 -0
  888. package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflare.types.d.ts +30 -0
  889. package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflareSignerWasm.d.ts +2 -0
  890. package/dist/types/wallet-server/src/router/cloudflare/runtime/createCloudflareRouter.d.ts +5 -0
  891. package/dist/types/wallet-server/src/router/cloudflare/runtime/createSelfHostedCloudflareSigningWorker.d.ts +23 -0
  892. package/dist/types/wallet-server/src/router/cloudflare/runtime/ed25519SessionAdapter.d.ts +16 -0
  893. package/dist/types/wallet-server/src/router/cloudflare/runtime/environment.d.ts +5 -0
  894. package/dist/types/wallet-server/src/router/cloudflare/runtime/routerAbPrewarm.d.ts +9 -0
  895. package/dist/types/wallet-server/src/router/cloudflare/runtime/routerAbServiceBindings.d.ts +11 -0
  896. package/dist/types/wallet-server/src/router/cloudflare/runtime/sessionAdapterRuntime.d.ts +28 -0
  897. package/dist/types/wallet-server/src/router/cloudflare/runtime/staticWalletConsoleBinding.d.ts +27 -0
  898. package/dist/types/wallet-server/src/router/cloudflare/runtime/tenantRootCreationGrant.d.ts +24 -0
  899. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +143 -0
  900. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +20 -0
  901. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleTenantRootLineage.d.ts +7 -0
  902. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletControlOps.d.ts +21 -0
  903. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +30 -0
  904. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOps.d.ts +64 -0
  905. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOpsHandler.d.ts +3 -0
  906. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.d.ts +217 -0
  907. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.d.ts +73 -0
  908. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.d.ts +100 -0
  909. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/index.d.ts +4 -0
  910. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.d.ts +6 -0
  911. package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +75 -0
  912. package/dist/types/wallet-server/src/router/domains/ecdsa/routerAbEcdsaStrictRegistration.d.ts +199 -0
  913. package/dist/types/wallet-server/src/router/domains/ecdsa/thresholdEcdsaRequestValidation.d.ts +32 -0
  914. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +172 -0
  915. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.typecheck.d.ts +2 -0
  916. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +156 -0
  917. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +59 -0
  918. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.d.ts +47 -0
  919. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRunner.d.ts +29 -0
  920. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.d.ts +20 -0
  921. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +271 -0
  922. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.d.ts +12 -0
  923. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.d.ts +509 -0
  924. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryActivation.typecheck.d.ts +2 -0
  925. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.d.ts +14 -0
  926. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.d.ts +20 -0
  927. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.d.ts +56 -0
  928. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.d.ts +200 -0
  929. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.d.ts +70 -0
  930. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.d.ts +73 -0
  931. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.d.ts +9 -0
  932. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.d.ts +131 -0
  933. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.typecheck.d.ts +2 -0
  934. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationTwoPhaseRunner.d.ts +62 -0
  935. package/dist/types/wallet-server/src/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.d.ts +17 -0
  936. package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/routerAbEd25519YaoWalletSession.d.ts +178 -0
  937. package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/routerAbEd25519YaoWalletSession.typecheck.d.ts +2 -0
  938. package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/thresholdEd25519RequestValidation.d.ts +19 -0
  939. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpExportPolicy.d.ts +32 -0
  940. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpRequestValidation.d.ts +13 -0
  941. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpRouteHandlers.d.ts +35 -0
  942. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpSessionRouteHelpers.d.ts +134 -0
  943. package/dist/types/wallet-server/src/router/domains/passkeyCustody/envelopeRevocationAdmission.d.ts +31 -0
  944. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +85 -0
  945. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrievalRoute.d.ts +42 -0
  946. package/dist/types/wallet-server/src/router/domains/passkeyCustody/registrationCustodyOutcome.d.ts +38 -0
  947. package/dist/types/wallet-server/src/router/domains/passkeyCustody/verifiedCustodyFactor.d.ts +35 -0
  948. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.d.ts +56 -0
  949. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +65 -0
  950. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryAttempt.d.ts +59 -0
  951. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryFinalization.d.ts +81 -0
  952. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryKeyManifest.d.ts +184 -0
  953. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryRotation.d.ts +31 -0
  954. package/dist/types/wallet-server/src/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.d.ts +32 -0
  955. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.d.ts +48 -0
  956. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +909 -0
  957. package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +104 -0
  958. package/dist/types/wallet-server/src/router/domains/syncAccount/syncAccountRequestValidation.d.ts +30 -0
  959. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootCustodyLineage.d.ts +14 -0
  960. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootEcdsaWalletSessionComposition.d.ts +35 -0
  961. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootEd25519WalletSessionComposition.d.ts +35 -0
  962. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootIdentityResolution.d.ts +56 -0
  963. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +78 -0
  964. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +91 -0
  965. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +105 -0
  966. package/dist/types/wallet-server/src/router/domains/walletUnlock/walletUnlockRequestedCapabilitiesValidation.d.ts +39 -0
  967. package/dist/types/wallet-server/src/router/domains/walletUnlock/walletUnlockRouteHandlers.d.ts +172 -0
  968. package/dist/types/wallet-server/src/router/express-adaptor.d.ts +22 -0
  969. package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +82 -0
  970. package/dist/types/wallet-server/src/router/framework/applyRouteMetering.d.ts +23 -0
  971. package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +1392 -0
  972. package/dist/types/wallet-server/src/router/framework/enforceRoutePolicy.d.ts +48 -0
  973. package/dist/types/wallet-server/src/router/framework/http.d.ts +12 -0
  974. package/dist/types/wallet-server/src/router/framework/logger.d.ts +5 -0
  975. package/dist/types/wallet-server/src/router/framework/modules.d.ts +17 -0
  976. package/dist/types/wallet-server/src/router/framework/ror/index.d.ts +7 -0
  977. package/dist/types/wallet-server/src/router/framework/ror/normalize.d.ts +14 -0
  978. package/dist/types/wallet-server/src/router/framework/ror/options.d.ts +9 -0
  979. package/dist/types/wallet-server/src/router/framework/ror/provider.d.ts +17 -0
  980. package/dist/types/wallet-server/src/router/framework/ror/staticProvider.d.ts +11 -0
  981. package/dist/types/wallet-server/src/router/framework/routeAuthPolicy.d.ts +34 -0
  982. package/dist/types/wallet-server/src/router/framework/routeDefinitions.d.ts +27 -0
  983. package/dist/types/wallet-server/src/router/framework/routeDefinitions.typecheck.d.ts +2 -0
  984. package/dist/types/wallet-server/src/router/framework/routeExecutionContext.d.ts +29 -0
  985. package/dist/types/wallet-server/src/router/framework/routeExtensions.d.ts +27 -0
  986. package/dist/types/wallet-server/src/router/framework/routeMeteringPolicy.d.ts +17 -0
  987. package/dist/types/wallet-server/src/router/framework/routeRequestValidation.d.ts +5 -0
  988. package/dist/types/wallet-server/src/router/framework/routeResponses.d.ts +17 -0
  989. package/dist/types/wallet-server/src/router/framework/routerApi.d.ts +221 -0
  990. package/dist/types/wallet-server/src/router/framework/routerApiRouteSurface.d.ts +14 -0
  991. package/dist/types/wallet-server/src/router/framework/routerApiWebhooks.d.ts +12 -0
  992. package/dist/types/wallet-server/src/router/framework/runtimeSnapshotConsumer.d.ts +28 -0
  993. package/dist/types/wallet-server/src/router/framework/versionedJsonRecordStore.d.ts +20 -0
  994. package/dist/types/wallet-server/src/router/ror-adaptor.d.ts +3 -0
  995. package/dist/types/wallet-server/src/router/transport/fetch/createFetchRouter.d.ts +8 -0
  996. package/dist/types/wallet-server/src/router/transport/fetch/fetchRouter.types.d.ts +23 -0
  997. package/dist/types/wallet-server/src/router/transport/fetch/routes/auth.d.ts +3 -0
  998. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +202 -0
  999. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.d.ts +92 -0
  1000. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceManagement.d.ts +29 -0
  1001. package/dist/types/wallet-server/src/router/transport/fetch/routes/health.d.ts +4 -0
  1002. package/dist/types/wallet-server/src/router/transport/fetch/routes/nearPublicKeys.d.ts +3 -0
  1003. package/dist/types/wallet-server/src/router/transport/fetch/routes/normalSigningRouterProxy.d.ts +33 -0
  1004. package/dist/types/wallet-server/src/router/transport/fetch/routes/passkeyCustody.d.ts +66 -0
  1005. package/dist/types/wallet-server/src/router/transport/fetch/routes/sessions.d.ts +31 -0
  1006. package/dist/types/wallet-server/src/router/transport/fetch/routes/syncAccount.d.ts +3 -0
  1007. package/dist/types/wallet-server/src/router/transport/fetch/routes/syncAccountBootstrap.d.ts +128 -0
  1008. package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +87 -0
  1009. package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEd25519.d.ts +47 -0
  1010. package/dist/types/wallet-server/src/router/transport/fetch/routes/walletExecutionLanePreflight.d.ts +4 -0
  1011. package/dist/types/wallet-server/src/router/transport/fetch/routes/walletRegistration.d.ts +3 -0
  1012. package/dist/types/wallet-server/src/router/transport/fetch/routes/webauthnAuthenticators.d.ts +3 -0
  1013. package/dist/types/wallet-server/src/router/transport/fetch/routes/wellKnown.d.ts +3 -0
  1014. package/dist/types/wallet-server/src/storage/d1Sql.d.ts +14 -0
  1015. package/dist/types/wallet-server/src/storage/tenantRoute.d.ts +136 -0
  1016. package/dist/types/wallet-server/src/storage/tenantRoute.typecheck.d.ts +2 -0
  1017. package/dist/types/wallet-server/src/tenant-root.d.ts +5 -0
  1018. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/crypto/cipher.d.ts +45 -0
  1019. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.d.ts +16 -0
  1020. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/guards/backends.d.ts +23 -0
  1021. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/guards/index.d.ts +46 -0
  1022. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/idempotency.d.ts +3 -0
  1023. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/idempotencyBackends.d.ts +24 -0
  1024. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/idempotencyRecords.d.ts +22 -0
  1025. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/index.d.ts +23 -0
  1026. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/observability/audit.d.ts +9 -0
  1027. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/options.d.ts +9 -0
  1028. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/routesOptions.d.ts +20 -0
  1029. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/service.d.ts +3 -0
  1030. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/signingSessionSeal.typecheck.d.ts +2 -0
  1031. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/signingSessionSeal.types.d.ts +148 -0
  1032. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/express.d.ts +12 -0
  1033. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/fetch.d.ts +13 -0
  1034. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/shared.d.ts +24 -0
  1035. package/dist/types/wallet-server/src/threshold/statusCodes.d.ts +10 -0
  1036. package/dist/types/wallet-server/src/wasm/signer.d.ts +8 -0
  1037. package/migrations/d1-signer/0001_signer_d1_initial.sql +2486 -0
  1038. package/migrations/d1-signer/0002_signer_post_103_canonical_upgrade.sql +1576 -0
  1039. package/migrations/d1-signer/0003_r107_wallet_authorization.sql +299 -0
  1040. package/migrations/d1-signer/0004_remove_legacy_email_recovery.sql +14 -0
  1041. package/migrations/d1-signer/0005_r103p8_linked_owner_auth_bindings.sql +92 -0
  1042. package/migrations/d1-signer/0006_r103p8_linked_device_custody_transfers.sql +77 -0
  1043. package/migrations/d1-signer/0007_r103p8_wallet_session_auth_method_provenance.sql +18 -0
  1044. package/migrations/d1-signer/0008_r103p8_linked_device_session_cas_guard.sql +35 -0
  1045. package/migrations/d1-signer/0009_linked_device_email_otp.sql +405 -0
  1046. package/migrations/d1-signer/0010_linked_device_session_target_factor.sql +78 -0
  1047. package/migrations/d1-signer/0011_linked_device_ed25519_export_root.sql +9 -0
  1048. package/migrations/d1-signer/0012_versioned_json_cas_guard.sql +3 -0
  1049. package/migrations/d1-signer/0013_linked_device_export_authorization.sql +133 -0
  1050. package/migrations/d1-signer/0014_wallet_recovery_code_locators.sql +19 -0
  1051. package/migrations/d1-signer/0015_r103e_authority_baseline.sql +259 -0
  1052. package/migrations/d1-signer/0016_r103e_wallet_session_authorizations_v2.sql +133 -0
  1053. package/migrations/d1-signer/0017_r103e_link_session_state.sql +83 -0
  1054. package/migrations/d1-signer/0018_r103e_linked_device_authority_installations.sql +34 -0
  1055. package/migrations/d1-signer/0019_r103e_email_otp_device_methods.sql +3 -0
  1056. package/migrations/d1-signer/0020_r103e_wallet_session_operation_credentials.sql +12 -0
  1057. package/migrations/d1-signer/0021_linked_device_source_contribution_transcripts.sql +64 -0
  1058. package/migrations/d1-signer/0022_r109c_multi_auth_email_cardinality.sql +118 -0
  1059. package/migrations/d1-signer/0023_r109d_first_email_linked_device.sql +111 -0
  1060. package/migrations/d1-signer/0024_r103f_v2_authorized_operation_claim.sql +99 -0
  1061. package/migrations/d1-signer/0025_r109d_email_enrollment_wallet_cardinality.sql +57 -0
  1062. package/migrations/d1-signer/0026_r115_wallet_recovery_authority_provenance.sql +253 -0
  1063. package/migrations/d1-signer/0027_r115_email_otp_recovery_bootstrap.sql +90 -0
  1064. package/migrations/d1-signer/0028_r103f_phase1_additive_schema_bridge.sql +1119 -0
  1065. package/migrations/d1-signer/0029_r103f_phase0_registration_replay_tokens.sql +135 -0
  1066. package/migrations/d1-signer/0030_r103f_wallet_session_client_capability.sql +17 -0
  1067. package/migrations/d1-signer/0031_r103f_delete_registration_replay_tokens.sql +4 -0
  1068. package/migrations/d1-signer/0032_r103f_exact_authorized_operation_enforcement.sql +149 -0
  1069. package/migrations/d1-signer/0033_r103f_linked_delivery_recipient.sql +6 -0
  1070. package/migrations/d1-signer/0034_r103f_exact_wallet_session_cutover.sql +743 -0
  1071. package/migrations/d1-signer/0035_r103f_linked_delivery_acknowledgement_cleanup_window.sql +413 -0
  1072. package/package.json +132 -0
  1073. package/scripts/d1-local-migrate-signer.mjs +148 -0
  1074. package/src/README.md +75 -0
  1075. package/wrangler.local-hosted-wallet-gateway.toml +37 -0
@@ -0,0 +1,1459 @@
1
+ import { mpcMaterialActivationRefsEqual } from "../../../../shared-ts/src/utils/domainIds.js";
2
+ import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
3
+ import { sha256Bytes } from "../../../../shared-ts/src/utils/digests.js";
4
+ import { d1ChangedRows } from "../../../../storage/d1Sql.js";
5
+ import { computeLaneParticipantSetBindingDigestV1 } from "../../../../shared-ts/src/signing-lanes/participantDigest.js";
6
+ import { buildLaneProductEpochPendingVisibilityV1, buildLaneProductEpochRevokedV1, parseAggregateLaneActivationReceiptV1, parseAggregateLaneRevocationReceiptV1, parseCompleteSigningLaneRevocationV1, parseLaneEnrollmentManifestV1, parseLaneHolderDeliveryReceiptV1, parseLaneProductEpochRecordV1, parseLaneProtocolCommitReceiptV1, parseLaneRefreshPredecessorRetirementV1, parseLaneServerActivationReceiptV1, parseLaneServerRetirementReceiptV1, parseRevokeSigningLaneV1 } from "../../../../shared-ts/src/signing-lanes/rotationParsers.js";
7
+ import { computeAggregateLaneActivationReceiptDigestV1, computeAggregateLaneRevocationReceiptDigestV1, computeEcdsaServerRetirementReceiptDigestV1, computeEd25519ServerRetirementReceiptDigestV1, computeLaneEnrollmentManifestDigestV1, computeRevokeSigningLaneDigestV1, encodeLaneHolderDeliveryReceiptV1, encodeLaneProtocolCommitReceiptV1, encodeLaneServerActivationReceiptV1 } from "../../../../shared-ts/src/signing-lanes/rotationDigests.js";
8
+ import { activateLaneProductEpochV1, beginLaneProductEpochRevocationV1, completeLaneProductEpochRevocationV1, retireFencedLaneProductEpochV1, transitionLaneEnrollmentLifecycleV1 } from "../../../../shared-ts/src/signing-lanes/rotationLifecycle.js";
9
+ import { LANE_CAS_GUARD_SQL, assertD1Success, digestLaneEnrollmentRevocationCommand, equalLaneRecords, firstBatchResult, parseEnrollmentRow, parseJsonRecord, parseProductEpochRow, parseProtocolRow, parseRequiredString, parseVersion, requireD1LaneStoreOptions, scopeValues } from "./d1LaneRecords.js";
10
+ //#region src/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.ts
11
+ const ENROLLMENT_TABLE = "lane_enrollments";
12
+ const OPERATION_TABLE = "lane_protocol_operations";
13
+ const PRODUCT_TABLE = "lane_product_epochs";
14
+ const RECEIPT_TABLE = "lane_receipts";
15
+ var CloudflareD1LaneLifecycleStore = class {
16
+ constructor(options) {
17
+ const normalized = requireD1LaneStoreOptions(options);
18
+ this.database = normalized.database;
19
+ this.scope = normalized.scope;
20
+ this.now = normalized.now;
21
+ }
22
+ async getEnrollment(enrollmentId) {
23
+ const row = await this.database.prepare(`SELECT enrollment_id, wallet_id, manifest_digest_b64u, manifest_json,
24
+ lifecycle_json, version, command_digest_b64u, created_at_ms, updated_at_ms
25
+ FROM ${ENROLLMENT_TABLE}
26
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
27
+ AND enrollment_id = ?5`).bind(...scopeValues(this.scope), String(enrollmentId)).first();
28
+ if (!row) return null;
29
+ const parsed = parseEnrollmentRow(row);
30
+ return {
31
+ version: parsed.version,
32
+ commandDigestB64u: parsed.commandDigestB64u,
33
+ value: {
34
+ manifest: parsed.manifest,
35
+ lifecycle: parsed.lifecycle
36
+ }
37
+ };
38
+ }
39
+ async getProtocol(operationId) {
40
+ const row = await this.database.prepare(`SELECT operation_id, enrollment_id, wallet_id, wallet_key_id,
41
+ source_lane_id, source_lane_share_epoch, source_revocation_epoch,
42
+ target_lane_id, target_lane_share_epoch, target_material_activation_id,
43
+ job_json, lifecycle_json, version, command_digest_b64u,
44
+ created_at_ms, updated_at_ms
45
+ FROM ${OPERATION_TABLE}
46
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
47
+ AND operation_id = ?5`).bind(...scopeValues(this.scope), String(operationId)).first();
48
+ if (!row) return null;
49
+ const parsed = parseProtocolRow(row);
50
+ return {
51
+ version: parsed.version,
52
+ commandDigestB64u: parsed.commandDigestB64u,
53
+ value: parsed.record
54
+ };
55
+ }
56
+ /**
57
+ * Reads the committed protocol receipt only after verifying its persisted
58
+ * digest, receipt identity, and active protocol lifecycle binding.
59
+ */
60
+ async getProtocolCommitReceipt(operationId) {
61
+ const row = await this.database.prepare(`SELECT receipt_id, receipt_digest_b64u, receipt_json
62
+ FROM ${RECEIPT_TABLE}
63
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
64
+ AND operation_id = ?5 AND receipt_kind = 'lane_protocol_commit'`).bind(...scopeValues(this.scope), String(operationId)).first();
65
+ if (!row) return null;
66
+ const protocol = await this.getProtocol(operationId);
67
+ if (!protocol || protocol.value.lifecycle.state !== "active") throw new Error("lane protocol commit receipt has no active protocol lifecycle");
68
+ if (parseRequiredString(row.receipt_id, "lane protocol commit receipt id") !== `${String(operationId)}:lane_protocol_commit`) throw new Error("lane protocol commit receipt id is invalid");
69
+ const receipt = parseLaneProtocolCommitReceiptV1(parseJsonRecord(row.receipt_json, "lane protocol commit receipt"));
70
+ assertProtocolCommitReceiptIdentity(protocol.value, receipt);
71
+ const digest = await exactReceiptDigest("lane_protocol_commit", receipt);
72
+ if (parseRequiredString(row.receipt_digest_b64u, "lane protocol commit receipt digest") !== digest) throw new Error("lane protocol commit receipt digest is invalid");
73
+ if (protocol.value.lifecycle.protocolCommitReceiptDigestB64u !== digest) throw new Error("lane protocol commit receipt differs from its protocol lifecycle");
74
+ return receipt;
75
+ }
76
+ async putEnrollmentAdmission(input) {
77
+ const manifest = parseLaneEnrollmentManifestV1(input.manifest);
78
+ if (manifest.orderedChildren.length !== input.children.length) throw new Error("lane enrollment manifest and protocol child count differ");
79
+ validateChildrenAgainstManifest(manifest, input.children);
80
+ const existing = await this.getEnrollment(manifest.enrollmentId);
81
+ if (existing) {
82
+ if (existing.commandDigestB64u === input.commandDigestB64u && equalLaneRecords(existing.value.manifest, manifest) && equalLaneRecords(existing.value.lifecycle, input.lifecycle) && await admissionChildrenMatch(this, input.children)) return {
83
+ outcome: "replayed",
84
+ version: existing.version,
85
+ commandDigestB64u: existing.commandDigestB64u,
86
+ value: existing.value
87
+ };
88
+ return {
89
+ outcome: "conflict",
90
+ expectedVersion: null,
91
+ actualVersion: existing.version,
92
+ requestedCommandDigestB64u: input.commandDigestB64u,
93
+ storedCommandDigestB64u: existing.commandDigestB64u
94
+ };
95
+ }
96
+ const now = this.now();
97
+ const manifestJson = JSON.stringify(manifest);
98
+ const lifecycleJson = JSON.stringify(input.lifecycle);
99
+ const statementValues = scopeValues(this.scope);
100
+ const statements = [this.database.prepare(`INSERT INTO ${ENROLLMENT_TABLE} (
101
+ namespace, org_id, project_id, env_id, enrollment_id, wallet_id,
102
+ manifest_digest_b64u, manifest_json, lifecycle_json, version,
103
+ command_digest_b64u, created_at_ms, updated_at_ms
104
+ ) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, 1, ?10, ?11, ?11)`).bind(...statementValues, String(manifest.enrollmentId), String(manifest.walletId), input.commandDigestB64u, manifestJson, lifecycleJson, input.commandDigestB64u, now), this.database.prepare(LANE_CAS_GUARD_SQL)];
105
+ for (const child of input.children) {
106
+ statements.push(this.protocolInsertStatement(child, input.commandDigestB64u, now));
107
+ statements.push(this.database.prepare(LANE_CAS_GUARD_SQL));
108
+ }
109
+ try {
110
+ const results = await this.database.batch(statements);
111
+ for (let index = 0; index < results.length; index += 1) assertD1Success(firstBatchResult(results, index), `lane enrollment admission statement ${index}`);
112
+ } catch (error) {
113
+ const raced = await this.getEnrollment(manifest.enrollmentId);
114
+ if (raced && raced.commandDigestB64u === input.commandDigestB64u && equalLaneRecords(raced.value.manifest, manifest)) return {
115
+ outcome: "replayed",
116
+ version: raced.version,
117
+ commandDigestB64u: raced.commandDigestB64u,
118
+ value: raced.value
119
+ };
120
+ if (raced) return {
121
+ outcome: "conflict",
122
+ expectedVersion: null,
123
+ actualVersion: raced.version,
124
+ requestedCommandDigestB64u: input.commandDigestB64u,
125
+ storedCommandDigestB64u: raced.commandDigestB64u
126
+ };
127
+ for (const child of input.children) {
128
+ const racedChild = await this.getProtocol(child.job.operationId);
129
+ if (racedChild) return {
130
+ outcome: "conflict",
131
+ expectedVersion: null,
132
+ actualVersion: racedChild.version,
133
+ requestedCommandDigestB64u: input.commandDigestB64u,
134
+ storedCommandDigestB64u: racedChild.commandDigestB64u
135
+ };
136
+ }
137
+ throw error;
138
+ }
139
+ return {
140
+ outcome: "applied",
141
+ version: 1,
142
+ commandDigestB64u: input.commandDigestB64u,
143
+ value: {
144
+ manifest,
145
+ lifecycle: input.lifecycle
146
+ }
147
+ };
148
+ }
149
+ async putProtocolAdmission(input) {
150
+ const record = input.record;
151
+ const existing = await this.getProtocol(record.job.operationId);
152
+ if (existing) {
153
+ if (existing.commandDigestB64u === input.commandDigestB64u && equalLaneRecords(existing.value, record)) return {
154
+ outcome: "replayed",
155
+ version: existing.version,
156
+ commandDigestB64u: existing.commandDigestB64u,
157
+ value: existing.value
158
+ };
159
+ return {
160
+ outcome: "conflict",
161
+ expectedVersion: null,
162
+ actualVersion: existing.version,
163
+ requestedCommandDigestB64u: input.commandDigestB64u,
164
+ storedCommandDigestB64u: existing.commandDigestB64u
165
+ };
166
+ }
167
+ const now = this.now();
168
+ const statements = [this.protocolInsertStatement(record, input.commandDigestB64u, now), this.database.prepare(LANE_CAS_GUARD_SQL)];
169
+ try {
170
+ assertD1Success(firstBatchResult(await this.database.batch(statements), 0), "lane protocol admission");
171
+ } catch (error) {
172
+ const raced = await this.getProtocol(record.job.operationId);
173
+ if (raced && raced.commandDigestB64u === input.commandDigestB64u && equalLaneRecords(raced.value, record)) return {
174
+ outcome: "replayed",
175
+ version: raced.version,
176
+ commandDigestB64u: raced.commandDigestB64u,
177
+ value: raced.value
178
+ };
179
+ if (raced) return {
180
+ outcome: "conflict",
181
+ expectedVersion: null,
182
+ actualVersion: raced.version,
183
+ requestedCommandDigestB64u: input.commandDigestB64u,
184
+ storedCommandDigestB64u: raced.commandDigestB64u
185
+ };
186
+ throw error;
187
+ }
188
+ return {
189
+ outcome: "applied",
190
+ version: 1,
191
+ commandDigestB64u: input.commandDigestB64u,
192
+ value: record
193
+ };
194
+ }
195
+ async compareAndSetProtocolLifecycle(input) {
196
+ const current = await this.getProtocol(input.operationId);
197
+ if (!current) return {
198
+ outcome: "conflict",
199
+ expectedVersion: input.expectedVersion,
200
+ actualVersion: 0,
201
+ requestedCommandDigestB64u: input.commandDigestB64u,
202
+ storedCommandDigestB64u: ""
203
+ };
204
+ if (current.commandDigestB64u === input.commandDigestB64u && equalLaneRecords(current.value.lifecycle, input.lifecycle)) return {
205
+ outcome: "replayed",
206
+ version: current.version,
207
+ commandDigestB64u: current.commandDigestB64u,
208
+ record: current.value
209
+ };
210
+ if (!await this.updateProtocolLifecycle(input)) {
211
+ const raced = await this.getProtocol(input.operationId);
212
+ if (!raced) return {
213
+ outcome: "conflict",
214
+ expectedVersion: input.expectedVersion,
215
+ actualVersion: 0,
216
+ requestedCommandDigestB64u: input.commandDigestB64u,
217
+ storedCommandDigestB64u: ""
218
+ };
219
+ if (raced.commandDigestB64u === input.commandDigestB64u && equalLaneRecords(raced.value.lifecycle, input.lifecycle)) return {
220
+ outcome: "replayed",
221
+ version: raced.version,
222
+ commandDigestB64u: raced.commandDigestB64u,
223
+ record: raced.value
224
+ };
225
+ return {
226
+ outcome: "conflict",
227
+ expectedVersion: input.expectedVersion,
228
+ actualVersion: raced.version,
229
+ requestedCommandDigestB64u: input.commandDigestB64u,
230
+ storedCommandDigestB64u: raced.commandDigestB64u
231
+ };
232
+ }
233
+ const result = await this.getProtocol(input.operationId);
234
+ if (!result) throw new Error("lane protocol disappeared after CAS");
235
+ return {
236
+ outcome: "applied",
237
+ version: result.version,
238
+ commandDigestB64u: result.commandDigestB64u,
239
+ record: result.value
240
+ };
241
+ }
242
+ async compareAndSetEnrollmentLifecycle(input) {
243
+ const current = await this.getEnrollment(input.enrollmentId);
244
+ if (!current) return {
245
+ outcome: "conflict",
246
+ expectedVersion: input.expectedVersion,
247
+ actualVersion: 0,
248
+ requestedCommandDigestB64u: input.commandDigestB64u,
249
+ storedCommandDigestB64u: ""
250
+ };
251
+ if (current.commandDigestB64u === input.commandDigestB64u && equalLaneRecords(current.value.lifecycle, input.lifecycle)) return {
252
+ outcome: "replayed",
253
+ version: current.version,
254
+ commandDigestB64u: current.commandDigestB64u,
255
+ value: current.value
256
+ };
257
+ if (!await this.updateEnrollmentLifecycle(input)) {
258
+ const raced = await this.getEnrollment(input.enrollmentId);
259
+ if (!raced) return {
260
+ outcome: "conflict",
261
+ expectedVersion: input.expectedVersion,
262
+ actualVersion: 0,
263
+ requestedCommandDigestB64u: input.commandDigestB64u,
264
+ storedCommandDigestB64u: ""
265
+ };
266
+ if (raced.commandDigestB64u === input.commandDigestB64u && equalLaneRecords(raced.value.lifecycle, input.lifecycle)) return {
267
+ outcome: "replayed",
268
+ version: raced.version,
269
+ commandDigestB64u: raced.commandDigestB64u,
270
+ value: raced.value
271
+ };
272
+ return {
273
+ outcome: "conflict",
274
+ expectedVersion: input.expectedVersion,
275
+ actualVersion: raced.version,
276
+ requestedCommandDigestB64u: input.commandDigestB64u,
277
+ storedCommandDigestB64u: raced.commandDigestB64u
278
+ };
279
+ }
280
+ const result = await this.getEnrollment(input.enrollmentId);
281
+ if (!result) throw new Error("lane enrollment disappeared after CAS");
282
+ return {
283
+ outcome: "applied",
284
+ version: result.version,
285
+ commandDigestB64u: result.commandDigestB64u,
286
+ value: result.value
287
+ };
288
+ }
289
+ async putProtocolCommitReceipt(receipt, commandDigestB64u) {
290
+ const protocol = await this.getProtocol(receipt.operationId);
291
+ if (!protocol) throw new Error("protocol commit receipt names an unknown operation");
292
+ assertProtocolCommitReceiptIdentity(protocol.value, receipt);
293
+ if (protocol.value.lifecycle.state !== "awaiting_protocol_commitment" && protocol.value.lifecycle.state !== "committed_awaiting_holder_delivery" && protocol.value.lifecycle.state !== "awaiting_server_activation" && protocol.value.lifecycle.state !== "ready_for_parent_visibility" && protocol.value.lifecycle.state !== "active") throw new Error("protocol commit receipt is not valid for this lifecycle");
294
+ return await this.putReceipt(receipt.operationId, receipt.enrollmentId, "lane_protocol_commit", receipt, commandDigestB64u);
295
+ }
296
+ async putHolderDeliveryReceipt(receipt, commandDigestB64u) {
297
+ const protocol = await this.getProtocol(receipt.operationId);
298
+ if (!protocol) throw new Error("holder delivery receipt names an unknown operation");
299
+ const commitReceipt = await this.readReceipt(receipt.operationId, "lane_protocol_commit");
300
+ if (commitReceipt?.kind !== "lane_protocol_commit_receipt_v1") throw new Error("holder delivery requires its committed protocol receipt");
301
+ assertHolderDeliveryReceiptIdentity(protocol.value, receipt, commitReceipt);
302
+ return await this.putReceipt(receipt.operationId, receipt.enrollmentId, "lane_holder_delivery", receipt, commandDigestB64u);
303
+ }
304
+ async putServerActivationReceipt(receipt, commandDigestB64u) {
305
+ const protocol = await this.getProtocol(receipt.operationId);
306
+ if (!protocol) throw new Error("server activation receipt names an unknown operation");
307
+ const commitReceipt = await this.readReceipt(receipt.operationId, "lane_protocol_commit");
308
+ const holderReceipt = await this.readReceipt(receipt.operationId, "lane_holder_delivery");
309
+ if (commitReceipt?.kind !== "lane_protocol_commit_receipt_v1" || holderReceipt?.kind !== "lane_holder_delivery_receipt_v1") throw new Error("server activation requires protocol and holder receipts");
310
+ assertServerActivationReceiptIdentity(protocol.value, receipt, commitReceipt, holderReceipt);
311
+ const commitReceiptDigest = await exactReceiptDigest("lane_protocol_commit", commitReceipt);
312
+ const holderReceiptDigest = await exactReceiptDigest("lane_holder_delivery", holderReceipt);
313
+ if (protocol.value.lifecycle.state !== "awaiting_server_activation" && protocol.value.lifecycle.state !== "ready_for_parent_visibility" && protocol.value.lifecycle.state !== "active" || protocol.value.lifecycle.protocolCommitReceiptDigestB64u !== commitReceiptDigest || protocol.value.lifecycle.holderDeliveryReceiptDigestB64u !== holderReceiptDigest) throw new Error("server activation receipts do not match the committed protocol lifecycle");
314
+ const enrollment = await this.getEnrollment(receipt.enrollmentId);
315
+ if (!enrollment) throw new Error("server activation receipt names an unknown enrollment");
316
+ const pending = await buildPendingProductEpoch({
317
+ protocol: protocol.value,
318
+ protocolReceipt: commitReceipt,
319
+ holderReceipt,
320
+ serverReceipt: receipt,
321
+ manifestDigestB64u: await computeLaneEnrollmentManifestDigestV1(enrollment.value.manifest)
322
+ });
323
+ const result = await this.putReceipt(receipt.operationId, receipt.enrollmentId, "lane_server_activation", receipt, commandDigestB64u);
324
+ if ((await this.putProductEpochPending(pending, commandDigestB64u)).outcome === "conflict") throw new Error("server activation receipt conflicts with the stored lane product epoch");
325
+ return result;
326
+ }
327
+ async putProductEpochPending(productEpoch, commandDigestB64u) {
328
+ if (await this.getProductEpoch({
329
+ walletId: productEpoch.walletId,
330
+ walletKeyId: productEpoch.walletKeyId,
331
+ laneId: productEpoch.laneId,
332
+ laneShareEpoch: productEpoch.laneShareEpoch
333
+ })) {
334
+ const stored = await this.getProductEpochStored({
335
+ walletId: productEpoch.walletId,
336
+ walletKeyId: productEpoch.walletKeyId,
337
+ laneId: productEpoch.laneId,
338
+ laneShareEpoch: productEpoch.laneShareEpoch
339
+ });
340
+ if (stored && stored.commandDigestB64u === commandDigestB64u && equalLaneRecords(stored.product, productEpoch)) return {
341
+ outcome: "replayed",
342
+ version: stored.version,
343
+ commandDigestB64u: stored.commandDigestB64u,
344
+ value: stored.product
345
+ };
346
+ return {
347
+ outcome: "conflict",
348
+ expectedVersion: null,
349
+ actualVersion: stored?.version ?? 1,
350
+ requestedCommandDigestB64u: commandDigestB64u,
351
+ storedCommandDigestB64u: stored?.commandDigestB64u ?? ""
352
+ };
353
+ }
354
+ const now = this.now();
355
+ const values = scopeValues(this.scope);
356
+ const insert = this.database.prepare(`INSERT INTO ${PRODUCT_TABLE} (
357
+ namespace, org_id, project_id, env_id, wallet_id, wallet_key_id,
358
+ lane_id, lane_share_epoch, enrollment_id, operation_id,
359
+ target_material_activation_id, material_activation_json,
360
+ holder_participant_json, signing_worker_participant_json,
361
+ participant_set_binding_digest_b64u, revocation_epoch,
362
+ lane_kind, key_family, public_identity_digest_b64u, state, product_json,
363
+ version, command_digest_b64u, created_at_ms, updated_at_ms
364
+ ) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, 1, ?22, ?23, ?23)`).bind(...values, String(productEpoch.walletId), String(productEpoch.walletKeyId), String(productEpoch.laneId), String(productEpoch.laneShareEpoch), String(productEpoch.enrollmentId), String(productEpoch.operationId), String(productEpoch.targetMaterialActivationId), JSON.stringify(productEpoch.materialActivation), JSON.stringify(productEpoch.holderParticipant), JSON.stringify(productEpoch.signingWorkerParticipant), productEpoch.participantSetBindingDigestB64u, productEpoch.revocationEpoch, productEpoch.laneKind, productEpoch.keyFamily, productEpoch.publicIdentityDigestB64u, productEpoch.state, JSON.stringify(productEpoch), commandDigestB64u, now);
365
+ try {
366
+ assertD1Success(firstBatchResult(await this.database.batch([insert, this.database.prepare(LANE_CAS_GUARD_SQL)]), 0), "lane product epoch admission");
367
+ } catch (error) {
368
+ const raced = await this.getProductEpochStored({
369
+ walletId: productEpoch.walletId,
370
+ walletKeyId: productEpoch.walletKeyId,
371
+ laneId: productEpoch.laneId,
372
+ laneShareEpoch: productEpoch.laneShareEpoch
373
+ });
374
+ if (raced && raced.commandDigestB64u === commandDigestB64u && equalLaneRecords(raced.product, productEpoch)) return {
375
+ outcome: "replayed",
376
+ version: raced.version,
377
+ commandDigestB64u: raced.commandDigestB64u,
378
+ value: raced.product
379
+ };
380
+ if (raced) return {
381
+ outcome: "conflict",
382
+ expectedVersion: null,
383
+ actualVersion: raced.version,
384
+ requestedCommandDigestB64u: commandDigestB64u,
385
+ storedCommandDigestB64u: raced.commandDigestB64u
386
+ };
387
+ throw error;
388
+ }
389
+ return {
390
+ outcome: "applied",
391
+ version: 1,
392
+ commandDigestB64u,
393
+ value: productEpoch
394
+ };
395
+ }
396
+ async getProductEpoch(lookup) {
397
+ return (await this.getProductEpochStored(lookup))?.product ?? null;
398
+ }
399
+ async getProductEpochStored(lookup) {
400
+ const row = await this.database.prepare(`SELECT product_json, version, command_digest_b64u
401
+ FROM ${PRODUCT_TABLE}
402
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
403
+ AND wallet_id = ?5 AND wallet_key_id = ?6 AND lane_id = ?7 AND lane_share_epoch = ?8`).bind(...scopeValues(this.scope), String(lookup.walletId), String(lookup.walletKeyId), String(lookup.laneId), String(lookup.laneShareEpoch)).first();
404
+ if (!row) return null;
405
+ return {
406
+ product: parseProductEpochRow(row),
407
+ version: parseVersion(row.version, "lane product epoch version"),
408
+ commandDigestB64u: parseRequiredString(row.command_digest_b64u, "lane product epoch command digest")
409
+ };
410
+ }
411
+ async getActiveProductEpoch(lookup) {
412
+ const value = await this.getProductEpoch(lookup);
413
+ if (!value || value.state !== "active") return null;
414
+ if (!mpcMaterialActivationRefsEqual(value.materialActivation, lookup.materialActivation)) return null;
415
+ return value;
416
+ }
417
+ async listEnrollmentProductEpochs(enrollmentId) {
418
+ return ((await this.database.prepare(`SELECT product_json
419
+ FROM ${PRODUCT_TABLE}
420
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
421
+ AND enrollment_id = ?5
422
+ ORDER BY wallet_key_id, lane_id, lane_share_epoch`).bind(...scopeValues(this.scope), String(enrollmentId)).all()).results ?? []).map(parseProductEpochRow);
423
+ }
424
+ async commitEnrollmentVisibility(input) {
425
+ const parent = await this.getEnrollment(input.enrollmentId);
426
+ const manifestDigest = parent ? await computeLaneEnrollmentManifestDigestV1(parent.value.manifest) : "";
427
+ if (!parent || String(parent.value.manifest.walletId) !== String(input.walletId) || parent.commandDigestB64u !== input.manifestDigestB64u && manifestDigest !== input.manifestDigestB64u) return {
428
+ outcome: "conflict",
429
+ enrollmentId: input.enrollmentId,
430
+ expectedVersion: 1,
431
+ actualVersion: parent?.version ?? 0,
432
+ requestedCommandDigestB64u: input.manifestDigestB64u,
433
+ storedCommandDigestB64u: parent?.commandDigestB64u ?? ""
434
+ };
435
+ const receipt = parseAggregateLaneActivationReceiptV1({
436
+ kind: "aggregate_lane_activation_receipt_v1",
437
+ enrollmentId: input.enrollmentId,
438
+ walletId: input.walletId,
439
+ manifestDigestB64u: input.manifestDigestB64u,
440
+ orderedChildReceipts: input.orderedChildReceipts,
441
+ activatedAtMs: input.activatedAtMs
442
+ });
443
+ validateActivationReceiptAgainstManifest(parent.value.manifest, receipt);
444
+ const aggregateDigest = await computeAggregateLaneActivationReceiptDigestV1(receipt);
445
+ if (parent.value.lifecycle.state === "active") {
446
+ if (parent.value.lifecycle.aggregateReceiptDigestB64u === aggregateDigest) {
447
+ await this.verifyStoredRefreshPredecessorRetirements(input);
448
+ const productEpochs = await activeProductEpochs(this, input.enrollmentId);
449
+ if (productEpochs.length === 0) throw new Error("active enrollment has no product epochs");
450
+ return {
451
+ outcome: "replayed",
452
+ version: parent.version,
453
+ commandDigestB64u: aggregateDigest,
454
+ receipt,
455
+ lifecycle: parent.value.lifecycle,
456
+ productEpochs
457
+ };
458
+ }
459
+ return {
460
+ outcome: "conflict",
461
+ enrollmentId: input.enrollmentId,
462
+ expectedVersion: parent.version,
463
+ actualVersion: parent.version,
464
+ requestedCommandDigestB64u: aggregateDigest,
465
+ storedCommandDigestB64u: parent.value.lifecycle.aggregateReceiptDigestB64u
466
+ };
467
+ }
468
+ const readyLifecycle = resolveReadyEnrollmentLifecycle(parent.value.lifecycle, input, aggregateDigest);
469
+ if (!readyLifecycle) return {
470
+ outcome: "conflict",
471
+ enrollmentId: input.enrollmentId,
472
+ expectedVersion: parent.version,
473
+ actualVersion: parent.version,
474
+ requestedCommandDigestB64u: aggregateDigest,
475
+ storedCommandDigestB64u: parent.commandDigestB64u
476
+ };
477
+ if (readyLifecycle.aggregateReceiptDigestB64u !== aggregateDigest) return {
478
+ outcome: "conflict",
479
+ enrollmentId: input.enrollmentId,
480
+ expectedVersion: parent.version,
481
+ actualVersion: parent.version,
482
+ requestedCommandDigestB64u: aggregateDigest,
483
+ storedCommandDigestB64u: readyLifecycle.aggregateReceiptDigestB64u
484
+ };
485
+ const activeLifecycle = transitionLaneEnrollmentLifecycleV1(readyLifecycle, {
486
+ action: "activate",
487
+ activatedAtMs: input.activatedAtMs
488
+ });
489
+ if (activeLifecycle.state !== "active") throw new Error("lane visibility transition did not produce active enrollment");
490
+ const protocols = [];
491
+ const products = await this.listEnrollmentProductEpochs(input.enrollmentId);
492
+ const retirements = [];
493
+ let refreshRetirementIndex = 0;
494
+ for (const child of input.orderedChildReceipts) {
495
+ const protocol = await this.getProtocol(child.operationId);
496
+ if (!protocol || protocol.value.lifecycle.state !== "ready_for_parent_visibility") throw new Error("lane child is not ready for parent visibility");
497
+ const readyLifecycle = protocol.value.lifecycle;
498
+ if (String(protocol.value.job.walletId) !== String(input.walletId) || String(protocol.value.job.walletKeyId) !== String(child.walletKeyId) || String(protocol.value.job.target.laneId) !== String(child.targetLaneId) || String(protocol.value.job.target.laneShareEpoch) !== String(child.targetLaneShareEpoch) || String(protocol.value.job.targetMaterialActivationId) !== String(child.targetMaterialActivation.activationId) || readyLifecycle.protocolCommitReceiptDigestB64u !== child.protocolCommitReceiptDigestB64u || readyLifecycle.holderDeliveryReceiptDigestB64u !== child.holderDeliveryReceiptDigestB64u || readyLifecycle.serverActivationReceiptDigestB64u !== child.serverActivationReceiptDigestB64u) throw new Error("lane child identity or receipt digest differs from aggregate receipt");
499
+ const product = products.find((candidate) => String(candidate.operationId) === String(child.operationId));
500
+ if (!product || product.state !== "pending_visibility" || String(product.walletId) !== String(input.walletId) || String(product.walletKeyId) !== String(child.walletKeyId) || String(product.laneId) !== String(child.targetLaneId) || String(product.laneShareEpoch) !== String(child.targetLaneShareEpoch) || String(product.targetMaterialActivationId) !== String(child.targetMaterialActivation.activationId) || !mpcMaterialActivationRefsEqual(product.materialActivation, child.targetMaterialActivation)) throw new Error("lane child product epoch is not pending or differs from aggregate receipt");
501
+ if (protocol.value.job.target.operation === "refresh_lane") {
502
+ const previous = await this.getFencedProductEpochByActivation(protocol.value.job.walletKeyId, protocol.value.job.target.laneId, protocol.value.job.target.priorMaterialActivation.activationId);
503
+ if (!previous) throw new Error("lane refresh target has no fenced prior product epoch");
504
+ const refresh = input.orderedPredecessorRetirements[refreshRetirementIndex];
505
+ if (!refresh) throw new Error("lane refresh target has no exact predecessor retirement result");
506
+ const parsedRefresh = parseLaneRefreshPredecessorRetirementV1(refresh);
507
+ const verifiedRetirement = await verifyRefreshPredecessorRetirementV1({
508
+ previous: previous.product,
509
+ previousProtocol: await this.getProtocol(previous.product.operationId),
510
+ refreshProtocol: protocol,
511
+ refresh: parsedRefresh,
512
+ activatedAtMs: input.activatedAtMs
513
+ });
514
+ retirements.push({
515
+ previous: previous.product,
516
+ version: previous.version,
517
+ refresh: parsedRefresh,
518
+ receiptDigestB64u: verifiedRetirement.receiptDigestB64u,
519
+ retiredAtMs: verifiedRetirement.retiredAtMs
520
+ });
521
+ refreshRetirementIndex += 1;
522
+ }
523
+ protocols.push({
524
+ operationId: child.operationId,
525
+ row: protocol
526
+ });
527
+ }
528
+ if (refreshRetirementIndex !== input.orderedPredecessorRetirements.length) throw new Error("predecessor retirement results do not match refresh children exactly");
529
+ const now = this.now();
530
+ const values = scopeValues(this.scope);
531
+ const statements = [];
532
+ statements.push(this.database.prepare(`UPDATE ${ENROLLMENT_TABLE} SET lifecycle_json = ?5, version = version + 1, command_digest_b64u = ?6, updated_at_ms = ?7 WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND enrollment_id = ?8 AND version = ?9 AND lifecycle_json = ?10`).bind(...values, JSON.stringify(activeLifecycle), aggregateDigest, now, String(input.enrollmentId), parent.version, JSON.stringify(parent.value.lifecycle)));
533
+ statements.push(this.database.prepare(LANE_CAS_GUARD_SQL));
534
+ for (const protocol of protocols) {
535
+ const readyLifecycle = protocol.row.value.lifecycle;
536
+ if (readyLifecycle.state !== "ready_for_parent_visibility") throw new Error("lane child lifecycle changed before visibility commit");
537
+ const lifecycle = {
538
+ state: "active",
539
+ transcriptHashB64u: readyLifecycle.transcriptHashB64u,
540
+ protocolCommitReceiptDigestB64u: readyLifecycle.protocolCommitReceiptDigestB64u,
541
+ holderDeliveryReceiptDigestB64u: readyLifecycle.holderDeliveryReceiptDigestB64u,
542
+ serverActivationReceiptDigestB64u: readyLifecycle.serverActivationReceiptDigestB64u,
543
+ aggregateActivationReceiptDigestB64u: aggregateDigest,
544
+ activatedAtMs: input.activatedAtMs
545
+ };
546
+ statements.push(this.database.prepare(`UPDATE ${OPERATION_TABLE} SET lifecycle_json = ?5, version = version + 1, command_digest_b64u = ?6, updated_at_ms = ?7 WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND operation_id = ?8 AND version = ?9`).bind(...values, JSON.stringify(lifecycle), aggregateDigest, now, String(protocol.operationId), protocol.row.version));
547
+ statements.push(this.database.prepare(LANE_CAS_GUARD_SQL));
548
+ }
549
+ for (const retirement of retirements) {
550
+ const retired = retireFencedLaneProductEpochV1(retirement.previous, {
551
+ retirementReceiptDigestB64u: retirement.receiptDigestB64u,
552
+ retiredAtMs: retirement.retiredAtMs
553
+ });
554
+ statements.push(this.database.prepare(`UPDATE ${PRODUCT_TABLE} SET state = 'retired', product_json = ?5, version = version + 1, command_digest_b64u = ?6, updated_at_ms = ?7 WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND wallet_key_id = ?8 AND lane_id = ?9 AND target_material_activation_id = ?10 AND version = ?11 AND state = 'revocation_pending'`).bind(...values, JSON.stringify(retired), aggregateDigest, now, String(retirement.previous.walletKeyId), String(retirement.previous.laneId), String(retirement.previous.targetMaterialActivationId), retirement.version));
555
+ statements.push(this.database.prepare(LANE_CAS_GUARD_SQL));
556
+ statements.push(this.database.prepare(`INSERT INTO ${RECEIPT_TABLE} (namespace, org_id, project_id, env_id, receipt_id, enrollment_id, operation_id, receipt_kind, receipt_digest_b64u, receipt_json, created_at_ms) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, 'lane_refresh_predecessor_retirement', ?8, ?9, ?10)`).bind(...values, refreshPredecessorRetirementReceiptId(retirement.refresh), String(input.enrollmentId), String(retirement.refresh.refreshOperationId), retirement.receiptDigestB64u, JSON.stringify(retirement.refresh.retirementReceipt), input.activatedAtMs));
557
+ statements.push(this.database.prepare(LANE_CAS_GUARD_SQL));
558
+ }
559
+ for (const child of input.orderedChildReceipts) {
560
+ const pending = products.find((candidate) => String(candidate.operationId) === String(child.operationId));
561
+ if (!pending || pending.state !== "pending_visibility") throw new Error("lane product epoch is not pending");
562
+ const active = activateLaneProductEpochV1(pending, {
563
+ aggregateActivationReceiptDigestB64u: aggregateDigest,
564
+ activatedAtMs: input.activatedAtMs
565
+ });
566
+ statements.push(this.database.prepare(`UPDATE ${PRODUCT_TABLE} SET state = 'active', product_json = ?5, version = version + 1, command_digest_b64u = ?6, updated_at_ms = ?7 WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND operation_id = ?8 AND state = 'pending_visibility'`).bind(...values, JSON.stringify(active), aggregateDigest, now, String(child.operationId)));
567
+ statements.push(this.database.prepare(LANE_CAS_GUARD_SQL));
568
+ }
569
+ statements.push(this.database.prepare(`INSERT INTO ${RECEIPT_TABLE} (namespace, org_id, project_id, env_id, receipt_id, enrollment_id, operation_id, receipt_kind, receipt_digest_b64u, receipt_json, created_at_ms) VALUES (?1, ?2, ?3, ?4, ?5, ?6, NULL, 'aggregate_activation', ?7, ?8, ?9)`).bind(...values, `${String(input.enrollmentId)}:aggregate_activation`, String(input.enrollmentId), aggregateDigest, JSON.stringify(receipt), input.activatedAtMs));
570
+ statements.push(this.database.prepare(LANE_CAS_GUARD_SQL));
571
+ try {
572
+ const results = await this.database.batch(statements);
573
+ for (let index = 0; index < results.length; index += 1) assertD1Success(firstBatchResult(results, index), `lane visibility statement ${index}`);
574
+ } catch (error) {
575
+ const raced = await this.getEnrollment(input.enrollmentId);
576
+ if (raced?.value.lifecycle.state === "active" && raced.value.lifecycle.aggregateReceiptDigestB64u === aggregateDigest) {
577
+ await this.verifyStoredRefreshPredecessorRetirements(input);
578
+ const productEpochs = await activeProductEpochs(this, input.enrollmentId);
579
+ if (productEpochs.length === 0) throw error;
580
+ return {
581
+ outcome: "replayed",
582
+ version: raced.version,
583
+ commandDigestB64u: aggregateDigest,
584
+ receipt,
585
+ lifecycle: raced.value.lifecycle,
586
+ productEpochs
587
+ };
588
+ }
589
+ throw error;
590
+ }
591
+ const productEpochs = await activeProductEpochs(this, input.enrollmentId);
592
+ if (productEpochs.length === 0) throw new Error("lane visibility commit produced no active product epochs");
593
+ return {
594
+ outcome: "applied",
595
+ version: parent.version + 1,
596
+ commandDigestB64u: aggregateDigest,
597
+ receipt,
598
+ lifecycle: activeLifecycle,
599
+ productEpochs
600
+ };
601
+ }
602
+ async fenceLaneRevocation(input) {
603
+ const command = parseRevokeSigningLaneV1(input);
604
+ const commandDigestB64u = await computeRevokeSigningLaneDigestV1(command);
605
+ const row = await this.database.prepare(`SELECT product_json, version, command_digest_b64u
606
+ FROM ${PRODUCT_TABLE}
607
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
608
+ AND wallet_key_id = ?5 AND lane_id = ?6 AND lane_share_epoch = ?7`).bind(...scopeValues(this.scope), String(command.walletKeyId), String(command.laneId), String(command.laneShareEpoch)).first();
609
+ if (!row) return {
610
+ outcome: "conflict",
611
+ expectedVersion: 1,
612
+ actualVersion: 0,
613
+ requestedCommandDigestB64u: commandDigestB64u,
614
+ storedCommandDigestB64u: ""
615
+ };
616
+ const product = parseProductEpochRecordV1(row.product_json);
617
+ const version = parseVersion(row.version, "lane product epoch version");
618
+ const storedDigest = parseRequiredString(row.command_digest_b64u, "lane product epoch command digest");
619
+ if (String(product.walletId) !== String(command.walletId)) return {
620
+ outcome: "conflict",
621
+ expectedVersion: version,
622
+ actualVersion: version,
623
+ requestedCommandDigestB64u: commandDigestB64u,
624
+ storedCommandDigestB64u: storedDigest
625
+ };
626
+ if (product.state === "revoked") {
627
+ if (storedDigest === commandDigestB64u) return {
628
+ outcome: "already_completed",
629
+ version,
630
+ commandDigestB64u: storedDigest,
631
+ productEpoch: product,
632
+ retirementReceipt: await this.readAndVerifyServerRetirementReceipt(product, command)
633
+ };
634
+ return {
635
+ outcome: "conflict",
636
+ expectedVersion: version,
637
+ actualVersion: version,
638
+ requestedCommandDigestB64u: commandDigestB64u,
639
+ storedCommandDigestB64u: storedDigest
640
+ };
641
+ }
642
+ if (product.state === "revocation_pending") {
643
+ if (storedDigest === commandDigestB64u) return {
644
+ outcome: "replayed",
645
+ version,
646
+ commandDigestB64u: storedDigest,
647
+ productEpoch: product
648
+ };
649
+ return {
650
+ outcome: "conflict",
651
+ expectedVersion: version,
652
+ actualVersion: version,
653
+ requestedCommandDigestB64u: commandDigestB64u,
654
+ storedCommandDigestB64u: storedDigest
655
+ };
656
+ }
657
+ return await this.commitLaneRevocationFence({
658
+ command,
659
+ expectedVersion: version,
660
+ commandDigestB64u
661
+ });
662
+ }
663
+ async fenceEnrollmentRevocation(input) {
664
+ const commandDigestB64u = await digestLaneEnrollmentRevocationCommand(input);
665
+ const parent = await this.getEnrollment(input.enrollmentId);
666
+ if (!parent) return {
667
+ outcome: "conflict",
668
+ expectedVersion: 1,
669
+ actualVersion: 0,
670
+ requestedCommandDigestB64u: commandDigestB64u,
671
+ storedCommandDigestB64u: ""
672
+ };
673
+ if (String(parent.value.manifest.walletId) !== String(input.walletId)) return {
674
+ outcome: "conflict",
675
+ expectedVersion: parent.version,
676
+ actualVersion: parent.version,
677
+ requestedCommandDigestB64u: commandDigestB64u,
678
+ storedCommandDigestB64u: parent.commandDigestB64u
679
+ };
680
+ const manifestDigest = await computeLaneEnrollmentManifestDigestV1(parent.value.manifest);
681
+ if (manifestDigest !== input.manifestDigestB64u) return {
682
+ outcome: "conflict",
683
+ expectedVersion: parent.version,
684
+ actualVersion: parent.version,
685
+ requestedCommandDigestB64u: commandDigestB64u,
686
+ storedCommandDigestB64u: manifestDigest
687
+ };
688
+ const storedFenceDigest = await this.getEnrollmentRevocationFenceDigest(input.enrollmentId);
689
+ if (parent.value.lifecycle.state === "revoked") {
690
+ if (storedFenceDigest !== commandDigestB64u) return {
691
+ outcome: "conflict",
692
+ expectedVersion: parent.version,
693
+ actualVersion: parent.version,
694
+ requestedCommandDigestB64u: commandDigestB64u,
695
+ storedCommandDigestB64u: storedFenceDigest ?? parent.commandDigestB64u
696
+ };
697
+ return {
698
+ outcome: "replayed",
699
+ version: parent.version,
700
+ commandDigestB64u,
701
+ value: parent.value
702
+ };
703
+ }
704
+ const reason = input.reason === "cancelled_after_commit" || input.reason === "expired_after_commit" || input.reason === "revoked_during_activation" ? input.reason : "revoked_during_activation";
705
+ let lifecycle;
706
+ switch (parent.value.lifecycle.state) {
707
+ case "committed_completion_required":
708
+ case "ready_for_visibility":
709
+ case "active":
710
+ lifecycle = transitionLaneEnrollmentLifecycleV1(parent.value.lifecycle, {
711
+ action: "begin_revocation",
712
+ reason,
713
+ markedAtMs: input.requestedAtMs
714
+ });
715
+ break;
716
+ case "revoking_committed_targets":
717
+ if (parent.value.lifecycle.reason === reason && parent.value.lifecycle.manifestDigestB64u === input.manifestDigestB64u && storedFenceDigest === commandDigestB64u) return {
718
+ outcome: "replayed",
719
+ version: parent.version,
720
+ commandDigestB64u,
721
+ value: parent.value
722
+ };
723
+ return {
724
+ outcome: "conflict",
725
+ expectedVersion: parent.version,
726
+ actualVersion: parent.version,
727
+ requestedCommandDigestB64u: commandDigestB64u,
728
+ storedCommandDigestB64u: storedFenceDigest ?? parent.commandDigestB64u
729
+ };
730
+ case "preparing":
731
+ case "cancelled_precommit": return {
732
+ outcome: "conflict",
733
+ expectedVersion: parent.version,
734
+ actualVersion: parent.version,
735
+ requestedCommandDigestB64u: commandDigestB64u,
736
+ storedCommandDigestB64u: parent.commandDigestB64u
737
+ };
738
+ default: return assertNeverEnrollmentLifecycle(parent.value.lifecycle);
739
+ }
740
+ if (lifecycle.state !== "revoking_committed_targets") throw new Error("lane enrollment revocation fence did not produce revoking state");
741
+ if (!await this.updateEnrollmentRevocationFence(input.enrollmentId, parent.version, commandDigestB64u, lifecycle)) {
742
+ const raced = await this.getEnrollment(input.enrollmentId);
743
+ const racedFenceDigest = await this.getEnrollmentRevocationFenceDigest(input.enrollmentId);
744
+ if (raced?.value.lifecycle.state === "revoking_committed_targets" && raced.value.lifecycle.reason === reason && raced.value.lifecycle.manifestDigestB64u === input.manifestDigestB64u && racedFenceDigest === commandDigestB64u) return {
745
+ outcome: "replayed",
746
+ version: raced.version,
747
+ commandDigestB64u,
748
+ value: raced.value
749
+ };
750
+ return {
751
+ outcome: "conflict",
752
+ expectedVersion: parent.version,
753
+ actualVersion: raced?.version ?? 0,
754
+ requestedCommandDigestB64u: commandDigestB64u,
755
+ storedCommandDigestB64u: racedFenceDigest ?? raced?.commandDigestB64u ?? ""
756
+ };
757
+ }
758
+ const result = await this.getEnrollment(input.enrollmentId);
759
+ if (!result) throw new Error("lane enrollment disappeared after revocation fence");
760
+ return {
761
+ outcome: "applied",
762
+ version: result.version,
763
+ commandDigestB64u,
764
+ value: result.value
765
+ };
766
+ }
767
+ async commitLaneRevocationFence(input) {
768
+ const command = parseRevokeSigningLaneV1(input.command);
769
+ const row = await this.database.prepare(`SELECT product_json, version, command_digest_b64u FROM ${PRODUCT_TABLE} WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND wallet_key_id = ?5 AND lane_id = ?6 AND lane_share_epoch = ?7`).bind(...scopeValues(this.scope), String(command.walletKeyId), String(command.laneId), String(command.laneShareEpoch)).first();
770
+ if (!row) return {
771
+ outcome: "conflict",
772
+ expectedVersion: input.expectedVersion,
773
+ actualVersion: 0,
774
+ requestedCommandDigestB64u: input.commandDigestB64u,
775
+ storedCommandDigestB64u: ""
776
+ };
777
+ const product = parseProductEpochRecordV1(row.product_json);
778
+ const currentVersion = Number(row.version);
779
+ const storedDigest = typeof row.command_digest_b64u === "string" ? row.command_digest_b64u : "";
780
+ if (String(product.walletId) !== String(command.walletId)) return {
781
+ outcome: "conflict",
782
+ expectedVersion: input.expectedVersion,
783
+ actualVersion: Number.isSafeInteger(currentVersion) ? currentVersion : 0,
784
+ requestedCommandDigestB64u: input.commandDigestB64u,
785
+ storedCommandDigestB64u: storedDigest
786
+ };
787
+ if (product.state === "revoked" && storedDigest === input.commandDigestB64u) return {
788
+ outcome: "already_completed",
789
+ version: currentVersion,
790
+ commandDigestB64u: storedDigest,
791
+ productEpoch: product,
792
+ retirementReceipt: await this.readAndVerifyServerRetirementReceipt(product, command)
793
+ };
794
+ if (product.state === "revocation_pending" && storedDigest === input.commandDigestB64u) return {
795
+ outcome: "replayed",
796
+ version: currentVersion,
797
+ commandDigestB64u: storedDigest,
798
+ productEpoch: product
799
+ };
800
+ if (product.state !== "revoked" && product.state !== "revocation_pending" && product.revocationEpoch !== command.expectedRevocationEpoch) return {
801
+ outcome: "conflict",
802
+ expectedVersion: input.expectedVersion,
803
+ actualVersion: Number.isSafeInteger(currentVersion) ? currentVersion : 0,
804
+ requestedCommandDigestB64u: input.commandDigestB64u,
805
+ storedCommandDigestB64u: storedDigest
806
+ };
807
+ if (!Number.isSafeInteger(currentVersion) || currentVersion < 1 || currentVersion !== input.expectedVersion) return {
808
+ outcome: "conflict",
809
+ expectedVersion: input.expectedVersion,
810
+ actualVersion: Number.isSafeInteger(currentVersion) ? currentVersion : 0,
811
+ requestedCommandDigestB64u: input.commandDigestB64u,
812
+ storedCommandDigestB64u: storedDigest
813
+ };
814
+ if (product.state !== "active" && product.state !== "pending_visibility") return {
815
+ outcome: "conflict",
816
+ expectedVersion: input.expectedVersion,
817
+ actualVersion: currentVersion,
818
+ requestedCommandDigestB64u: input.commandDigestB64u,
819
+ storedCommandDigestB64u: storedDigest
820
+ };
821
+ const pending = beginLaneProductEpochRevocationV1(product, {
822
+ revocationEpoch: command.expectedRevocationEpoch + 1,
823
+ revocationReason: command.reason,
824
+ retirementEffectBindingDigestB64u: command.retirementEffectBindingDigestB64u,
825
+ revocationRequestedAtMs: command.requestedAtMs
826
+ });
827
+ if (d1ChangedRows(await this.database.prepare(`UPDATE ${PRODUCT_TABLE} SET state = 'revocation_pending', revocation_epoch = ?5, product_json = ?6, version = version + 1, command_digest_b64u = ?7, updated_at_ms = ?8 WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND wallet_key_id = ?9 AND lane_id = ?10 AND lane_share_epoch = ?11 AND version = ?12 AND state IN ('active', 'pending_visibility')`).bind(...scopeValues(this.scope), command.expectedRevocationEpoch + 1, JSON.stringify(pending), input.commandDigestB64u, command.requestedAtMs, String(command.walletKeyId), String(command.laneId), String(command.laneShareEpoch), input.expectedVersion).run()) !== 1) {
828
+ const raced = await this.database.prepare(`SELECT product_json, version, command_digest_b64u FROM ${PRODUCT_TABLE} WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND wallet_key_id = ?5 AND lane_id = ?6 AND lane_share_epoch = ?7`).bind(...scopeValues(this.scope), String(command.walletKeyId), String(command.laneId), String(command.laneShareEpoch)).first();
829
+ const racedProduct = raced ? parseProductEpochRecordV1(raced.product_json) : null;
830
+ const racedDigest = typeof raced?.command_digest_b64u === "string" ? raced.command_digest_b64u : "";
831
+ if (racedProduct?.state === "revocation_pending" && racedDigest === input.commandDigestB64u) return {
832
+ outcome: "replayed",
833
+ version: Number(raced?.version),
834
+ commandDigestB64u: racedDigest,
835
+ productEpoch: racedProduct
836
+ };
837
+ return {
838
+ outcome: "conflict",
839
+ expectedVersion: input.expectedVersion,
840
+ actualVersion: Number(raced?.version ?? 0),
841
+ requestedCommandDigestB64u: input.commandDigestB64u,
842
+ storedCommandDigestB64u: racedDigest
843
+ };
844
+ }
845
+ return {
846
+ outcome: "applied",
847
+ version: input.expectedVersion + 1,
848
+ commandDigestB64u: input.commandDigestB64u,
849
+ productEpoch: pending
850
+ };
851
+ }
852
+ async commitLaneRevocation(input) {
853
+ const completion = parseCompleteSigningLaneRevocationV1(input.completion);
854
+ const command = parseRevokeSigningLaneV1(completion.command);
855
+ if (await computeRevokeSigningLaneDigestV1(command) !== completion.commandDigestB64u) throw new Error("lane revocation completion command digest is invalid");
856
+ const row = await this.database.prepare(`SELECT product_json, version, command_digest_b64u FROM ${PRODUCT_TABLE} WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND wallet_key_id = ?5 AND lane_id = ?6 AND lane_share_epoch = ?7`).bind(...scopeValues(this.scope), String(command.walletKeyId), String(command.laneId), String(command.laneShareEpoch)).first();
857
+ if (!row) return {
858
+ outcome: "conflict",
859
+ expectedVersion: completion.expectedVersion,
860
+ actualVersion: 0,
861
+ requestedCommandDigestB64u: completion.commandDigestB64u,
862
+ storedCommandDigestB64u: ""
863
+ };
864
+ const product = parseLaneProductEpochRecordV1(parseJsonRecord(row.product_json, "product_json"));
865
+ const currentVersion = parseVersion(row.version, "lane product epoch version");
866
+ const storedDigest = parseRequiredString(row.command_digest_b64u, "lane product epoch command digest");
867
+ if (product.state !== "revocation_pending" && product.state !== "revoked") return {
868
+ outcome: "conflict",
869
+ expectedVersion: completion.expectedVersion,
870
+ actualVersion: currentVersion,
871
+ requestedCommandDigestB64u: completion.commandDigestB64u,
872
+ storedCommandDigestB64u: storedDigest
873
+ };
874
+ const retirementReceipt = parseLaneServerRetirementReceiptV1(completion.retirementReceipt, "lane revocation completion retirement receipt");
875
+ const retirementReceiptDigestB64u = await verifyServerRetirementReceiptV1({
876
+ store: this,
877
+ product,
878
+ command,
879
+ receipt: retirementReceipt
880
+ });
881
+ if (product.state === "revoked" && storedDigest === completion.commandDigestB64u && product.retirementEffectBindingDigestB64u === command.retirementEffectBindingDigestB64u && product.revocationReceiptDigestB64u === retirementReceiptDigestB64u) {
882
+ const storedReceipt = await this.readAndVerifyServerRetirementReceipt(product, command);
883
+ if (!equalLaneRecords(storedReceipt, retirementReceipt)) return {
884
+ outcome: "conflict",
885
+ expectedVersion: completion.expectedVersion,
886
+ actualVersion: currentVersion,
887
+ requestedCommandDigestB64u: retirementReceiptDigestB64u,
888
+ storedCommandDigestB64u: product.revocationReceiptDigestB64u
889
+ };
890
+ return {
891
+ outcome: "replayed",
892
+ version: currentVersion,
893
+ commandDigestB64u: storedDigest,
894
+ productEpoch: product,
895
+ retirementReceipt: storedReceipt
896
+ };
897
+ }
898
+ if (product.state !== "revocation_pending" || currentVersion !== completion.expectedVersion || storedDigest !== completion.commandDigestB64u || product.retirementEffectBindingDigestB64u !== command.retirementEffectBindingDigestB64u || product.revocationEpoch !== command.expectedRevocationEpoch + 1) return {
899
+ outcome: "conflict",
900
+ expectedVersion: completion.expectedVersion,
901
+ actualVersion: currentVersion,
902
+ requestedCommandDigestB64u: completion.commandDigestB64u,
903
+ storedCommandDigestB64u: storedDigest
904
+ };
905
+ const revoked = parseLaneProductEpochRecordV1(completeLaneProductEpochRevocationV1(product, {
906
+ revocationReceiptDigestB64u: retirementReceiptDigestB64u,
907
+ revokedAtMs: completion.revokedAtMs
908
+ }));
909
+ if (revoked.state !== "revoked") throw new Error("lane revocation completion state changed");
910
+ const update = this.database.prepare(`UPDATE ${PRODUCT_TABLE} SET state = 'revoked', product_json = ?5, version = version + 1, updated_at_ms = ?6 WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND wallet_key_id = ?7 AND lane_id = ?8 AND lane_share_epoch = ?9 AND version = ?10 AND state = 'revocation_pending' AND command_digest_b64u = ?11`).bind(...scopeValues(this.scope), JSON.stringify(revoked), completion.revokedAtMs, String(command.walletKeyId), String(command.laneId), String(command.laneShareEpoch), completion.expectedVersion, completion.commandDigestB64u);
911
+ const receiptInsert = this.database.prepare(`INSERT INTO ${RECEIPT_TABLE} (namespace, org_id, project_id, env_id, receipt_id, enrollment_id, operation_id, receipt_kind, receipt_digest_b64u, receipt_json, created_at_ms) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)`).bind(...scopeValues(this.scope), serverRetirementReceiptId(product), String(product.enrollmentId), String(product.operationId), serverRetirementReceiptKind(product), retirementReceiptDigestB64u, JSON.stringify(retirementReceipt), completion.revokedAtMs);
912
+ let applied = false;
913
+ try {
914
+ const results = await this.database.batch([
915
+ update,
916
+ this.database.prepare(LANE_CAS_GUARD_SQL),
917
+ receiptInsert,
918
+ this.database.prepare(LANE_CAS_GUARD_SQL)
919
+ ]);
920
+ assertD1Success(firstBatchResult(results, 0), "lane revocation completion");
921
+ assertD1Success(firstBatchResult(results, 2), "lane retirement receipt persistence");
922
+ applied = d1ChangedRows(firstBatchResult(results, 0)) === 1;
923
+ } catch {
924
+ applied = false;
925
+ }
926
+ if (!applied) {
927
+ const raced = await this.getProductEpoch({
928
+ walletId: command.walletId,
929
+ walletKeyId: command.walletKeyId,
930
+ laneId: command.laneId,
931
+ laneShareEpoch: command.laneShareEpoch
932
+ });
933
+ if (raced?.state === "revoked" && raced.retirementEffectBindingDigestB64u === command.retirementEffectBindingDigestB64u && raced.revocationReceiptDigestB64u === retirementReceiptDigestB64u) {
934
+ const storedReceipt = await this.readAndVerifyServerRetirementReceipt(raced, command);
935
+ if (!equalLaneRecords(storedReceipt, retirementReceipt)) throw new Error("stored lane retirement receipt differs from completion receipt");
936
+ return {
937
+ outcome: "replayed",
938
+ version: completion.expectedVersion + 1,
939
+ commandDigestB64u: completion.commandDigestB64u,
940
+ productEpoch: raced,
941
+ retirementReceipt: storedReceipt
942
+ };
943
+ }
944
+ return {
945
+ outcome: "conflict",
946
+ expectedVersion: completion.expectedVersion,
947
+ actualVersion: completion.expectedVersion,
948
+ requestedCommandDigestB64u: completion.commandDigestB64u,
949
+ storedCommandDigestB64u: storedDigest
950
+ };
951
+ }
952
+ return {
953
+ outcome: "applied",
954
+ version: completion.expectedVersion + 1,
955
+ commandDigestB64u: completion.commandDigestB64u,
956
+ productEpoch: revoked,
957
+ retirementReceipt
958
+ };
959
+ }
960
+ async commitEnrollmentRevocation(input) {
961
+ const parent = await this.getEnrollment(input.command.enrollmentId);
962
+ if (!parent) return {
963
+ outcome: "conflict",
964
+ enrollmentId: input.command.enrollmentId,
965
+ expectedVersion: input.expectedVersion,
966
+ actualVersion: 0,
967
+ requestedCommandDigestB64u: input.commandDigestB64u,
968
+ storedCommandDigestB64u: ""
969
+ };
970
+ const receipt = parseAggregateLaneRevocationReceiptV1(input.command.receipt);
971
+ const aggregateDigest = await computeAggregateLaneRevocationReceiptDigestV1(receipt);
972
+ if (parent.value.lifecycle.state === "revoked") {
973
+ if (parent.value.lifecycle.aggregateRevocationReceiptDigestB64u === aggregateDigest) {
974
+ const productEpochs = await revokedProductEpochs(this, input.command.enrollmentId);
975
+ if (productEpochs.length === 0) throw new Error("revoked enrollment has no product epochs");
976
+ return {
977
+ outcome: "replayed",
978
+ version: parent.version,
979
+ commandDigestB64u: input.commandDigestB64u,
980
+ receipt,
981
+ lifecycle: parent.value.lifecycle,
982
+ productEpochs
983
+ };
984
+ }
985
+ return {
986
+ outcome: "conflict",
987
+ enrollmentId: input.command.enrollmentId,
988
+ expectedVersion: input.expectedVersion,
989
+ actualVersion: parent.version,
990
+ requestedCommandDigestB64u: input.commandDigestB64u,
991
+ storedCommandDigestB64u: parent.value.lifecycle.aggregateRevocationReceiptDigestB64u
992
+ };
993
+ }
994
+ if (parent.version !== input.expectedVersion) return {
995
+ outcome: "conflict",
996
+ enrollmentId: input.command.enrollmentId,
997
+ expectedVersion: input.expectedVersion,
998
+ actualVersion: parent.version,
999
+ requestedCommandDigestB64u: input.commandDigestB64u,
1000
+ storedCommandDigestB64u: parent.commandDigestB64u
1001
+ };
1002
+ const productEpochs = (await this.listEnrollmentProductEpochs(input.command.enrollmentId)).filter((product) => product.state !== "retired");
1003
+ if (productEpochs.length !== receipt.orderedChildReceipts.length) throw new Error("revocation receipt child count differs from enrollment");
1004
+ const revoked = [];
1005
+ for (const product of productEpochs) {
1006
+ const child = receipt.orderedChildReceipts.find((candidate) => String(candidate.operationId) === String(product.operationId));
1007
+ if (!child) throw new Error("revocation receipt omits a product epoch");
1008
+ const expectedRevocationEpoch = product.state === "revocation_pending" || product.state === "revoked" ? product.revocationEpoch : product.revocationEpoch + 1;
1009
+ if (String(child.walletKeyId) !== String(product.walletKeyId) || String(child.targetLaneId) !== String(product.laneId) || String(child.targetLaneShareEpoch) !== String(product.laneShareEpoch) || !mpcMaterialActivationRefsEqual(child.targetMaterialActivation, product.materialActivation) || child.revocationEpoch !== expectedRevocationEpoch) throw new Error("revocation receipt child differs from its product epoch");
1010
+ if (product.state === "revoked") {
1011
+ if (product.revocationEpoch !== child.revocationEpoch || product.revocationReceiptDigestB64u !== child.retirementReceiptDigestB64u) throw new Error("revocation receipt differs from the already revoked product epoch");
1012
+ revoked.push(product);
1013
+ continue;
1014
+ }
1015
+ revoked.push(buildLaneProductEpochRevokedV1({
1016
+ walletId: product.walletId,
1017
+ walletKeyId: product.walletKeyId,
1018
+ laneId: product.laneId,
1019
+ laneKind: product.laneKind,
1020
+ laneShareEpoch: product.laneShareEpoch,
1021
+ keyFamily: product.keyFamily,
1022
+ enrollmentId: product.enrollmentId,
1023
+ operationId: product.operationId,
1024
+ targetMaterialActivationId: product.targetMaterialActivationId,
1025
+ materialActivation: product.materialActivation,
1026
+ publicIdentityDigestB64u: product.publicIdentityDigestB64u,
1027
+ holderParticipant: product.holderParticipant,
1028
+ signingWorkerParticipant: product.signingWorkerParticipant,
1029
+ participantSetBindingDigestB64u: product.participantSetBindingDigestB64u,
1030
+ createdAtMs: product.createdAtMs,
1031
+ revocationEpoch: child.revocationEpoch,
1032
+ revocationReason: "user_revoked",
1033
+ retirementEffectBindingDigestB64u: product.state === "revocation_pending" ? product.retirementEffectBindingDigestB64u : aggregateDigest,
1034
+ revocationReceiptDigestB64u: child.retirementReceiptDigestB64u,
1035
+ revokedAtMs: input.command.revokedAtMs
1036
+ }));
1037
+ }
1038
+ const lifecycle = {
1039
+ state: "revoked",
1040
+ manifestDigestB64u: input.command.manifestDigestB64u,
1041
+ aggregateRevocationReceiptDigestB64u: aggregateDigest,
1042
+ revokedAtMs: input.command.revokedAtMs
1043
+ };
1044
+ const values = scopeValues(this.scope);
1045
+ const statements = [this.database.prepare(`UPDATE ${ENROLLMENT_TABLE} SET lifecycle_json = ?5, version = version + 1, command_digest_b64u = ?6, updated_at_ms = ?7 WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND enrollment_id = ?8 AND version = ?9`).bind(...values, JSON.stringify(lifecycle), input.commandDigestB64u, input.command.revokedAtMs, String(input.command.enrollmentId), input.expectedVersion), this.database.prepare(LANE_CAS_GUARD_SQL)];
1046
+ for (const product of revoked) {
1047
+ if (productEpochs.find((candidate) => String(candidate.operationId) === String(product.operationId))?.state === "revoked") continue;
1048
+ statements.push(this.database.prepare(`UPDATE ${PRODUCT_TABLE} SET state = 'revoked', revocation_epoch = ?5, product_json = ?6, version = version + 1, command_digest_b64u = ?7, updated_at_ms = ?8 WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND wallet_key_id = ?9 AND lane_id = ?10 AND lane_share_epoch = ?11 AND state IN ('active', 'pending_visibility')`).bind(...values, product.revocationEpoch, JSON.stringify(product), input.commandDigestB64u, input.command.revokedAtMs, String(product.walletKeyId), String(product.laneId), String(product.laneShareEpoch)));
1049
+ statements.push(this.database.prepare(LANE_CAS_GUARD_SQL));
1050
+ }
1051
+ statements.push(this.database.prepare(`INSERT INTO ${RECEIPT_TABLE} (namespace, org_id, project_id, env_id, receipt_id, enrollment_id, operation_id, receipt_kind, receipt_digest_b64u, receipt_json, created_at_ms) VALUES (?1, ?2, ?3, ?4, ?5, ?6, NULL, 'aggregate_revocation', ?7, ?8, ?9)`).bind(...values, `${String(input.command.enrollmentId)}:aggregate_revocation`, String(input.command.enrollmentId), aggregateDigest, JSON.stringify(receipt), input.command.revokedAtMs));
1052
+ statements.push(this.database.prepare(LANE_CAS_GUARD_SQL));
1053
+ try {
1054
+ const results = await this.database.batch(statements);
1055
+ for (let index = 0; index < results.length; index += 1) assertD1Success(firstBatchResult(results, index), `lane revocation statement ${index}`);
1056
+ } catch (error) {
1057
+ const raced = await this.getEnrollment(input.command.enrollmentId);
1058
+ if (raced?.value.lifecycle.state === "revoked" && raced.value.lifecycle.aggregateRevocationReceiptDigestB64u === aggregateDigest) {
1059
+ const active = await revokedProductEpochs(this, input.command.enrollmentId);
1060
+ if (active.length === 0) throw error;
1061
+ return {
1062
+ outcome: "replayed",
1063
+ version: raced.version,
1064
+ commandDigestB64u: input.commandDigestB64u,
1065
+ receipt,
1066
+ lifecycle: raced.value.lifecycle,
1067
+ productEpochs: active
1068
+ };
1069
+ }
1070
+ throw error;
1071
+ }
1072
+ const outputEpochs = await revokedProductEpochs(this, input.command.enrollmentId);
1073
+ if (outputEpochs.length === 0) throw new Error("lane revocation commit produced no product epochs");
1074
+ return {
1075
+ outcome: "applied",
1076
+ version: input.expectedVersion + 1,
1077
+ commandDigestB64u: input.commandDigestB64u,
1078
+ receipt,
1079
+ lifecycle,
1080
+ productEpochs: outputEpochs
1081
+ };
1082
+ }
1083
+ async getFencedProductEpochByActivation(walletKeyId, laneId, activationId) {
1084
+ const row = await this.database.prepare(`SELECT product_json, version
1085
+ FROM ${PRODUCT_TABLE}
1086
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
1087
+ AND wallet_key_id = ?5 AND lane_id = ?6 AND target_material_activation_id = ?7
1088
+ AND state = 'revocation_pending'`).bind(...scopeValues(this.scope), String(walletKeyId), String(laneId), activationId).first();
1089
+ if (!row) return null;
1090
+ const product = parseProductEpochRecordV1(row.product_json);
1091
+ if (product.state !== "revocation_pending") return null;
1092
+ return {
1093
+ product,
1094
+ version: parseVersion(row.version, "prior lane product epoch version")
1095
+ };
1096
+ }
1097
+ protocolInsertStatement(record, commandDigestB64u, now) {
1098
+ const job = record.job;
1099
+ return this.database.prepare(`INSERT INTO ${OPERATION_TABLE} (
1100
+ namespace, org_id, project_id, env_id, operation_id, enrollment_id, wallet_id,
1101
+ wallet_key_id, source_lane_id, source_lane_share_epoch, source_revocation_epoch,
1102
+ target_lane_id, target_lane_share_epoch, target_material_activation_id,
1103
+ key_family, job_json, lifecycle_json, version, command_digest_b64u, created_at_ms, updated_at_ms
1104
+ ) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, 1, ?18, ?19, ?19)`).bind(...scopeValues(this.scope), String(job.operationId), String(job.enrollmentId), String(job.walletId), String(job.walletKeyId), String(job.source.laneId), String(job.source.laneShareEpoch), job.source.revocationEpoch, String(job.target.laneId), String(job.target.laneShareEpoch), String(job.targetMaterialActivationId), job.keyFamily, JSON.stringify(job), JSON.stringify(record.lifecycle), commandDigestB64u, now);
1105
+ }
1106
+ async updateProtocolLifecycle(input) {
1107
+ return d1ChangedRows(await this.database.prepare(`UPDATE ${OPERATION_TABLE} SET lifecycle_json = ?5, version = version + 1, command_digest_b64u = ?6, updated_at_ms = ?7 WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND operation_id = ?8 AND version = ?9`).bind(...scopeValues(this.scope), JSON.stringify(input.lifecycle), input.commandDigestB64u, this.now(), String(input.operationId), input.expectedVersion).run()) === 1;
1108
+ }
1109
+ async updateEnrollmentLifecycle(input) {
1110
+ return d1ChangedRows(await this.database.prepare(`UPDATE ${ENROLLMENT_TABLE} SET lifecycle_json = ?5, version = version + 1, command_digest_b64u = ?6, updated_at_ms = ?7 WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND enrollment_id = ?8 AND version = ?9`).bind(...scopeValues(this.scope), JSON.stringify(input.lifecycle), input.commandDigestB64u, this.now(), String(input.enrollmentId), input.expectedVersion).run()) === 1;
1111
+ }
1112
+ async getEnrollmentRevocationFenceDigest(enrollmentId) {
1113
+ const row = await this.database.prepare(`SELECT revocation_fence_command_digest_b64u
1114
+ FROM ${ENROLLMENT_TABLE}
1115
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
1116
+ AND enrollment_id = ?5`).bind(...scopeValues(this.scope), String(enrollmentId)).first();
1117
+ if (!row || row.revocation_fence_command_digest_b64u === null) return null;
1118
+ return parseRequiredString(row.revocation_fence_command_digest_b64u, "revocation fence command digest");
1119
+ }
1120
+ async updateEnrollmentRevocationFence(enrollmentId, expectedVersion, commandDigestB64u, lifecycle) {
1121
+ const values = scopeValues(this.scope);
1122
+ try {
1123
+ assertD1Success(firstBatchResult(await this.database.batch([this.database.prepare(`UPDATE ${ENROLLMENT_TABLE}
1124
+ SET lifecycle_json = ?5,
1125
+ version = version + 1,
1126
+ command_digest_b64u = ?6,
1127
+ revocation_fence_command_digest_b64u = ?7,
1128
+ updated_at_ms = ?8
1129
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
1130
+ AND enrollment_id = ?9 AND version = ?10`).bind(...values, JSON.stringify(lifecycle), commandDigestB64u, commandDigestB64u, this.now(), String(enrollmentId), expectedVersion), this.database.prepare(LANE_CAS_GUARD_SQL)]), 0), "lane enrollment revocation fence");
1131
+ return true;
1132
+ } catch {
1133
+ return false;
1134
+ }
1135
+ }
1136
+ async putReceipt(operationId, enrollmentId, kind, receipt, commandDigestB64u) {
1137
+ const row = await this.database.prepare(`SELECT receipt_id, receipt_kind, receipt_digest_b64u, receipt_json FROM ${RECEIPT_TABLE} WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND operation_id = ?5 AND receipt_kind = ?6`).bind(...scopeValues(this.scope), String(operationId), kind).first();
1138
+ const digest = await exactReceiptDigest(kind, receipt);
1139
+ if (row) {
1140
+ if (parseRequiredString(row.receipt_digest_b64u, "receipt digest") === digest && equalLaneRecords(parseJsonRecord(row.receipt_json, "receipt"), receipt)) return {
1141
+ outcome: "replayed",
1142
+ version: 1,
1143
+ commandDigestB64u,
1144
+ value: receipt
1145
+ };
1146
+ return {
1147
+ outcome: "conflict",
1148
+ expectedVersion: null,
1149
+ actualVersion: 1,
1150
+ requestedCommandDigestB64u: commandDigestB64u,
1151
+ storedCommandDigestB64u: parseRequiredString(row.receipt_digest_b64u, "receipt digest")
1152
+ };
1153
+ }
1154
+ const insert = this.database.prepare(`INSERT INTO ${RECEIPT_TABLE} (namespace, org_id, project_id, env_id, receipt_id, enrollment_id, operation_id, receipt_kind, receipt_digest_b64u, receipt_json, created_at_ms) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)`).bind(...scopeValues(this.scope), `${String(operationId)}:${kind}`, String(enrollmentId), String(operationId), kind, digest, JSON.stringify(receipt), this.now());
1155
+ try {
1156
+ assertD1Success(firstBatchResult(await this.database.batch([insert, this.database.prepare(LANE_CAS_GUARD_SQL)]), 0), `lane ${kind} receipt admission`);
1157
+ return {
1158
+ outcome: "applied",
1159
+ version: 1,
1160
+ commandDigestB64u,
1161
+ value: receipt
1162
+ };
1163
+ } catch (error) {
1164
+ const raced = await this.database.prepare(`SELECT receipt_digest_b64u, receipt_json FROM ${RECEIPT_TABLE} WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND operation_id = ?5 AND receipt_kind = ?6`).bind(...scopeValues(this.scope), String(operationId), kind).first();
1165
+ if (raced && parseRequiredString(raced.receipt_digest_b64u, "receipt digest") === digest) return {
1166
+ outcome: "replayed",
1167
+ version: 1,
1168
+ commandDigestB64u,
1169
+ value: receipt
1170
+ };
1171
+ if (raced) return {
1172
+ outcome: "conflict",
1173
+ expectedVersion: null,
1174
+ actualVersion: 1,
1175
+ requestedCommandDigestB64u: commandDigestB64u,
1176
+ storedCommandDigestB64u: parseRequiredString(raced.receipt_digest_b64u, "receipt digest")
1177
+ };
1178
+ throw error;
1179
+ }
1180
+ }
1181
+ async readAndVerifyServerRetirementReceipt(product, command) {
1182
+ const row = await this.database.prepare(`SELECT receipt_id, receipt_digest_b64u, receipt_json FROM ${RECEIPT_TABLE} WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND operation_id = ?5 AND receipt_kind = ?6`).bind(...scopeValues(this.scope), String(product.operationId), serverRetirementReceiptKind(product)).first();
1183
+ if (!row) throw new Error("revoked lane has no persisted server retirement receipt");
1184
+ if (parseRequiredString(row.receipt_id, "server retirement receipt id") !== serverRetirementReceiptId(product)) throw new Error("server retirement receipt id differs from the revoked lane epoch");
1185
+ const receipt = parseLaneServerRetirementReceiptV1(parseJsonRecord(row.receipt_json, "server retirement receipt"));
1186
+ const digest = await verifyServerRetirementReceiptV1({
1187
+ store: this,
1188
+ product,
1189
+ command,
1190
+ receipt
1191
+ });
1192
+ if (parseRequiredString(row.receipt_digest_b64u, "server retirement receipt digest") !== digest || product.revocationReceiptDigestB64u !== digest) throw new Error("persisted server retirement receipt digest is invalid");
1193
+ return receipt;
1194
+ }
1195
+ async verifyStoredRefreshPredecessorRetirements(input) {
1196
+ const retirements = new Map(input.orderedPredecessorRetirements.map((raw) => {
1197
+ const refresh = parseLaneRefreshPredecessorRetirementV1(raw);
1198
+ return [String(refresh.refreshOperationId), refresh];
1199
+ }));
1200
+ let refreshCount = 0;
1201
+ for (const child of input.orderedChildReceipts) {
1202
+ if ((await this.getProtocol(child.operationId))?.value.job.target.operation !== "refresh_lane") continue;
1203
+ refreshCount += 1;
1204
+ const refresh = retirements.get(String(child.operationId));
1205
+ if (!refresh) throw new Error("stored refresh child has no exact predecessor retirement");
1206
+ const product = await this.getProductEpoch({
1207
+ walletId: input.walletId,
1208
+ walletKeyId: child.walletKeyId,
1209
+ laneId: refresh.sourceLaneId,
1210
+ laneShareEpoch: refresh.sourceLaneShareEpoch
1211
+ });
1212
+ const digest = await laneServerRetirementReceiptDigestV1(refresh.retirementReceipt);
1213
+ if (product?.state !== "retired" || product.retirementReason !== "rotation" || product.retirementReceiptDigestB64u !== digest || !mpcMaterialActivationRefsEqual(product.materialActivation, refresh.sourceMaterialActivation)) throw new Error("retired predecessor product differs from its exact receipt");
1214
+ const row = await this.database.prepare(`SELECT receipt_id, receipt_digest_b64u, receipt_json FROM ${RECEIPT_TABLE} WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND operation_id = ?5 AND receipt_kind = 'lane_refresh_predecessor_retirement'`).bind(...scopeValues(this.scope), String(refresh.refreshOperationId)).first();
1215
+ if (!row || parseRequiredString(row.receipt_id, "refresh predecessor receipt id") !== refreshPredecessorRetirementReceiptId(refresh) || parseRequiredString(row.receipt_digest_b64u, "refresh predecessor receipt digest") !== digest) throw new Error("refresh predecessor receipt persistence is missing or invalid");
1216
+ if (!equalLaneRecords(parseLaneServerRetirementReceiptV1(parseJsonRecord(row.receipt_json, "refresh predecessor receipt")), refresh.retirementReceipt)) throw new Error("refresh predecessor receipt replay differs from persisted receipt");
1217
+ }
1218
+ if (refreshCount !== retirements.size) throw new Error("stored predecessor retirements do not match refresh children exactly");
1219
+ }
1220
+ async readReceipt(operationId, kind) {
1221
+ const row = await this.database.prepare(`SELECT receipt_json FROM ${RECEIPT_TABLE} WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4 AND operation_id = ?5 AND receipt_kind = ?6`).bind(...scopeValues(this.scope), String(operationId), kind).first();
1222
+ if (!row) return null;
1223
+ const receiptRecord = parseJsonRecord(row.receipt_json, "lane receipt");
1224
+ switch (kind) {
1225
+ case "lane_protocol_commit": return parseLaneProtocolCommitReceiptV1(receiptRecord);
1226
+ case "lane_holder_delivery": return parseLaneHolderDeliveryReceiptV1(receiptRecord);
1227
+ case "lane_server_activation": return parseLaneServerActivationReceiptV1(receiptRecord);
1228
+ default: throw new Error(`unknown lane receipt kind ${kind}`);
1229
+ }
1230
+ }
1231
+ };
1232
+ async function verifyServerRetirementReceiptV1(input) {
1233
+ const protocol = await input.store.getProtocol(input.product.operationId);
1234
+ if (protocol === null) throw new Error("server retirement receipt has no exact protocol operation");
1235
+ const job = protocol.value.job;
1236
+ const receipt = input.receipt;
1237
+ if (receipt.kind === "ed25519_server_retirement_receipt_v1") {
1238
+ if (job.keyFamily !== "ed25519" || input.product.keyFamily !== "ed25519" || protocol.value.lifecycle.state !== "active") throw new Error("Ed25519 server retirement receipt has no active protocol operation");
1239
+ const identity = receipt.identity;
1240
+ if (String(input.product.walletId) !== String(input.command.walletId) || identity.operationId !== input.product.operationId || identity.enrollmentId !== input.product.enrollmentId || identity.walletId !== input.product.walletId || identity.walletKeyId !== input.command.walletKeyId || identity.targetLaneId !== input.command.laneId || identity.targetLaneShareEpoch !== input.command.laneShareEpoch || identity.targetMaterialActivationId !== input.product.targetMaterialActivationId || identity.keyFamily !== "ed25519" || identity.holderParticipantBindingDigestB64u !== input.product.holderParticipant.participantBindingDigestB64u || identity.signingWorkerParticipantBindingDigestB64u !== input.product.signingWorkerParticipant.participantBindingDigestB64u || identity.holderRecipientKeyDigestB64u !== job.targetHolder.hpkePublicKeyDigestB64u || identity.serverRecipientKeyDigestB64u !== job.targetSigningWorker.hpkePublicKeyDigestB64u || identity.transcriptHashB64u !== protocol.value.lifecycle.transcriptHashB64u || identity.protocolCommitReceiptDigestB64u !== protocol.value.lifecycle.protocolCommitReceiptDigestB64u || receipt.revocationEpoch !== input.command.expectedRevocationEpoch || receipt.retirementReason !== retirementReceiptReasonV1(input.command.reason) || receipt.retirementCorrelationId !== input.command.retirementCorrelationId || receipt.retirementRequestDigestB64u !== input.command.retirementRequestDigestB64u || input.product.revocationEpoch !== input.command.expectedRevocationEpoch + 1) throw new Error("Ed25519 server retirement receipt differs from the frozen lane epoch");
1241
+ const digest = await computeEd25519ServerRetirementReceiptDigestV1(receipt);
1242
+ if (receipt.receiptDigestB64u !== digest) throw new Error("Ed25519 server retirement receipt self-digest is invalid");
1243
+ return digest;
1244
+ }
1245
+ if (job.keyFamily !== "ecdsa_secp256k1" || input.product.keyFamily !== "ecdsa_secp256k1") throw new Error("ECDSA server retirement receipt has no exact protocol operation");
1246
+ if (String(input.product.walletId) !== String(input.command.walletId) || String(receipt.manifest.manifestId) !== String(job.targetCapability.manifestId) || receipt.manifest.manifestRevision !== job.targetCapability.manifestRevision || !mpcMaterialActivationRefsEqual(receipt.materialActivation, input.product.materialActivation) || String(receipt.walletKeyId) !== String(input.command.walletKeyId) || String(receipt.laneId) !== String(input.command.laneId) || String(receipt.laneShareEpoch) !== String(input.command.laneShareEpoch) || receipt.revocationEpoch !== input.command.expectedRevocationEpoch || receipt.retirementReason !== retirementReceiptReasonV1(input.command.reason) || String(receipt.retirementCorrelationId) !== String(input.command.retirementCorrelationId) || receipt.retirementRequestDigestB64u !== input.command.retirementRequestDigestB64u || String(receipt.serverGeneration) !== String(job.sourceCapability.serverGeneration) || String(receipt.lifecycleId) !== String(input.product.materialActivation.lifecycleBinding) || input.product.revocationEpoch !== input.command.expectedRevocationEpoch + 1) throw new Error("ECDSA server retirement receipt differs from the frozen lane epoch");
1247
+ const digest = await computeEcdsaServerRetirementReceiptDigestV1(receipt);
1248
+ if (receipt.receiptDigestB64u !== digest) throw new Error("ECDSA server retirement receipt self-digest is invalid");
1249
+ return digest;
1250
+ }
1251
+ async function verifyRefreshPredecessorRetirementV1(input) {
1252
+ const refreshJob = input.refreshProtocol.value.job;
1253
+ if (refreshJob.target.operation !== "refresh_lane" || input.refreshProtocol.value.lifecycle.state !== "ready_for_parent_visibility" || input.previousProtocol === null || input.previousProtocol.value.lifecycle.state !== "active" || input.refresh.refreshOperationId !== refreshJob.operationId || input.refresh.sourceLaneId !== refreshJob.source.laneId || input.refresh.sourceLaneShareEpoch !== refreshJob.source.laneShareEpoch || !mpcMaterialActivationRefsEqual(input.refresh.sourceMaterialActivation, refreshJob.source.materialActivation) || !mpcMaterialActivationRefsEqual(input.refresh.sourceMaterialActivation, input.previous.materialActivation) || input.refresh.retirementEffectBindingDigestB64u !== refreshJob.authorization.ownerLaneRefreshDigestB64u || input.previous.revocationEpoch !== refreshJob.source.revocationEpoch + 1 || input.previous.revocationReason !== "rotation" || input.previous.retirementEffectBindingDigestB64u !== input.refresh.retirementEffectBindingDigestB64u) throw new Error("lane refresh predecessor retirement differs from the admitted source");
1254
+ const receipt = input.refresh.retirementReceipt;
1255
+ const requestDigestB64u = input.refreshProtocol.value.lifecycle.protocolCommitReceiptDigestB64u;
1256
+ if (receipt.retirementReason !== "rotation" || String(receipt.retirementCorrelationId) !== String(refreshJob.operationId) || receipt.retirementRequestDigestB64u !== requestDigestB64u || receipt.revocationEpoch !== refreshJob.source.revocationEpoch) throw new Error("lane refresh predecessor receipt is not bound to the refresh transcript");
1257
+ if (receipt.kind === "ed25519_server_retirement_receipt_v1") {
1258
+ const previousJob = input.previousProtocol.value.job;
1259
+ const identity = receipt.identity;
1260
+ if (refreshJob.keyFamily !== "ed25519" || previousJob.keyFamily !== "ed25519" || input.previous.keyFamily !== "ed25519" || identity.operationId !== input.previous.operationId || identity.enrollmentId !== input.previous.enrollmentId || identity.walletId !== input.previous.walletId || identity.walletKeyId !== input.previous.walletKeyId || identity.targetLaneId !== input.previous.laneId || identity.targetLaneShareEpoch !== input.previous.laneShareEpoch || identity.targetMaterialActivationId !== input.previous.targetMaterialActivationId || identity.holderParticipantBindingDigestB64u !== input.previous.holderParticipant.participantBindingDigestB64u || identity.signingWorkerParticipantBindingDigestB64u !== input.previous.signingWorkerParticipant.participantBindingDigestB64u || identity.holderRecipientKeyDigestB64u !== previousJob.targetHolder.hpkePublicKeyDigestB64u || identity.serverRecipientKeyDigestB64u !== previousJob.targetSigningWorker.hpkePublicKeyDigestB64u || identity.transcriptHashB64u !== input.previousProtocol.value.lifecycle.transcriptHashB64u || identity.protocolCommitReceiptDigestB64u !== input.previousProtocol.value.lifecycle.protocolCommitReceiptDigestB64u || receipt.retiredAtMs < input.previous.revocationRequestedAtMs || receipt.retiredAtMs > input.activatedAtMs) throw new Error("Ed25519 refresh predecessor receipt differs from the active source epoch");
1261
+ const digest = await computeEd25519ServerRetirementReceiptDigestV1(receipt);
1262
+ if (receipt.receiptDigestB64u !== digest) throw new Error("Ed25519 refresh predecessor receipt self-digest is invalid");
1263
+ return {
1264
+ receiptDigestB64u: digest,
1265
+ retiredAtMs: receipt.retiredAtMs
1266
+ };
1267
+ }
1268
+ const previousJob = input.previousProtocol.value.job;
1269
+ const retiredAtMs = Date.parse(receipt.retiredAt);
1270
+ if (refreshJob.keyFamily !== "ecdsa_secp256k1" || previousJob.keyFamily !== "ecdsa_secp256k1" || input.previous.keyFamily !== "ecdsa_secp256k1" || !mpcMaterialActivationRefsEqual(receipt.materialActivation, input.previous.materialActivation) || receipt.walletKeyId !== input.previous.walletKeyId || receipt.laneId !== input.previous.laneId || receipt.laneShareEpoch !== input.previous.laneShareEpoch || receipt.manifest.manifestId !== previousJob.targetCapability.manifestId || receipt.manifest.manifestRevision !== previousJob.targetCapability.manifestRevision || receipt.serverGeneration !== previousJob.sourceCapability.serverGeneration || String(receipt.lifecycleId) !== String(input.previous.materialActivation.lifecycleBinding) || !Number.isFinite(retiredAtMs) || retiredAtMs < input.previous.revocationRequestedAtMs || retiredAtMs > input.activatedAtMs) throw new Error("ECDSA refresh predecessor receipt differs from the active source epoch");
1271
+ const digest = await computeEcdsaServerRetirementReceiptDigestV1(receipt);
1272
+ if (receipt.receiptDigestB64u !== digest) throw new Error("ECDSA refresh predecessor receipt self-digest is invalid");
1273
+ return {
1274
+ receiptDigestB64u: digest,
1275
+ retiredAtMs
1276
+ };
1277
+ }
1278
+ function refreshPredecessorRetirementReceiptId(refresh) {
1279
+ return `${String(refresh.refreshOperationId)}:lane_refresh_predecessor_retirement:${String(refresh.sourceLaneId)}:${String(refresh.sourceLaneShareEpoch)}`;
1280
+ }
1281
+ async function laneServerRetirementReceiptDigestV1(receipt) {
1282
+ switch (receipt.kind) {
1283
+ case "ed25519_server_retirement_receipt_v1": return await computeEd25519ServerRetirementReceiptDigestV1(receipt);
1284
+ case "ecdsa_server_retirement_receipt_v1": return await computeEcdsaServerRetirementReceiptDigestV1(receipt);
1285
+ }
1286
+ }
1287
+ function retirementReceiptReasonV1(reason) {
1288
+ switch (reason) {
1289
+ case "user_revoked":
1290
+ case "policy_revoked": return "lane_revoked";
1291
+ case "device_compromise": return "device_compromise";
1292
+ case "agent_compromise": return "agent_compromise";
1293
+ case "rotation": return "rotation";
1294
+ }
1295
+ }
1296
+ function serverRetirementReceiptId(product) {
1297
+ return `${String(product.operationId)}:${serverRetirementReceiptKind(product)}:${String(product.laneId)}:${String(product.laneShareEpoch)}`;
1298
+ }
1299
+ function serverRetirementReceiptKind(product) {
1300
+ switch (product.keyFamily) {
1301
+ case "ed25519": return "ed25519_server_retirement";
1302
+ case "ecdsa_secp256k1": return "ecdsa_server_retirement";
1303
+ }
1304
+ }
1305
+ async function admissionChildrenMatch(store, children) {
1306
+ for (const child of children) {
1307
+ const stored = await store.getProtocol(child.job.operationId);
1308
+ if (!stored || !equalLaneRecords(stored.value, child)) return false;
1309
+ }
1310
+ return true;
1311
+ }
1312
+ function validateChildrenAgainstManifest(manifest, children) {
1313
+ for (let index = 0; index < manifest.orderedChildren.length; index += 1) {
1314
+ const entry = manifest.orderedChildren[index];
1315
+ const child = children[index];
1316
+ if (!entry || !child) throw new Error(`lane enrollment child ${index} is missing`);
1317
+ if (String(child.job.operationId) !== String(entry.operationId) || String(child.job.enrollmentId) !== String(manifest.enrollmentId) || String(child.job.walletId) !== String(manifest.walletId) || String(child.job.walletKeyId) !== String(entry.walletKeyId) || child.job.keyFamily !== entry.keyFamily || !equalLaneRecords(child.job.authorization, manifest.authorization) || String(child.job.source.laneId) !== String(entry.sourceLaneId) || String(child.job.source.laneShareEpoch) !== String(entry.sourceLaneShareEpoch) || child.job.source.revocationEpoch !== entry.sourceRevocationEpoch || !mpcMaterialActivationRefsEqual(child.job.source.materialActivation, entry.sourceMaterialActivation) || String(child.job.target.laneId) !== String(entry.targetLaneId) || String(child.job.target.laneShareEpoch) !== String(entry.targetLaneShareEpoch) || String(child.job.targetMaterialActivationId) !== String(entry.targetMaterialActivationId) || child.job.targetHolder.participantBindingDigestB64u !== entry.holderParticipantBindingDigestB64u || child.job.targetSigningWorker.participantBindingDigestB64u !== entry.signingWorkerParticipantBindingDigestB64u) throw new Error(`lane enrollment child ${index} does not match manifest`);
1318
+ }
1319
+ }
1320
+ function assertNeverEnrollmentLifecycle(value) {
1321
+ throw new Error(`Unhandled lane enrollment lifecycle ${JSON.stringify(value)}`);
1322
+ }
1323
+ function resolveReadyEnrollmentLifecycle(current, input, aggregateDigest) {
1324
+ if (current.state === "ready_for_visibility") {
1325
+ if (current.manifestDigestB64u !== input.manifestDigestB64u) return null;
1326
+ return current;
1327
+ }
1328
+ if (current.state === "preparing") {
1329
+ const operationIds = input.orderedChildReceipts.map((child) => child.operationId);
1330
+ const first = operationIds[0];
1331
+ if (!first) return null;
1332
+ const committed = transitionLaneEnrollmentLifecycleV1(current, {
1333
+ action: "mark_committed_completion_required",
1334
+ committedChildOperationIds: [first, ...operationIds.slice(1)],
1335
+ markedAtMs: input.activatedAtMs
1336
+ });
1337
+ if (committed.state !== "committed_completion_required") return null;
1338
+ const ready = transitionLaneEnrollmentLifecycleV1(committed, {
1339
+ action: "mark_ready_for_visibility",
1340
+ aggregateReceiptDigestB64u: aggregateDigest,
1341
+ readyAtMs: input.activatedAtMs
1342
+ });
1343
+ return ready.state === "ready_for_visibility" ? ready : null;
1344
+ }
1345
+ if (current.state === "committed_completion_required") {
1346
+ const ready = transitionLaneEnrollmentLifecycleV1(current, {
1347
+ action: "mark_ready_for_visibility",
1348
+ aggregateReceiptDigestB64u: aggregateDigest,
1349
+ readyAtMs: input.activatedAtMs
1350
+ });
1351
+ return ready.state === "ready_for_visibility" ? ready : null;
1352
+ }
1353
+ return null;
1354
+ }
1355
+ function validateActivationReceiptAgainstManifest(manifest, receipt) {
1356
+ if (manifest.orderedChildren.length !== receipt.orderedChildReceipts.length) throw new Error("aggregate activation child count differs from enrollment manifest");
1357
+ for (let index = 0; index < manifest.orderedChildren.length; index += 1) {
1358
+ const expected = manifest.orderedChildren[index];
1359
+ const actual = receipt.orderedChildReceipts[index];
1360
+ if (!expected || !actual) throw new Error("aggregate activation child order is invalid");
1361
+ if (String(expected.operationId) !== String(actual.operationId) || String(expected.walletKeyId) !== String(actual.walletKeyId) || String(expected.targetLaneId) !== String(actual.targetLaneId) || String(expected.targetLaneShareEpoch) !== String(actual.targetLaneShareEpoch) || String(expected.targetMaterialActivationId) !== String(actual.targetMaterialActivation.activationId)) throw new Error("aggregate activation child differs from enrollment manifest");
1362
+ }
1363
+ }
1364
+ function assertProtocolCommitReceiptIdentity(protocol, receipt) {
1365
+ const job = protocol.job;
1366
+ if (protocol.lifecycle.state !== "active" && receipt.committedAtMs < protocol.lifecycle.startedAtMs) throw new Error("lane protocol commit receipt predates its admitted operation");
1367
+ if (String(receipt.enrollmentId) !== String(job.enrollmentId) || String(receipt.walletId) !== String(job.walletId) || String(receipt.walletKeyId) !== String(job.walletKeyId) || String(receipt.sourceLaneId) !== String(job.source.laneId) || String(receipt.sourceLaneShareEpoch) !== String(job.source.laneShareEpoch) || receipt.sourceRevocationEpoch !== job.source.revocationEpoch || !mpcMaterialActivationRefsEqual(receipt.sourceMaterialActivation, job.source.materialActivation) || String(receipt.targetLaneId) !== String(job.target.laneId) || String(receipt.targetLaneShareEpoch) !== String(job.target.laneShareEpoch) || String(receipt.targetMaterialActivationId) !== String(job.targetMaterialActivationId) || receipt.keyFamily !== job.keyFamily || receipt.holderRecipientKeyDigestB64u !== job.targetHolder.hpkePublicKeyDigestB64u || receipt.serverRecipientKeyDigestB64u !== job.targetSigningWorker.hpkePublicKeyDigestB64u) throw new Error("lane protocol commit receipt does not match its admitted operation");
1368
+ }
1369
+ function assertHolderDeliveryReceiptIdentity(protocol, receipt, commitReceipt) {
1370
+ const job = protocol.job;
1371
+ if (String(receipt.enrollmentId) !== String(job.enrollmentId) || String(receipt.targetLaneId) !== String(job.target.laneId) || String(receipt.targetLaneShareEpoch) !== String(job.target.laneShareEpoch) || String(receipt.targetMaterialActivationId) !== String(job.targetMaterialActivationId) || receipt.holderParticipantBindingDigestB64u !== job.targetHolder.participantBindingDigestB64u || receipt.holderRecipientKeyDigestB64u !== job.targetHolder.hpkePublicKeyDigestB64u) throw new Error("lane holder delivery receipt does not match its admitted operation");
1372
+ if (protocol.lifecycle.state !== "committed_awaiting_holder_delivery" && protocol.lifecycle.state !== "awaiting_server_activation" && protocol.lifecycle.state !== "ready_for_parent_visibility" && protocol.lifecycle.state !== "active") throw new Error("lane holder delivery receipt is not valid for this lifecycle");
1373
+ if (protocol.lifecycle.transcriptHashB64u !== receipt.transcriptHashB64u) throw new Error("lane holder delivery receipt transcript differs from the committed transcript");
1374
+ if (receipt.holderCiphertextDigestSetB64u !== commitReceipt.targetHolderCiphertextDigestSetB64u || receipt.acknowledgedAtMs < commitReceipt.committedAtMs) throw new Error("lane holder delivery receipt differs from its committed ciphertext");
1375
+ }
1376
+ function assertServerActivationReceiptIdentity(protocol, receipt, commitReceipt, holderReceipt) {
1377
+ const job = protocol.job;
1378
+ if (String(receipt.enrollmentId) !== String(job.enrollmentId) || String(receipt.targetLaneId) !== String(job.target.laneId) || String(receipt.targetLaneShareEpoch) !== String(job.target.laneShareEpoch) || String(receipt.targetMaterialActivation.activationId) !== String(job.targetMaterialActivationId) || receipt.targetMaterialActivation.capability !== job.source.materialActivation.capability || receipt.targetMaterialActivation.materialOwner !== job.source.materialActivation.materialOwner || receipt.targetMaterialActivation.keyBinding !== job.source.materialActivation.keyBinding || receipt.targetMaterialActivation.lifecycleBinding !== job.source.materialActivation.lifecycleBinding || String(receipt.targetMaterialActivation.signingWorker) !== String(job.targetSigningWorker.participantId) || receipt.serverCiphertextDigestSetB64u !== commitReceipt.targetServerCiphertextDigestSetB64u || receipt.activatedAtMs < holderReceipt.acknowledgedAtMs || receipt.signingWorkerParticipantBindingDigestB64u !== job.targetSigningWorker.participantBindingDigestB64u) throw new Error("lane server activation receipt does not match its admitted operation");
1379
+ if (protocol.lifecycle.state !== "awaiting_server_activation" && protocol.lifecycle.state !== "ready_for_parent_visibility" && protocol.lifecycle.state !== "active") throw new Error("lane server activation receipt is not valid for this lifecycle");
1380
+ if (protocol.lifecycle.transcriptHashB64u !== receipt.transcriptHashB64u) throw new Error("lane server activation receipt transcript differs from the committed transcript");
1381
+ }
1382
+ async function exactReceiptDigest(kind, receipt) {
1383
+ switch (kind) {
1384
+ case "lane_protocol_commit":
1385
+ if (receipt.kind !== "lane_protocol_commit_receipt_v1") throw new Error("receipt kind does not match lane protocol commit");
1386
+ return base64UrlEncode(await sha256Bytes(encodeLaneProtocolCommitReceiptV1(receipt)));
1387
+ case "lane_holder_delivery":
1388
+ if (receipt.kind !== "lane_holder_delivery_receipt_v1") throw new Error("receipt kind does not match holder delivery");
1389
+ return base64UrlEncode(await sha256Bytes(encodeLaneHolderDeliveryReceiptV1(receipt)));
1390
+ case "lane_server_activation":
1391
+ if (receipt.kind !== "lane_server_activation_receipt_v1") throw new Error("receipt kind does not match server activation");
1392
+ return base64UrlEncode(await sha256Bytes(encodeLaneServerActivationReceiptV1(receipt)));
1393
+ default: throw new Error(`unknown receipt kind ${kind}`);
1394
+ }
1395
+ }
1396
+ function parseProductEpochRecordV1(raw) {
1397
+ return parseLaneProductEpochRecordV1(parseJsonRecord(raw, "lane product epoch"), "lane product epoch");
1398
+ }
1399
+ async function buildPendingProductEpoch(input) {
1400
+ const target = input.protocol.job.target;
1401
+ const holderParticipant = {
1402
+ kind: "lane_holder_participant_v1",
1403
+ participantId: input.protocol.job.targetHolder.participantId,
1404
+ custodyBindingId: input.protocol.job.targetHolder.custodyBindingId,
1405
+ custodyBindingDigestB64u: input.protocol.job.targetHolder.custodyBindingDigestB64u,
1406
+ hpkePublicKeyB64u: input.protocol.job.targetHolder.hpkePublicKeyB64u,
1407
+ hpkePublicKeyDigestB64u: input.protocol.job.targetHolder.hpkePublicKeyDigestB64u,
1408
+ participantBindingDigestB64u: input.protocol.job.targetHolder.participantBindingDigestB64u
1409
+ };
1410
+ const signingWorkerParticipant = {
1411
+ kind: "signing_worker_participant_v1",
1412
+ participantId: input.protocol.job.targetSigningWorker.participantId,
1413
+ recipientKeyId: input.protocol.job.targetSigningWorker.recipientKeyId,
1414
+ hpkePublicKeyB64u: input.protocol.job.targetSigningWorker.hpkePublicKeyB64u,
1415
+ hpkePublicKeyDigestB64u: input.protocol.job.targetSigningWorker.hpkePublicKeyDigestB64u,
1416
+ participantBindingDigestB64u: input.protocol.job.targetSigningWorker.participantBindingDigestB64u
1417
+ };
1418
+ const participantSetBindingDigestB64u = await computeLaneParticipantSetBindingDigestV1({
1419
+ holderParticipant,
1420
+ signingWorkerParticipant
1421
+ });
1422
+ return buildLaneProductEpochPendingVisibilityV1({
1423
+ walletId: input.protocol.job.walletId,
1424
+ walletKeyId: input.protocol.job.walletKeyId,
1425
+ laneId: target.laneId,
1426
+ laneKind: target.laneKind,
1427
+ laneShareEpoch: target.laneShareEpoch,
1428
+ keyFamily: input.protocol.job.keyFamily,
1429
+ enrollmentId: input.protocol.job.enrollmentId,
1430
+ operationId: input.protocol.job.operationId,
1431
+ targetMaterialActivationId: input.protocol.job.targetMaterialActivationId,
1432
+ materialActivation: input.serverReceipt.targetMaterialActivation,
1433
+ publicIdentityDigestB64u: input.protocolReceipt.publicIdentityDigestB64u,
1434
+ holderParticipant,
1435
+ signingWorkerParticipant,
1436
+ participantSetBindingDigestB64u,
1437
+ revocationEpoch: input.protocol.job.source.revocationEpoch,
1438
+ createdAtMs: input.protocolReceipt.committedAtMs,
1439
+ aggregateManifestDigestB64u: input.manifestDigestB64u,
1440
+ protocolCommitReceiptDigestB64u: base64UrlEncode(await sha256Bytes(encodeLaneProtocolCommitReceiptV1(input.protocolReceipt))),
1441
+ holderDeliveryReceiptDigestB64u: base64UrlEncode(await sha256Bytes(encodeLaneHolderDeliveryReceiptV1(input.holderReceipt))),
1442
+ serverActivationReceiptDigestB64u: base64UrlEncode(await sha256Bytes(encodeLaneServerActivationReceiptV1(input.serverReceipt))),
1443
+ pendingSinceMs: input.serverReceipt.activatedAtMs
1444
+ });
1445
+ }
1446
+ async function activeProductEpochs(store, enrollmentId) {
1447
+ const values = (await store.listEnrollmentProductEpochs(enrollmentId)).filter((value) => value.state === "active");
1448
+ if (values.length === 0) throw new Error("no active product epochs");
1449
+ return values;
1450
+ }
1451
+ async function revokedProductEpochs(store, enrollmentId) {
1452
+ const values = (await store.listEnrollmentProductEpochs(enrollmentId)).filter((value) => value.state === "revoked");
1453
+ if (values.length === 0) throw new Error("no revoked product epochs");
1454
+ return values;
1455
+ }
1456
+ //#endregion
1457
+ export { CloudflareD1LaneLifecycleStore };
1458
+
1459
+ //# sourceMappingURL=d1LaneLifecycleStore.js.map