@seams/wallet-server 0.6.1 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (705) hide show
  1. package/artifact-manifest.json +147 -32
  2. package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -0
  3. package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
  4. package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
  5. package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -0
  6. package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
  7. package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
  8. package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
  9. package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
  10. package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
  11. package/cloudflare-router-ab/build/router/build-stamp.json +1 -0
  12. package/cloudflare-router-ab/build/router/index.js +2 -2
  13. package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
  14. package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -0
  15. package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
  16. package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
  17. package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -0
  18. package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
  19. package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
  20. package/cloudflare-router-ab/migrations/deriver-a/0012_tenant_root_creation_tombstones.sql +20 -0
  21. package/cloudflare-router-ab/migrations/deriver-a/0013_tenant_root_root_use_admissions.sql +32 -0
  22. package/cloudflare-router-ab/migrations/deriver-a/0014_tenant_root_refresh_supersessions.sql +24 -0
  23. package/cloudflare-router-ab/migrations/deriver-a/0015_tenant_root_root_use_attempts.sql +56 -0
  24. package/cloudflare-router-ab/migrations/deriver-a/0016_tenant_root_root_use_admission_settlement.sql +5 -0
  25. package/cloudflare-router-ab/migrations/deriver-a/0017_tenant_root_root_use_admission_claims.sql +64 -0
  26. package/cloudflare-router-ab/migrations/deriver-a/0018_tenant_root_recovery_retention_keys.sql +12 -0
  27. package/cloudflare-router-ab/migrations/deriver-b/0012_tenant_root_creation_tombstones.sql +20 -0
  28. package/cloudflare-router-ab/migrations/deriver-b/0013_tenant_root_root_use_admissions.sql +32 -0
  29. package/cloudflare-router-ab/migrations/deriver-b/0014_tenant_root_refresh_supersessions.sql +24 -0
  30. package/cloudflare-router-ab/migrations/deriver-b/0015_tenant_root_root_use_attempts.sql +56 -0
  31. package/cloudflare-router-ab/migrations/deriver-b/0016_tenant_root_root_use_admission_settlement.sql +5 -0
  32. package/cloudflare-router-ab/migrations/deriver-b/0017_tenant_root_root_use_admission_claims.sql +64 -0
  33. package/cloudflare-router-ab/migrations/deriver-b/0018_tenant_root_recovery_retention_keys.sql +12 -0
  34. package/cloudflare-router-ab/scripts/bootstrap-local-tenant-root.mjs +81 -16
  35. package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +102 -9
  36. package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +4 -1
  37. package/cloudflare-router-ab/wrangler.deriver-a.toml +24 -0
  38. package/cloudflare-router-ab/wrangler.router.toml +13 -0
  39. package/dist/esm/authorization/capabilityPolicy.js +1 -1
  40. package/dist/esm/authorization/domain.js +2 -2
  41. package/dist/esm/authorization/factorEvidence.js +6 -100
  42. package/dist/esm/authorization/service.js +34 -2
  43. package/dist/esm/authorization/vaultProxyUse.js +3 -4
  44. package/dist/esm/cloud-host.js +16 -11
  45. package/dist/esm/core/EmailOtpRecords.js +19 -1
  46. package/dist/esm/core/EmailOtpStores.js +323 -924
  47. package/dist/esm/core/IdentityStore.js +44 -235
  48. package/dist/esm/core/NearPublicKeyStore.js +21 -63
  49. package/dist/esm/core/RegistrationCeremonyStore.js +3 -1793
  50. package/dist/esm/core/ThresholdService/config.js +1 -82
  51. package/dist/esm/core/ThresholdService/kv.js +3 -3
  52. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +37 -5
  53. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.js +4 -74
  54. package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +15 -51
  55. package/dist/esm/core/ThresholdService/stores/KeyStore.js +3 -3
  56. package/dist/esm/core/ThresholdService/stores/SessionStore.js +5 -81
  57. package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +185 -290
  58. package/dist/esm/core/ThresholdService/validation.js +18 -230
  59. package/dist/esm/core/WalletAuthMethodStore.js +22 -79
  60. package/dist/esm/core/WalletStore.js +58 -185
  61. package/dist/esm/core/WebAuthnAuthenticatorStore.js +57 -340
  62. package/dist/esm/core/WebAuthnCredentialBindingStore.js +90 -369
  63. package/dist/esm/core/WebAuthnLoginChallengeStore.js +17 -397
  64. package/dist/esm/core/WebAuthnSyncChallengeStore.js +17 -397
  65. package/dist/esm/core/authService/AuthService.js +2 -19
  66. package/dist/esm/core/authService/emailOtpChallengeProof.js +1 -1
  67. package/dist/esm/core/authService/emailOtpChallenges.js +1 -1
  68. package/dist/esm/core/authService/emailOtpConfig.js +1 -32
  69. package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +6 -153
  70. package/dist/esm/core/authService/googleEmailOtpRegistration.js +1 -1
  71. package/dist/esm/core/authService/nearPrivateKeySigning.js +7 -15
  72. package/dist/esm/core/authService/nearTransactions.js +2 -1
  73. package/dist/esm/core/authService/oidcVerification.js +3 -4
  74. package/dist/esm/core/authService/rateLimits.js +1 -31
  75. package/dist/esm/core/authService/registrationThresholdHelpers.js +2 -103
  76. package/dist/esm/core/authService/storeRegistry.js +2 -13
  77. package/dist/esm/core/authService/thresholdEcdsaKeyInventory.js +4 -5
  78. package/dist/esm/core/authService/webauthn.js +15 -50
  79. package/dist/esm/core/authService/webauthnOidcHelpers.js +1 -6
  80. package/dist/esm/core/authService/webauthnVerificationOutcomes.js +60 -0
  81. package/dist/esm/core/authService/webauthnWalletBinding.js +2 -122
  82. package/dist/esm/core/d1IdentityStore.js +32 -66
  83. package/dist/esm/core/d1TenantStore.js +82 -0
  84. package/dist/esm/core/d1WalletAuthMethodStore.js +92 -143
  85. package/dist/esm/core/d1WalletStore.js +14 -12
  86. package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +10 -8
  87. package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +25 -3
  88. package/dist/esm/core/deviceLinking/linkedDeviceSession.js +6 -895
  89. package/dist/esm/core/deviceLinking/linkedDeviceSessionApproval.js +102 -0
  90. package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +668 -0
  91. package/dist/esm/core/emailOtpD1Statements.js +383 -0
  92. package/dist/esm/core/hostedAccountIds.js +2 -2
  93. package/dist/esm/core/keyMaterialBrands.js +2 -48
  94. package/dist/esm/core/nearRelayerAccountProvisioning.js +25 -150
  95. package/dist/esm/core/nearSignerWasmRuntime.js +1 -4
  96. package/dist/esm/core/rpcClients/near/NearClient.js +15 -218
  97. package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +1 -1
  98. package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +2 -4
  99. package/dist/esm/core/signingLanes/LaneLifecycleStore.js +0 -24
  100. package/dist/esm/core/signingLanes/WalletExecutionLaneProjection.js +5 -5
  101. package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +3 -8
  102. package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +1 -4
  103. package/dist/esm/core/storeBackends.js +208 -0
  104. package/dist/esm/core/thresholdEcdsaChainTarget.js +1 -7
  105. package/dist/esm/core/webAuthnD1Statements.js +92 -0
  106. package/dist/esm/core/webAuthnStoreBackends.js +198 -0
  107. package/dist/esm/hosted-wallet-gateway.js +33 -16
  108. package/dist/esm/index.js +2 -2
  109. package/dist/esm/local-hosted-wallet-gateway-worker.js +2 -23
  110. package/dist/esm/localHostedWalletGatewayHandler.js +299 -0
  111. package/dist/esm/localIntendedEcdsaFinalizeFault.js +85 -0
  112. package/dist/esm/localIntendedLinkExecuteFault.js +140 -0
  113. package/dist/esm/localIntendedRevokeFault.js +106 -0
  114. package/dist/esm/localIntendedSessionAdmissionFault.js +139 -0
  115. package/dist/esm/localIntendedYaoExportFault.js +117 -0
  116. package/dist/esm/localIntendedYaoFault.js +13 -16
  117. package/dist/esm/localIntendedYaoFinalizeFault.js +99 -0
  118. package/dist/esm/localIntendedYaoRecoveryFault.js +102 -0
  119. package/dist/esm/localIntendedYaoSigningFault.js +127 -0
  120. package/dist/esm/router/auth/authRequestValidation.js +1 -1
  121. package/dist/esm/router/auth/commonRouterUtils.js +10 -2
  122. package/dist/esm/router/auth/walletSessionFailure.js +1 -14
  123. package/dist/esm/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.js +23 -0
  124. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +86 -66
  125. package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +208 -0
  126. package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +246 -296
  127. package/dist/esm/router/cloudflare/d1/authorization/persistedWalletSessionAuthorization.js +14 -0
  128. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +62 -63
  129. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +3 -6
  130. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +1 -19
  131. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceManagementService.js +4 -3
  132. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +52 -9
  133. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +3 -6
  134. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRevocation.js +100 -0
  135. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.js +7 -10
  136. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +33 -124
  137. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.js +2 -2
  138. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +9 -17
  139. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.js +6 -6
  140. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkSourceReader.js +3 -1
  141. package/dist/esm/router/cloudflare/d1/deviceLinking/index.js +3 -3
  142. package/dist/esm/router/cloudflare/d1/deviceLinking/installedEcdsaAuthority.js +69 -0
  143. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +39 -68
  144. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.js +69 -0
  145. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +2 -2
  146. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +26 -71
  147. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +20 -3
  148. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +7 -94
  149. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +5 -47
  150. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +26 -123
  151. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +0 -2
  152. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +2 -2
  153. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +15 -134
  154. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +54 -260
  155. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +1 -1
  156. package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +1 -28
  157. package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +2 -8
  158. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyEnvelopeStore.js +1 -1
  159. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +3 -3
  160. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +23 -73
  161. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.js +15 -2
  162. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js +12 -203
  163. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +16 -32
  164. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +29 -72
  165. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +4 -1
  166. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +3 -1
  167. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +6 -30
  168. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +261 -205
  169. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +5 -3
  170. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +2 -2
  171. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +3 -3
  172. package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +43 -25
  173. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +0 -1
  174. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +1 -1
  175. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +2 -1
  176. package/dist/esm/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js +2 -60
  177. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +158 -19
  178. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodBoundary.js +19 -49
  179. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodRevocationReplayStore.js +100 -0
  180. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +132 -33
  181. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +83 -4
  182. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +14 -49
  183. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +4 -4
  184. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +22 -116
  185. package/dist/esm/router/cloudflare/runtime/createSelfHostedCloudflareSigningWorker.js +1 -2
  186. package/dist/esm/router/cloudflare/runtime/walletConsoleTenantRootLineage.js +11 -2
  187. package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
  188. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +5 -6
  189. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +2 -1
  190. package/dist/esm/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js +48 -21
  191. package/dist/esm/router/cloudflare.js +11480 -12853
  192. package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +16 -5
  193. package/dist/esm/router/domains/ecdsa/thresholdEcdsaRequestValidation.js +2 -8
  194. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.js +33 -0
  195. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +17 -9
  196. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +29 -431
  197. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +7 -2
  198. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRunner.js +2 -1
  199. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +70 -2
  200. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +134 -169
  201. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +77 -162
  202. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +205 -51
  203. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +29 -11
  204. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +182 -55
  205. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +2 -1
  206. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.js +63 -247
  207. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +3 -2
  208. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js +87 -132
  209. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationTwoPhaseRunner.js +5 -4
  210. package/dist/esm/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.js +45 -0
  211. package/dist/esm/router/domains/ed25519Yao/session/thresholdEd25519RequestValidation.js +1 -1
  212. package/dist/esm/router/domains/emailOtp/emailOtpExportPolicy.js +1 -42
  213. package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +1 -6
  214. package/dist/esm/router/domains/emailOtp/emailOtpSessionRouteHelpers.js +1 -142
  215. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrievalRoute.js +1 -1
  216. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +2 -2
  217. package/dist/esm/router/domains/passkeyCustody/walletRecoveryFinalization.js +23 -45
  218. package/dist/esm/router/domains/passkeyCustody/walletRecoveryKeyManifest.js +5 -5
  219. package/dist/esm/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.js +1 -1
  220. package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js +827 -0
  221. package/dist/esm/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.js +698 -0
  222. package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmission.js +209 -0
  223. package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.js +16 -15
  224. package/dist/esm/router/domains/signingOperations/routerAbOperationStepUp.js +313 -0
  225. package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +62 -2159
  226. package/dist/esm/router/domains/tenantRoot/tenantRootIdentityResolution.js +1 -1
  227. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +18 -22
  228. package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +3 -4
  229. package/dist/esm/router/domains/walletUnlock/walletUnlockRequestedCapabilitiesValidation.js +2 -2
  230. package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +97 -150
  231. package/dist/esm/router/express.js +5967 -6410
  232. package/dist/esm/router/framework/http.js +1 -4
  233. package/dist/esm/router/framework/ror/normalize.js +1 -1
  234. package/dist/esm/router/framework/routerApiRouteSurface.js +1 -1
  235. package/dist/esm/router/node/nodeHostedWalletGateway.js +64 -0
  236. package/dist/esm/router/node/nodeHostedWalletGatewayCheck.js +163 -0
  237. package/dist/esm/router/node/nodeHostedWalletGatewayMain.js +120 -0
  238. package/dist/esm/router/node/nodeHttp.js +79 -0
  239. package/dist/esm/router/node/nodeSqlite.js +43 -0
  240. package/dist/esm/router/node/signerSqlMigrations.js +48 -0
  241. package/dist/esm/router/transport/fetch/createFetchRouter.js +1 -1
  242. package/dist/esm/router/transport/fetch/routes/deviceLinking.js +16 -18
  243. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +3 -5
  244. package/dist/esm/router/transport/fetch/routes/deviceManagement.js +15 -24
  245. package/dist/esm/router/transport/fetch/routes/normalSigningRouterProxy.js +3 -16
  246. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +144 -461
  247. package/dist/esm/router/transport/fetch/routes/sessions.js +4 -4
  248. package/dist/esm/router/transport/fetch/routes/syncAccount.js +4 -6
  249. package/dist/esm/router/transport/fetch/routes/syncAccountBootstrap.js +2 -2
  250. package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +69 -23
  251. package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +52 -27
  252. package/dist/esm/shared-ts/src/authorization/capabilityKinds.js +1 -1
  253. package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +1 -1
  254. package/dist/esm/shared-ts/src/authorization/operationFingerprint.js +1 -2
  255. package/dist/esm/shared-ts/src/authorization/walletAuthority.js +99 -227
  256. package/dist/esm/shared-ts/src/authorization/walletCustodyOperation.js +4 -6
  257. package/dist/esm/shared-ts/src/device-linking/activeWalletSession.js +74 -0
  258. package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +50 -0
  259. package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +8 -9
  260. package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +3 -1
  261. package/dist/esm/shared-ts/src/device-linking/deviceManagement.js +55 -0
  262. package/dist/esm/shared-ts/src/device-linking/digests.js +10 -65
  263. package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +3 -1
  264. package/dist/esm/shared-ts/src/device-linking/index.js +4 -1
  265. package/dist/esm/shared-ts/src/device-linking/parsers.js +510 -1063
  266. package/dist/esm/shared-ts/src/device-linking/requestProof.js +5 -14
  267. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +6 -9
  268. package/dist/esm/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +9 -9
  269. package/dist/esm/shared-ts/src/device-linking/wireFields.js +59 -0
  270. package/dist/esm/shared-ts/src/near/nearClient.js +252 -0
  271. package/dist/esm/shared-ts/src/passkey-custody/credentialActivity.js +3 -1
  272. package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +7 -5
  273. package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +6 -4
  274. package/dist/esm/shared-ts/src/passkey-custody/primitives.js +5 -39
  275. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -5
  276. package/dist/esm/shared-ts/src/signing-lanes/index.js +3 -3
  277. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +5 -12
  278. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +5 -14
  279. package/dist/esm/shared-ts/src/signing-lanes/participants.js +2 -5
  280. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +7 -5
  281. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +6 -45
  282. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +423 -1511
  283. package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +323 -0
  284. package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +59 -0
  285. package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +1 -1
  286. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +1 -2
  287. package/dist/esm/shared-ts/src/threshold/keyMaterialBrands.js +49 -0
  288. package/dist/esm/shared-ts/src/utils/addAuthMethodRegistration.js +3 -4
  289. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +8 -1
  290. package/dist/esm/shared-ts/src/utils/digestEncoding.js +63 -0
  291. package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +2 -2
  292. package/dist/esm/shared-ts/src/utils/exactRecord.js +44 -0
  293. package/dist/esm/shared-ts/src/utils/registrationAuthMethodInput.js +127 -0
  294. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +2 -2
  295. package/dist/esm/shared-ts/src/utils/registrationIds.js +280 -0
  296. package/dist/esm/shared-ts/src/utils/registrationIntent.js +4 -1170
  297. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +429 -0
  298. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +11 -136
  299. package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +3 -163
  300. package/dist/esm/shared-ts/src/utils/routerAbEd25519YaoDigests.js +160 -0
  301. package/dist/esm/shared-ts/src/utils/routerAbNormalSigningIdentity.js +1 -4
  302. package/dist/esm/shared-ts/src/utils/routerAbPublicKeyset.js +7 -15
  303. package/dist/esm/shared-ts/src/utils/validation.js +37 -6
  304. package/dist/esm/shared-ts/src/utils/walletAuthMethodRecord.js +362 -0
  305. package/dist/esm/shared-ts/src/utils/wireSchema.js +77 -0
  306. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +1 -1
  307. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +1 -1
  308. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +7 -11
  309. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +4 -8
  310. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +3 -1
  311. package/dist/esm/storage/d1Sql.js +10 -1
  312. package/dist/esm/storage/syncSqlite.js +79 -0
  313. package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +1 -1
  314. package/dist/esm/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js +1 -1
  315. package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +1 -2
  316. package/dist/esm/threshold/session/signingSessionSeal/options.js +1 -1
  317. package/dist/esm/threshold/session/signingSessionSeal/transport/shared.js +18 -55
  318. package/dist/esm/threshold/statusCodes.js +1 -1
  319. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +3 -3
  320. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  321. package/dist/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_worker_bg.wasm +0 -0
  322. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +8 -26
  323. package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +0 -8
  324. package/dist/types/shared-ts/src/authorization/operationFingerprint.d.ts +1 -3
  325. package/dist/types/shared-ts/src/authorization/walletAuthority.d.ts +25 -12
  326. package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +2 -1
  327. package/dist/types/shared-ts/src/device-linking/activeWalletSession.d.ts +3 -2
  328. package/dist/types/shared-ts/src/device-linking/authorityActivation.d.ts +5 -0
  329. package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +2 -5
  330. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +8 -11
  331. package/dist/types/shared-ts/src/device-linking/contracts.typecheck.d.ts +2 -1
  332. package/dist/types/shared-ts/src/device-linking/deviceManagement.d.ts +7 -0
  333. package/dist/types/shared-ts/src/device-linking/digests.d.ts +0 -5
  334. package/dist/types/shared-ts/src/device-linking/ed25519ExportRoot.d.ts +3 -2
  335. package/dist/types/shared-ts/src/device-linking/index.d.ts +2 -0
  336. package/dist/types/shared-ts/src/device-linking/parsers.d.ts +4 -41
  337. package/dist/types/shared-ts/src/device-linking/requestProof.d.ts +0 -1
  338. package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +3 -2
  339. package/dist/types/shared-ts/src/device-linking/walletSessionCredentialDelivery.d.ts +2 -1
  340. package/dist/types/shared-ts/src/device-linking/wireFields.d.ts +26 -0
  341. package/dist/types/shared-ts/src/near/actions.d.ts +4 -4
  342. package/dist/types/shared-ts/src/near/delegate.d.ts +3 -2
  343. package/dist/types/shared-ts/src/near/nearClient.d.ts +145 -0
  344. package/dist/types/shared-ts/src/passkey-custody/ceremonyCommitPayload.d.ts +0 -22
  345. package/dist/types/shared-ts/src/passkey-custody/credentialActivity.d.ts +2 -4
  346. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +9 -18
  347. package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +8 -24
  348. package/dist/types/shared-ts/src/passkey-custody/index.d.ts +0 -2
  349. package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +0 -14
  350. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -15
  351. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +2 -51
  352. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +1 -2
  353. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +1 -2
  354. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +5 -27
  355. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +0 -11
  356. package/dist/types/shared-ts/src/signing-lanes/recordParsers.d.ts +6 -53
  357. package/dist/types/shared-ts/src/signing-lanes/records.d.ts +1 -2
  358. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +15 -37
  359. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +1 -20
  360. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +4 -25
  361. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +1 -41
  362. package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +6 -0
  363. package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +20 -0
  364. package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +2 -35
  365. package/dist/types/shared-ts/src/threshold/ed25519OperationFingerprint.d.ts +8 -35
  366. package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +25 -0
  367. package/dist/types/shared-ts/src/threshold/participants.d.ts +3 -9
  368. package/dist/types/shared-ts/src/threshold/secp256k1.d.ts +0 -37
  369. package/dist/types/shared-ts/src/threshold/sessionPolicy.d.ts +24 -0
  370. package/dist/types/shared-ts/src/threshold/signingRootScope.d.ts +2 -5
  371. package/dist/types/shared-ts/src/utils/addAuthMethodRegistration.d.ts +3 -4
  372. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +7 -108
  373. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +16 -3
  374. package/dist/types/shared-ts/src/utils/canonicalPrimitives.d.ts +2 -0
  375. package/dist/types/shared-ts/src/utils/digestEncoding.d.ts +9 -0
  376. package/dist/types/shared-ts/src/utils/domainIds.d.ts +1 -2
  377. package/dist/types/shared-ts/src/utils/ecdsaKeyFactsInventory.d.ts +1 -2
  378. package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +5 -5
  379. package/dist/types/shared-ts/src/utils/emailOtpRecoveryKey.d.ts +0 -2
  380. package/dist/types/shared-ts/src/utils/errors.d.ts +0 -7
  381. package/dist/types/shared-ts/src/utils/exactRecord.d.ts +12 -0
  382. package/dist/types/shared-ts/src/utils/index.d.ts +5 -2
  383. package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +3 -2
  384. package/dist/types/shared-ts/src/utils/near.d.ts +2 -1
  385. package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +7 -7
  386. package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -4
  387. package/dist/types/shared-ts/src/utils/registrationAuthMethodInput.d.ts +184 -0
  388. package/dist/types/shared-ts/src/utils/registrationContracts.d.ts +76 -0
  389. package/dist/types/shared-ts/src/utils/registrationEstablishedSession.d.ts +1 -2
  390. package/dist/types/shared-ts/src/utils/registrationIds.d.ts +56 -0
  391. package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +9 -514
  392. package/dist/types/shared-ts/src/utils/registrationSignerPlan.d.ts +142 -0
  393. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +21 -92
  394. package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +14 -99
  395. package/dist/types/shared-ts/src/utils/routerAbEd25519YaoDigests.d.ts +39 -0
  396. package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +10 -15
  397. package/dist/types/shared-ts/src/utils/routerAbTraceContext.d.ts +2 -1
  398. package/dist/types/shared-ts/src/utils/secureRandomId.d.ts +0 -2
  399. package/dist/types/shared-ts/src/utils/signerDomain.d.ts +3 -35
  400. package/dist/types/shared-ts/src/utils/signerSlot.d.ts +0 -4
  401. package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +1 -7
  402. package/dist/types/shared-ts/src/utils/validation.d.ts +10 -10
  403. package/dist/types/shared-ts/src/utils/variant.d.ts +11 -0
  404. package/dist/types/shared-ts/src/utils/variant.typecheck.d.ts +22 -0
  405. package/dist/types/shared-ts/src/utils/walletAddSignerActivation.d.ts +2 -2
  406. package/dist/types/shared-ts/src/utils/walletAuthAuthority.d.ts +1 -58
  407. package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +104 -0
  408. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +3 -7
  409. package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +3 -4
  410. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +60 -0
  411. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +2 -1
  412. package/dist/types/shared-ts/src/wallet-recovery/index.d.ts +0 -1
  413. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeLocator.d.ts +0 -16
  414. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +2 -11
  415. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.d.ts +6 -18
  416. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.d.ts +0 -2
  417. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.d.ts +1 -3
  418. package/dist/types/wallet-server/src/authorization/capabilityPolicy.d.ts +0 -1
  419. package/dist/types/wallet-server/src/authorization/domain.d.ts +25 -5
  420. package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.d.ts +37 -0
  421. package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.typecheck.d.ts +2 -0
  422. package/dist/types/wallet-server/src/authorization/factorEvidence.d.ts +6 -7
  423. package/dist/types/wallet-server/src/authorization/service.d.ts +52 -3
  424. package/dist/types/wallet-server/src/cloud-host.d.ts +6 -2
  425. package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +10 -1
  426. package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +16 -116
  427. package/dist/types/wallet-server/src/core/IdentityStore.d.ts +2 -7
  428. package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +6 -16
  429. package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +29 -90
  430. package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +0 -12
  431. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +10 -3
  432. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.d.ts +17 -48
  433. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/internalServiceHttp.d.ts +2 -1
  434. package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +4 -71
  435. package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +2 -1
  436. package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +4 -8
  437. package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +2 -1
  438. package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +1 -3
  439. package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +14 -47
  440. package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +2 -7
  441. package/dist/types/wallet-server/src/core/WalletStore.d.ts +3 -8
  442. package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +7 -22
  443. package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +14 -36
  444. package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +9 -34
  445. package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +9 -34
  446. package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +0 -3
  447. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +6 -5
  448. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +9 -17
  449. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +3 -2
  450. package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +7 -23
  451. package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +3 -10
  452. package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +4 -3
  453. package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +4 -3
  454. package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +3 -70
  455. package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +3 -2
  456. package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +4 -3
  457. package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +5 -8
  458. package/dist/types/wallet-server/src/core/authService/nearPrivateKeySigning.d.ts +3 -2
  459. package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +2 -1
  460. package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +2 -1
  461. package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +4 -3
  462. package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +0 -3
  463. package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +0 -26
  464. package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +0 -5
  465. package/dist/types/wallet-server/src/core/authService/thresholdEcdsaKeyInventory.d.ts +0 -23
  466. package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +8 -16
  467. package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +7 -7
  468. package/dist/types/wallet-server/src/core/authService/webauthnVerificationOutcomes.d.ts +43 -0
  469. package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +1 -28
  470. package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +6 -16
  471. package/dist/types/wallet-server/src/core/d1TenantStore.d.ts +51 -0
  472. package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +11 -29
  473. package/dist/types/wallet-server/src/core/d1WalletStore.d.ts +6 -1
  474. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceEd25519ExportRoot.d.ts +2 -1
  475. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceEmailOtpGrant.d.ts +2 -1
  476. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceManagement.d.ts +44 -26
  477. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +19 -217
  478. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSessionApproval.d.ts +8 -0
  479. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSessionRecord.d.ts +259 -0
  480. package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +2 -2
  481. package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +54 -0
  482. package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +0 -15
  483. package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +4 -24
  484. package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +2 -3
  485. package/dist/types/wallet-server/src/core/nearSignerWasmRuntime.d.ts +0 -1
  486. package/dist/types/wallet-server/src/core/registrationContracts.d.ts +37 -108
  487. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +5 -4
  488. package/dist/types/wallet-server/src/core/rpcClients/near/NearClient.d.ts +10 -106
  489. package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +4 -3
  490. package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +2 -3
  491. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +2 -3
  492. package/dist/types/wallet-server/src/core/signingLanes/WalletExecutionLaneProjection.d.ts +3 -9
  493. package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +4 -4
  494. package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +3 -3
  495. package/dist/types/wallet-server/src/core/storeBackends.d.ts +83 -0
  496. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +13 -59
  497. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +51 -3
  498. package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +0 -1
  499. package/dist/types/wallet-server/src/core/types.d.ts +3 -24
  500. package/dist/types/wallet-server/src/core/webAuthnD1Statements.d.ts +29 -0
  501. package/dist/types/wallet-server/src/core/webAuthnStoreBackends.d.ts +96 -0
  502. package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +11 -7
  503. package/dist/types/wallet-server/src/index.d.ts +1 -1
  504. package/dist/types/wallet-server/src/local-hosted-wallet-gateway-worker.d.ts +1 -4
  505. package/dist/types/wallet-server/src/localHostedWalletGatewayHandler.d.ts +12 -0
  506. package/dist/types/wallet-server/src/localIntendedEcdsaFinalizeFault.d.ts +33 -0
  507. package/dist/types/wallet-server/src/localIntendedLinkExecuteFault.d.ts +47 -0
  508. package/dist/types/wallet-server/src/localIntendedRevokeFault.d.ts +40 -0
  509. package/dist/types/wallet-server/src/localIntendedSessionAdmissionFault.d.ts +41 -0
  510. package/dist/types/wallet-server/src/localIntendedYaoExportFault.d.ts +41 -0
  511. package/dist/types/wallet-server/src/localIntendedYaoFault.d.ts +7 -1
  512. package/dist/types/wallet-server/src/localIntendedYaoFinalizeFault.d.ts +37 -0
  513. package/dist/types/wallet-server/src/localIntendedYaoRecoveryFault.d.ts +45 -0
  514. package/dist/types/wallet-server/src/localIntendedYaoSigningFault.d.ts +51 -0
  515. package/dist/types/wallet-server/src/router/auth/authRequestValidation.d.ts +10 -21
  516. package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +5 -10
  517. package/dist/types/wallet-server/src/router/auth/walletSessionFailure.d.ts +1 -4
  518. package/dist/types/wallet-server/src/router/auth/webAuthnCredentialCodecs.d.ts +3 -2
  519. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.d.ts +12 -0
  520. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.d.ts +3 -2
  521. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +2 -2
  522. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthService.d.ts +1 -1
  523. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/authorizedOperationStatements.d.ts +30 -0
  524. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +45 -21
  525. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/persistedWalletSessionAuthorization.d.ts +3 -0
  526. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/walletSessionAuthorityProjection.d.ts +2 -1
  527. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +57 -6
  528. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +2 -3
  529. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.d.ts +8 -21
  530. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.d.ts +14 -1
  531. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRevocation.d.ts +49 -0
  532. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.d.ts +1 -1
  533. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +4 -2
  534. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.d.ts +1 -1
  535. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.d.ts +2 -2
  536. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +8 -4
  537. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.d.ts +3 -5
  538. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/installedEcdsaAuthority.d.ts +7 -0
  539. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.d.ts +1 -2
  540. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.d.ts +33 -0
  541. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.d.ts +1 -1
  542. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +13 -3
  543. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.d.ts +24 -5
  544. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.d.ts +2 -3
  545. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +1 -3
  546. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +3 -4
  547. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +9 -8
  548. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.d.ts +0 -2
  549. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.d.ts +5 -4
  550. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +1 -3
  551. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +3 -21
  552. package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityRecords.d.ts +0 -23
  553. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +1 -2
  554. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyEnvelopeStore.d.ts +11 -19
  555. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +5 -54
  556. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +7 -19
  557. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.d.ts +4 -3
  558. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.d.ts +8 -12
  559. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +5 -8
  560. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +10 -22
  561. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +6 -2
  562. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +10 -6
  563. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +15 -22
  564. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +5 -3
  565. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.d.ts +4 -3
  566. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.d.ts +5 -5
  567. package/dist/types/wallet-server/src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.d.ts +3 -5
  568. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +0 -1
  569. package/dist/types/wallet-server/src/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.d.ts +0 -16
  570. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +29 -14
  571. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodBoundary.d.ts +15 -12
  572. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodRevocationReplayStore.d.ts +71 -0
  573. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +34 -24
  574. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +44 -26
  575. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +3 -7
  576. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +8 -19
  577. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleTenantRootLineage.d.ts +2 -1
  578. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +1 -0
  579. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.d.ts +15 -2
  580. package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +2 -2
  581. package/dist/types/wallet-server/src/router/domains/ecdsa/routerAbEcdsaStrictRegistration.d.ts +9 -7
  582. package/dist/types/wallet-server/src/router/domains/ecdsa/thresholdEcdsaRequestValidation.d.ts +4 -4
  583. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.d.ts +46 -0
  584. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +5 -3
  585. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +20 -79
  586. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +2 -0
  587. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRunner.d.ts +1 -1
  588. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.d.ts +4 -3
  589. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +62 -42
  590. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.d.ts +108 -32
  591. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryActivation.typecheck.d.ts +5 -0
  592. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.d.ts +36 -5
  593. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.d.ts +5 -4
  594. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.d.ts +41 -50
  595. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.d.ts +2 -2
  596. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.d.ts +3 -3
  597. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.d.ts +6 -5
  598. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationTwoPhaseRunner.d.ts +14 -4
  599. package/dist/types/wallet-server/src/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.d.ts +12 -1
  600. package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/routerAbEd25519YaoWalletSession.d.ts +5 -5
  601. package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/thresholdEd25519RequestValidation.d.ts +3 -4
  602. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpExportPolicy.d.ts +2 -27
  603. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpRequestValidation.d.ts +1 -2
  604. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpRouteHandlers.d.ts +2 -1
  605. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpSessionRouteHelpers.d.ts +2 -102
  606. package/dist/types/wallet-server/src/router/domains/passkeyCustody/envelopeRevocationAdmission.d.ts +2 -1
  607. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +3 -2
  608. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrievalRoute.d.ts +1 -9
  609. package/dist/types/wallet-server/src/router/domains/passkeyCustody/registrationCustodyOutcome.d.ts +2 -1
  610. package/dist/types/wallet-server/src/router/domains/passkeyCustody/verifiedCustodyFactor.d.ts +2 -1
  611. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.d.ts +2 -1
  612. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +2 -28
  613. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryFinalization.d.ts +43 -1
  614. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryKeyManifest.d.ts +7 -7
  615. package/dist/types/wallet-server/src/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.d.ts +0 -3
  616. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.d.ts +165 -0
  617. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.d.ts +110 -0
  618. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmission.d.ts +360 -0
  619. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.d.ts +11 -10
  620. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.typecheck.d.ts +2 -0
  621. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbOperationStepUp.d.ts +165 -0
  622. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +16 -702
  623. package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +5 -12
  624. package/dist/types/wallet-server/src/router/domains/syncAccount/syncAccountRequestValidation.d.ts +5 -4
  625. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootCustodyLineage.d.ts +6 -1
  626. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootIdentityResolution.d.ts +4 -7
  627. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +2 -1
  628. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +8 -8
  629. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +4 -4
  630. package/dist/types/wallet-server/src/router/domains/walletUnlock/walletUnlockRequestedCapabilitiesValidation.d.ts +4 -4
  631. package/dist/types/wallet-server/src/router/domains/walletUnlock/walletUnlockRouteHandlers.d.ts +4 -62
  632. package/dist/types/wallet-server/src/router/express-adaptor.d.ts +2 -2
  633. package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +64 -61
  634. package/dist/types/wallet-server/src/router/framework/http.d.ts +0 -1
  635. package/dist/types/wallet-server/src/router/framework/ror/normalize.d.ts +2 -2
  636. package/dist/types/wallet-server/src/router/framework/routeMeteringPolicy.d.ts +3 -2
  637. package/dist/types/wallet-server/src/router/framework/routerApi.d.ts +1 -1
  638. package/dist/types/wallet-server/src/router/framework/routerApiRouteSurface.d.ts +3 -3
  639. package/dist/types/wallet-server/src/router/node/nodeHostedWalletGateway.d.ts +34 -0
  640. package/dist/types/wallet-server/src/router/node/nodeHostedWalletGatewayCheck.d.ts +21 -0
  641. package/dist/types/wallet-server/src/router/node/nodeHostedWalletGatewayMain.d.ts +2 -0
  642. package/dist/types/wallet-server/src/router/node/nodeHttp.d.ts +13 -0
  643. package/dist/types/wallet-server/src/router/node/nodeSqlite.d.ts +22 -0
  644. package/dist/types/wallet-server/src/router/node/signerSqlMigrations.d.ts +20 -0
  645. package/dist/types/wallet-server/src/router/transport/fetch/createFetchRouter.d.ts +1 -3
  646. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +5 -6
  647. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.d.ts +2 -2
  648. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceManagement.d.ts +14 -16
  649. package/dist/types/wallet-server/src/router/transport/fetch/routes/normalSigningRouterProxy.d.ts +0 -12
  650. package/dist/types/wallet-server/src/router/transport/fetch/routes/passkeyCustody.d.ts +1 -1
  651. package/dist/types/wallet-server/src/router/transport/fetch/routes/sessions.d.ts +2 -1
  652. package/dist/types/wallet-server/src/router/transport/fetch/routes/syncAccountBootstrap.d.ts +7 -13
  653. package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +3 -57
  654. package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEd25519.d.ts +0 -44
  655. package/dist/types/wallet-server/src/storage/d1Sql.d.ts +7 -0
  656. package/dist/types/wallet-server/src/storage/syncSqlite.d.ts +28 -0
  657. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.d.ts +0 -1
  658. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/idempotencyRecords.d.ts +5 -6
  659. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/shared.d.ts +1 -0
  660. package/dist/types/wallet-server/src/threshold/statusCodes.d.ts +4 -4
  661. package/migrations/d1-signer/0036_r150_yao_lifecycle_decisions.sql +22 -0
  662. package/migrations/d1-signer/0037_r150_wallet_auth_method_revocation_replays.sql +26 -0
  663. package/migrations/d1-signer/0038_r150_registration_ceremony_cas_guard_seed.sql +8 -0
  664. package/migrations/d1-signer/0039_r150_revocation_replay_answer_kind.sql +9 -0
  665. package/package.json +1 -1
  666. package/dist/esm/core/ThresholdService/ecdsaClientRootProof.js +0 -27
  667. package/dist/esm/core/ThresholdService/routerAbEcdsaSigningWorkerWasm.js +0 -115
  668. package/dist/esm/core/ThresholdService/secureRandomId.js +0 -9
  669. package/dist/esm/core/authService/record.js +0 -8
  670. package/dist/esm/core/authService/thresholdRuntimePolicy.js +0 -19
  671. package/dist/esm/core/authService/walletRegistrationPlanning.js +0 -49
  672. package/dist/esm/core/deviceLinking/index.js +0 -5
  673. package/dist/esm/core/errors.js +0 -54
  674. package/dist/esm/core/routerAbSigning/createCloudflareDurableObjectRouterAbSigningRuntimes.js +0 -39
  675. package/dist/esm/core/signingLanes/WalletKeyStore.js +0 -0
  676. package/dist/esm/core/signingLanes/index.js +0 -8
  677. package/dist/esm/router/domains/tenantRoot/tenantRootEcdsaWalletSessionComposition.js +0 -55
  678. package/dist/esm/router/domains/tenantRoot/tenantRootEd25519WalletSessionComposition.js +0 -56
  679. package/dist/esm/shared-ts/src/signing-lanes/linkedEcdsaScope.js +0 -1
  680. package/dist/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_worker.js +0 -414
  681. package/dist/types/shared-ts/src/passkey-custody/credentialObservations.d.ts +0 -74
  682. package/dist/types/shared-ts/src/passkey-custody/kekContext.d.ts +0 -34
  683. package/dist/types/shared-ts/src/signing-lanes/linkedEcdsaScope.d.ts +0 -62
  684. package/dist/types/shared-ts/src/signing-lanes/linkedEcdsaScope.typecheck.d.ts +0 -2
  685. package/dist/types/shared-ts/src/signing-lanes/validation.d.ts +0 -11
  686. package/dist/types/shared-ts/src/utils/bigint.d.ts +0 -3
  687. package/dist/types/shared-ts/src/utils/paillier.d.ts +0 -37
  688. package/dist/types/shared-ts/src/utils/recoveryDomain.d.ts +0 -12
  689. package/dist/types/shared-ts/src/utils/signerDomain.typecheck.d.ts +0 -2
  690. package/dist/types/shared-ts/src/wallet-recovery/recoveryKekContext.d.ts +0 -37
  691. package/dist/types/wallet-server/src/core/ThresholdService/ecdsaClientRootProof.d.ts +0 -12
  692. package/dist/types/wallet-server/src/core/ThresholdService/routerAbEcdsaSigningWorkerWasm.d.ts +0 -17
  693. package/dist/types/wallet-server/src/core/ThresholdService/secureRandomId.d.ts +0 -2
  694. package/dist/types/wallet-server/src/core/authService/record.d.ts +0 -2
  695. package/dist/types/wallet-server/src/core/authService/thresholdRuntimePolicy.d.ts +0 -4
  696. package/dist/types/wallet-server/src/core/authService/walletRegistrationPlanning.d.ts +0 -19
  697. package/dist/types/wallet-server/src/core/deviceLinking/index.d.ts +0 -5
  698. package/dist/types/wallet-server/src/core/errors.d.ts +0 -10
  699. package/dist/types/wallet-server/src/core/routerAbSigning/createCloudflareDurableObjectRouterAbSigningRuntimes.d.ts +0 -28
  700. package/dist/types/wallet-server/src/core/signingLanes/SigningLaneStore.d.ts +0 -15
  701. package/dist/types/wallet-server/src/core/signingLanes/WalletKeyStore.d.ts +0 -13
  702. package/dist/types/wallet-server/src/core/signingLanes/index.d.ts +0 -11
  703. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootEcdsaWalletSessionComposition.d.ts +0 -35
  704. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootEd25519WalletSessionComposition.d.ts +0 -35
  705. /package/dist/esm/{core/signingLanes/SigningLaneStore.js → authorization/ecdsaWalletSessionAdmission.js} +0 -0
@@ -0,0 +1,668 @@
1
+ import { hasWhitespaceOrControlCharacters, parseLinkDeviceSessionId, parseVerifiedEmailAddress, parseWalletAuthMethodId, parseWalletAuthorityId } from "../../shared-ts/src/utils/domainIds.js";
2
+ import { parseDeviceId } from "../../shared-ts/src/authorization/capabilityKinds.js";
3
+ import { parseDigestB64u } from "../../shared-ts/src/utils/canonicalPrimitives.js";
4
+ import { assertNeverLinkSessionStateV1 } from "../../shared-ts/src/device-linking/contracts.js";
5
+ import { requireRecordCopy } from "../../shared-ts/src/utils/validation.js";
6
+ import { sameDelegatedWalletAuthorityV1 } from "../../shared-ts/src/authorization/delegatedAuthority.js";
7
+ import { parseExactAdministeredSignerManifestV1 } from "../../shared-ts/src/device-linking/delegatedActivationPlan.js";
8
+ import { parseLinkedDeviceOrdinaryMaterialSourceContributionPreparationTupleV1 } from "../../shared-ts/src/device-linking/sourceContribution.js";
9
+ import { parseLinkSessionStateV1, parseLinkedDeviceApprovalV1 as parseLinkedDeviceApprovalV1$1, parseLinkedDeviceSessionClaimV1, parseQrLinkedDeviceSessionPayloadV5 } from "../../shared-ts/src/device-linking/parsers.js";
10
+ import "../../shared-ts/src/device-linking/requestProof.js";
11
+ //#region src/core/deviceLinking/linkedDeviceSessionRecord.ts
12
+ function sourceKeyManifestDigestForFamilyV1(digests, keyFamily) {
13
+ switch (keyFamily) {
14
+ case "ed25519": return digests.ed25519 ?? null;
15
+ case "ecdsa_secp256k1": return digests.ecdsa_secp256k1 ?? null;
16
+ default: return assertNeverSourceKeyFamilyV1(keyFamily);
17
+ }
18
+ }
19
+ function assertNeverSourceKeyFamilyV1(value) {
20
+ throw new Error(`unsupported source key family: ${String(value)}`);
21
+ }
22
+ function buildUnclaimedSessionRecordV1(payload, nowMs) {
23
+ const parsedPayload = parseQrLinkedDeviceSessionPayloadV1(payload);
24
+ const createdAtMs = requireTimestamp(nowMs, "nowMs");
25
+ if (parsedPayload.issuedAtMs - createdAtMs > 6e4) throw new Error("link session issuedAtMs is in the future");
26
+ return buildSessionRecordV1({
27
+ linkSessionId: parsedPayload.linkSessionId,
28
+ qrPayload: parsedPayload,
29
+ state: { state: "displaying_qr" },
30
+ revision: 1,
31
+ createdAtMs,
32
+ updatedAtMs: createdAtMs
33
+ });
34
+ }
35
+ function parseLinkedDeviceSessionRecordV1(raw) {
36
+ const record = requireRecordCopy(raw, "linked device session record");
37
+ requireAllowedKeys(record, [
38
+ "version",
39
+ "linkSessionId",
40
+ "qrPayload",
41
+ "state",
42
+ "revision",
43
+ "claimTranscript",
44
+ "approvalTranscript",
45
+ "targetFactor",
46
+ "emailOtpChallenge",
47
+ "sourceContributionPreparation",
48
+ "sourceContributionTranscript",
49
+ "authorityId",
50
+ "packageSetDigestB64u",
51
+ "createdAtMs",
52
+ "updatedAtMs"
53
+ ]);
54
+ if (record.version !== "linked_device_session_v1") throw new Error("linked device session version is invalid");
55
+ const linkSessionId = parseId(record.linkSessionId, parseLinkDeviceSessionId, "linkSessionId");
56
+ const qrPayload = parseQrLinkedDeviceSessionPayloadV1(record.qrPayload);
57
+ if (qrPayload.linkSessionId !== linkSessionId) throw new Error("linkSessionId does not match QR payload");
58
+ const state = parseLinkSessionStateV1(record.state);
59
+ const revision = requirePositiveInteger(record.revision, "revision");
60
+ const createdAtMs = requireTimestamp(record.createdAtMs, "createdAtMs");
61
+ const updatedAtMs = requireTimestamp(record.updatedAtMs, "updatedAtMs");
62
+ if (updatedAtMs < createdAtMs) throw new Error("updatedAtMs precedes createdAtMs");
63
+ return buildSessionRecordV1({
64
+ linkSessionId,
65
+ qrPayload,
66
+ state,
67
+ revision,
68
+ claimTranscript: retiredShapeGuard("claimTranscript", () => parseOptionalClaimTranscript(record.claimTranscript)),
69
+ approvalTranscript: retiredShapeGuard("approvalTranscript", () => parseOptionalApprovalTranscript(record.approvalTranscript, "approvalTranscript")),
70
+ targetFactor: parseOptionalApprovedTargetFactor(record.targetFactor),
71
+ emailOtpChallenge: parseOptionalEmailOtpChallenge(record.emailOtpChallenge),
72
+ sourceContributionPreparation: parseOptionalSourceContributionPreparation(record.sourceContributionPreparation),
73
+ sourceContributionTranscript: retiredShapeGuard("sourceContributionTranscript", () => parseOptionalApprovalTranscript(record.sourceContributionTranscript, "sourceContributionTranscript")),
74
+ authorityId: parseOptionalId(record.authorityId, parseWalletAuthorityId, "authorityId"),
75
+ packageSetDigestB64u: parseOptionalDigest(record.packageSetDigestB64u, "packageSetDigestB64u"),
76
+ createdAtMs,
77
+ updatedAtMs
78
+ });
79
+ }
80
+ function parseQrLinkedDeviceSessionPayloadV1(raw) {
81
+ return parseQrLinkedDeviceSessionPayloadV5(raw);
82
+ }
83
+ function buildSessionRecordV1(input) {
84
+ requireRecordIdentityFacts(input);
85
+ switch (input.state.state) {
86
+ case "displaying_qr":
87
+ requireNoRecordFacts(input, "displaying_qr");
88
+ return {
89
+ version: "linked_device_session_v1",
90
+ linkSessionId: input.linkSessionId,
91
+ qrPayload: input.qrPayload,
92
+ state: input.state,
93
+ revision: input.revision,
94
+ createdAtMs: input.createdAtMs,
95
+ updatedAtMs: input.updatedAtMs
96
+ };
97
+ case "claimed":
98
+ requireClaimRecordFacts(input, "claimed");
99
+ return {
100
+ version: "linked_device_session_v1",
101
+ linkSessionId: input.linkSessionId,
102
+ qrPayload: input.qrPayload,
103
+ state: input.state,
104
+ claimTranscript: input.claimTranscript,
105
+ revision: input.revision,
106
+ createdAtMs: input.createdAtMs,
107
+ updatedAtMs: input.updatedAtMs
108
+ };
109
+ case "awaiting_target_factor": return buildApprovedSessionRecordV1(input);
110
+ case "awaiting_source_contribution": return buildSourceContributionSessionRecordV1(input);
111
+ case "provisioning": return buildProvisioningSessionRecordV1(input);
112
+ case "authority_pending_local_install": return buildPendingSessionRecordV1(input);
113
+ case "active": return buildActiveSessionRecordV1(input);
114
+ case "failed_before_commit":
115
+ case "cancelled":
116
+ case "expired":
117
+ requireTerminalRecordFacts(input, input.state.state);
118
+ return {
119
+ version: "linked_device_session_v1",
120
+ linkSessionId: input.linkSessionId,
121
+ qrPayload: input.qrPayload,
122
+ state: input.state,
123
+ ...input.claimTranscript ? { claimTranscript: input.claimTranscript } : {},
124
+ ...input.approvalTranscript ? { approvalTranscript: input.approvalTranscript } : {},
125
+ ...input.targetFactor ? { targetFactor: input.targetFactor } : {},
126
+ ...input.emailOtpChallenge ? { emailOtpChallenge: input.emailOtpChallenge } : {},
127
+ ...input.sourceContributionPreparation ? { sourceContributionPreparation: input.sourceContributionPreparation } : {},
128
+ ...input.sourceContributionTranscript ? { sourceContributionTranscript: input.sourceContributionTranscript } : {},
129
+ revision: input.revision,
130
+ createdAtMs: input.createdAtMs,
131
+ updatedAtMs: input.updatedAtMs
132
+ };
133
+ default: return assertNeverLinkSessionStateV1(input.state);
134
+ }
135
+ }
136
+ function buildApprovedSessionRecordV1(input) {
137
+ if (input.state.state !== "awaiting_target_factor") throw new Error("approved session state is invalid");
138
+ requireApprovedRecordFacts(input, input.state.state);
139
+ if (input.sourceContributionPreparation || input.sourceContributionTranscript) throw new Error("awaiting target-factor session contains source-contribution facts");
140
+ return approvedStageSessionRecordV1(input, input.state, {});
141
+ }
142
+ function buildSourceContributionSessionRecordV1(input) {
143
+ if (input.state.state !== "awaiting_source_contribution") throw new Error("source-contribution session state is invalid");
144
+ requireApprovedRecordFacts(input, input.state.state);
145
+ if (!input.sourceContributionPreparation || input.sourceContributionTranscript) throw new Error("source-contribution session facts are incomplete");
146
+ return approvedStageSessionRecordV1(input, input.state, { sourceContributionPreparation: input.sourceContributionPreparation });
147
+ }
148
+ function buildProvisioningSessionRecordV1(input) {
149
+ if (input.state.state !== "provisioning") throw new Error("provisioning session state is invalid");
150
+ requireApprovedRecordFacts(input, input.state.state);
151
+ if (!input.sourceContributionPreparation || !input.sourceContributionTranscript) throw new Error("provisioning session facts are incomplete");
152
+ return approvedStageSessionRecordV1(input, input.state, {
153
+ sourceContributionPreparation: input.sourceContributionPreparation,
154
+ sourceContributionTranscript: input.sourceContributionTranscript
155
+ });
156
+ }
157
+ function buildPendingSessionRecordV1(input) {
158
+ if (input.state.state !== "authority_pending_local_install") throw new Error("pending session state is invalid");
159
+ requireCommittedRecordFacts(input, input.state.state);
160
+ if (input.authorityId !== input.state.authorityId) throw new Error("pending authority facts do not match state");
161
+ if (input.packageSetDigestB64u !== input.state.packageSetDigestB64u) throw new Error("pending package digest does not match state");
162
+ return approvedStageSessionRecordV1(input, input.state, {
163
+ sourceContributionPreparation: input.sourceContributionPreparation,
164
+ sourceContributionTranscript: input.sourceContributionTranscript,
165
+ authorityId: input.authorityId,
166
+ packageSetDigestB64u: input.packageSetDigestB64u
167
+ });
168
+ }
169
+ function buildActiveSessionRecordV1(input) {
170
+ if (input.state.state !== "active") throw new Error("active session state is invalid");
171
+ requireCommittedRecordFacts(input, "active");
172
+ if (input.authorityId !== input.state.authorityId) throw new Error("active authority facts do not match state");
173
+ return approvedStageSessionRecordV1(input, input.state, {
174
+ sourceContributionPreparation: input.sourceContributionPreparation,
175
+ sourceContributionTranscript: input.sourceContributionTranscript,
176
+ authorityId: input.authorityId,
177
+ packageSetDigestB64u: input.packageSetDigestB64u
178
+ });
179
+ }
180
+ /**
181
+ * Lays out a record from owner approval onward, in the key order every stored record
182
+ * uses: the approval-stage facts, then the facts the caller's state adds.
183
+ */
184
+ function approvedStageSessionRecordV1(input, state, stageFacts) {
185
+ return {
186
+ version: "linked_device_session_v1",
187
+ linkSessionId: input.linkSessionId,
188
+ qrPayload: input.qrPayload,
189
+ state,
190
+ claimTranscript: input.claimTranscript,
191
+ approvalTranscript: input.approvalTranscript,
192
+ ...targetFactorRecordFieldsV1(input.targetFactor, input.emailOtpChallenge),
193
+ ...stageFacts,
194
+ revision: input.revision,
195
+ createdAtMs: input.createdAtMs,
196
+ updatedAtMs: input.updatedAtMs
197
+ };
198
+ }
199
+ /** A passkey record never carries Email OTP challenge state. */
200
+ function targetFactorRecordFieldsV1(targetFactor, emailOtpChallenge) {
201
+ if (targetFactor.kind === "passkey_prf") return { targetFactor };
202
+ return {
203
+ targetFactor,
204
+ ...emailOtpChallenge ? { emailOtpChallenge } : {}
205
+ };
206
+ }
207
+ function replaceSessionRecordV1(record, patch) {
208
+ return buildSessionRecordV1({
209
+ linkSessionId: record.linkSessionId,
210
+ qrPayload: record.qrPayload,
211
+ state: patch.state ?? record.state,
212
+ revision: patch.revision,
213
+ claimTranscript: patch.claimTranscript ?? record.claimTranscript,
214
+ approvalTranscript: patch.approvalTranscript ?? record.approvalTranscript,
215
+ targetFactor: patch.targetFactor ?? record.targetFactor,
216
+ emailOtpChallenge: patch.emailOtpChallenge ?? record.emailOtpChallenge,
217
+ sourceContributionPreparation: patch.sourceContributionPreparation ?? record.sourceContributionPreparation,
218
+ sourceContributionTranscript: patch.sourceContributionTranscript ?? record.sourceContributionTranscript,
219
+ authorityId: patch.authorityId ?? record.authorityId,
220
+ packageSetDigestB64u: patch.packageSetDigestB64u ?? record.packageSetDigestB64u,
221
+ createdAtMs: record.createdAtMs,
222
+ updatedAtMs: patch.updatedAtMs
223
+ });
224
+ }
225
+ /** Builds the next linear session record for the authority commit transaction. */
226
+ function buildAuthorityPendingLocalInstallSessionRecordV1(input) {
227
+ const nowMs = requireTimestamp(input.nowMs, "nowMs");
228
+ if (input.record.state.state !== "provisioning") throw new Error("linked-device session is not ready for authority commit");
229
+ return replaceSessionRecordV1(input.record, {
230
+ state: authorityPendingStateV1(input.record, input.authorityId, input.packageSetDigestB64u),
231
+ authorityId: input.authorityId,
232
+ packageSetDigestB64u: input.packageSetDigestB64u,
233
+ revision: input.record.revision + 1,
234
+ updatedAtMs: nowMs
235
+ });
236
+ }
237
+ /** Builds the next linear session record for the authority activation transaction. */
238
+ function buildAuthorityActiveSessionRecordV1(input) {
239
+ const nowMs = requireTimestamp(input.nowMs, "nowMs");
240
+ const activatedAtMs = requireTimestamp(input.activatedAtMs, "activatedAtMs");
241
+ if (activatedAtMs > nowMs) throw new Error("activatedAtMs cannot be in the future");
242
+ if (input.record.state.state !== "authority_pending_local_install") throw new Error("linked-device session has no pending authority installation");
243
+ return replaceSessionRecordV1(input.record, {
244
+ state: activeStateV1(input.record, activatedAtMs),
245
+ revision: input.record.revision + 1,
246
+ updatedAtMs: nowMs
247
+ });
248
+ }
249
+ function claimedStateV1(record, claim) {
250
+ if (record.state.state !== "displaying_qr") throw new Error("link session is not claimable");
251
+ return {
252
+ state: "claimed",
253
+ deviceId: parseDeviceIdValue(claim.deviceId)
254
+ };
255
+ }
256
+ function awaitingTargetFactorStateV1(record) {
257
+ if (record.state.state !== "claimed") throw new Error("link session is not awaiting owner approval");
258
+ return {
259
+ state: "awaiting_target_factor",
260
+ deviceId: record.state.deviceId
261
+ };
262
+ }
263
+ function provisioningStateV1(record) {
264
+ if (record.state.state !== "awaiting_source_contribution") throw new Error("link session is not awaiting source contribution");
265
+ return {
266
+ state: "provisioning",
267
+ deviceId: record.state.deviceId
268
+ };
269
+ }
270
+ function awaitingSourceContributionStateV1(record) {
271
+ if (record.state.state !== "awaiting_target_factor") throw new Error("link session is not awaiting target credential");
272
+ return {
273
+ state: "awaiting_source_contribution",
274
+ deviceId: record.state.deviceId
275
+ };
276
+ }
277
+ function authorityPendingStateV1(record, authorityId, packageSetDigestB64u) {
278
+ if (record.state.state !== "provisioning") throw new Error("link session has no pending authority installation");
279
+ return {
280
+ state: "authority_pending_local_install",
281
+ deviceId: record.state.deviceId,
282
+ authorityId,
283
+ packageSetDigestB64u
284
+ };
285
+ }
286
+ function activeStateV1(record, activatedAtMs) {
287
+ if (record.state.state !== "authority_pending_local_install") throw new Error("link session has no pending authority installation");
288
+ return {
289
+ state: "active",
290
+ deviceId: record.state.deviceId,
291
+ authorityId: record.state.authorityId,
292
+ activatedAtMs
293
+ };
294
+ }
295
+ function isPrecommitState(state) {
296
+ switch (state.state) {
297
+ case "displaying_qr":
298
+ case "claimed":
299
+ case "awaiting_target_factor":
300
+ case "awaiting_source_contribution":
301
+ case "provisioning": return true;
302
+ case "authority_pending_local_install":
303
+ case "active":
304
+ case "failed_before_commit":
305
+ case "cancelled":
306
+ case "expired": return false;
307
+ default: return assertNeverLinkSessionStateV1(state);
308
+ }
309
+ }
310
+ function sessionExpiryMsV1(record) {
311
+ switch (record.state.state) {
312
+ case "displaying_qr": return record.qrPayload.expiresAtMs;
313
+ case "claimed": return record.claimTranscript?.value.claimExpiresAtMs ?? record.qrPayload.expiresAtMs;
314
+ case "awaiting_target_factor":
315
+ case "awaiting_source_contribution":
316
+ case "provisioning": return record.approvalTranscript?.value.expiresAtMs ?? record.qrPayload.expiresAtMs;
317
+ case "authority_pending_local_install":
318
+ case "active":
319
+ case "failed_before_commit":
320
+ case "cancelled":
321
+ case "expired": return Number.POSITIVE_INFINITY;
322
+ default: return assertNeverLinkSessionStateV1(record.state);
323
+ }
324
+ }
325
+ function awaitingTargetDeadlineMsV1(record) {
326
+ if (record.state.state !== "awaiting_target_factor") throw new Error("link session is not awaiting target factor");
327
+ return record.approvalTranscript?.value.expiresAtMs ?? record.qrPayload.expiresAtMs;
328
+ }
329
+ function awaitingSourceContributionDeadlineMsV1(record) {
330
+ if (record.state.state !== "awaiting_source_contribution") throw new Error("link session is not awaiting source contribution");
331
+ return record.approvalTranscript?.value.expiresAtMs ?? record.qrPayload.expiresAtMs;
332
+ }
333
+ function linkedDeviceQrPayloadsEqualV1(left, right) {
334
+ if (left.version !== right.version || left.purpose !== right.purpose || left.linkSessionId !== right.linkSessionId || left.linkPublicKeyB64u !== right.linkPublicKeyB64u || left.devicePublicKeyB64u !== right.devicePublicKeyB64u || !sameDelegatedWalletAuthorityV1(left.requestedPermission, right.requestedPermission) || left.issuedAtMs !== right.issuedAtMs || left.expiresAtMs !== right.expiresAtMs) return false;
335
+ switch (left.targetFactor.kind) {
336
+ case "passkey_prf": return right.targetFactor.kind === "passkey_prf";
337
+ case "email_otp": return right.targetFactor.kind === "email_otp" && left.targetEmail === right.targetEmail;
338
+ default: return assertNeverLinkedDeviceTargetFactorV1(left.targetFactor);
339
+ }
340
+ }
341
+ function claimTranscriptMatchesDigest(record, digest) {
342
+ return record.claimTranscript?.digestB64u === digest;
343
+ }
344
+ function approvalTranscriptMatchesDigest(record, digest) {
345
+ return record.approvalTranscript?.digestB64u === digest;
346
+ }
347
+ function sourceContributionTranscriptMatchesDigest(record, digest) {
348
+ return record.sourceContributionTranscript?.digestB64u === digest;
349
+ }
350
+ function linkedDeviceEmailOtpChallengesEqualV1(left, right) {
351
+ switch (left.state) {
352
+ case "available": return right.state === "available" && left.maskedEmailHint === right.maskedEmailHint;
353
+ case "sent": return right.state === "sent" && left.challengeId === right.challengeId && left.workerEphemeralPublicKey65B64u === right.workerEphemeralPublicKey65B64u && left.maskedEmailHint === right.maskedEmailHint && left.expiresAtMs === right.expiresAtMs && left.resendAvailableAtMs === right.resendAvailableAtMs;
354
+ default: return assertNeverLinkedDeviceEmailOtpChallengeV1(left);
355
+ }
356
+ }
357
+ function linkedDevicePrecommitFailuresEqualV1(left, right) {
358
+ switch (left.kind) {
359
+ case "invalid_input": return right.kind === "invalid_input" && left.reason === right.reason;
360
+ case "unauthorized_source": return right.kind === "unauthorized_source" && left.reason === right.reason;
361
+ case "revoked_source": return right.kind === "revoked_source" && left.reason === right.reason;
362
+ case "permission_attenuation_failed": return right.kind === "permission_attenuation_failed" && left.reason === right.reason;
363
+ case "target_factor_failed": return right.kind === "target_factor_failed" && left.reason === right.reason;
364
+ case "expired_session": return right.kind === "expired_session" && left.reason === right.reason;
365
+ case "cancelled_session": return right.kind === "cancelled_session" && left.reason === right.reason;
366
+ case "claim_conflict": return right.kind === "claim_conflict" && left.reason === right.reason;
367
+ case "package_preparation_failed": return right.kind === "package_preparation_failed" && left.reason === right.reason;
368
+ default: return assertNeverLinkPrecommitFailureV1(left);
369
+ }
370
+ }
371
+ function assertNeverLinkedDeviceTargetFactorV1(value) {
372
+ throw new Error(`unsupported linked-device target factor: ${String(value)}`);
373
+ }
374
+ function assertNeverLinkedDeviceEmailOtpChallengeV1(value) {
375
+ throw new Error(`unsupported linked-device email OTP challenge: ${String(value)}`);
376
+ }
377
+ function assertNeverLinkPrecommitFailureV1(value) {
378
+ throw new Error(`unsupported linked-device precommit failure: ${String(value)}`);
379
+ }
380
+ function parseLinkedDeviceApprovalV1(raw) {
381
+ return parseLinkedDeviceApprovalV1$1(raw);
382
+ }
383
+ function parseLinkedDeviceClaimV1(raw) {
384
+ return parseLinkedDeviceSessionClaimV1(raw);
385
+ }
386
+ function parseOptionalClaimTranscript(raw) {
387
+ if (raw === void 0) return void 0;
388
+ const record = requireRecordCopy(raw, "claimTranscript");
389
+ requireExactKeys(record, ["digestB64u", "value"]);
390
+ return {
391
+ digestB64u: requireDigest(record.digestB64u, "claimTranscript.digestB64u"),
392
+ value: parseLinkedDeviceClaimV1(record.value)
393
+ };
394
+ }
395
+ /**
396
+ * A stored transcript no longer parses under the current schema. This class
397
+ * marks exactly the failures a deployment boundary produces - transcript
398
+ * shapes are what refactors move - so a store can delete-and-recover them
399
+ * while every value-consistency failure (tampering) keeps throwing raw.
400
+ */
401
+ var LinkedDeviceRetiredSessionShapeErrorV1 = class extends Error {
402
+ constructor(transcript, cause) {
403
+ super(`linked-device ${transcript} shape is retired: ${cause instanceof Error ? cause.message : String(cause)}`);
404
+ this.name = "LinkedDeviceRetiredSessionShapeErrorV1";
405
+ }
406
+ };
407
+ function retiredShapeGuard(transcript, parse) {
408
+ try {
409
+ return parse();
410
+ } catch (error) {
411
+ if (error instanceof LinkedDeviceRetiredSessionShapeErrorV1) throw error;
412
+ throw new LinkedDeviceRetiredSessionShapeErrorV1(transcript, error);
413
+ }
414
+ }
415
+ /** The owner approval and its source-contribution re-approval share one transcript shape. */
416
+ function parseOptionalApprovalTranscript(raw, field) {
417
+ if (raw === void 0) return void 0;
418
+ const record = requireRecordCopy(raw, field);
419
+ requireExactKeys(record, [
420
+ "digestB64u",
421
+ "value",
422
+ "sourceSignerManifest",
423
+ "sourceKeyManifestDigestsB64u",
424
+ "sourceAuthorityDigestB64u"
425
+ ]);
426
+ const value = parseLinkedDeviceApprovalV1(record.value);
427
+ if (field === "sourceContributionTranscript" && !value.sourceContribution) throw new Error(`${field}.value has no source contribution`);
428
+ const sourceKeyManifestDigestsB64u = parseSourceKeyManifestDigestsV1(record.sourceKeyManifestDigestsB64u, `${field}.sourceKeyManifestDigestsB64u`);
429
+ const sourceSignerManifest = parseExactAdministeredSignerManifestV1(record.sourceSignerManifest);
430
+ assertSourceKeyManifestDigestFamiliesMatchManifestV1(sourceSignerManifest, sourceKeyManifestDigestsB64u);
431
+ return {
432
+ digestB64u: requireDigest(record.digestB64u, `${field}.digestB64u`),
433
+ value,
434
+ sourceSignerManifest,
435
+ sourceKeyManifestDigestsB64u,
436
+ sourceAuthorityDigestB64u: requireDigest(record.sourceAuthorityDigestB64u, `${field}.sourceAuthorityDigestB64u`)
437
+ };
438
+ }
439
+ function parseSourceKeyManifestDigestsV1(raw, field) {
440
+ const record = requireRecordCopy(raw, field);
441
+ const keys = Object.keys(record).sort();
442
+ if (keys.length === 1 && keys[0] === "ed25519") return { ed25519: requireDigest(record.ed25519, `${field}.ed25519`) };
443
+ if (keys.length === 1 && keys[0] === "ecdsa_secp256k1") return { ecdsa_secp256k1: requireDigest(record.ecdsa_secp256k1, `${field}.ecdsa_secp256k1`) };
444
+ if (keys.length === 2 && keys[0] === "ecdsa_secp256k1" && keys[1] === "ed25519") return {
445
+ ed25519: requireDigest(record.ed25519, `${field}.ed25519`),
446
+ ecdsa_secp256k1: requireDigest(record.ecdsa_secp256k1, `${field}.ecdsa_secp256k1`)
447
+ };
448
+ throw new Error(`${field} must contain exactly one digest for each approved source key family`);
449
+ }
450
+ function parseOptionalSourceContributionPreparation(raw) {
451
+ if (raw === void 0) return void 0;
452
+ return parseLinkedDeviceOrdinaryMaterialSourceContributionPreparationTupleV1(raw);
453
+ }
454
+ function assertSourceKeyManifestDigestFamiliesMatchManifestV1(manifest, digests) {
455
+ const manifestHasEd25519 = manifest.keyFamilies.some((family) => family === "ed25519");
456
+ const manifestHasEcdsa = manifest.keyFamilies.some((family) => family === "ecdsa_secp256k1");
457
+ const digestHasEd25519 = digests.ed25519 !== void 0;
458
+ const digestHasEcdsa = digests.ecdsa_secp256k1 !== void 0;
459
+ if (manifestHasEd25519 !== digestHasEd25519 || manifestHasEcdsa !== digestHasEcdsa) throw new Error("source key manifest digest families do not match the verified signer manifest");
460
+ }
461
+ function parseOptionalApprovedTargetFactor(raw) {
462
+ if (raw === void 0) return void 0;
463
+ const record = requireRecordCopy(raw, "targetFactor");
464
+ if (record.kind === "passkey_prf") {
465
+ requireExactKeys(record, ["kind"]);
466
+ return { kind: "passkey_prf" };
467
+ }
468
+ if (record.kind === "email_otp") {
469
+ const targetEmail = parseId(record.targetEmail, parseVerifiedEmailAddress, "targetFactor.targetEmail");
470
+ const enrollment = requireRecordCopy(record.enrollment, "targetFactor.enrollment");
471
+ if (enrollment.kind === "existing_enrollment") {
472
+ requireExactKeys(record, [
473
+ "kind",
474
+ "targetEmail",
475
+ "enrollment",
476
+ "baseWalletAuthMethodId"
477
+ ]);
478
+ requireExactKeys(enrollment, ["kind"]);
479
+ return {
480
+ kind: "email_otp",
481
+ targetEmail,
482
+ enrollment: { kind: "existing_enrollment" },
483
+ baseWalletAuthMethodId: parseId(record.baseWalletAuthMethodId, parseWalletAuthMethodId, "targetFactor.baseWalletAuthMethodId")
484
+ };
485
+ }
486
+ if (enrollment.kind === "new_enrollment") {
487
+ requireExactKeys(record, [
488
+ "kind",
489
+ "targetEmail",
490
+ "enrollment"
491
+ ]);
492
+ requireExactKeys(enrollment, ["kind"]);
493
+ return {
494
+ kind: "email_otp",
495
+ targetEmail,
496
+ enrollment: { kind: "new_enrollment" }
497
+ };
498
+ }
499
+ throw new Error("targetFactor.enrollment.kind is invalid");
500
+ }
501
+ throw new Error("targetFactor.kind is invalid");
502
+ }
503
+ function parseOptionalEmailOtpChallenge(raw) {
504
+ if (raw === void 0) return void 0;
505
+ const record = requireRecordCopy(raw, "emailOtpChallenge");
506
+ const state = parseIdentityString(record.state, "emailOtpChallenge.state");
507
+ if (state === "available") {
508
+ requireExactKeys(record, ["state", "maskedEmailHint"]);
509
+ return {
510
+ state,
511
+ maskedEmailHint: parseIdentityString(record.maskedEmailHint, "emailOtpChallenge.maskedEmailHint")
512
+ };
513
+ }
514
+ if (state === "sent") {
515
+ requireExactKeys(record, ["state", ...SENT_EMAIL_OTP_CHALLENGE_KEYS]);
516
+ return parseSentEmailOtpChallengeFieldsV1(record, "emailOtpChallenge");
517
+ }
518
+ throw new Error("emailOtpChallenge.state is invalid");
519
+ }
520
+ function parseEmailOtpChallengeV1(raw) {
521
+ const record = requireRecordCopy(raw, "challenge");
522
+ requireExactKeys(record, SENT_EMAIL_OTP_CHALLENGE_KEYS);
523
+ return parseSentEmailOtpChallengeFieldsV1(record, "challenge");
524
+ }
525
+ const SENT_EMAIL_OTP_CHALLENGE_KEYS = [
526
+ "challengeId",
527
+ "workerEphemeralPublicKey65B64u",
528
+ "maskedEmailHint",
529
+ "expiresAtMs",
530
+ "resendAvailableAtMs"
531
+ ];
532
+ /** A stored challenge and a newly sent one parse the same fields under their own prefix. */
533
+ function parseSentEmailOtpChallengeFieldsV1(record, field) {
534
+ return {
535
+ state: "sent",
536
+ challengeId: parseIdentityString(record.challengeId, `${field}.challengeId`),
537
+ workerEphemeralPublicKey65B64u: parseIdentityString(record.workerEphemeralPublicKey65B64u, `${field}.workerEphemeralPublicKey65B64u`),
538
+ maskedEmailHint: parseIdentityString(record.maskedEmailHint, `${field}.maskedEmailHint`),
539
+ expiresAtMs: requireTimestamp(record.expiresAtMs, `${field}.expiresAtMs`),
540
+ resendAvailableAtMs: requireTimestamp(record.resendAvailableAtMs, `${field}.resendAvailableAtMs`)
541
+ };
542
+ }
543
+ function requireNoRecordFacts(input, state) {
544
+ if (input.claimTranscript || input.approvalTranscript || input.targetFactor || input.emailOtpChallenge || input.sourceContributionPreparation || input.sourceContributionTranscript || input.authorityId || input.packageSetDigestB64u) throw new Error(`${state} session carries invalid durable facts`);
545
+ }
546
+ function requireClaimRecordFacts(input, state) {
547
+ if (!input.claimTranscript || input.approvalTranscript || input.targetFactor || input.emailOtpChallenge || input.sourceContributionPreparation || input.sourceContributionTranscript || input.authorityId || input.packageSetDigestB64u) throw new Error(`${state} session facts are invalid`);
548
+ }
549
+ function requireApprovedRecordFacts(input, state) {
550
+ if (!input.claimTranscript || !input.approvalTranscript || !input.targetFactor) throw new Error(`${state} session facts are incomplete`);
551
+ if (input.authorityId || input.packageSetDigestB64u) throw new Error(`${state} session contains committed facts`);
552
+ if (input.targetFactor.kind === "passkey_prf" && input.emailOtpChallenge) throw new Error(`${state} passkey session contains email challenge state`);
553
+ }
554
+ function requireCommittedRecordFacts(input, state) {
555
+ if (!input.claimTranscript || !input.approvalTranscript || !input.targetFactor || !input.authorityId || !input.packageSetDigestB64u) throw new Error(`${state} session facts are incomplete`);
556
+ if (!input.sourceContributionPreparation || !input.sourceContributionTranscript) throw new Error(`${state} session source-contribution facts are incomplete`);
557
+ if (input.targetFactor.kind === "passkey_prf" && input.emailOtpChallenge) throw new Error(`${state} passkey session contains email challenge state`);
558
+ }
559
+ function requireNoCommittedFacts(input, state) {
560
+ if (input.authorityId || input.packageSetDigestB64u) throw new Error(`${state} session contains committed facts`);
561
+ }
562
+ function requireRecordIdentityFacts(input) {
563
+ if (input.targetFactor && input.targetFactor.kind !== input.qrPayload.targetFactor.kind) throw new Error("target factor does not match QR payload");
564
+ const claim = input.claimTranscript?.value;
565
+ if (claim) {
566
+ if (claim.linkSessionId !== input.linkSessionId || claim.devicePublicKeyB64u !== input.qrPayload.devicePublicKeyB64u || claim.targetFactor.kind !== input.qrPayload.targetFactor.kind) throw new Error("claim transcript identity does not match QR payload");
567
+ }
568
+ const approval = input.approvalTranscript?.value;
569
+ if (approval) {
570
+ if (approval.linkSessionId !== input.linkSessionId || approval.linkPublicKeyB64u !== input.qrPayload.linkPublicKeyB64u || approval.devicePublicKeyB64u !== input.qrPayload.devicePublicKeyB64u || approval.targetFactor.kind !== input.qrPayload.targetFactor.kind) throw new Error("approval transcript identity does not match QR payload");
571
+ }
572
+ if (claim && approval && parseDeviceIdValue(claim.deviceId) !== parseDeviceIdValue(approval.deviceId)) throw new Error("approval transcript device identity does not match claim transcript");
573
+ switch (input.state.state) {
574
+ case "displaying_qr":
575
+ case "failed_before_commit":
576
+ case "cancelled":
577
+ case "expired": return;
578
+ case "claimed":
579
+ case "awaiting_target_factor":
580
+ case "awaiting_source_contribution":
581
+ case "provisioning":
582
+ if (!claim || input.state.deviceId !== parseDeviceIdValue(claim.deviceId)) throw new Error(`${input.state.state} device identity does not match claim transcript`);
583
+ return;
584
+ case "authority_pending_local_install":
585
+ case "active":
586
+ if (!claim || !approval || input.state.deviceId !== parseDeviceIdValue(claim.deviceId) || input.state.deviceId !== parseDeviceIdValue(approval.deviceId)) throw new Error(`${input.state.state} device identity does not match transcripts`);
587
+ return;
588
+ default: return assertNeverLinkSessionStateV1(input.state);
589
+ }
590
+ }
591
+ function requireTerminalRecordFacts(input, state) {
592
+ requireNoCommittedFacts(input, state);
593
+ if (!input.claimTranscript && (input.approvalTranscript || input.targetFactor || input.emailOtpChallenge)) throw new Error(`${state} session facts are incomplete`);
594
+ if (!input.approvalTranscript && input.emailOtpChallenge) throw new Error(`${state} session email challenge has no approval`);
595
+ if (input.sourceContributionTranscript && !input.sourceContributionPreparation) throw new Error(`${state} source contribution transcript has no preparation`);
596
+ if (input.sourceContributionPreparation && (!input.approvalTranscript || !input.targetFactor)) throw new Error(`${state} source contribution preparation has no approval`);
597
+ if (input.approvalTranscript && !input.targetFactor) throw new Error(`${state} session approval has no target factor`);
598
+ if (input.targetFactor?.kind === "passkey_prf" && input.emailOtpChallenge) throw new Error(`${state} passkey session contains email challenge state`);
599
+ }
600
+ function parseDeviceIdValue(raw) {
601
+ const parsed = parseDeviceId(raw);
602
+ if (!parsed.ok) throw new Error(`deviceId: ${parsed.error.message}`);
603
+ return parsed.value;
604
+ }
605
+ function parseId(raw, parser, field) {
606
+ const parsed = parser(raw);
607
+ if (!parsed.ok) throw new Error(`${field}: ${parsed.error.message}`);
608
+ return parsed.value;
609
+ }
610
+ function parseOptionalId(raw, parser, field) {
611
+ return raw === void 0 ? void 0 : parseId(raw, parser, field);
612
+ }
613
+ function parseIdentityString(raw, field) {
614
+ if (typeof raw !== "string" || raw.length === 0 || raw.trim() !== raw || hasWhitespaceOrControlCharacters(raw)) throw new Error(`${field} is invalid`);
615
+ return raw;
616
+ }
617
+ function requireDigest(raw, field) {
618
+ try {
619
+ return parseDigestB64u(raw);
620
+ } catch {
621
+ throw new Error(`${field} is invalid`);
622
+ }
623
+ }
624
+ function parseOptionalDigest(raw, field) {
625
+ return raw === void 0 ? void 0 : requireDigest(raw, field);
626
+ }
627
+ function requireTimestamp(raw, field) {
628
+ if (!Number.isSafeInteger(raw) || Number(raw) <= 0) throw new Error(`${field} must be a positive safe integer`);
629
+ return Number(raw);
630
+ }
631
+ function requirePositiveInteger(raw, field) {
632
+ return requireTimestamp(raw, field);
633
+ }
634
+ function requireExactKeys(record, expected) {
635
+ const actual = Object.keys(record).sort();
636
+ const required = [...expected].sort();
637
+ if (actual.length !== required.length || actual.some((key, index) => key !== required[index])) throw new Error("record contains invalid fields");
638
+ }
639
+ function requireAllowedKeys(record, allowed) {
640
+ const allowedSet = new Set(allowed);
641
+ for (const key of Object.keys(record)) if (!allowedSet.has(key)) throw new Error("record contains invalid fields");
642
+ }
643
+ function conflictResult(expectedRevision, record) {
644
+ return {
645
+ outcome: "conflict",
646
+ expectedRevision,
647
+ actualRevision: record?.revision ?? null,
648
+ record
649
+ };
650
+ }
651
+ function invalidStateResult(record) {
652
+ return {
653
+ outcome: "invalid_state",
654
+ state: record.state.state,
655
+ record
656
+ };
657
+ }
658
+ function integrityResult(record, reason) {
659
+ return {
660
+ outcome: "integrity_error",
661
+ reason,
662
+ record
663
+ };
664
+ }
665
+ //#endregion
666
+ export { LinkedDeviceRetiredSessionShapeErrorV1, activeStateV1, approvalTranscriptMatchesDigest, authorityPendingStateV1, awaitingSourceContributionDeadlineMsV1, awaitingSourceContributionStateV1, awaitingTargetDeadlineMsV1, awaitingTargetFactorStateV1, buildAuthorityActiveSessionRecordV1, buildAuthorityPendingLocalInstallSessionRecordV1, buildUnclaimedSessionRecordV1, claimTranscriptMatchesDigest, claimedStateV1, conflictResult, integrityResult, invalidStateResult, isPrecommitState, linkedDeviceEmailOtpChallengesEqualV1, linkedDevicePrecommitFailuresEqualV1, linkedDeviceQrPayloadsEqualV1, parseDeviceIdValue, parseEmailOtpChallengeV1, parseId, parseLinkedDeviceSessionRecordV1, parseQrLinkedDeviceSessionPayloadV1, provisioningStateV1, replaceSessionRecordV1, requireDigest, requireTimestamp, sessionExpiryMsV1, sourceContributionTranscriptMatchesDigest, sourceKeyManifestDigestForFamilyV1 };
667
+
668
+ //# sourceMappingURL=linkedDeviceSessionRecord.js.map