@seams/wallet-server 0.6.2 → 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
@@ -1,25 +1,10 @@
1
- import { hasWhitespaceOrControlCharacters, mpcMaterialActivationRefsEqual, 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 { parseExactAdministeredSignerManifestV1 } from "../../shared-ts/src/device-linking/delegatedActivationPlan.js";
6
- import { hasDelegatedWalletPermissionV1, sameDelegatedWalletAuthorityV1, validateDelegatedWalletAuthorityAttenuationV1 } from "../../shared-ts/src/authorization/delegatedAuthority.js";
7
- import { routerAbMpcMaterialActivationRefFromWire, sameRouterAbMpcMaterialActivationRef } from "../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
8
- import { assertLinkedDeviceOrdinaryMaterialSourceContributionMatchesContextV1, 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";
1
+ import { parseLinkDeviceSessionId, parseWalletAuthorityId } from "../../shared-ts/src/utils/domainIds.js";
2
+ import { parseLinkedDeviceOrdinaryMaterialSourceContributionPreparationTupleV1 } from "../../shared-ts/src/device-linking/sourceContribution.js";
3
+ import { parseLinkedDeviceApprovalV1 } from "../../shared-ts/src/device-linking/parsers.js";
10
4
  import { computeLinkedDeviceApprovalDigestV1, computeLinkedDeviceSessionClaimDigestV1 } from "../../shared-ts/src/device-linking/digests.js";
11
- import "../../shared-ts/src/device-linking/requestProof.js";
5
+ import { activeStateV1, approvalTranscriptMatchesDigest, authorityPendingStateV1, awaitingSourceContributionDeadlineMsV1, awaitingSourceContributionStateV1, awaitingTargetDeadlineMsV1, awaitingTargetFactorStateV1, buildUnclaimedSessionRecordV1, claimTranscriptMatchesDigest, claimedStateV1, conflictResult, integrityResult, invalidStateResult, isPrecommitState, linkedDeviceEmailOtpChallengesEqualV1, linkedDevicePrecommitFailuresEqualV1, linkedDeviceQrPayloadsEqualV1, parseEmailOtpChallengeV1, parseId, parseQrLinkedDeviceSessionPayloadV1, provisioningStateV1, replaceSessionRecordV1, requireDigest, requireTimestamp, sessionExpiryMsV1, sourceContributionTranscriptMatchesDigest } from "./linkedDeviceSessionRecord.js";
6
+ import { validateApprovalMatchesSession, validateLinkedDeviceRequestedAuthorityV1, validateSourceContributionApprovalMatchesSession, validateSourceContributionPreparationMatchesApproval } from "./linkedDeviceSessionApproval.js";
12
7
  //#region src/core/deviceLinking/linkedDeviceSession.ts
13
- function sourceKeyManifestDigestForFamilyV1(digests, keyFamily) {
14
- switch (keyFamily) {
15
- case "ed25519": return digests.ed25519 ?? null;
16
- case "ecdsa_secp256k1": return digests.ecdsa_secp256k1 ?? null;
17
- default: return assertNeverSourceKeyFamilyV1(keyFamily);
18
- }
19
- }
20
- function assertNeverSourceKeyFamilyV1(value) {
21
- throw new Error(`unsupported source key family: ${String(value)}`);
22
- }
23
8
  var LinkedDeviceSessionServiceV1 = class {
24
9
  constructor(input) {
25
10
  this.store = input.store;
@@ -472,467 +457,6 @@ async function digestTranscriptV1(kind, value) {
472
457
  if (!isLinkedDeviceApprovalV1(value)) throw new Error("approval transcript value is invalid");
473
458
  return computeLinkedDeviceApprovalDigestV1(value);
474
459
  }
475
- function buildUnclaimedSessionRecordV1(payload, nowMs) {
476
- const parsedPayload = parseQrLinkedDeviceSessionPayloadV1(payload);
477
- const createdAtMs = requireTimestamp(nowMs, "nowMs");
478
- if (parsedPayload.issuedAtMs - createdAtMs > 6e4) throw new Error("link session issuedAtMs is in the future");
479
- return buildSessionRecordV1({
480
- linkSessionId: parsedPayload.linkSessionId,
481
- qrPayload: parsedPayload,
482
- state: { state: "displaying_qr" },
483
- revision: 1,
484
- createdAtMs,
485
- updatedAtMs: createdAtMs
486
- });
487
- }
488
- function parseLinkedDeviceSessionRecordV1(raw) {
489
- const record = requireRecord(raw, "linked device session record");
490
- requireAllowedKeys(record, [
491
- "version",
492
- "linkSessionId",
493
- "qrPayload",
494
- "state",
495
- "revision",
496
- "claimTranscript",
497
- "approvalTranscript",
498
- "targetFactor",
499
- "emailOtpChallenge",
500
- "sourceContributionPreparation",
501
- "sourceContributionTranscript",
502
- "authorityId",
503
- "packageSetDigestB64u",
504
- "createdAtMs",
505
- "updatedAtMs"
506
- ]);
507
- if (record.version !== "linked_device_session_v1") throw new Error("linked device session version is invalid");
508
- const linkSessionId = parseId(record.linkSessionId, parseLinkDeviceSessionId, "linkSessionId");
509
- const qrPayload = parseQrLinkedDeviceSessionPayloadV1(record.qrPayload);
510
- if (qrPayload.linkSessionId !== linkSessionId) throw new Error("linkSessionId does not match QR payload");
511
- const state = parseLinkSessionStateV1(record.state);
512
- const revision = requirePositiveInteger(record.revision, "revision");
513
- const createdAtMs = requireTimestamp(record.createdAtMs, "createdAtMs");
514
- const updatedAtMs = requireTimestamp(record.updatedAtMs, "updatedAtMs");
515
- if (updatedAtMs < createdAtMs) throw new Error("updatedAtMs precedes createdAtMs");
516
- return buildSessionRecordV1({
517
- linkSessionId,
518
- qrPayload,
519
- state,
520
- revision,
521
- claimTranscript: retiredShapeGuard("claimTranscript", () => parseOptionalClaimTranscript(record.claimTranscript)),
522
- approvalTranscript: retiredShapeGuard("approvalTranscript", () => parseOptionalApprovalTranscript(record.approvalTranscript)),
523
- targetFactor: parseOptionalApprovedTargetFactor(record.targetFactor),
524
- emailOtpChallenge: parseOptionalEmailOtpChallenge(record.emailOtpChallenge),
525
- sourceContributionPreparation: parseOptionalSourceContributionPreparation(record.sourceContributionPreparation),
526
- sourceContributionTranscript: retiredShapeGuard("sourceContributionTranscript", () => parseOptionalSourceContributionTranscript(record.sourceContributionTranscript)),
527
- authorityId: parseOptionalId(record.authorityId, parseWalletAuthorityId, "authorityId"),
528
- packageSetDigestB64u: parseOptionalDigest(record.packageSetDigestB64u, "packageSetDigestB64u"),
529
- createdAtMs,
530
- updatedAtMs
531
- });
532
- }
533
- function parseQrLinkedDeviceSessionPayloadV1(raw) {
534
- return parseQrLinkedDeviceSessionPayloadV5(raw);
535
- }
536
- function buildSessionRecordV1(input) {
537
- requireRecordIdentityFacts(input);
538
- switch (input.state.state) {
539
- case "displaying_qr":
540
- requireNoRecordFacts(input, "displaying_qr");
541
- return {
542
- version: "linked_device_session_v1",
543
- linkSessionId: input.linkSessionId,
544
- qrPayload: input.qrPayload,
545
- state: input.state,
546
- revision: input.revision,
547
- createdAtMs: input.createdAtMs,
548
- updatedAtMs: input.updatedAtMs
549
- };
550
- case "claimed":
551
- requireClaimRecordFacts(input, "claimed");
552
- return {
553
- version: "linked_device_session_v1",
554
- linkSessionId: input.linkSessionId,
555
- qrPayload: input.qrPayload,
556
- state: input.state,
557
- claimTranscript: input.claimTranscript,
558
- revision: input.revision,
559
- createdAtMs: input.createdAtMs,
560
- updatedAtMs: input.updatedAtMs
561
- };
562
- case "awaiting_target_factor": return buildApprovedSessionRecordV1(input);
563
- case "awaiting_source_contribution": return buildSourceContributionSessionRecordV1(input);
564
- case "provisioning": return buildProvisioningSessionRecordV1(input);
565
- case "authority_pending_local_install": return buildPendingSessionRecordV1(input);
566
- case "active": return buildActiveSessionRecordV1(input);
567
- case "failed_before_commit":
568
- case "cancelled":
569
- case "expired":
570
- requireTerminalRecordFacts(input, input.state.state);
571
- return {
572
- version: "linked_device_session_v1",
573
- linkSessionId: input.linkSessionId,
574
- qrPayload: input.qrPayload,
575
- state: input.state,
576
- ...input.claimTranscript ? { claimTranscript: input.claimTranscript } : {},
577
- ...input.approvalTranscript ? { approvalTranscript: input.approvalTranscript } : {},
578
- ...input.targetFactor ? { targetFactor: input.targetFactor } : {},
579
- ...input.emailOtpChallenge ? { emailOtpChallenge: input.emailOtpChallenge } : {},
580
- ...input.sourceContributionPreparation ? { sourceContributionPreparation: input.sourceContributionPreparation } : {},
581
- ...input.sourceContributionTranscript ? { sourceContributionTranscript: input.sourceContributionTranscript } : {},
582
- revision: input.revision,
583
- createdAtMs: input.createdAtMs,
584
- updatedAtMs: input.updatedAtMs
585
- };
586
- default: return assertNeverLinkSessionStateV1(input.state);
587
- }
588
- }
589
- function buildApprovedSessionRecordV1(input) {
590
- if (input.state.state !== "awaiting_target_factor") throw new Error("approved session state is invalid");
591
- requireApprovedRecordFacts(input, input.state.state);
592
- if (input.sourceContributionPreparation || input.sourceContributionTranscript) throw new Error("awaiting target-factor session contains source-contribution facts");
593
- if (input.targetFactor.kind === "passkey_prf") return {
594
- version: "linked_device_session_v1",
595
- linkSessionId: input.linkSessionId,
596
- qrPayload: input.qrPayload,
597
- state: input.state,
598
- claimTranscript: input.claimTranscript,
599
- approvalTranscript: input.approvalTranscript,
600
- targetFactor: input.targetFactor,
601
- revision: input.revision,
602
- createdAtMs: input.createdAtMs,
603
- updatedAtMs: input.updatedAtMs
604
- };
605
- return {
606
- version: "linked_device_session_v1",
607
- linkSessionId: input.linkSessionId,
608
- qrPayload: input.qrPayload,
609
- state: input.state,
610
- claimTranscript: input.claimTranscript,
611
- approvalTranscript: input.approvalTranscript,
612
- targetFactor: input.targetFactor,
613
- ...input.emailOtpChallenge ? { emailOtpChallenge: input.emailOtpChallenge } : {},
614
- revision: input.revision,
615
- createdAtMs: input.createdAtMs,
616
- updatedAtMs: input.updatedAtMs
617
- };
618
- }
619
- function buildSourceContributionSessionRecordV1(input) {
620
- if (input.state.state !== "awaiting_source_contribution") throw new Error("source-contribution session state is invalid");
621
- requireApprovedRecordFacts(input, input.state.state);
622
- if (!input.sourceContributionPreparation || input.sourceContributionTranscript) throw new Error("source-contribution session facts are incomplete");
623
- const sourceContributionPreparation = input.sourceContributionPreparation;
624
- if (input.targetFactor.kind === "passkey_prf") return {
625
- version: "linked_device_session_v1",
626
- linkSessionId: input.linkSessionId,
627
- qrPayload: input.qrPayload,
628
- state: input.state,
629
- claimTranscript: input.claimTranscript,
630
- approvalTranscript: input.approvalTranscript,
631
- targetFactor: input.targetFactor,
632
- sourceContributionPreparation,
633
- revision: input.revision,
634
- createdAtMs: input.createdAtMs,
635
- updatedAtMs: input.updatedAtMs
636
- };
637
- return {
638
- version: "linked_device_session_v1",
639
- linkSessionId: input.linkSessionId,
640
- qrPayload: input.qrPayload,
641
- state: input.state,
642
- claimTranscript: input.claimTranscript,
643
- approvalTranscript: input.approvalTranscript,
644
- targetFactor: input.targetFactor,
645
- ...input.targetFactor.kind === "email_otp" && input.emailOtpChallenge ? { emailOtpChallenge: input.emailOtpChallenge } : {},
646
- sourceContributionPreparation,
647
- revision: input.revision,
648
- createdAtMs: input.createdAtMs,
649
- updatedAtMs: input.updatedAtMs
650
- };
651
- }
652
- function buildProvisioningSessionRecordV1(input) {
653
- if (input.state.state !== "provisioning") throw new Error("provisioning session state is invalid");
654
- requireApprovedRecordFacts(input, input.state.state);
655
- if (!input.sourceContributionPreparation || !input.sourceContributionTranscript) throw new Error("provisioning session facts are incomplete");
656
- const sourceContributionPreparation = input.sourceContributionPreparation;
657
- const sourceContributionTranscript = input.sourceContributionTranscript;
658
- if (input.targetFactor.kind === "passkey_prf") return {
659
- version: "linked_device_session_v1",
660
- linkSessionId: input.linkSessionId,
661
- qrPayload: input.qrPayload,
662
- state: input.state,
663
- claimTranscript: input.claimTranscript,
664
- approvalTranscript: input.approvalTranscript,
665
- targetFactor: input.targetFactor,
666
- sourceContributionPreparation,
667
- sourceContributionTranscript,
668
- revision: input.revision,
669
- createdAtMs: input.createdAtMs,
670
- updatedAtMs: input.updatedAtMs
671
- };
672
- return {
673
- version: "linked_device_session_v1",
674
- linkSessionId: input.linkSessionId,
675
- qrPayload: input.qrPayload,
676
- state: input.state,
677
- claimTranscript: input.claimTranscript,
678
- approvalTranscript: input.approvalTranscript,
679
- targetFactor: input.targetFactor,
680
- ...input.targetFactor.kind === "email_otp" && input.emailOtpChallenge ? { emailOtpChallenge: input.emailOtpChallenge } : {},
681
- sourceContributionPreparation,
682
- sourceContributionTranscript,
683
- revision: input.revision,
684
- createdAtMs: input.createdAtMs,
685
- updatedAtMs: input.updatedAtMs
686
- };
687
- }
688
- function buildPendingSessionRecordV1(input) {
689
- if (input.state.state !== "authority_pending_local_install") throw new Error("pending session state is invalid");
690
- requireCommittedRecordFacts(input, input.state.state);
691
- if (input.authorityId !== input.state.authorityId) throw new Error("pending authority facts do not match state");
692
- if (input.packageSetDigestB64u !== input.state.packageSetDigestB64u) throw new Error("pending package digest does not match state");
693
- if (input.targetFactor.kind === "passkey_prf") return {
694
- version: "linked_device_session_v1",
695
- linkSessionId: input.linkSessionId,
696
- qrPayload: input.qrPayload,
697
- state: input.state,
698
- claimTranscript: input.claimTranscript,
699
- approvalTranscript: input.approvalTranscript,
700
- targetFactor: input.targetFactor,
701
- sourceContributionPreparation: input.sourceContributionPreparation,
702
- sourceContributionTranscript: input.sourceContributionTranscript,
703
- authorityId: input.authorityId,
704
- packageSetDigestB64u: input.packageSetDigestB64u,
705
- revision: input.revision,
706
- createdAtMs: input.createdAtMs,
707
- updatedAtMs: input.updatedAtMs
708
- };
709
- return {
710
- version: "linked_device_session_v1",
711
- linkSessionId: input.linkSessionId,
712
- qrPayload: input.qrPayload,
713
- state: input.state,
714
- claimTranscript: input.claimTranscript,
715
- approvalTranscript: input.approvalTranscript,
716
- targetFactor: input.targetFactor,
717
- ...input.emailOtpChallenge ? { emailOtpChallenge: input.emailOtpChallenge } : {},
718
- sourceContributionPreparation: input.sourceContributionPreparation,
719
- sourceContributionTranscript: input.sourceContributionTranscript,
720
- authorityId: input.authorityId,
721
- packageSetDigestB64u: input.packageSetDigestB64u,
722
- revision: input.revision,
723
- createdAtMs: input.createdAtMs,
724
- updatedAtMs: input.updatedAtMs
725
- };
726
- }
727
- function buildActiveSessionRecordV1(input) {
728
- if (input.state.state !== "active") throw new Error("active session state is invalid");
729
- requireCommittedRecordFacts(input, "active");
730
- if (input.authorityId !== input.state.authorityId) throw new Error("active authority facts do not match state");
731
- if (input.targetFactor.kind === "passkey_prf") return {
732
- version: "linked_device_session_v1",
733
- linkSessionId: input.linkSessionId,
734
- qrPayload: input.qrPayload,
735
- state: input.state,
736
- claimTranscript: input.claimTranscript,
737
- approvalTranscript: input.approvalTranscript,
738
- targetFactor: input.targetFactor,
739
- sourceContributionPreparation: input.sourceContributionPreparation,
740
- sourceContributionTranscript: input.sourceContributionTranscript,
741
- authorityId: input.authorityId,
742
- packageSetDigestB64u: input.packageSetDigestB64u,
743
- revision: input.revision,
744
- createdAtMs: input.createdAtMs,
745
- updatedAtMs: input.updatedAtMs
746
- };
747
- return {
748
- version: "linked_device_session_v1",
749
- linkSessionId: input.linkSessionId,
750
- qrPayload: input.qrPayload,
751
- state: input.state,
752
- claimTranscript: input.claimTranscript,
753
- approvalTranscript: input.approvalTranscript,
754
- targetFactor: input.targetFactor,
755
- ...input.emailOtpChallenge ? { emailOtpChallenge: input.emailOtpChallenge } : {},
756
- sourceContributionPreparation: input.sourceContributionPreparation,
757
- sourceContributionTranscript: input.sourceContributionTranscript,
758
- authorityId: input.authorityId,
759
- packageSetDigestB64u: input.packageSetDigestB64u,
760
- revision: input.revision,
761
- createdAtMs: input.createdAtMs,
762
- updatedAtMs: input.updatedAtMs
763
- };
764
- }
765
- function replaceSessionRecordV1(record, patch) {
766
- return buildSessionRecordV1({
767
- linkSessionId: record.linkSessionId,
768
- qrPayload: record.qrPayload,
769
- state: patch.state ?? record.state,
770
- revision: patch.revision,
771
- claimTranscript: patch.claimTranscript ?? record.claimTranscript,
772
- approvalTranscript: patch.approvalTranscript ?? record.approvalTranscript,
773
- targetFactor: patch.targetFactor ?? record.targetFactor,
774
- emailOtpChallenge: patch.emailOtpChallenge ?? record.emailOtpChallenge,
775
- sourceContributionPreparation: patch.sourceContributionPreparation ?? record.sourceContributionPreparation,
776
- sourceContributionTranscript: patch.sourceContributionTranscript ?? record.sourceContributionTranscript,
777
- authorityId: patch.authorityId ?? record.authorityId,
778
- packageSetDigestB64u: patch.packageSetDigestB64u ?? record.packageSetDigestB64u,
779
- createdAtMs: record.createdAtMs,
780
- updatedAtMs: patch.updatedAtMs
781
- });
782
- }
783
- /** Builds the next linear session record for the authority commit transaction. */
784
- function buildAuthorityPendingLocalInstallSessionRecordV1(input) {
785
- const nowMs = requireTimestamp(input.nowMs, "nowMs");
786
- if (input.record.state.state !== "provisioning") throw new Error("linked-device session is not ready for authority commit");
787
- return replaceSessionRecordV1(input.record, {
788
- state: authorityPendingStateV1(input.record, input.authorityId, input.packageSetDigestB64u),
789
- authorityId: input.authorityId,
790
- packageSetDigestB64u: input.packageSetDigestB64u,
791
- revision: input.record.revision + 1,
792
- updatedAtMs: nowMs
793
- });
794
- }
795
- /** Builds the next linear session record for the authority activation transaction. */
796
- function buildAuthorityActiveSessionRecordV1(input) {
797
- const nowMs = requireTimestamp(input.nowMs, "nowMs");
798
- const activatedAtMs = requireTimestamp(input.activatedAtMs, "activatedAtMs");
799
- if (activatedAtMs > nowMs) throw new Error("activatedAtMs cannot be in the future");
800
- if (input.record.state.state !== "authority_pending_local_install") throw new Error("linked-device session has no pending authority installation");
801
- return replaceSessionRecordV1(input.record, {
802
- state: activeStateV1(input.record, activatedAtMs),
803
- revision: input.record.revision + 1,
804
- updatedAtMs: nowMs
805
- });
806
- }
807
- function claimedStateV1(record, claim) {
808
- if (record.state.state !== "displaying_qr") throw new Error("link session is not claimable");
809
- return {
810
- state: "claimed",
811
- deviceId: parseDeviceIdValue(claim.deviceId)
812
- };
813
- }
814
- function awaitingTargetFactorStateV1(record) {
815
- if (record.state.state !== "claimed") throw new Error("link session is not awaiting owner approval");
816
- return {
817
- state: "awaiting_target_factor",
818
- deviceId: record.state.deviceId
819
- };
820
- }
821
- function provisioningStateV1(record) {
822
- if (record.state.state !== "awaiting_source_contribution") throw new Error("link session is not awaiting source contribution");
823
- return {
824
- state: "provisioning",
825
- deviceId: record.state.deviceId
826
- };
827
- }
828
- function awaitingSourceContributionStateV1(record) {
829
- if (record.state.state !== "awaiting_target_factor") throw new Error("link session is not awaiting target credential");
830
- return {
831
- state: "awaiting_source_contribution",
832
- deviceId: record.state.deviceId
833
- };
834
- }
835
- function authorityPendingStateV1(record, authorityId, packageSetDigestB64u) {
836
- if (record.state.state !== "provisioning") throw new Error("link session has no pending authority installation");
837
- return {
838
- state: "authority_pending_local_install",
839
- deviceId: record.state.deviceId,
840
- authorityId,
841
- packageSetDigestB64u
842
- };
843
- }
844
- function activeStateV1(record, activatedAtMs) {
845
- if (record.state.state !== "authority_pending_local_install") throw new Error("link session has no pending authority installation");
846
- return {
847
- state: "active",
848
- deviceId: record.state.deviceId,
849
- authorityId: record.state.authorityId,
850
- activatedAtMs
851
- };
852
- }
853
- function validateApprovalMatchesSession(record, approval, nowMs) {
854
- if (record.state.state !== "claimed" || !record.claimTranscript) throw new Error("link session is not awaiting owner approval");
855
- const claim = record.claimTranscript.value;
856
- if (claim.walletId !== approval.walletId || claim.enrollmentId !== approval.enrollmentId || claim.deviceId !== approval.deviceId || claim.devicePublicKeyB64u !== approval.devicePublicKeyB64u || approval.linkPublicKeyB64u !== record.qrPayload.linkPublicKeyB64u || approval.devicePublicKeyB64u !== record.qrPayload.devicePublicKeyB64u) throw new Error("approval identity does not match the claimed session");
857
- if (!sameDelegatedWalletAuthorityV1(approval.permission, record.qrPayload.requestedPermission)) throw new Error("approval permission does not match QR payload");
858
- if (approval.targetFactor.kind !== record.qrPayload.targetFactor.kind) throw new Error("approval target factor does not match the QR session");
859
- if (approval.expiresAtMs <= nowMs || approval.expiresAtMs > claim.claimExpiresAtMs) throw new Error("approval expiry is outside the claim lifetime");
860
- if (approval.approvedAtMs > nowMs) throw new Error("approval is from the future");
861
- }
862
- function validateSourceContributionApprovalMatchesSession(record, approval, nowMs) {
863
- if (record.state.state !== "awaiting_source_contribution" || !record.approvalTranscript) throw new Error("link session is not awaiting source contribution");
864
- if (!approval.sourceContribution) throw new Error("source contribution is required");
865
- const initial = record.approvalTranscript.value;
866
- if (approval.linkSessionId !== initial.linkSessionId || approval.walletId !== initial.walletId || approval.enrollmentId !== initial.enrollmentId || approval.deviceId !== initial.deviceId || approval.linkPublicKeyB64u !== initial.linkPublicKeyB64u || approval.devicePublicKeyB64u !== initial.devicePublicKeyB64u || approval.targetFactor.kind !== initial.targetFactor.kind || approval.approvedAtMs !== initial.approvedAtMs || approval.expiresAtMs !== initial.expiresAtMs || !sameDelegatedWalletAuthorityV1(approval.permission, initial.permission) || !linkedDeviceOwnerAuthorizationsEqualV1(approval.ownerAuthorization, initial.ownerAuthorization)) throw new Error("source contribution approval changes the owner approval transcript");
867
- if (approval.expiresAtMs <= nowMs || approval.approvedAtMs > nowMs) throw new Error("source contribution approval is outside its validity window");
868
- }
869
- function validateSourceContributionPreparationMatchesApproval(record, approval) {
870
- if (record.state.state !== "awaiting_source_contribution") throw new Error("link session is not awaiting source contribution");
871
- const preparations = record.sourceContributionPreparation;
872
- const contributions = approval.sourceContribution;
873
- if (!preparations || !contributions || preparations.length !== contributions.length) throw new Error("source contribution families do not match target preparation");
874
- preparations.forEach((preparation, index) => {
875
- const contribution = contributions[index];
876
- if (!contribution) throw new Error("source contribution tuple is incomplete");
877
- if (preparation.linkSessionId !== approval.linkSessionId) throw new Error("source contribution preparation session differs from approval");
878
- if (preparation.enrollmentId !== approval.enrollmentId) throw new Error("source contribution preparation enrollment differs from approval");
879
- if ("kind" in preparation) {
880
- if (contribution.keyFamily !== "ed25519") throw new Error("source contribution family order differs from preparation");
881
- assertEd25519ContributionMatchesPreparation(preparation, contribution, approval);
882
- return;
883
- }
884
- if (contribution.keyFamily !== "ecdsa_secp256k1") throw new Error("source contribution family order differs from preparation");
885
- assertEcdsaContributionMatchesPreparation(preparation, contribution, approval);
886
- });
887
- }
888
- function assertEd25519ContributionMatchesPreparation(preparation, contribution, approval) {
889
- if (contribution.keyFamily !== "ed25519") throw new Error("source contribution is not Ed25519");
890
- assertLinkedDeviceOrdinaryMaterialSourceContributionMatchesContextV1({
891
- contribution,
892
- linkSessionId: preparation.linkSessionId,
893
- enrollmentId: preparation.enrollmentId,
894
- sourceAuthorityId: preparation.sourceAuthorityId,
895
- walletKeyId: preparation.walletKeyId,
896
- targetDeviceId: preparation.targetDeviceId,
897
- targetFactorVerificationDigestB64u: preparation.targetFactorVerificationDigestB64u,
898
- sourceMaterialActivation: routerAbMpcMaterialActivationRefFromWire(preparation.sourceBinding.material_activation),
899
- targetMaterialActivation: preparation.targetMaterialActivation,
900
- sourceSigner: {
901
- keyFamily: "ed25519",
902
- walletKeyId: preparation.walletKeyId,
903
- registeredPublicKeyB64u: preparation.sourceRegisteredPublicKeyB64u
904
- }
905
- });
906
- if (contribution.targetDeviceId !== parseDeviceIdValue(approval.deviceId) || contribution.targetMaterialActivation.activationId !== preparation.targetMaterialActivation.activationId || contribution.targetClientRecipientPublicKeyB64u !== preparation.targetClientRecipientPublicKeyB64u || contribution.targetSigningWorkerRecipientPublicKeyB64u !== preparation.targetSigningWorkerRecipientPublicKeyB64u || contribution.sourceRegisteredPublicKeyB64u !== preparation.sourceRegisteredPublicKeyB64u || !linkedDeviceEd25519BindingsEqualV1(contribution.sourceBinding, preparation.sourceBinding) || contribution.participantIds[0] !== preparation.participantIds[0] || contribution.participantIds[1] !== preparation.participantIds[1]) throw new Error("Ed25519 source contribution does not match target preparation");
907
- }
908
- function assertEcdsaContributionMatchesPreparation(preparation, contribution, approval) {
909
- if (contribution.keyFamily !== "ecdsa_secp256k1") throw new Error("source contribution is not ECDSA");
910
- assertLinkedDeviceOrdinaryMaterialSourceContributionMatchesContextV1({
911
- contribution,
912
- linkSessionId: preparation.linkSessionId,
913
- enrollmentId: preparation.enrollmentId,
914
- sourceAuthorityId: preparation.sourceAuthorityId,
915
- walletKeyId: contribution.walletKeyId,
916
- targetDeviceId: preparation.target.targetDeviceId,
917
- targetFactorVerificationDigestB64u: preparation.target.targetFactorVerificationDigestB64u,
918
- sourceMaterialActivation: preparation.source.activation,
919
- targetMaterialActivation: preparation.target.activation,
920
- sourceSigner: {
921
- keyFamily: "ecdsa_secp256k1",
922
- walletKeyId: contribution.walletKeyId,
923
- thresholdPublicKey33B64u: preparation.source.thresholdPublicKey33B64u
924
- }
925
- });
926
- if (contribution.targetDeviceId !== parseDeviceIdValue(approval.deviceId) || !mpcMaterialActivationRefsEqual(contribution.target.activation, preparation.target.activation) || contribution.target.targetFactorVerificationDigestB64u !== preparation.target.targetFactorVerificationDigestB64u || contribution.target.clientRecipientPublicKeyB64u !== preparation.target.clientRecipientPublicKeyB64u || contribution.target.signingWorkerRecipientPublicKeyB64u !== preparation.target.signingWorkerRecipientPublicKeyB64u || !mpcMaterialActivationRefsEqual(contribution.sourceSigner.activation, preparation.source.activation)) throw new Error("ECDSA source contribution does not match target preparation");
927
- }
928
- function validateLinkedDeviceRequestedAuthorityV1(sourceAuthority, authority) {
929
- if (!hasDelegatedWalletPermissionV1(sourceAuthority, "link_devices")) return "linking authority does not contain link_devices";
930
- const attenuation = validateDelegatedWalletAuthorityAttenuationV1({
931
- parent: sourceAuthority,
932
- child: authority
933
- });
934
- return attenuation.ok ? null : attenuation.error.message;
935
- }
936
460
  function pendingRetryResult(record, authorityId, packageSetDigestB64u) {
937
461
  if (record.state.state !== "authority_pending_local_install" && record.state.state !== "active") return null;
938
462
  if (record.state.authorityId !== authorityId) return integrityResult(record, "authority_id_mismatch");
@@ -956,356 +480,12 @@ function activeRetryResult(record, authorityId, packageSetDigestB64u) {
956
480
  record
957
481
  };
958
482
  }
959
- function isPrecommitState(state) {
960
- switch (state.state) {
961
- case "displaying_qr":
962
- case "claimed":
963
- case "awaiting_target_factor":
964
- case "awaiting_source_contribution":
965
- case "provisioning": return true;
966
- case "authority_pending_local_install":
967
- case "active":
968
- case "failed_before_commit":
969
- case "cancelled":
970
- case "expired": return false;
971
- default: return assertNeverLinkSessionStateV1(state);
972
- }
973
- }
974
- function sessionExpiryMsV1(record) {
975
- switch (record.state.state) {
976
- case "displaying_qr": return record.qrPayload.expiresAtMs;
977
- case "claimed": return record.claimTranscript?.value.claimExpiresAtMs ?? record.qrPayload.expiresAtMs;
978
- case "awaiting_target_factor":
979
- case "awaiting_source_contribution":
980
- case "provisioning": return record.approvalTranscript?.value.expiresAtMs ?? record.qrPayload.expiresAtMs;
981
- case "authority_pending_local_install":
982
- case "active":
983
- case "failed_before_commit":
984
- case "cancelled":
985
- case "expired": return Number.POSITIVE_INFINITY;
986
- default: return assertNeverLinkSessionStateV1(record.state);
987
- }
988
- }
989
- function awaitingTargetDeadlineMsV1(record) {
990
- if (record.state.state !== "awaiting_target_factor") throw new Error("link session is not awaiting target factor");
991
- return record.approvalTranscript?.value.expiresAtMs ?? record.qrPayload.expiresAtMs;
992
- }
993
- function awaitingSourceContributionDeadlineMsV1(record) {
994
- if (record.state.state !== "awaiting_source_contribution") throw new Error("link session is not awaiting source contribution");
995
- return record.approvalTranscript?.value.expiresAtMs ?? record.qrPayload.expiresAtMs;
996
- }
997
- function linkedDeviceQrPayloadsEqualV1(left, right) {
998
- 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;
999
- switch (left.targetFactor.kind) {
1000
- case "passkey_prf": return right.targetFactor.kind === "passkey_prf";
1001
- case "email_otp": return right.targetFactor.kind === "email_otp" && left.targetEmail === right.targetEmail;
1002
- default: return assertNeverLinkedDeviceTargetFactorV1(left.targetFactor);
1003
- }
1004
- }
1005
- function claimTranscriptMatchesDigest(record, digest) {
1006
- return record.claimTranscript?.digestB64u === digest;
1007
- }
1008
- function approvalTranscriptMatchesDigest(record, digest) {
1009
- return record.approvalTranscript?.digestB64u === digest;
1010
- }
1011
- function sourceContributionTranscriptMatchesDigest(record, digest) {
1012
- return record.sourceContributionTranscript?.digestB64u === digest;
1013
- }
1014
- function linkedDeviceEmailOtpChallengesEqualV1(left, right) {
1015
- switch (left.state) {
1016
- case "available": return right.state === "available" && left.maskedEmailHint === right.maskedEmailHint;
1017
- 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;
1018
- default: return assertNeverLinkedDeviceEmailOtpChallengeV1(left);
1019
- }
1020
- }
1021
- function linkedDevicePrecommitFailuresEqualV1(left, right) {
1022
- switch (left.kind) {
1023
- case "invalid_input": return right.kind === "invalid_input" && left.reason === right.reason;
1024
- case "unauthorized_source": return right.kind === "unauthorized_source" && left.reason === right.reason;
1025
- case "revoked_source": return right.kind === "revoked_source" && left.reason === right.reason;
1026
- case "permission_attenuation_failed": return right.kind === "permission_attenuation_failed" && left.reason === right.reason;
1027
- case "target_factor_failed": return right.kind === "target_factor_failed" && left.reason === right.reason;
1028
- case "expired_session": return right.kind === "expired_session" && left.reason === right.reason;
1029
- case "cancelled_session": return right.kind === "cancelled_session" && left.reason === right.reason;
1030
- case "claim_conflict": return right.kind === "claim_conflict" && left.reason === right.reason;
1031
- case "package_preparation_failed": return right.kind === "package_preparation_failed" && left.reason === right.reason;
1032
- default: return assertNeverLinkPrecommitFailureV1(left);
1033
- }
1034
- }
1035
- function linkedDeviceOwnerAuthorizationsEqualV1(left, right) {
1036
- return left.kind === "wallet_session" && right.kind === "wallet_session" && left.walletSessionId === right.walletSessionId && left.authorizationId === right.authorizationId;
1037
- }
1038
- function linkedDeviceEd25519BindingsEqualV1(left, right) {
1039
- return left.operation === right.operation && sameRouterAbEd25519YaoByteSequence(left.session_id, right.session_id) && sameRouterAbEd25519YaoByteSequence(left.stable_key_context_binding, right.stable_key_context_binding) && sameRouterAbMpcMaterialActivationRef(left.material_activation, right.material_activation) && left.lifecycle.lifecycle_id === right.lifecycle.lifecycle_id && left.lifecycle.work_kind === right.lifecycle.work_kind && left.lifecycle.primitive_request_kind === right.lifecycle.primitive_request_kind && left.lifecycle.root_share_epoch === right.lifecycle.root_share_epoch && left.lifecycle.account_id === right.lifecycle.account_id && left.lifecycle.session_id === right.lifecycle.session_id && left.lifecycle.signer_set_id === right.lifecycle.signer_set_id && left.lifecycle.selected_server_id === right.lifecycle.selected_server_id;
1040
- }
1041
- function sameRouterAbEd25519YaoByteSequence(left, right) {
1042
- return left.length === right.length && left.every((value, index) => value === right[index]);
1043
- }
1044
- function assertNeverLinkedDeviceTargetFactorV1(value) {
1045
- throw new Error(`unsupported linked-device target factor: ${String(value)}`);
1046
- }
1047
- function assertNeverLinkedDeviceEmailOtpChallengeV1(value) {
1048
- throw new Error(`unsupported linked-device email OTP challenge: ${String(value)}`);
1049
- }
1050
- function assertNeverLinkPrecommitFailureV1(value) {
1051
- throw new Error(`unsupported linked-device precommit failure: ${String(value)}`);
1052
- }
1053
483
  function isLinkedDeviceClaimV1(value) {
1054
484
  return value.kind === "linked_device_session_claim_v1";
1055
485
  }
1056
486
  function isLinkedDeviceApprovalV1(value) {
1057
487
  return value.kind === "linked_device_approval_v1";
1058
488
  }
1059
- function parseLinkedDeviceApprovalV1(raw) {
1060
- return parseLinkedDeviceApprovalV1$1(raw);
1061
- }
1062
- function parseLinkedDeviceClaimV1(raw) {
1063
- return parseLinkedDeviceSessionClaimV1(raw);
1064
- }
1065
- function parseOptionalClaimTranscript(raw) {
1066
- if (raw === void 0) return void 0;
1067
- const record = requireRecord(raw, "claimTranscript");
1068
- requireExactKeys(record, ["digestB64u", "value"]);
1069
- return {
1070
- digestB64u: requireDigest(record.digestB64u, "claimTranscript.digestB64u"),
1071
- value: parseLinkedDeviceClaimV1(record.value)
1072
- };
1073
- }
1074
- /**
1075
- * A stored transcript no longer parses under the current schema. This class
1076
- * marks exactly the failures a deployment boundary produces - transcript
1077
- * shapes are what refactors move - so a store can delete-and-recover them
1078
- * while every value-consistency failure (tampering) keeps throwing raw.
1079
- */
1080
- var LinkedDeviceRetiredSessionShapeErrorV1 = class extends Error {
1081
- constructor(transcript, cause) {
1082
- super(`linked-device ${transcript} shape is retired: ${cause instanceof Error ? cause.message : String(cause)}`);
1083
- this.name = "LinkedDeviceRetiredSessionShapeErrorV1";
1084
- }
1085
- };
1086
- function retiredShapeGuard(transcript, parse) {
1087
- try {
1088
- return parse();
1089
- } catch (error) {
1090
- if (error instanceof LinkedDeviceRetiredSessionShapeErrorV1) throw error;
1091
- throw new LinkedDeviceRetiredSessionShapeErrorV1(transcript, error);
1092
- }
1093
- }
1094
- function parseOptionalApprovalTranscript(raw) {
1095
- if (raw === void 0) return void 0;
1096
- const record = requireRecord(raw, "approvalTranscript");
1097
- requireExactKeys(record, [
1098
- "digestB64u",
1099
- "value",
1100
- "sourceSignerManifest",
1101
- "sourceKeyManifestDigestsB64u",
1102
- "sourceAuthorityDigestB64u"
1103
- ]);
1104
- const value = parseLinkedDeviceApprovalV1(record.value);
1105
- const sourceKeyManifestDigestsB64u = parseSourceKeyManifestDigestsV1(record.sourceKeyManifestDigestsB64u, "approvalTranscript.sourceKeyManifestDigestsB64u");
1106
- const sourceSignerManifest = parseExactAdministeredSignerManifestV1(record.sourceSignerManifest);
1107
- assertSourceKeyManifestDigestFamiliesMatchManifestV1(sourceSignerManifest, sourceKeyManifestDigestsB64u);
1108
- return {
1109
- digestB64u: requireDigest(record.digestB64u, "approvalTranscript.digestB64u"),
1110
- value,
1111
- sourceSignerManifest,
1112
- sourceKeyManifestDigestsB64u,
1113
- sourceAuthorityDigestB64u: requireDigest(record.sourceAuthorityDigestB64u, "approvalTranscript.sourceAuthorityDigestB64u")
1114
- };
1115
- }
1116
- function parseSourceKeyManifestDigestsV1(raw, field) {
1117
- const record = requireRecord(raw, field);
1118
- const keys = Object.keys(record).sort();
1119
- if (keys.length === 1 && keys[0] === "ed25519") return { ed25519: requireDigest(record.ed25519, `${field}.ed25519`) };
1120
- if (keys.length === 1 && keys[0] === "ecdsa_secp256k1") return { ecdsa_secp256k1: requireDigest(record.ecdsa_secp256k1, `${field}.ecdsa_secp256k1`) };
1121
- if (keys.length === 2 && keys[0] === "ecdsa_secp256k1" && keys[1] === "ed25519") return {
1122
- ed25519: requireDigest(record.ed25519, `${field}.ed25519`),
1123
- ecdsa_secp256k1: requireDigest(record.ecdsa_secp256k1, `${field}.ecdsa_secp256k1`)
1124
- };
1125
- throw new Error(`${field} must contain exactly one digest for each approved source key family`);
1126
- }
1127
- function parseOptionalSourceContributionPreparation(raw) {
1128
- if (raw === void 0) return void 0;
1129
- return parseLinkedDeviceOrdinaryMaterialSourceContributionPreparationTupleV1(raw);
1130
- }
1131
- function parseOptionalSourceContributionTranscript(raw) {
1132
- if (raw === void 0) return void 0;
1133
- const record = requireRecord(raw, "sourceContributionTranscript");
1134
- requireExactKeys(record, [
1135
- "digestB64u",
1136
- "value",
1137
- "sourceSignerManifest",
1138
- "sourceKeyManifestDigestsB64u",
1139
- "sourceAuthorityDigestB64u"
1140
- ]);
1141
- const value = parseLinkedDeviceApprovalV1(record.value);
1142
- if (!value.sourceContribution) throw new Error("sourceContributionTranscript.value has no source contribution");
1143
- const sourceKeyManifestDigestsB64u = parseSourceKeyManifestDigestsV1(record.sourceKeyManifestDigestsB64u, "sourceContributionTranscript.sourceKeyManifestDigestsB64u");
1144
- const sourceSignerManifest = parseExactAdministeredSignerManifestV1(record.sourceSignerManifest);
1145
- assertSourceKeyManifestDigestFamiliesMatchManifestV1(sourceSignerManifest, sourceKeyManifestDigestsB64u);
1146
- return {
1147
- digestB64u: requireDigest(record.digestB64u, "sourceContributionTranscript.digestB64u"),
1148
- value,
1149
- sourceSignerManifest,
1150
- sourceKeyManifestDigestsB64u,
1151
- sourceAuthorityDigestB64u: requireDigest(record.sourceAuthorityDigestB64u, "sourceContributionTranscript.sourceAuthorityDigestB64u")
1152
- };
1153
- }
1154
- function assertSourceKeyManifestDigestFamiliesMatchManifestV1(manifest, digests) {
1155
- const manifestHasEd25519 = manifest.keyFamilies.some((family) => family === "ed25519");
1156
- const manifestHasEcdsa = manifest.keyFamilies.some((family) => family === "ecdsa_secp256k1");
1157
- const digestHasEd25519 = digests.ed25519 !== void 0;
1158
- const digestHasEcdsa = digests.ecdsa_secp256k1 !== void 0;
1159
- if (manifestHasEd25519 !== digestHasEd25519 || manifestHasEcdsa !== digestHasEcdsa) throw new Error("source key manifest digest families do not match the verified signer manifest");
1160
- }
1161
- function parseOptionalApprovedTargetFactor(raw) {
1162
- if (raw === void 0) return void 0;
1163
- const record = requireRecord(raw, "targetFactor");
1164
- if (record.kind === "passkey_prf") {
1165
- requireExactKeys(record, ["kind"]);
1166
- return { kind: "passkey_prf" };
1167
- }
1168
- if (record.kind === "email_otp") {
1169
- const targetEmail = parseId(record.targetEmail, parseVerifiedEmailAddress, "targetFactor.targetEmail");
1170
- const enrollment = requireRecord(record.enrollment, "targetFactor.enrollment");
1171
- if (enrollment.kind === "existing_enrollment") {
1172
- requireExactKeys(record, [
1173
- "kind",
1174
- "targetEmail",
1175
- "enrollment",
1176
- "baseWalletAuthMethodId"
1177
- ]);
1178
- requireExactKeys(enrollment, ["kind"]);
1179
- return {
1180
- kind: "email_otp",
1181
- targetEmail,
1182
- enrollment: { kind: "existing_enrollment" },
1183
- baseWalletAuthMethodId: parseId(record.baseWalletAuthMethodId, parseWalletAuthMethodId, "targetFactor.baseWalletAuthMethodId")
1184
- };
1185
- }
1186
- if (enrollment.kind === "new_enrollment") {
1187
- requireExactKeys(record, [
1188
- "kind",
1189
- "targetEmail",
1190
- "enrollment"
1191
- ]);
1192
- requireExactKeys(enrollment, ["kind"]);
1193
- return {
1194
- kind: "email_otp",
1195
- targetEmail,
1196
- enrollment: { kind: "new_enrollment" }
1197
- };
1198
- }
1199
- throw new Error("targetFactor.enrollment.kind is invalid");
1200
- }
1201
- throw new Error("targetFactor.kind is invalid");
1202
- }
1203
- function parseOptionalEmailOtpChallenge(raw) {
1204
- if (raw === void 0) return void 0;
1205
- const record = requireRecord(raw, "emailOtpChallenge");
1206
- const state = parseIdentityString(record.state, "emailOtpChallenge.state");
1207
- if (state === "available") {
1208
- requireExactKeys(record, ["state", "maskedEmailHint"]);
1209
- return {
1210
- state,
1211
- maskedEmailHint: parseIdentityString(record.maskedEmailHint, "emailOtpChallenge.maskedEmailHint")
1212
- };
1213
- }
1214
- if (state === "sent") {
1215
- requireExactKeys(record, [
1216
- "state",
1217
- "challengeId",
1218
- "workerEphemeralPublicKey65B64u",
1219
- "maskedEmailHint",
1220
- "expiresAtMs",
1221
- "resendAvailableAtMs"
1222
- ]);
1223
- return {
1224
- state,
1225
- challengeId: parseIdentityString(record.challengeId, "emailOtpChallenge.challengeId"),
1226
- workerEphemeralPublicKey65B64u: parseIdentityString(record.workerEphemeralPublicKey65B64u, "emailOtpChallenge.workerEphemeralPublicKey65B64u"),
1227
- maskedEmailHint: parseIdentityString(record.maskedEmailHint, "emailOtpChallenge.maskedEmailHint"),
1228
- expiresAtMs: requireTimestamp(record.expiresAtMs, "emailOtpChallenge.expiresAtMs"),
1229
- resendAvailableAtMs: requireTimestamp(record.resendAvailableAtMs, "emailOtpChallenge.resendAvailableAtMs")
1230
- };
1231
- }
1232
- throw new Error("emailOtpChallenge.state is invalid");
1233
- }
1234
- function parseEmailOtpChallengeV1(raw) {
1235
- const record = requireRecord(raw, "challenge");
1236
- requireExactKeys(record, [
1237
- "challengeId",
1238
- "workerEphemeralPublicKey65B64u",
1239
- "maskedEmailHint",
1240
- "expiresAtMs",
1241
- "resendAvailableAtMs"
1242
- ]);
1243
- return {
1244
- state: "sent",
1245
- challengeId: parseIdentityString(record.challengeId, "challenge.challengeId"),
1246
- workerEphemeralPublicKey65B64u: parseIdentityString(record.workerEphemeralPublicKey65B64u, "challenge.workerEphemeralPublicKey65B64u"),
1247
- maskedEmailHint: parseIdentityString(record.maskedEmailHint, "challenge.maskedEmailHint"),
1248
- expiresAtMs: requireTimestamp(record.expiresAtMs, "challenge.expiresAtMs"),
1249
- resendAvailableAtMs: requireTimestamp(record.resendAvailableAtMs, "challenge.resendAvailableAtMs")
1250
- };
1251
- }
1252
- function requireNoRecordFacts(input, state) {
1253
- 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`);
1254
- }
1255
- function requireClaimRecordFacts(input, state) {
1256
- 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`);
1257
- }
1258
- function requireApprovedRecordFacts(input, state) {
1259
- if (!input.claimTranscript || !input.approvalTranscript || !input.targetFactor) throw new Error(`${state} session facts are incomplete`);
1260
- if (input.authorityId || input.packageSetDigestB64u) throw new Error(`${state} session contains committed facts`);
1261
- if (input.targetFactor.kind === "passkey_prf" && input.emailOtpChallenge) throw new Error(`${state} passkey session contains email challenge state`);
1262
- }
1263
- function requireCommittedRecordFacts(input, state) {
1264
- if (!input.claimTranscript || !input.approvalTranscript || !input.targetFactor || !input.authorityId || !input.packageSetDigestB64u) throw new Error(`${state} session facts are incomplete`);
1265
- if (!input.sourceContributionPreparation || !input.sourceContributionTranscript) throw new Error(`${state} session source-contribution facts are incomplete`);
1266
- if (input.targetFactor.kind === "passkey_prf" && input.emailOtpChallenge) throw new Error(`${state} passkey session contains email challenge state`);
1267
- }
1268
- function requireNoCommittedFacts(input, state) {
1269
- if (input.authorityId || input.packageSetDigestB64u) throw new Error(`${state} session contains committed facts`);
1270
- }
1271
- function requireRecordIdentityFacts(input) {
1272
- if (input.targetFactor && input.targetFactor.kind !== input.qrPayload.targetFactor.kind) throw new Error("target factor does not match QR payload");
1273
- const claim = input.claimTranscript?.value;
1274
- if (claim) {
1275
- 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");
1276
- }
1277
- const approval = input.approvalTranscript?.value;
1278
- if (approval) {
1279
- 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");
1280
- }
1281
- if (claim && approval && parseDeviceIdValue(claim.deviceId) !== parseDeviceIdValue(approval.deviceId)) throw new Error("approval transcript device identity does not match claim transcript");
1282
- switch (input.state.state) {
1283
- case "displaying_qr":
1284
- case "failed_before_commit":
1285
- case "cancelled":
1286
- case "expired": return;
1287
- case "claimed":
1288
- case "awaiting_target_factor":
1289
- case "awaiting_source_contribution":
1290
- case "provisioning":
1291
- if (!claim || input.state.deviceId !== parseDeviceIdValue(claim.deviceId)) throw new Error(`${input.state.state} device identity does not match claim transcript`);
1292
- return;
1293
- case "authority_pending_local_install":
1294
- case "active":
1295
- 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`);
1296
- return;
1297
- default: return assertNeverLinkSessionStateV1(input.state);
1298
- }
1299
- }
1300
- function requireTerminalRecordFacts(input, state) {
1301
- requireNoCommittedFacts(input, state);
1302
- if (!input.claimTranscript && (input.approvalTranscript || input.targetFactor || input.emailOtpChallenge)) throw new Error(`${state} session facts are incomplete`);
1303
- if (!input.approvalTranscript && input.emailOtpChallenge) throw new Error(`${state} session email challenge has no approval`);
1304
- if (input.sourceContributionTranscript && !input.sourceContributionPreparation) throw new Error(`${state} source contribution transcript has no preparation`);
1305
- if (input.sourceContributionPreparation && (!input.approvalTranscript || !input.targetFactor)) throw new Error(`${state} source contribution preparation has no approval`);
1306
- if (input.approvalTranscript && !input.targetFactor) throw new Error(`${state} session approval has no target factor`);
1307
- if (input.targetFactor?.kind === "passkey_prf" && input.emailOtpChallenge) throw new Error(`${state} passkey session contains email challenge state`);
1308
- }
1309
489
  function buildClaimV1(payload, identity, sessionRevision, claimedAtMs) {
1310
490
  if (identity.claimExpiresAtMs <= claimedAtMs || identity.claimExpiresAtMs > payload.expiresAtMs) throw new Error("claim expiry is outside the link session lifetime");
1311
491
  return {
@@ -1321,53 +501,6 @@ function buildClaimV1(payload, identity, sessionRevision, claimedAtMs) {
1321
501
  claimExpiresAtMs: identity.claimExpiresAtMs
1322
502
  };
1323
503
  }
1324
- function parseDeviceIdValue(raw) {
1325
- const parsed = parseDeviceId(raw);
1326
- if (!parsed.ok) throw new Error(`deviceId: ${parsed.error.message}`);
1327
- return parsed.value;
1328
- }
1329
- function parseId(raw, parser, field) {
1330
- const parsed = parser(raw);
1331
- if (!parsed.ok) throw new Error(`${field}: ${parsed.error.message}`);
1332
- return parsed.value;
1333
- }
1334
- function parseOptionalId(raw, parser, field) {
1335
- return raw === void 0 ? void 0 : parseId(raw, parser, field);
1336
- }
1337
- function parseIdentityString(raw, field) {
1338
- if (typeof raw !== "string" || raw.length === 0 || raw.trim() !== raw || hasWhitespaceOrControlCharacters(raw)) throw new Error(`${field} is invalid`);
1339
- return raw;
1340
- }
1341
- function requireDigest(raw, field) {
1342
- try {
1343
- return parseDigestB64u(raw);
1344
- } catch {
1345
- throw new Error(`${field} is invalid`);
1346
- }
1347
- }
1348
- function parseOptionalDigest(raw, field) {
1349
- return raw === void 0 ? void 0 : requireDigest(raw, field);
1350
- }
1351
- function requireTimestamp(raw, field) {
1352
- if (!Number.isSafeInteger(raw) || Number(raw) <= 0) throw new Error(`${field} must be a positive safe integer`);
1353
- return Number(raw);
1354
- }
1355
- function requirePositiveInteger(raw, field) {
1356
- return requireTimestamp(raw, field);
1357
- }
1358
- function requireRecord(raw, field) {
1359
- if (raw === null || typeof raw !== "object" || Array.isArray(raw)) throw new Error(`${field} must be an object`);
1360
- return Object.fromEntries(Object.entries(raw));
1361
- }
1362
- function requireExactKeys(record, expected) {
1363
- const actual = Object.keys(record).sort();
1364
- const required = [...expected].sort();
1365
- if (actual.length !== required.length || actual.some((key, index) => key !== required[index])) throw new Error("record contains invalid fields");
1366
- }
1367
- function requireAllowedKeys(record, allowed) {
1368
- const allowedSet = new Set(allowed);
1369
- for (const key of Object.keys(record)) if (!allowedSet.has(key)) throw new Error("record contains invalid fields");
1370
- }
1371
504
  function normalizeSessionReadInput(input) {
1372
505
  if (typeof input === "string") return {
1373
506
  linkSessionId: parseId(input, parseLinkDeviceSessionId, "linkSessionId"),
@@ -1391,29 +524,7 @@ function unauthorizedResult(code, message) {
1391
524
  message
1392
525
  };
1393
526
  }
1394
- function conflictResult(expectedRevision, record) {
1395
- return {
1396
- outcome: "conflict",
1397
- expectedRevision,
1398
- actualRevision: record?.revision ?? null,
1399
- record
1400
- };
1401
- }
1402
- function invalidStateResult(record) {
1403
- return {
1404
- outcome: "invalid_state",
1405
- state: record.state.state,
1406
- record
1407
- };
1408
- }
1409
- function integrityResult(record, reason) {
1410
- return {
1411
- outcome: "integrity_error",
1412
- reason,
1413
- record
1414
- };
1415
- }
1416
527
  //#endregion
1417
- export { LinkedDeviceRetiredSessionShapeErrorV1, LinkedDeviceSessionServiceV1, buildAuthorityActiveSessionRecordV1, buildAuthorityPendingLocalInstallSessionRecordV1, buildUnclaimedSessionRecordV1, digestTranscriptV1, linkedDeviceQrPayloadsEqualV1, parseLinkedDeviceSessionRecordV1, sourceKeyManifestDigestForFamilyV1 };
528
+ export { LinkedDeviceSessionServiceV1 };
1418
529
 
1419
530
  //# sourceMappingURL=linkedDeviceSession.js.map