@seams/wallet-server 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1075) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -0
  3. package/artifact-manifest.json +464 -0
  4. package/cloudflare-router-ab/build/deriver-a/index.js +2 -0
  5. package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
  6. package/cloudflare-router-ab/build/deriver-a/package.json +16 -0
  7. package/cloudflare-router-ab/build/deriver-a/worker/shim.mjs +4 -0
  8. package/cloudflare-router-ab/build/deriver-b/index.js +2 -0
  9. package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
  10. package/cloudflare-router-ab/build/deriver-b/package.json +16 -0
  11. package/cloudflare-router-ab/build/deriver-b/worker/shim.mjs +4 -0
  12. package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
  13. package/cloudflare-router-ab/build/router/index.js +2 -0
  14. package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
  15. package/cloudflare-router-ab/build/router/package.json +16 -0
  16. package/cloudflare-router-ab/build/router/worker/shim.mjs +4 -0
  17. package/cloudflare-router-ab/build/signing-worker/index.js +2 -0
  18. package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
  19. package/cloudflare-router-ab/build/signing-worker/package.json +16 -0
  20. package/cloudflare-router-ab/build/signing-worker/worker/shim.mjs +4 -0
  21. package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -0
  22. package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
  23. package/cloudflare-router-ab/build/tenant-root-control-plane/package.json +16 -0
  24. package/cloudflare-router-ab/build/tenant-root-control-plane/worker/shim.mjs +4 -0
  25. package/cloudflare-router-ab/env/tenant-root-control-plane.local.example +6 -0
  26. package/cloudflare-router-ab/migrations/deriver-a/0001_role_private_storage.sql +14 -0
  27. package/cloudflare-router-ab/migrations/deriver-a/0002_tenant_root_role_shares.sql +32 -0
  28. package/cloudflare-router-ab/migrations/deriver-a/0003_tenant_root_command_replays.sql +76 -0
  29. package/cloudflare-router-ab/migrations/deriver-a/0004_tenant_root_creation_admission.sql +7 -0
  30. package/cloudflare-router-ab/migrations/deriver-a/0005_tenant_root_refresh_state.sql +15 -0
  31. package/cloudflare-router-ab/migrations/deriver-a/0006_tenant_root_restore_import_keys.sql +119 -0
  32. package/cloudflare-router-ab/migrations/deriver-a/0007_tenant_root_restore_refresh_attempts.sql +103 -0
  33. package/cloudflare-router-ab/migrations/deriver-a/0008_tenant_root_restore_promotion.sql +40 -0
  34. package/cloudflare-router-ab/migrations/deriver-a/0009_tenant_root_restore_preactivation_cleanup.sql +8 -0
  35. package/cloudflare-router-ab/migrations/deriver-a/0010_tenant_root_recovery_attempts.sql +26 -0
  36. package/cloudflare-router-ab/migrations/deriver-a/0011_tenant_root_source_retirement.sql +100 -0
  37. package/cloudflare-router-ab/migrations/deriver-b/0001_role_private_storage.sql +14 -0
  38. package/cloudflare-router-ab/migrations/deriver-b/0002_tenant_root_role_shares.sql +32 -0
  39. package/cloudflare-router-ab/migrations/deriver-b/0003_tenant_root_command_replays.sql +76 -0
  40. package/cloudflare-router-ab/migrations/deriver-b/0004_tenant_root_creation_admission.sql +7 -0
  41. package/cloudflare-router-ab/migrations/deriver-b/0005_tenant_root_refresh_state.sql +15 -0
  42. package/cloudflare-router-ab/migrations/deriver-b/0006_tenant_root_restore_import_keys.sql +119 -0
  43. package/cloudflare-router-ab/migrations/deriver-b/0007_tenant_root_restore_refresh_attempts.sql +103 -0
  44. package/cloudflare-router-ab/migrations/deriver-b/0008_tenant_root_restore_promotion.sql +40 -0
  45. package/cloudflare-router-ab/migrations/deriver-b/0009_tenant_root_restore_preactivation_cleanup.sql +8 -0
  46. package/cloudflare-router-ab/migrations/deriver-b/0010_tenant_root_recovery_attempts.sql +26 -0
  47. package/cloudflare-router-ab/migrations/deriver-b/0011_tenant_root_source_retirement.sql +100 -0
  48. package/cloudflare-router-ab/migrations/signing-worker/0001_private_storage.sql +67 -0
  49. package/cloudflare-router-ab/migrations/signing-worker/0002_activation_revocation_fences.sql +3 -0
  50. package/cloudflare-router-ab/scripts/bootstrap-local-tenant-root.mjs +182 -0
  51. package/cloudflare-router-ab/scripts/initialize-local-wallet.mjs +17 -0
  52. package/cloudflare-router-ab/scripts/local-key-material.mjs +29 -0
  53. package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +1110 -0
  54. package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +333 -0
  55. package/cloudflare-router-ab/scripts/start-local-wallet-system.mjs +427 -0
  56. package/cloudflare-router-ab/wrangler.deriver-a.toml +123 -0
  57. package/cloudflare-router-ab/wrangler.deriver-b.toml +123 -0
  58. package/cloudflare-router-ab/wrangler.router.toml +126 -0
  59. package/cloudflare-router-ab/wrangler.signing-worker.toml +86 -0
  60. package/cloudflare-router-ab/wrangler.tenant-root-control-plane.toml +56 -0
  61. package/dist/esm/authorization/capabilityPolicy.js +96 -0
  62. package/dist/esm/authorization/domain.js +434 -0
  63. package/dist/esm/authorization/factorEvidence.js +405 -0
  64. package/dist/esm/authorization/service.js +319 -0
  65. package/dist/esm/authorization/vaultProxyUse.js +295 -0
  66. package/dist/esm/cloud-host.js +126 -0
  67. package/dist/esm/core/AuthService.js +2 -0
  68. package/dist/esm/core/EmailOtpRecords.js +361 -0
  69. package/dist/esm/core/EmailOtpStores.js +1460 -0
  70. package/dist/esm/core/IdentityStore.js +617 -0
  71. package/dist/esm/core/NearPublicKeyStore.js +242 -0
  72. package/dist/esm/core/RegistrationCeremonyStore.js +2101 -0
  73. package/dist/esm/core/SessionService.js +255 -0
  74. package/dist/esm/core/ThresholdService/config.js +111 -0
  75. package/dist/esm/core/ThresholdService/ecdsaClientRootProof.js +27 -0
  76. package/dist/esm/core/ThresholdService/evmCryptoWasm.js +167 -0
  77. package/dist/esm/core/ThresholdService/index.js +4 -0
  78. package/dist/esm/core/ThresholdService/kv.js +368 -0
  79. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +360 -0
  80. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillLiveSession.js +282 -0
  81. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.js +272 -0
  82. package/dist/esm/core/ThresholdService/routerAb/internalServiceHttp.js +57 -0
  83. package/dist/esm/core/ThresholdService/routerAbEcdsaSigningWorkerWasm.js +115 -0
  84. package/dist/esm/core/ThresholdService/routerAbNormalSigningPolicy.js +31 -0
  85. package/dist/esm/core/ThresholdService/secureRandomId.js +9 -0
  86. package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +603 -0
  87. package/dist/esm/core/ThresholdService/stores/EcdsaSigningStore.js +422 -0
  88. package/dist/esm/core/ThresholdService/stores/KeyStore.js +140 -0
  89. package/dist/esm/core/ThresholdService/stores/SessionStore.js +437 -0
  90. package/dist/esm/core/ThresholdService/stores/StoreConfig.js +13 -0
  91. package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +722 -0
  92. package/dist/esm/core/ThresholdService/validation.js +718 -0
  93. package/dist/esm/core/WalletAuthMethodStore.js +180 -0
  94. package/dist/esm/core/WalletStore.js +495 -0
  95. package/dist/esm/core/WebAuthnAuthenticatorStore.js +485 -0
  96. package/dist/esm/core/WebAuthnCredentialBindingStore.js +594 -0
  97. package/dist/esm/core/WebAuthnLoginChallengeStore.js +432 -0
  98. package/dist/esm/core/WebAuthnSyncChallengeStore.js +434 -0
  99. package/dist/esm/core/authService/AuthService.js +611 -0
  100. package/dist/esm/core/authService/bytes.js +22 -0
  101. package/dist/esm/core/authService/configValues.js +15 -0
  102. package/dist/esm/core/authService/emailOtpChallengeOperations.js +126 -0
  103. package/dist/esm/core/authService/emailOtpChallengeProof.js +214 -0
  104. package/dist/esm/core/authService/emailOtpChallengeVerification.js +335 -0
  105. package/dist/esm/core/authService/emailOtpChallenges.js +260 -0
  106. package/dist/esm/core/authService/emailOtpConfig.js +231 -0
  107. package/dist/esm/core/authService/emailOtpDelivery.js +169 -0
  108. package/dist/esm/core/authService/emailOtpEnrollment.js +141 -0
  109. package/dist/esm/core/authService/emailOtpGrant.js +74 -0
  110. package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +322 -0
  111. package/dist/esm/core/authService/emailOtpSeal.js +78 -0
  112. package/dist/esm/core/authService/emailOtpUnlock.js +264 -0
  113. package/dist/esm/core/authService/githubOAuth.js +140 -0
  114. package/dist/esm/core/authService/googleEmailOtpErrors.js +6 -0
  115. package/dist/esm/core/authService/googleEmailOtpOperations.js +141 -0
  116. package/dist/esm/core/authService/googleEmailOtpRegistration.js +674 -0
  117. package/dist/esm/core/authService/identity.js +57 -0
  118. package/dist/esm/core/authService/identityOperations.js +32 -0
  119. package/dist/esm/core/authService/nearAccountOperations.js +229 -0
  120. package/dist/esm/core/authService/nearPrivateKeySigning.js +110 -0
  121. package/dist/esm/core/authService/nearPublicKeyMetadata.js +127 -0
  122. package/dist/esm/core/authService/nearTransactions.js +139 -0
  123. package/dist/esm/core/authService/oidcVerification.js +262 -0
  124. package/dist/esm/core/authService/portableCrypto.js +19 -0
  125. package/dist/esm/core/authService/rateLimits.js +117 -0
  126. package/dist/esm/core/authService/record.js +8 -0
  127. package/dist/esm/core/authService/registrationThresholdHelpers.js +131 -0
  128. package/dist/esm/core/authService/runtime.js +45 -0
  129. package/dist/esm/core/authService/signerWasmUrls.js +20 -0
  130. package/dist/esm/core/authService/storeRegistry.js +113 -0
  131. package/dist/esm/core/authService/thresholdEcdsaKeyInventory.js +146 -0
  132. package/dist/esm/core/authService/thresholdRuntimePolicy.js +19 -0
  133. package/dist/esm/core/authService/thresholdStoreSummary.js +32 -0
  134. package/dist/esm/core/authService/walletRegistrationPlanning.js +49 -0
  135. package/dist/esm/core/authService/wasm.js +78 -0
  136. package/dist/esm/core/authService/webauthn.js +746 -0
  137. package/dist/esm/core/authService/webauthnAuthority.js +17 -0
  138. package/dist/esm/core/authService/webauthnOidcHelpers.js +91 -0
  139. package/dist/esm/core/authService/webauthnWalletBinding.js +157 -0
  140. package/dist/esm/core/config.js +110 -0
  141. package/dist/esm/core/d1IdentityStore.js +340 -0
  142. package/dist/esm/core/d1WalletAuthMethodStore.js +768 -0
  143. package/dist/esm/core/d1WalletStore.js +724 -0
  144. package/dist/esm/core/defaultConfigsServer.js +9 -0
  145. package/dist/esm/core/deviceLinking/index.js +5 -0
  146. package/dist/esm/core/deviceLinking/linkedDeviceEd25519ExportRoot.js +0 -0
  147. package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +211 -0
  148. package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +279 -0
  149. package/dist/esm/core/deviceLinking/linkedDeviceSession.js +1419 -0
  150. package/dist/esm/core/deviceLinking/requestProof.js +172 -0
  151. package/dist/esm/core/errors.js +54 -0
  152. package/dist/esm/core/hostedAccountIds.js +225 -0
  153. package/dist/esm/core/keyMaterialBrands.js +58 -0
  154. package/dist/esm/core/logger.js +39 -0
  155. package/dist/esm/core/nearKeys.js +20 -0
  156. package/dist/esm/core/nearRelayerAccountProvisioning.js +713 -0
  157. package/dist/esm/core/nearSignerWasmRuntime.js +87 -0
  158. package/dist/esm/core/registrationContracts.js +2 -0
  159. package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +88 -0
  160. package/dist/esm/core/routerAbSigning/RouterAbNormalSigningRuntime.js +101 -0
  161. package/dist/esm/core/routerAbSigning/createCloudflareDurableObjectRouterAbSigningRuntimes.js +39 -0
  162. package/dist/esm/core/routerAbSigning/createRouterAbSigningRuntimes.js +91 -0
  163. package/dist/esm/core/rpcClients/near/NearClient.js +389 -0
  164. package/dist/esm/core/sessionValidation.js +0 -0
  165. package/dist/esm/core/signingLanes/LaneAggregateRevocationApplicationService.js +86 -0
  166. package/dist/esm/core/signingLanes/LaneEffectJournalStore.js +0 -0
  167. package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +324 -0
  168. package/dist/esm/core/signingLanes/LaneEnrollmentRevocation.js +173 -0
  169. package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +200 -0
  170. package/dist/esm/core/signingLanes/LaneLifecycleStore.js +24 -0
  171. package/dist/esm/core/signingLanes/SigningLaneStore.js +0 -0
  172. package/dist/esm/core/signingLanes/WalletExecutionLaneProjection.js +296 -0
  173. package/dist/esm/core/signingLanes/WalletKeyStore.js +0 -0
  174. package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +78 -0
  175. package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +71 -0
  176. package/dist/esm/core/signingLanes/index.js +8 -0
  177. package/dist/esm/core/signingLanes/signingWorkerLaneMaterialIdentity.js +0 -0
  178. package/dist/esm/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.js +305 -0
  179. package/dist/esm/core/threeRouteRegistrationContracts.js +5 -0
  180. package/dist/esm/core/thresholdEcdsaChainTarget.js +49 -0
  181. package/dist/esm/core/types.js +8 -0
  182. package/dist/esm/core/utils.js +14 -0
  183. package/dist/esm/delegateAction/index.js +136 -0
  184. package/dist/esm/hosted-wallet-gateway-worker.js +18 -0
  185. package/dist/esm/hosted-wallet-gateway.js +701 -0
  186. package/dist/esm/index.js +53 -0
  187. package/dist/esm/local-hosted-wallet-gateway-worker.js +23 -0
  188. package/dist/esm/node_modules/@near-js/types/lib/esm/provider/response.js +17 -0
  189. package/dist/esm/router/auth/authRequestValidation.js +264 -0
  190. package/dist/esm/router/auth/commonRouterUtils.js +305 -0
  191. package/dist/esm/router/auth/routerApiCredentialAuth.js +91 -0
  192. package/dist/esm/router/auth/routerApiKeyAuth.js +63 -0
  193. package/dist/esm/router/auth/walletSessionFailure.js +49 -0
  194. package/dist/esm/router/auth/webAuthnCredentialCodecs.js +107 -0
  195. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.js +84 -0
  196. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +321 -0
  197. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +1581 -0
  198. package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +1820 -0
  199. package/dist/esm/router/cloudflare/d1/authorization/d1VaultProxyStore.js +122 -0
  200. package/dist/esm/router/cloudflare/d1/authorization/walletSessionAuthorityProjection.js +119 -0
  201. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +1831 -0
  202. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +118 -0
  203. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +81 -0
  204. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +539 -0
  205. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceManagementService.js +92 -0
  206. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +560 -0
  207. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +136 -0
  208. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.js +95 -0
  209. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.js +91 -0
  210. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionService.js +15 -0
  211. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +732 -0
  212. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.js +195 -0
  213. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetAuthenticatorStore.js +100 -0
  214. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +867 -0
  215. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.js +169 -0
  216. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.js +255 -0
  217. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkSourceReader.js +128 -0
  218. package/dist/esm/router/cloudflare/d1/deviceLinking/index.js +15 -0
  219. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +311 -0
  220. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +21 -0
  221. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoWalletSigner.js +65 -0
  222. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +216 -0
  223. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +326 -0
  224. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +346 -0
  225. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +495 -0
  226. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpDeliveryRuntime.js +157 -0
  227. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +248 -0
  228. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +66 -0
  229. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +76 -0
  230. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +539 -0
  231. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +404 -0
  232. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +200 -0
  233. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +84 -0
  234. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +217 -0
  235. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +485 -0
  236. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +509 -0
  237. package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +51 -0
  238. package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +135 -0
  239. package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +62 -0
  240. package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +272 -0
  241. package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +132 -0
  242. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyEnvelopeStore.js +628 -0
  243. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +871 -0
  244. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +823 -0
  245. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpAttemptStore.js +38 -0
  246. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.js +304 -0
  247. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js +793 -0
  248. package/dist/esm/router/cloudflare/d1/registration/d1EvmFamilyEcdsaRegistrationBranch.js +120 -0
  249. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +317 -0
  250. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +2084 -0
  251. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +309 -0
  252. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +120 -0
  253. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +263 -0
  254. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +3887 -0
  255. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +182 -0
  256. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +399 -0
  257. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +486 -0
  258. package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +146 -0
  259. package/dist/esm/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.js +10 -0
  260. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.js +22 -0
  261. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +167 -0
  262. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.js +38 -0
  263. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.js +20 -0
  264. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +1459 -0
  265. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLockStore.js +114 -0
  266. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.js +16 -0
  267. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +170 -0
  268. package/dist/esm/router/cloudflare/d1/signingLanes/index.js +10 -0
  269. package/dist/esm/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js +412 -0
  270. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +1396 -0
  271. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodBoundary.js +285 -0
  272. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +2018 -0
  273. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +792 -0
  274. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +635 -0
  275. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +538 -0
  276. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +264 -0
  277. package/dist/esm/router/cloudflare/durableObjects/thresholdStore.js +514 -0
  278. package/dist/esm/router/cloudflare/durableObjects/versionedJsonRecordStore.js +192 -0
  279. package/dist/esm/router/cloudflare/runtime/cloudflare.types.js +0 -0
  280. package/dist/esm/router/cloudflare/runtime/cloudflareSignerWasm.js +8 -0
  281. package/dist/esm/router/cloudflare/runtime/createCloudflareRouter.js +19 -0
  282. package/dist/esm/router/cloudflare/runtime/createSelfHostedCloudflareSigningWorker.js +94 -0
  283. package/dist/esm/router/cloudflare/runtime/ed25519SessionAdapter.js +106 -0
  284. package/dist/esm/router/cloudflare/runtime/environment.js +25 -0
  285. package/dist/esm/router/cloudflare/runtime/routerAbPrewarm.js +34 -0
  286. package/dist/esm/router/cloudflare/runtime/routerAbServiceBindings.js +33 -0
  287. package/dist/esm/router/cloudflare/runtime/sessionAdapterRuntime.js +104 -0
  288. package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +168 -0
  289. package/dist/esm/router/cloudflare/runtime/tenantRootCreationGrant.js +147 -0
  290. package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +143 -0
  291. package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +227 -0
  292. package/dist/esm/router/cloudflare/runtime/walletConsoleTenantRootLineage.js +30 -0
  293. package/dist/esm/router/cloudflare/runtime/walletControlOps.js +107 -0
  294. package/dist/esm/router/cloudflare/runtime/walletGateway.js +149 -0
  295. package/dist/esm/router/cloudflare/runtime/walletRuntimeOps.js +322 -0
  296. package/dist/esm/router/cloudflare/runtime/walletRuntimeOpsHandler.js +48 -0
  297. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +597 -0
  298. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +272 -0
  299. package/dist/esm/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js +477 -0
  300. package/dist/esm/router/cloudflare/signingLanes/index.js +4 -0
  301. package/dist/esm/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.js +32 -0
  302. package/dist/esm/router/cloudflare-adaptor.js +45 -0
  303. package/dist/esm/router/cloudflare.js +42794 -0
  304. package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +738 -0
  305. package/dist/esm/router/domains/ecdsa/thresholdEcdsaRequestValidation.js +134 -0
  306. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +368 -0
  307. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +624 -0
  308. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +143 -0
  309. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js +270 -0
  310. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRunner.js +31 -0
  311. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +162 -0
  312. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +1366 -0
  313. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +465 -0
  314. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +1609 -0
  315. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +540 -0
  316. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +394 -0
  317. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +572 -0
  318. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +555 -0
  319. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.js +268 -0
  320. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +329 -0
  321. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js +423 -0
  322. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js +432 -0
  323. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationTwoPhaseRunner.js +58 -0
  324. package/dist/esm/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.js +0 -0
  325. package/dist/esm/router/domains/ed25519Yao/session/routerAbEd25519YaoWalletSession.js +0 -0
  326. package/dist/esm/router/domains/ed25519Yao/session/thresholdEd25519RequestValidation.js +275 -0
  327. package/dist/esm/router/domains/emailOtp/emailOtpExportPolicy.js +70 -0
  328. package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +34 -0
  329. package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +218 -0
  330. package/dist/esm/router/domains/emailOtp/emailOtpSessionRouteHelpers.js +210 -0
  331. package/dist/esm/router/domains/passkeyCustody/envelopeRevocationAdmission.js +26 -0
  332. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +107 -0
  333. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrievalRoute.js +45 -0
  334. package/dist/esm/router/domains/passkeyCustody/registrationCustodyOutcome.js +47 -0
  335. package/dist/esm/router/domains/passkeyCustody/verifiedCustodyFactor.js +46 -0
  336. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.js +32 -0
  337. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +170 -0
  338. package/dist/esm/router/domains/passkeyCustody/walletRecoveryAttempt.js +64 -0
  339. package/dist/esm/router/domains/passkeyCustody/walletRecoveryFinalization.js +652 -0
  340. package/dist/esm/router/domains/passkeyCustody/walletRecoveryKeyManifest.js +396 -0
  341. package/dist/esm/router/domains/passkeyCustody/walletRecoveryRotation.js +87 -0
  342. package/dist/esm/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.js +89 -0
  343. package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.js +106 -0
  344. package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +2669 -0
  345. package/dist/esm/router/domains/signingOperations/walletExecutionAdmission.js +228 -0
  346. package/dist/esm/router/domains/syncAccount/syncAccountRequestValidation.js +78 -0
  347. package/dist/esm/router/domains/tenantRoot/tenantRootCustodyLineage.js +0 -0
  348. package/dist/esm/router/domains/tenantRoot/tenantRootEcdsaWalletSessionComposition.js +55 -0
  349. package/dist/esm/router/domains/tenantRoot/tenantRootEd25519WalletSessionComposition.js +56 -0
  350. package/dist/esm/router/domains/tenantRoot/tenantRootIdentityResolution.js +111 -0
  351. package/dist/esm/router/domains/walletRegistration/walletRegistrationInputs.js +0 -0
  352. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +2199 -0
  353. package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +155 -0
  354. package/dist/esm/router/domains/walletUnlock/walletUnlockRequestedCapabilitiesValidation.js +84 -0
  355. package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +1142 -0
  356. package/dist/esm/router/express-adaptor.js +84 -0
  357. package/dist/esm/router/express.js +26616 -0
  358. package/dist/esm/router/framework/apiCredentialPorts.js +11 -0
  359. package/dist/esm/router/framework/applyRouteMetering.js +26 -0
  360. package/dist/esm/router/framework/authServicePort.js +30 -0
  361. package/dist/esm/router/framework/enforceRoutePolicy.js +92 -0
  362. package/dist/esm/router/framework/http.js +87 -0
  363. package/dist/esm/router/framework/logger.js +7 -0
  364. package/dist/esm/router/framework/modules.js +34 -0
  365. package/dist/esm/router/framework/ror/index.js +5 -0
  366. package/dist/esm/router/framework/ror/normalize.js +57 -0
  367. package/dist/esm/router/framework/ror/options.js +33 -0
  368. package/dist/esm/router/framework/ror/provider.js +33 -0
  369. package/dist/esm/router/framework/ror/staticProvider.js +24 -0
  370. package/dist/esm/router/framework/routeAuthPolicy.js +16 -0
  371. package/dist/esm/router/framework/routeDefinitions.js +446 -0
  372. package/dist/esm/router/framework/routeExecutionContext.js +24 -0
  373. package/dist/esm/router/framework/routeExtensions.js +50 -0
  374. package/dist/esm/router/framework/routeMeteringPolicy.js +0 -0
  375. package/dist/esm/router/framework/routeRequestValidation.js +32 -0
  376. package/dist/esm/router/framework/routeResponses.js +33 -0
  377. package/dist/esm/router/framework/routerApi.js +42 -0
  378. package/dist/esm/router/framework/routerApiRouteSurface.js +54 -0
  379. package/dist/esm/router/framework/routerApiWebhooks.js +60 -0
  380. package/dist/esm/router/framework/runtimeSnapshotConsumer.js +145 -0
  381. package/dist/esm/router/framework/versionedJsonRecordStore.js +0 -0
  382. package/dist/esm/router/ror-adaptor.js +5 -0
  383. package/dist/esm/router/ror.js +178 -0
  384. package/dist/esm/router/transport/fetch/createFetchRouter.js +309 -0
  385. package/dist/esm/router/transport/fetch/fetchRouter.types.js +0 -0
  386. package/dist/esm/router/transport/fetch/routes/auth.js +219 -0
  387. package/dist/esm/router/transport/fetch/routes/deviceLinking.js +1196 -0
  388. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +264 -0
  389. package/dist/esm/router/transport/fetch/routes/deviceManagement.js +289 -0
  390. package/dist/esm/router/transport/fetch/routes/health.js +42 -0
  391. package/dist/esm/router/transport/fetch/routes/nearPublicKeys.js +39 -0
  392. package/dist/esm/router/transport/fetch/routes/normalSigningRouterProxy.js +118 -0
  393. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +1618 -0
  394. package/dist/esm/router/transport/fetch/routes/sessions.js +1033 -0
  395. package/dist/esm/router/transport/fetch/routes/syncAccount.js +187 -0
  396. package/dist/esm/router/transport/fetch/routes/syncAccountBootstrap.js +214 -0
  397. package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +1729 -0
  398. package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +1321 -0
  399. package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +228 -0
  400. package/dist/esm/router/transport/fetch/routes/walletRegistration.js +73 -0
  401. package/dist/esm/router/transport/fetch/routes/webauthnAuthenticators.js +43 -0
  402. package/dist/esm/router/transport/fetch/routes/wellKnown.js +48 -0
  403. package/dist/esm/shared-ts/src/authorization/capabilityKinds.js +224 -0
  404. package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +134 -0
  405. package/dist/esm/shared-ts/src/authorization/index.js +6 -0
  406. package/dist/esm/shared-ts/src/authorization/operationFingerprint.js +58 -0
  407. package/dist/esm/shared-ts/src/authorization/walletAuthority.js +802 -0
  408. package/dist/esm/shared-ts/src/authorization/walletCustodyOperation.js +18 -0
  409. package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +5 -0
  410. package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +332 -0
  411. package/dist/esm/shared-ts/src/device-linking/contracts.js +8 -0
  412. package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +132 -0
  413. package/dist/esm/shared-ts/src/device-linking/digests.js +273 -0
  414. package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +158 -0
  415. package/dist/esm/shared-ts/src/device-linking/index.js +9 -0
  416. package/dist/esm/shared-ts/src/device-linking/parsers.js +1412 -0
  417. package/dist/esm/shared-ts/src/device-linking/requestProof.js +114 -0
  418. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +563 -0
  419. package/dist/esm/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +207 -0
  420. package/dist/esm/shared-ts/src/near/actions.js +75 -0
  421. package/dist/esm/shared-ts/src/passkey-custody/ceremonyCommitPayload.js +69 -0
  422. package/dist/esm/shared-ts/src/passkey-custody/credentialActivity.js +81 -0
  423. package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +272 -0
  424. package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +175 -0
  425. package/dist/esm/shared-ts/src/passkey-custody/index.js +5 -0
  426. package/dist/esm/shared-ts/src/passkey-custody/primitives.js +92 -0
  427. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +53 -0
  428. package/dist/esm/shared-ts/src/signing-lanes/execution.js +14 -0
  429. package/dist/esm/shared-ts/src/signing-lanes/index.js +11 -0
  430. package/dist/esm/shared-ts/src/signing-lanes/linkedEcdsaScope.js +1 -0
  431. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +91 -0
  432. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +124 -0
  433. package/dist/esm/shared-ts/src/signing-lanes/participants.js +262 -0
  434. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +143 -0
  435. package/dist/esm/shared-ts/src/signing-lanes/rotation.js +8 -0
  436. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +397 -0
  437. package/dist/esm/shared-ts/src/signing-lanes/rotationLifecycle.js +313 -0
  438. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +1620 -0
  439. package/dist/esm/shared-ts/src/tenant-root/index.js +2 -0
  440. package/dist/esm/shared-ts/src/tenant-root/tenantRootIdentity.js +198 -0
  441. package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +440 -0
  442. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +85 -0
  443. package/dist/esm/shared-ts/src/threshold/participants.js +26 -0
  444. package/dist/esm/shared-ts/src/threshold/sessionPolicy.js +9 -0
  445. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +40 -0
  446. package/dist/esm/shared-ts/src/utils/addAuthMethodRegistration.js +104 -0
  447. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +36 -0
  448. package/dist/esm/shared-ts/src/utils/base58.js +28 -0
  449. package/dist/esm/shared-ts/src/utils/base64.js +70 -0
  450. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +27 -0
  451. package/dist/esm/shared-ts/src/utils/digests.js +33 -0
  452. package/dist/esm/shared-ts/src/utils/domainIds.js +309 -0
  453. package/dist/esm/shared-ts/src/utils/ecdsaCapabilityActivation.js +34 -0
  454. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +46 -0
  455. package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +38 -0
  456. package/dist/esm/shared-ts/src/utils/emailOtpRecoveryKey.js +10 -0
  457. package/dist/esm/shared-ts/src/utils/encoders.js +2 -0
  458. package/dist/esm/shared-ts/src/utils/errors.js +88 -0
  459. package/dist/esm/shared-ts/src/utils/evmRpcResults.js +97 -0
  460. package/dist/esm/shared-ts/src/utils/jsonRpc.js +64 -0
  461. package/dist/esm/shared-ts/src/utils/keccak.js +150 -0
  462. package/dist/esm/shared-ts/src/utils/near.js +99 -0
  463. package/dist/esm/shared-ts/src/utils/nearRpcResults.js +205 -0
  464. package/dist/esm/shared-ts/src/utils/normalize.js +87 -0
  465. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +201 -0
  466. package/dist/esm/shared-ts/src/utils/registrationIntent.js +1268 -0
  467. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1655 -0
  468. package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +984 -0
  469. package/dist/esm/shared-ts/src/utils/routerAbNormalSigningIdentity.js +118 -0
  470. package/dist/esm/shared-ts/src/utils/routerAbPublicKeyset.js +138 -0
  471. package/dist/esm/shared-ts/src/utils/routerAbTraceContext.js +36 -0
  472. package/dist/esm/shared-ts/src/utils/secureRandomId.js +35 -0
  473. package/dist/esm/shared-ts/src/utils/signingSessionSeal.js +118 -0
  474. package/dist/esm/shared-ts/src/utils/thresholdEcdsaKeyHandle.js +28 -0
  475. package/dist/esm/shared-ts/src/utils/validation.js +23 -0
  476. package/dist/esm/shared-ts/src/utils/walletAddSignerActivation.js +32 -0
  477. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +207 -0
  478. package/dist/esm/shared-ts/src/utils/walletSessionFailure.js +15 -0
  479. package/dist/esm/shared-ts/src/utils/webauthnDeviceInfo.js +207 -0
  480. package/dist/esm/shared-ts/src/wallet-recovery/backupAcknowledgement.js +66 -0
  481. package/dist/esm/shared-ts/src/wallet-recovery/index.js +10 -0
  482. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeIssuance.js +1 -0
  483. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +34 -0
  484. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +80 -0
  485. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodes.js +4 -0
  486. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +53 -0
  487. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +108 -0
  488. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +157 -0
  489. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +233 -0
  490. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryRotation.js +3 -0
  491. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryTarget.js +29 -0
  492. package/dist/esm/storage/d1Sql.js +85 -0
  493. package/dist/esm/storage/tenantRoute.js +89 -0
  494. package/dist/esm/tenant-root.js +5 -0
  495. package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +204 -0
  496. package/dist/esm/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js +87 -0
  497. package/dist/esm/threshold/session/signingSessionSeal/guards/backends.js +192 -0
  498. package/dist/esm/threshold/session/signingSessionSeal/guards/index.js +121 -0
  499. package/dist/esm/threshold/session/signingSessionSeal/idempotency.js +38 -0
  500. package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +131 -0
  501. package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +55 -0
  502. package/dist/esm/threshold/session/signingSessionSeal/index.js +13 -0
  503. package/dist/esm/threshold/session/signingSessionSeal/observability/audit.js +38 -0
  504. package/dist/esm/threshold/session/signingSessionSeal/options.js +54 -0
  505. package/dist/esm/threshold/session/signingSessionSeal/routesOptions.js +45 -0
  506. package/dist/esm/threshold/session/signingSessionSeal/service.js +316 -0
  507. package/dist/esm/threshold/session/signingSessionSeal/signingSessionSeal.types.js +0 -0
  508. package/dist/esm/threshold/session/signingSessionSeal/transport/express.js +151 -0
  509. package/dist/esm/threshold/session/signingSessionSeal/transport/fetch.js +106 -0
  510. package/dist/esm/threshold/session/signingSessionSeal/transport/shared.js +159 -0
  511. package/dist/esm/threshold/statusCodes.js +39 -0
  512. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto.js +601 -0
  513. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
  514. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +1078 -0
  515. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  516. package/dist/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_worker.js +503 -0
  517. package/dist/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_worker_bg.wasm +0 -0
  518. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime.js +393 -0
  519. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
  520. package/dist/esm/wasm/signer.js +2 -0
  521. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +147 -0
  522. package/dist/types/shared-ts/src/authorization/capabilityKinds.typecheck.d.ts +2 -0
  523. package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +44 -0
  524. package/dist/types/shared-ts/src/authorization/index.d.ts +7 -0
  525. package/dist/types/shared-ts/src/authorization/operationFingerprint.d.ts +39 -0
  526. package/dist/types/shared-ts/src/authorization/operationFingerprint.typecheck.d.ts +2 -0
  527. package/dist/types/shared-ts/src/authorization/walletAuthority.d.ts +168 -0
  528. package/dist/types/shared-ts/src/authorization/walletAuthority.typecheck.d.ts +2 -0
  529. package/dist/types/shared-ts/src/authorization/walletCustodyOperation.d.ts +10 -0
  530. package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +28 -0
  531. package/dist/types/shared-ts/src/device-linking/activeWalletSession.d.ts +3 -0
  532. package/dist/types/shared-ts/src/device-linking/activeWalletSession.typecheck.d.ts +2 -0
  533. package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +71 -0
  534. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +843 -0
  535. package/dist/types/shared-ts/src/device-linking/contracts.typecheck.d.ts +2 -0
  536. package/dist/types/shared-ts/src/device-linking/delegatedActivationPlan.d.ts +37 -0
  537. package/dist/types/shared-ts/src/device-linking/digests.d.ts +23 -0
  538. package/dist/types/shared-ts/src/device-linking/ed25519ExportRoot.d.ts +93 -0
  539. package/dist/types/shared-ts/src/device-linking/index.d.ts +11 -0
  540. package/dist/types/shared-ts/src/device-linking/parsers.d.ts +124 -0
  541. package/dist/types/shared-ts/src/device-linking/requestProof.d.ts +26 -0
  542. package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +182 -0
  543. package/dist/types/shared-ts/src/device-linking/walletSessionCredentialDelivery.d.ts +84 -0
  544. package/dist/types/shared-ts/src/index.d.ts +10 -0
  545. package/dist/types/shared-ts/src/near/actions.d.ts +141 -0
  546. package/dist/types/shared-ts/src/near/delegate.d.ts +55 -0
  547. package/dist/types/shared-ts/src/near/index.d.ts +3 -0
  548. package/dist/types/shared-ts/src/passkey-custody/ceremonyCommitPayload.d.ts +211 -0
  549. package/dist/types/shared-ts/src/passkey-custody/credentialActivity.d.ts +49 -0
  550. package/dist/types/shared-ts/src/passkey-custody/credentialObservations.d.ts +74 -0
  551. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +191 -0
  552. package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +140 -0
  553. package/dist/types/shared-ts/src/passkey-custody/envelopeIndex.d.ts +29 -0
  554. package/dist/types/shared-ts/src/passkey-custody/index.d.ts +9 -0
  555. package/dist/types/shared-ts/src/passkey-custody/kekContext.d.ts +34 -0
  556. package/dist/types/shared-ts/src/passkey-custody/passkeyCustody.typecheck.d.ts +2 -0
  557. package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +34 -0
  558. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +27 -0
  559. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +91 -0
  560. package/dist/types/shared-ts/src/signing-lanes/execution.typecheck.d.ts +2 -0
  561. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +18 -0
  562. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +14 -0
  563. package/dist/types/shared-ts/src/signing-lanes/linkedEcdsaScope.d.ts +62 -0
  564. package/dist/types/shared-ts/src/signing-lanes/linkedEcdsaScope.typecheck.d.ts +2 -0
  565. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +30 -0
  566. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.typecheck.d.ts +2 -0
  567. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +48 -0
  568. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +2 -0
  569. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +89 -0
  570. package/dist/types/shared-ts/src/signing-lanes/recordParsers.d.ts +128 -0
  571. package/dist/types/shared-ts/src/signing-lanes/records.d.ts +160 -0
  572. package/dist/types/shared-ts/src/signing-lanes/records.typecheck.d.ts +2 -0
  573. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +894 -0
  574. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +2 -0
  575. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +32 -0
  576. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +99 -0
  577. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +67 -0
  578. package/dist/types/shared-ts/src/signing-lanes/validation.d.ts +11 -0
  579. package/dist/types/shared-ts/src/tenant-root/index.d.ts +3 -0
  580. package/dist/types/shared-ts/src/tenant-root/tenantRootIdentity.d.ts +72 -0
  581. package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +192 -0
  582. package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +77 -0
  583. package/dist/types/shared-ts/src/threshold/ed25519OperationFingerprint.d.ts +130 -0
  584. package/dist/types/shared-ts/src/threshold/index.d.ts +7 -0
  585. package/dist/types/shared-ts/src/threshold/participants.d.ts +38 -0
  586. package/dist/types/shared-ts/src/threshold/secp256k1.d.ts +39 -0
  587. package/dist/types/shared-ts/src/threshold/sessionPolicy.d.ts +5 -0
  588. package/dist/types/shared-ts/src/threshold/signingRootScope.d.ts +24 -0
  589. package/dist/types/shared-ts/src/utils/addAuthMethodRegistration.d.ts +63 -0
  590. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +295 -0
  591. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +11 -0
  592. package/dist/types/shared-ts/src/utils/authenticatorOptions.d.ts +25 -0
  593. package/dist/types/shared-ts/src/utils/base58.d.ts +17 -0
  594. package/dist/types/shared-ts/src/utils/base64.d.ts +53 -0
  595. package/dist/types/shared-ts/src/utils/bigint.d.ts +3 -0
  596. package/dist/types/shared-ts/src/utils/canonicalPrimitives.d.ts +12 -0
  597. package/dist/types/shared-ts/src/utils/digests.d.ts +6 -0
  598. package/dist/types/shared-ts/src/utils/domainIds.d.ts +140 -0
  599. package/dist/types/shared-ts/src/utils/domainIds.typecheck.d.ts +2 -0
  600. package/dist/types/shared-ts/src/utils/ecdsaCapabilityActivation.d.ts +29 -0
  601. package/dist/types/shared-ts/src/utils/ecdsaKeyFactsInventory.d.ts +24 -0
  602. package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +30 -0
  603. package/dist/types/shared-ts/src/utils/emailOtpRecoveryKey.d.ts +31 -0
  604. package/dist/types/shared-ts/src/utils/encoders.d.ts +3 -0
  605. package/dist/types/shared-ts/src/utils/errors.d.ts +44 -0
  606. package/dist/types/shared-ts/src/utils/evmRpcResults.d.ts +31 -0
  607. package/dist/types/shared-ts/src/utils/generated/routerAbEd25519YaoCore.d.ts +128 -0
  608. package/dist/types/shared-ts/src/utils/index.d.ts +34 -0
  609. package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +30 -0
  610. package/dist/types/shared-ts/src/utils/keccak.d.ts +2 -0
  611. package/dist/types/shared-ts/src/utils/near.d.ts +81 -0
  612. package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +101 -0
  613. package/dist/types/shared-ts/src/utils/normalize.d.ts +57 -0
  614. package/dist/types/shared-ts/src/utils/paillier.d.ts +37 -0
  615. package/dist/types/shared-ts/src/utils/recoveryDomain.d.ts +12 -0
  616. package/dist/types/shared-ts/src/utils/registrationEstablishedSession.d.ts +85 -0
  617. package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +621 -0
  618. package/dist/types/shared-ts/src/utils/registrationIntent.typecheck.d.ts +2 -0
  619. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +715 -0
  620. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.typecheck.d.ts +2 -0
  621. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivationRefresh.typecheck.d.ts +2 -0
  622. package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +339 -0
  623. package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.typecheck.d.ts +2 -0
  624. package/dist/types/shared-ts/src/utils/routerAbNormalSigningIdentity.d.ts +71 -0
  625. package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +51 -0
  626. package/dist/types/shared-ts/src/utils/routerAbTraceContext.d.ts +16 -0
  627. package/dist/types/shared-ts/src/utils/secureRandomId.d.ts +6 -0
  628. package/dist/types/shared-ts/src/utils/signerDomain.d.ts +75 -0
  629. package/dist/types/shared-ts/src/utils/signerDomain.typecheck.d.ts +2 -0
  630. package/dist/types/shared-ts/src/utils/signerSlot.d.ts +11 -0
  631. package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +153 -0
  632. package/dist/types/shared-ts/src/utils/signingSessionSeal.typecheck.d.ts +2 -0
  633. package/dist/types/shared-ts/src/utils/theme.d.ts +2 -0
  634. package/dist/types/shared-ts/src/utils/thresholdEcdsaKeyHandle.d.ts +11 -0
  635. package/dist/types/shared-ts/src/utils/validation.d.ts +35 -0
  636. package/dist/types/shared-ts/src/utils/walletAddSignerActivation.d.ts +23 -0
  637. package/dist/types/shared-ts/src/utils/walletAuthAuthority.d.ts +150 -0
  638. package/dist/types/shared-ts/src/utils/walletAuthAuthority.typecheck.d.ts +2 -0
  639. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +106 -0
  640. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.typecheck.d.ts +2 -0
  641. package/dist/types/shared-ts/src/utils/walletSessionFailure.d.ts +13 -0
  642. package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +48 -0
  643. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +56 -0
  644. package/dist/types/shared-ts/src/wallet-recovery/index.d.ts +10 -0
  645. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +59 -0
  646. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeIssuance.d.ts +37 -0
  647. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeLocator.d.ts +22 -0
  648. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +79 -0
  649. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +11 -0
  650. package/dist/types/shared-ts/src/wallet-recovery/recoveryEnvelopes.d.ts +42 -0
  651. package/dist/types/shared-ts/src/wallet-recovery/recoveryKekContext.d.ts +37 -0
  652. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +58 -0
  653. package/dist/types/shared-ts/src/wallet-recovery/walletRecovery.typecheck.d.ts +2 -0
  654. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.d.ts +110 -0
  655. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.d.ts +29 -0
  656. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.d.ts +115 -0
  657. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryRotation.d.ts +18 -0
  658. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.d.ts +12 -0
  659. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.typecheck.d.ts +2 -0
  660. package/dist/types/wallet-server/src/authorization/capabilityPolicy.d.ts +45 -0
  661. package/dist/types/wallet-server/src/authorization/capabilityPolicy.typecheck.d.ts +2 -0
  662. package/dist/types/wallet-server/src/authorization/domain.d.ts +454 -0
  663. package/dist/types/wallet-server/src/authorization/domain.typecheck.d.ts +2 -0
  664. package/dist/types/wallet-server/src/authorization/factorEvidence.d.ts +165 -0
  665. package/dist/types/wallet-server/src/authorization/factorEvidence.typecheck.d.ts +2 -0
  666. package/dist/types/wallet-server/src/authorization/service.d.ts +227 -0
  667. package/dist/types/wallet-server/src/authorization/vaultProxyUse.d.ts +75 -0
  668. package/dist/types/wallet-server/src/cloud-host.d.ts +94 -0
  669. package/dist/types/wallet-server/src/core/AuthService.d.ts +3 -0
  670. package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +33 -0
  671. package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +336 -0
  672. package/dist/types/wallet-server/src/core/IdentityStore.d.ts +57 -0
  673. package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +58 -0
  674. package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +551 -0
  675. package/dist/types/wallet-server/src/core/SessionService.d.ts +70 -0
  676. package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +23 -0
  677. package/dist/types/wallet-server/src/core/ThresholdService/ecdsaClientRootProof.d.ts +12 -0
  678. package/dist/types/wallet-server/src/core/ThresholdService/evmCryptoWasm.d.ts +32 -0
  679. package/dist/types/wallet-server/src/core/ThresholdService/index.d.ts +4 -0
  680. package/dist/types/wallet-server/src/core/ThresholdService/kv.d.ts +52 -0
  681. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +45 -0
  682. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillLiveSession.d.ts +93 -0
  683. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.d.ts +138 -0
  684. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/internalServiceHttp.d.ts +30 -0
  685. package/dist/types/wallet-server/src/core/ThresholdService/routerAbEcdsaSigningWorkerWasm.d.ts +17 -0
  686. package/dist/types/wallet-server/src/core/ThresholdService/routerAbNormalSigningPolicy.d.ts +21 -0
  687. package/dist/types/wallet-server/src/core/ThresholdService/secureRandomId.d.ts +2 -0
  688. package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +128 -0
  689. package/dist/types/wallet-server/src/core/ThresholdService/stores/EcdsaSigningStore.d.ts +76 -0
  690. package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +39 -0
  691. package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +102 -0
  692. package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +3 -0
  693. package/dist/types/wallet-server/src/core/ThresholdService/stores/ThresholdStoreConfig.typecheck.d.ts +2 -0
  694. package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +98 -0
  695. package/dist/types/wallet-server/src/core/ThresholdService/thresholdEd25519AuthorityScope.typecheck.d.ts +2 -0
  696. package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +193 -0
  697. package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +12 -0
  698. package/dist/types/wallet-server/src/core/WalletStore.d.ts +143 -0
  699. package/dist/types/wallet-server/src/core/WalletStore.typecheck.d.ts +2 -0
  700. package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +62 -0
  701. package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +116 -0
  702. package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.typecheck.d.ts +13 -0
  703. package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +50 -0
  704. package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +50 -0
  705. package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +493 -0
  706. package/dist/types/wallet-server/src/core/authService/bytes.d.ts +4 -0
  707. package/dist/types/wallet-server/src/core/authService/configValues.d.ts +7 -0
  708. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +108 -0
  709. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +177 -0
  710. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +46 -0
  711. package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +110 -0
  712. package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +34 -0
  713. package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +65 -0
  714. package/dist/types/wallet-server/src/core/authService/emailOtpEnrollment.d.ts +79 -0
  715. package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +42 -0
  716. package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +116 -0
  717. package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +35 -0
  718. package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +70 -0
  719. package/dist/types/wallet-server/src/core/authService/githubOAuth.d.ts +35 -0
  720. package/dist/types/wallet-server/src/core/authService/googleEmailOtpErrors.d.ts +2 -0
  721. package/dist/types/wallet-server/src/core/authService/googleEmailOtpOperations.d.ts +126 -0
  722. package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +172 -0
  723. package/dist/types/wallet-server/src/core/authService/identity.d.ts +25 -0
  724. package/dist/types/wallet-server/src/core/authService/identityOperations.d.ts +19 -0
  725. package/dist/types/wallet-server/src/core/authService/nearAccountOperations.d.ts +55 -0
  726. package/dist/types/wallet-server/src/core/authService/nearPrivateKeySigning.d.ts +16 -0
  727. package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +43 -0
  728. package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +49 -0
  729. package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +65 -0
  730. package/dist/types/wallet-server/src/core/authService/portableCrypto.d.ts +3 -0
  731. package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +30 -0
  732. package/dist/types/wallet-server/src/core/authService/record.d.ts +2 -0
  733. package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +37 -0
  734. package/dist/types/wallet-server/src/core/authService/runtime.d.ts +20 -0
  735. package/dist/types/wallet-server/src/core/authService/signerWasmUrls.d.ts +3 -0
  736. package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +58 -0
  737. package/dist/types/wallet-server/src/core/authService/thresholdEcdsaKeyInventory.d.ts +72 -0
  738. package/dist/types/wallet-server/src/core/authService/thresholdRuntimePolicy.d.ts +4 -0
  739. package/dist/types/wallet-server/src/core/authService/thresholdStoreSummary.d.ts +3 -0
  740. package/dist/types/wallet-server/src/core/authService/walletRegistrationPlanning.d.ts +19 -0
  741. package/dist/types/wallet-server/src/core/authService/wasm.d.ts +12 -0
  742. package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +207 -0
  743. package/dist/types/wallet-server/src/core/authService/webauthnAuthority.d.ts +5 -0
  744. package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +52 -0
  745. package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +48 -0
  746. package/dist/types/wallet-server/src/core/config.d.ts +13 -0
  747. package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +44 -0
  748. package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +214 -0
  749. package/dist/types/wallet-server/src/core/d1WalletStore.d.ts +108 -0
  750. package/dist/types/wallet-server/src/core/defaultConfigsServer.d.ts +5 -0
  751. package/dist/types/wallet-server/src/core/deviceLinking/index.d.ts +5 -0
  752. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceEd25519ExportRoot.d.ts +36 -0
  753. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceEmailOtpGrant.d.ts +87 -0
  754. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceManagement.d.ts +137 -0
  755. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +462 -0
  756. package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +55 -0
  757. package/dist/types/wallet-server/src/core/errors.d.ts +10 -0
  758. package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +31 -0
  759. package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +28 -0
  760. package/dist/types/wallet-server/src/core/keyMaterialBrands.typecheck.d.ts +2 -0
  761. package/dist/types/wallet-server/src/core/logger.d.ts +21 -0
  762. package/dist/types/wallet-server/src/core/nearKeys.d.ts +3 -0
  763. package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +78 -0
  764. package/dist/types/wallet-server/src/core/nearSignerWasmRuntime.d.ts +3 -0
  765. package/dist/types/wallet-server/src/core/registrationContracts.d.ts +747 -0
  766. package/dist/types/wallet-server/src/core/registrationRequests.typecheck.d.ts +2 -0
  767. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +53 -0
  768. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +71 -0
  769. package/dist/types/wallet-server/src/core/routerAbSigning/createCloudflareDurableObjectRouterAbSigningRuntimes.d.ts +28 -0
  770. package/dist/types/wallet-server/src/core/routerAbSigning/createRouterAbSigningRuntimes.d.ts +16 -0
  771. package/dist/types/wallet-server/src/core/rpcClients/near/NearClient.d.ts +134 -0
  772. package/dist/types/wallet-server/src/core/sessionValidation.d.ts +9 -0
  773. package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +35 -0
  774. package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +63 -0
  775. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentActivation.d.ts +13 -0
  776. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentRevocation.d.ts +24 -0
  777. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleApplicationService.d.ts +141 -0
  778. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +229 -0
  779. package/dist/types/wallet-server/src/core/signingLanes/SigningLaneStore.d.ts +15 -0
  780. package/dist/types/wallet-server/src/core/signingLanes/WalletExecutionLaneProjection.d.ts +59 -0
  781. package/dist/types/wallet-server/src/core/signingLanes/WalletKeyStore.d.ts +13 -0
  782. package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +58 -0
  783. package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +30 -0
  784. package/dist/types/wallet-server/src/core/signingLanes/index.d.ts +11 -0
  785. package/dist/types/wallet-server/src/core/signingLanes/signingWorkerLaneMaterialIdentity.d.ts +21 -0
  786. package/dist/types/wallet-server/src/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.d.ts +155 -0
  787. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +442 -0
  788. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +58 -0
  789. package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +15 -0
  790. package/dist/types/wallet-server/src/core/types.d.ts +757 -0
  791. package/dist/types/wallet-server/src/core/utils.d.ts +3 -0
  792. package/dist/types/wallet-server/src/delegateAction/index.d.ts +88 -0
  793. package/dist/types/wallet-server/src/hosted-wallet-gateway-worker.d.ts +10 -0
  794. package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +126 -0
  795. package/dist/types/wallet-server/src/index.d.ts +34 -0
  796. package/dist/types/wallet-server/src/local-hosted-wallet-gateway-worker.d.ts +13 -0
  797. package/dist/types/wallet-server/src/router/auth/authRequestValidation.d.ts +97 -0
  798. package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +142 -0
  799. package/dist/types/wallet-server/src/router/auth/routerApiCredentialAuth.d.ts +26 -0
  800. package/dist/types/wallet-server/src/router/auth/routerApiKeyAuth.d.ts +16 -0
  801. package/dist/types/wallet-server/src/router/auth/walletSessionFailure.d.ts +14 -0
  802. package/dist/types/wallet-server/src/router/auth/webAuthnCredentialCodecs.d.ts +20 -0
  803. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.d.ts +28 -0
  804. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +192 -0
  805. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthService.d.ts +13 -0
  806. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +174 -0
  807. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1VaultProxyStore.d.ts +13 -0
  808. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/walletSessionAuthorityProjection.d.ts +24 -0
  809. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +241 -0
  810. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.d.ts +23 -0
  811. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +32 -0
  812. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.d.ts +118 -0
  813. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceManagementService.d.ts +22 -0
  814. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.d.ts +80 -0
  815. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.d.ts +29 -0
  816. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.d.ts +17 -0
  817. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.d.ts +37 -0
  818. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionService.d.ts +12 -0
  819. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +149 -0
  820. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.d.ts +38 -0
  821. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetAuthenticatorStore.d.ts +19 -0
  822. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.d.ts +220 -0
  823. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +88 -0
  824. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.d.ts +54 -0
  825. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkSourceReader.d.ts +23 -0
  826. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/index.d.ts +15 -0
  827. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.d.ts +33 -0
  828. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts +6 -0
  829. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoWalletSigner.d.ts +27 -0
  830. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.d.ts +80 -0
  831. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.d.ts +48 -0
  832. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +64 -0
  833. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.d.ts +126 -0
  834. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpDeliveryRuntime.d.ts +22 -0
  835. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.d.ts +68 -0
  836. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +15 -0
  837. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +37 -0
  838. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +186 -0
  839. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.d.ts +45 -0
  840. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.d.ts +124 -0
  841. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.d.ts +24 -0
  842. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +51 -0
  843. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +69 -0
  844. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.d.ts +57 -0
  845. package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityRecords.d.ts +38 -0
  846. package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityService.d.ts +31 -0
  847. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +30 -0
  848. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcBoundary.d.ts +60 -0
  849. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcVerificationService.d.ts +39 -0
  850. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyEnvelopeStore.d.ts +335 -0
  851. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +448 -0
  852. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +256 -0
  853. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpAttemptStore.d.ts +32 -0
  854. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.d.ts +116 -0
  855. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.d.ts +180 -0
  856. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1EvmFamilyEcdsaRegistrationBranch.d.ts +24 -0
  857. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +86 -0
  858. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +121 -0
  859. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +84 -0
  860. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationIntentService.d.ts +31 -0
  861. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +49 -0
  862. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +369 -0
  863. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +106 -0
  864. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.d.ts +104 -0
  865. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.d.ts +70 -0
  866. package/dist/types/wallet-server/src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.d.ts +26 -0
  867. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.d.ts +4 -0
  868. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.d.ts +4 -0
  869. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +25 -0
  870. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.d.ts +20 -0
  871. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.d.ts +13 -0
  872. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.d.ts +51 -0
  873. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLockStore.d.ts +28 -0
  874. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.d.ts +5 -0
  875. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneRecords.d.ts +107 -0
  876. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/index.d.ts +10 -0
  877. package/dist/types/wallet-server/src/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.d.ts +118 -0
  878. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +114 -0
  879. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.typecheck.d.ts +2 -0
  880. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodBoundary.d.ts +90 -0
  881. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +359 -0
  882. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +143 -0
  883. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.d.ts +42 -0
  884. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +135 -0
  885. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +89 -0
  886. package/dist/types/wallet-server/src/router/cloudflare/durableObjects/thresholdStore.d.ts +19 -0
  887. package/dist/types/wallet-server/src/router/cloudflare/durableObjects/versionedJsonRecordStore.d.ts +32 -0
  888. package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflare.types.d.ts +30 -0
  889. package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflareSignerWasm.d.ts +2 -0
  890. package/dist/types/wallet-server/src/router/cloudflare/runtime/createCloudflareRouter.d.ts +5 -0
  891. package/dist/types/wallet-server/src/router/cloudflare/runtime/createSelfHostedCloudflareSigningWorker.d.ts +23 -0
  892. package/dist/types/wallet-server/src/router/cloudflare/runtime/ed25519SessionAdapter.d.ts +16 -0
  893. package/dist/types/wallet-server/src/router/cloudflare/runtime/environment.d.ts +5 -0
  894. package/dist/types/wallet-server/src/router/cloudflare/runtime/routerAbPrewarm.d.ts +9 -0
  895. package/dist/types/wallet-server/src/router/cloudflare/runtime/routerAbServiceBindings.d.ts +11 -0
  896. package/dist/types/wallet-server/src/router/cloudflare/runtime/sessionAdapterRuntime.d.ts +28 -0
  897. package/dist/types/wallet-server/src/router/cloudflare/runtime/staticWalletConsoleBinding.d.ts +27 -0
  898. package/dist/types/wallet-server/src/router/cloudflare/runtime/tenantRootCreationGrant.d.ts +24 -0
  899. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +143 -0
  900. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +20 -0
  901. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleTenantRootLineage.d.ts +7 -0
  902. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletControlOps.d.ts +21 -0
  903. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +30 -0
  904. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOps.d.ts +64 -0
  905. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOpsHandler.d.ts +3 -0
  906. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.d.ts +217 -0
  907. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.d.ts +73 -0
  908. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.d.ts +100 -0
  909. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/index.d.ts +4 -0
  910. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.d.ts +6 -0
  911. package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +75 -0
  912. package/dist/types/wallet-server/src/router/domains/ecdsa/routerAbEcdsaStrictRegistration.d.ts +199 -0
  913. package/dist/types/wallet-server/src/router/domains/ecdsa/thresholdEcdsaRequestValidation.d.ts +32 -0
  914. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +172 -0
  915. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.typecheck.d.ts +2 -0
  916. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +156 -0
  917. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +59 -0
  918. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.d.ts +47 -0
  919. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRunner.d.ts +29 -0
  920. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.d.ts +20 -0
  921. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +271 -0
  922. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.d.ts +12 -0
  923. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.d.ts +509 -0
  924. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryActivation.typecheck.d.ts +2 -0
  925. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.d.ts +14 -0
  926. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.d.ts +20 -0
  927. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.d.ts +56 -0
  928. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.d.ts +200 -0
  929. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.d.ts +70 -0
  930. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.d.ts +73 -0
  931. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.d.ts +9 -0
  932. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.d.ts +131 -0
  933. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.typecheck.d.ts +2 -0
  934. package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationTwoPhaseRunner.d.ts +62 -0
  935. package/dist/types/wallet-server/src/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.d.ts +17 -0
  936. package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/routerAbEd25519YaoWalletSession.d.ts +178 -0
  937. package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/routerAbEd25519YaoWalletSession.typecheck.d.ts +2 -0
  938. package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/thresholdEd25519RequestValidation.d.ts +19 -0
  939. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpExportPolicy.d.ts +32 -0
  940. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpRequestValidation.d.ts +13 -0
  941. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpRouteHandlers.d.ts +35 -0
  942. package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpSessionRouteHelpers.d.ts +134 -0
  943. package/dist/types/wallet-server/src/router/domains/passkeyCustody/envelopeRevocationAdmission.d.ts +31 -0
  944. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +85 -0
  945. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrievalRoute.d.ts +42 -0
  946. package/dist/types/wallet-server/src/router/domains/passkeyCustody/registrationCustodyOutcome.d.ts +38 -0
  947. package/dist/types/wallet-server/src/router/domains/passkeyCustody/verifiedCustodyFactor.d.ts +35 -0
  948. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.d.ts +56 -0
  949. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +65 -0
  950. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryAttempt.d.ts +59 -0
  951. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryFinalization.d.ts +81 -0
  952. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryKeyManifest.d.ts +184 -0
  953. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryRotation.d.ts +31 -0
  954. package/dist/types/wallet-server/src/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.d.ts +32 -0
  955. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.d.ts +48 -0
  956. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +909 -0
  957. package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +104 -0
  958. package/dist/types/wallet-server/src/router/domains/syncAccount/syncAccountRequestValidation.d.ts +30 -0
  959. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootCustodyLineage.d.ts +14 -0
  960. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootEcdsaWalletSessionComposition.d.ts +35 -0
  961. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootEd25519WalletSessionComposition.d.ts +35 -0
  962. package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootIdentityResolution.d.ts +56 -0
  963. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +78 -0
  964. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +91 -0
  965. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +105 -0
  966. package/dist/types/wallet-server/src/router/domains/walletUnlock/walletUnlockRequestedCapabilitiesValidation.d.ts +39 -0
  967. package/dist/types/wallet-server/src/router/domains/walletUnlock/walletUnlockRouteHandlers.d.ts +172 -0
  968. package/dist/types/wallet-server/src/router/express-adaptor.d.ts +22 -0
  969. package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +82 -0
  970. package/dist/types/wallet-server/src/router/framework/applyRouteMetering.d.ts +23 -0
  971. package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +1392 -0
  972. package/dist/types/wallet-server/src/router/framework/enforceRoutePolicy.d.ts +48 -0
  973. package/dist/types/wallet-server/src/router/framework/http.d.ts +12 -0
  974. package/dist/types/wallet-server/src/router/framework/logger.d.ts +5 -0
  975. package/dist/types/wallet-server/src/router/framework/modules.d.ts +17 -0
  976. package/dist/types/wallet-server/src/router/framework/ror/index.d.ts +7 -0
  977. package/dist/types/wallet-server/src/router/framework/ror/normalize.d.ts +14 -0
  978. package/dist/types/wallet-server/src/router/framework/ror/options.d.ts +9 -0
  979. package/dist/types/wallet-server/src/router/framework/ror/provider.d.ts +17 -0
  980. package/dist/types/wallet-server/src/router/framework/ror/staticProvider.d.ts +11 -0
  981. package/dist/types/wallet-server/src/router/framework/routeAuthPolicy.d.ts +34 -0
  982. package/dist/types/wallet-server/src/router/framework/routeDefinitions.d.ts +27 -0
  983. package/dist/types/wallet-server/src/router/framework/routeDefinitions.typecheck.d.ts +2 -0
  984. package/dist/types/wallet-server/src/router/framework/routeExecutionContext.d.ts +29 -0
  985. package/dist/types/wallet-server/src/router/framework/routeExtensions.d.ts +27 -0
  986. package/dist/types/wallet-server/src/router/framework/routeMeteringPolicy.d.ts +17 -0
  987. package/dist/types/wallet-server/src/router/framework/routeRequestValidation.d.ts +5 -0
  988. package/dist/types/wallet-server/src/router/framework/routeResponses.d.ts +17 -0
  989. package/dist/types/wallet-server/src/router/framework/routerApi.d.ts +221 -0
  990. package/dist/types/wallet-server/src/router/framework/routerApiRouteSurface.d.ts +14 -0
  991. package/dist/types/wallet-server/src/router/framework/routerApiWebhooks.d.ts +12 -0
  992. package/dist/types/wallet-server/src/router/framework/runtimeSnapshotConsumer.d.ts +28 -0
  993. package/dist/types/wallet-server/src/router/framework/versionedJsonRecordStore.d.ts +20 -0
  994. package/dist/types/wallet-server/src/router/ror-adaptor.d.ts +3 -0
  995. package/dist/types/wallet-server/src/router/transport/fetch/createFetchRouter.d.ts +8 -0
  996. package/dist/types/wallet-server/src/router/transport/fetch/fetchRouter.types.d.ts +23 -0
  997. package/dist/types/wallet-server/src/router/transport/fetch/routes/auth.d.ts +3 -0
  998. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +202 -0
  999. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.d.ts +92 -0
  1000. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceManagement.d.ts +29 -0
  1001. package/dist/types/wallet-server/src/router/transport/fetch/routes/health.d.ts +4 -0
  1002. package/dist/types/wallet-server/src/router/transport/fetch/routes/nearPublicKeys.d.ts +3 -0
  1003. package/dist/types/wallet-server/src/router/transport/fetch/routes/normalSigningRouterProxy.d.ts +33 -0
  1004. package/dist/types/wallet-server/src/router/transport/fetch/routes/passkeyCustody.d.ts +66 -0
  1005. package/dist/types/wallet-server/src/router/transport/fetch/routes/sessions.d.ts +31 -0
  1006. package/dist/types/wallet-server/src/router/transport/fetch/routes/syncAccount.d.ts +3 -0
  1007. package/dist/types/wallet-server/src/router/transport/fetch/routes/syncAccountBootstrap.d.ts +128 -0
  1008. package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +87 -0
  1009. package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEd25519.d.ts +47 -0
  1010. package/dist/types/wallet-server/src/router/transport/fetch/routes/walletExecutionLanePreflight.d.ts +4 -0
  1011. package/dist/types/wallet-server/src/router/transport/fetch/routes/walletRegistration.d.ts +3 -0
  1012. package/dist/types/wallet-server/src/router/transport/fetch/routes/webauthnAuthenticators.d.ts +3 -0
  1013. package/dist/types/wallet-server/src/router/transport/fetch/routes/wellKnown.d.ts +3 -0
  1014. package/dist/types/wallet-server/src/storage/d1Sql.d.ts +14 -0
  1015. package/dist/types/wallet-server/src/storage/tenantRoute.d.ts +136 -0
  1016. package/dist/types/wallet-server/src/storage/tenantRoute.typecheck.d.ts +2 -0
  1017. package/dist/types/wallet-server/src/tenant-root.d.ts +5 -0
  1018. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/crypto/cipher.d.ts +45 -0
  1019. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.d.ts +16 -0
  1020. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/guards/backends.d.ts +23 -0
  1021. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/guards/index.d.ts +46 -0
  1022. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/idempotency.d.ts +3 -0
  1023. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/idempotencyBackends.d.ts +24 -0
  1024. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/idempotencyRecords.d.ts +22 -0
  1025. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/index.d.ts +23 -0
  1026. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/observability/audit.d.ts +9 -0
  1027. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/options.d.ts +9 -0
  1028. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/routesOptions.d.ts +20 -0
  1029. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/service.d.ts +3 -0
  1030. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/signingSessionSeal.typecheck.d.ts +2 -0
  1031. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/signingSessionSeal.types.d.ts +148 -0
  1032. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/express.d.ts +12 -0
  1033. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/fetch.d.ts +13 -0
  1034. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/shared.d.ts +24 -0
  1035. package/dist/types/wallet-server/src/threshold/statusCodes.d.ts +10 -0
  1036. package/dist/types/wallet-server/src/wasm/signer.d.ts +8 -0
  1037. package/migrations/d1-signer/0001_signer_d1_initial.sql +2486 -0
  1038. package/migrations/d1-signer/0002_signer_post_103_canonical_upgrade.sql +1576 -0
  1039. package/migrations/d1-signer/0003_r107_wallet_authorization.sql +299 -0
  1040. package/migrations/d1-signer/0004_remove_legacy_email_recovery.sql +14 -0
  1041. package/migrations/d1-signer/0005_r103p8_linked_owner_auth_bindings.sql +92 -0
  1042. package/migrations/d1-signer/0006_r103p8_linked_device_custody_transfers.sql +77 -0
  1043. package/migrations/d1-signer/0007_r103p8_wallet_session_auth_method_provenance.sql +18 -0
  1044. package/migrations/d1-signer/0008_r103p8_linked_device_session_cas_guard.sql +35 -0
  1045. package/migrations/d1-signer/0009_linked_device_email_otp.sql +405 -0
  1046. package/migrations/d1-signer/0010_linked_device_session_target_factor.sql +78 -0
  1047. package/migrations/d1-signer/0011_linked_device_ed25519_export_root.sql +9 -0
  1048. package/migrations/d1-signer/0012_versioned_json_cas_guard.sql +3 -0
  1049. package/migrations/d1-signer/0013_linked_device_export_authorization.sql +133 -0
  1050. package/migrations/d1-signer/0014_wallet_recovery_code_locators.sql +19 -0
  1051. package/migrations/d1-signer/0015_r103e_authority_baseline.sql +259 -0
  1052. package/migrations/d1-signer/0016_r103e_wallet_session_authorizations_v2.sql +133 -0
  1053. package/migrations/d1-signer/0017_r103e_link_session_state.sql +83 -0
  1054. package/migrations/d1-signer/0018_r103e_linked_device_authority_installations.sql +34 -0
  1055. package/migrations/d1-signer/0019_r103e_email_otp_device_methods.sql +3 -0
  1056. package/migrations/d1-signer/0020_r103e_wallet_session_operation_credentials.sql +12 -0
  1057. package/migrations/d1-signer/0021_linked_device_source_contribution_transcripts.sql +64 -0
  1058. package/migrations/d1-signer/0022_r109c_multi_auth_email_cardinality.sql +118 -0
  1059. package/migrations/d1-signer/0023_r109d_first_email_linked_device.sql +111 -0
  1060. package/migrations/d1-signer/0024_r103f_v2_authorized_operation_claim.sql +99 -0
  1061. package/migrations/d1-signer/0025_r109d_email_enrollment_wallet_cardinality.sql +57 -0
  1062. package/migrations/d1-signer/0026_r115_wallet_recovery_authority_provenance.sql +253 -0
  1063. package/migrations/d1-signer/0027_r115_email_otp_recovery_bootstrap.sql +90 -0
  1064. package/migrations/d1-signer/0028_r103f_phase1_additive_schema_bridge.sql +1119 -0
  1065. package/migrations/d1-signer/0029_r103f_phase0_registration_replay_tokens.sql +135 -0
  1066. package/migrations/d1-signer/0030_r103f_wallet_session_client_capability.sql +17 -0
  1067. package/migrations/d1-signer/0031_r103f_delete_registration_replay_tokens.sql +4 -0
  1068. package/migrations/d1-signer/0032_r103f_exact_authorized_operation_enforcement.sql +149 -0
  1069. package/migrations/d1-signer/0033_r103f_linked_delivery_recipient.sql +6 -0
  1070. package/migrations/d1-signer/0034_r103f_exact_wallet_session_cutover.sql +743 -0
  1071. package/migrations/d1-signer/0035_r103f_linked_delivery_acknowledgement_cleanup_window.sql +413 -0
  1072. package/package.json +132 -0
  1073. package/scripts/d1-local-migrate-signer.mjs +148 -0
  1074. package/src/README.md +75 -0
  1075. package/wrangler.local-hosted-wallet-gateway.toml +37 -0
@@ -0,0 +1,1729 @@
1
+ import { parseEmailOtpChallengeId, parseOrgId, parseProviderSubject, parseWalletId } from "../../../../shared-ts/src/utils/domainIds.js";
2
+ import { EVM_ECDSA_MPC_OPERATION_KINDS, buildEvmEcdsaMpcOperationRef, parseAuthFactorId, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parseEcdsaAuthorizationSessionId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
3
+ import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
4
+ import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
5
+ import { alphabetizeStringify, sha256BytesUtf8 } from "../../../../shared-ts/src/utils/digests.js";
6
+ import { buildCapabilityOperationEnvelope } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
7
+ import "../../../../shared-ts/src/utils/encoders.js";
8
+ import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIntent.js";
9
+ import { routerAbMpcMaterialActivationRefToWire, sameRouterAbMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
10
+ import { walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
11
+ import { ROUTER_AB_ECDSA_DERIVATION_EXPORT_PATH, ROUTER_AB_ECDSA_DERIVATION_NORMAL_SIGNING_STATE_KIND_V1, ROUTER_AB_ECDSA_DERIVATION_REFRESH_PATH, computeRouterAbEcdsaOperationStepUpChallengeB64u, parseRouterAbEcdsaDerivationActivationRefreshCommitRequestV1, parseRouterAbEcdsaDerivationEvmDigestSigningFinalizeRequestV1, parseRouterAbEcdsaDerivationEvmDigestSigningRequestV1, parseRouterAbEcdsaDerivationExplicitExportRequestV1, parseRouterAbEcdsaOperationStepUpAuthorizationRequestV1, parseRouterAbEcdsaPostRegistrationSessionActivationRequestV1, sameRouterAbEcdsaDerivationNormalSigningScopeV1, sameRouterAbEcdsaDerivationPublicCapabilityV1 } from "../../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
12
+ import { buildWalletSessionCapabilitySubjectsV1, projectActiveWalletSession } from "../../../../authorization/domain.js";
13
+ import { buildVerifiedWalletOperationEmailOtpFactorResult, buildVerifiedWalletOperationPasskeyFactorResult } from "../../../../authorization/factorEvidence.js";
14
+ import { WALLET_SESSION_FAILURE_CODES } from "../../../../shared-ts/src/utils/walletSessionFailure.js";
15
+ import { json, readJson } from "../../../framework/http.js";
16
+ import { extractBearerCredential } from "../../../auth/routerApiKeyAuth.js";
17
+ import { walletSessionFailure, walletSessionFailureStatus } from "../../../auth/walletSessionFailure.js";
18
+ import { resolveWalletSessionOperationCredentialAdmission, validateRouterAbEcdsaDerivationWalletSessionInputs } from "../../../auth/commonRouterUtils.js";
19
+ import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_EXPORT_OPERATION, WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
20
+ import { hashEmailOtpOperationBinding } from "../../../domains/emailOtp/emailOtpSessionRouteHelpers.js";
21
+ import { thresholdEcdsaStatusCode } from "../../../../threshold/statusCodes.js";
22
+ import { admitRouterAbEcdsaReusableWalletSessionOperation, authenticateRouterAbEcdsaOperationStepUpWithExhaustedCandidate, authenticateRouterAbWalletOperationStepUpIdentity, authorizeRouterAbEcdsaDerivationNormalSigningRoute, buildRouterAbEcdsaOwnerOperationStepUpPreparation, claimRouterAbEcdsaOperationStepUp, completeRouterAbEcdsaOperation, decideRouterAbEcdsaOwnerOperationAuthorization, resolveFreshRouterAbEcdsaMaterialActivation, routerAbEcdsaAtomicAuthorizationConfigured, routerAbEcdsaOperationInProgressResult, routerAbEcdsaOwnerOperationFailureResult, routerAbEcdsaReplayHttpResponse, routerAbEcdsaReplayUnavailableResult } from "../../../domains/signingOperations/routerAbPrivateSigningWorker.js";
23
+ import { parseRouterAbEcdsaDerivationPoolFillInitRouteRequest, parseRouterAbEcdsaDerivationPoolFillStepRouteRequest } from "../../../domains/ecdsa/thresholdEcdsaRequestValidation.js";
24
+ import { resolveWalletAuthMethodIdForAuthority } from "../../../../core/signingLanes/WalletExecutionLaneProjection.js";
25
+ import { proxyNormalSigningRequestToMpcRouter, proxyOwnerLaneAdmittedNormalSigningRequest } from "./normalSigningRouterProxy.js";
26
+ //#region src/router/transport/fetch/routes/thresholdEcdsa.ts
27
+ async function verifyActiveEcdsaOperationStepUpAuthority(walletAuthMethods, proof) {
28
+ switch (proof.kind) {
29
+ case "passkey": return await walletAuthMethods.verifyActivePasskeyAuthority(proof.authority);
30
+ case "email_otp": return await walletAuthMethods.verifyActiveEmailOtpAuthority(proof.authority);
31
+ default: throw new Error("Unsupported ECDSA operation step-up proof");
32
+ }
33
+ }
34
+ const NOT_IMPLEMENTED = {
35
+ ok: false,
36
+ code: "not_implemented",
37
+ message: "threshold-ecdsa is not implemented"
38
+ };
39
+ function requireAuthorizationValue(result) {
40
+ if (!result.ok) throw new Error(result.error.message);
41
+ return result.value;
42
+ }
43
+ function buildRouterAbEcdsaAuthorizedOperationWire(input) {
44
+ const operation = input.operation;
45
+ const operationRef = operation.operation.operation;
46
+ if (operationRef.capabilityKind !== "evm_ecdsa_mpc_signing" || operationRef.operationKind !== "evm.sign_transaction") throw new Error("ECDSA authorized operation capability or operation kind is invalid");
47
+ const commonAuthorizedOperation = {
48
+ authorized_operation_id: operation.authorizedOperationId,
49
+ operation_id: operation.operation.operationId,
50
+ capability_kind: "evm_ecdsa_mpc_signing",
51
+ operation_kind: "evm.sign_transaction",
52
+ lane_digest_b64u: operation.operation.digests.laneDigest,
53
+ intent_digest_b64u: operation.operation.digests.intentDigest,
54
+ display_digest_b64u: operation.operation.digests.displayDigest,
55
+ operation_fingerprint_digest: operation.operationFingerprintDigest
56
+ };
57
+ switch (input.binding.kind) {
58
+ case "reusable_wallet_session":
59
+ if (operation.authorization.kind !== "authorization_grant" || operation.quota.kind !== "consume_reusable_wallet_session") throw new Error("Reusable Wallet Session authorized operation is invalid");
60
+ return {
61
+ binding: {
62
+ kind: "reusable_wallet_session",
63
+ authorization_id: operation.authorization.authorizationGrantRef.authorizationId,
64
+ wallet_session_id: input.binding.walletSessionId,
65
+ quota_id: input.binding.quotaId
66
+ },
67
+ authorized_operation: {
68
+ kind: "reusable_wallet_session_authorized_operation_v1",
69
+ ...commonAuthorizedOperation
70
+ }
71
+ };
72
+ case "gateway_owner_wallet_session":
73
+ if (operation.authorization.kind !== "authorization_grant" || operation.quota.kind !== "consume_reusable_wallet_session") throw new Error("Gateway owner Wallet Session authorized operation is invalid");
74
+ return {
75
+ binding: {
76
+ kind: "gateway_owner_wallet_session",
77
+ subject_id: input.binding.subjectId,
78
+ account_id: input.binding.accountId,
79
+ authorization_id: input.binding.authorizationId,
80
+ wallet_session_id: input.binding.walletSessionId,
81
+ quota_id: input.binding.quotaId,
82
+ threshold_session_id: input.binding.thresholdSessionId,
83
+ org_id: input.binding.orgId,
84
+ project_id: input.binding.projectId,
85
+ environment: input.binding.environment,
86
+ signing_worker_id: input.binding.signingWorkerId,
87
+ expires_at_ms: input.binding.expiresAtMs
88
+ },
89
+ authorized_operation: {
90
+ kind: "reusable_wallet_session_authorized_operation_v1",
91
+ ...commonAuthorizedOperation
92
+ }
93
+ };
94
+ case "operation_step_up":
95
+ if (operation.authorization.kind !== "verified_step_up" || operation.quota.kind !== "quota_neutral") throw new Error("Verified step-up authorized operation is invalid");
96
+ return {
97
+ binding: {
98
+ kind: "operation_step_up",
99
+ authorization_session_id: input.binding.authorizationSessionId,
100
+ org_id: input.binding.orgId,
101
+ project_id: input.binding.projectId,
102
+ environment: input.binding.environment,
103
+ subject_id: input.binding.subjectId
104
+ },
105
+ authorized_operation: {
106
+ kind: "verified_step_up_authorized_operation_v1",
107
+ authorization_session_id: input.binding.authorizationSessionId,
108
+ evidence_set_digest: operation.authorization.evidenceSetDigest,
109
+ ...commonAuthorizedOperation
110
+ }
111
+ };
112
+ }
113
+ }
114
+ function decideRouterAbEcdsaOperationStepUpExecution(input) {
115
+ if (input.admissionKind === "replayed") return {
116
+ kind: "replay",
117
+ operation: input.operation
118
+ };
119
+ if (input.admissionKind === "claimed" && input.phase === "finalize") return { kind: "missing" };
120
+ return {
121
+ kind: "execute",
122
+ operation: input.operation
123
+ };
124
+ }
125
+ async function handleRouterAbEcdsaDerivationNormalSigningRoute(input) {
126
+ const authorization = await authorizeRouterAbEcdsaDerivationNormalSigningRoute({
127
+ body: input.body,
128
+ rawBody: input.body,
129
+ headers: Object.fromEntries(input.ctx.request.headers.entries()),
130
+ session: input.ctx.opts.session,
131
+ authorizedOperations: input.ctx.service.authorizedOperations,
132
+ authorizationSessions: input.ctx.service.authorizationSessions,
133
+ admissionAdapter: input.ctx.opts.routerAbNormalSigningAdmission,
134
+ resolveEcdsaMaterialActivation: input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation.bind(input.ctx.service.walletRegistration),
135
+ phase: input.phase
136
+ });
137
+ if (!authorization.ok) return json(authorization.result.body, { status: authorization.result.status });
138
+ let authorizedOperation;
139
+ let authorizedOperationWire;
140
+ if (authorization.kind === "operation_step_up") {
141
+ const decision = decideRouterAbEcdsaOperationStepUpExecution({
142
+ phase: input.phase,
143
+ admissionKind: authorization.admissionKind,
144
+ operation: authorization.operation
145
+ });
146
+ if (decision.kind === "replay") return routerAbEcdsaReplayResponse(decision.operation);
147
+ if (decision.kind === "missing") return json({
148
+ ok: false,
149
+ code: "authorized_operation_missing",
150
+ message: "ECDSA finalize requires a claimed prepare operation"
151
+ }, { status: 409 });
152
+ authorizedOperation = decision.operation;
153
+ authorizedOperationWire = buildRouterAbEcdsaAuthorizedOperationWire({
154
+ operation: authorizedOperation,
155
+ binding: {
156
+ kind: "operation_step_up",
157
+ authorizationSessionId: authorization.session.sessionId,
158
+ orgId: authorization.session.runtimePolicyScope.orgId,
159
+ projectId: authorization.session.runtimePolicyScope.projectId,
160
+ environment: authorization.session.runtimePolicyScope.envId,
161
+ subjectId: authorization.session.principalId
162
+ }
163
+ });
164
+ } else {
165
+ const operation = await admitRouterAbEcdsaReusableWalletSessionOperation({
166
+ request: input.phase === "prepare" ? parseRouterAbEcdsaDerivationEvmDigestSigningRequestV1(input.body) : parseRouterAbEcdsaDerivationEvmDigestSigningFinalizeRequestV1(input.body),
167
+ materialActivation: authorization.admission.materialActivation,
168
+ binding: authorization.kind === "wallet_session_operation_credential_v1" ? {
169
+ kind: "wallet_session_operation_credential_v1",
170
+ context: authorization.validated.admission.context
171
+ } : {
172
+ kind: "wallet_session_operation_credential_exhausted_candidate_v1",
173
+ candidate: authorization.candidate
174
+ },
175
+ authorizedOperations: input.ctx.service.authorizedOperations,
176
+ resolveEcdsaMaterialActivation: input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation.bind(input.ctx.service.walletRegistration)
177
+ });
178
+ if (!operation.ok) {
179
+ const failureBody = operation.error.body;
180
+ const failureCode = typeof failureBody === "object" && failureBody !== null && "code" in failureBody && typeof failureBody.code === "string" ? failureBody.code : "authorization_unavailable";
181
+ const failureMessage = typeof failureBody === "object" && failureBody !== null && "message" in failureBody && typeof failureBody.message === "string" ? failureBody.message : "ECDSA operation authorization is unavailable";
182
+ const stepUp = input.phase === "prepare" ? buildRouterAbEcdsaOwnerOperationStepUpPreparation({
183
+ request: parseRouterAbEcdsaDerivationEvmDigestSigningRequestV1(input.body),
184
+ keyHandle: authorization.activeMaterial.keyHandle,
185
+ relayerKeyId: authorization.activeMaterial.relayerKeyId,
186
+ participantIds: [...authorization.activeMaterial.participantIds]
187
+ }) ?? void 0 : void 0;
188
+ const decision = routerAbEcdsaOwnerOperationFailureResult({
189
+ status: operation.error.status,
190
+ code: failureCode,
191
+ message: failureMessage,
192
+ phase: input.phase,
193
+ stepUp
194
+ });
195
+ return json(decision.body, { status: decision.status });
196
+ }
197
+ if (operation.admission.kind === "operation_in_progress" && input.phase === "prepare") {
198
+ const failure = routerAbEcdsaOperationInProgressResult();
199
+ return json(failure.body, { status: failure.status });
200
+ }
201
+ if (operation.admission.kind === "replayed") return routerAbEcdsaReplayResponse(operation.admission.operation);
202
+ if (operation.admission.kind === "claimed" && input.phase === "finalize") return json({
203
+ ok: false,
204
+ code: "authorized_operation_missing",
205
+ message: "ECDSA finalize requires a claimed prepare operation"
206
+ }, { status: 409 });
207
+ const ownerDecision = decideRouterAbEcdsaOwnerOperationAuthorization({ operation: operation.admission.operation });
208
+ switch (ownerDecision.kind) {
209
+ case "authorized": break;
210
+ case "denied": return json({
211
+ ok: false,
212
+ code: ownerDecision.denial.code,
213
+ message: ownerDecision.denial.message,
214
+ authorization_decision: {
215
+ kind: "denied",
216
+ denial: ownerDecision.denial
217
+ }
218
+ }, { status: 403 });
219
+ case "step_up_required": return json({
220
+ ok: false,
221
+ code: "authorization_unavailable",
222
+ message: "ECDSA operation step-up was not admitted",
223
+ authorization_decision: {
224
+ kind: "denied",
225
+ denial: {
226
+ code: "authorization_unavailable",
227
+ message: "ECDSA operation step-up was not admitted"
228
+ }
229
+ }
230
+ }, { status: 403 });
231
+ }
232
+ authorizedOperation = operation.admission.operation;
233
+ const session = authorization.kind === "wallet_session_operation_credential_v1" ? authorization.validated.admission.context.authorization.session : authorization.candidate.status.session;
234
+ const runtimePolicyScope = authorization.activeMaterial.runtimePolicyScope;
235
+ authorizedOperationWire = buildRouterAbEcdsaAuthorizedOperationWire({
236
+ operation: authorizedOperation,
237
+ binding: {
238
+ kind: "gateway_owner_wallet_session",
239
+ subjectId: String(session.principalId),
240
+ accountId: String(session.walletId),
241
+ authorizationId: String(session.authorizationId),
242
+ walletSessionId: String(session.walletSessionId),
243
+ quotaId: String(session.quotaId),
244
+ thresholdSessionId: authorization.admission.thresholdSessionId,
245
+ orgId: runtimePolicyScope.orgId,
246
+ projectId: runtimePolicyScope.projectId,
247
+ environment: runtimePolicyScope.envId,
248
+ signingWorkerId: authorization.activeMaterial.materialActivation.signing_worker,
249
+ expiresAtMs: session.expiresAtMs
250
+ }
251
+ });
252
+ }
253
+ const signingRequest = input.phase === "prepare" ? parseRouterAbEcdsaDerivationEvmDigestSigningRequestV1(input.body) : parseRouterAbEcdsaDerivationEvmDigestSigningFinalizeRequestV1(input.body);
254
+ const signingWalletId = parseWalletId(signingRequest.scope.wallet_id);
255
+ if (!signingWalletId.ok) return json({
256
+ ok: false,
257
+ code: "invalid_body",
258
+ message: "ECDSA signing wallet is invalid"
259
+ }, { status: 400 });
260
+ const laneAuthorization = authorization.kind === "operation_step_up" ? authorization.session.laneAuthorization : {
261
+ kind: "wallet_auth_method",
262
+ walletAuthMethodId: authorization.kind === "wallet_session_operation_credential_v1" ? authorization.validated.admission.context.authorization.session.walletAuthMethodId : authorization.candidate.status.session.walletAuthMethodId
263
+ };
264
+ const admittedBody = {
265
+ ...input.body,
266
+ authorized_operation: authorizedOperationWire
267
+ };
268
+ const upstream = authorization.kind === "wallet_session_operation_credential_v1" || authorization.kind === "wallet_session_operation_credential_exhausted_candidate_v1" ? await proxyNormalSigningRequestToMpcRouter({
269
+ request: input.ctx.request,
270
+ proxy: input.ctx.opts.routerAbNormalSigningRouterProxy,
271
+ body: admittedBody
272
+ }) : await proxyOwnerLaneAdmittedNormalSigningRequest({
273
+ request: input.ctx.request,
274
+ proxy: input.ctx.opts.routerAbNormalSigningRouterProxy,
275
+ authorizedOperation,
276
+ walletId: signingWalletId.value,
277
+ expectedMaterialActivation: signingRequest.material_activation,
278
+ authorization: laneAuthorization,
279
+ walletRegistration: input.ctx.service.walletRegistration,
280
+ body: admittedBody
281
+ });
282
+ const upstreamBodyText = await upstream.clone().text().catch(() => "");
283
+ if (isRouterAbEcdsaOperationInProgressResponse({
284
+ status: upstream.status,
285
+ bodyText: upstreamBodyText
286
+ })) return upstream;
287
+ if (input.phase === "prepare" && upstream.ok) return upstream;
288
+ await completeRouterAbEcdsaOperation({
289
+ authorizedOperations: input.ctx.service.authorizedOperations,
290
+ operation: authorizedOperation,
291
+ result: upstream.ok ? "succeeded" : upstream.status < 500 ? "failed_before_side_effect" : "failed_after_side_effect",
292
+ response: {
293
+ status: upstream.status,
294
+ contentType: upstream.headers.get("content-type") || "application/json",
295
+ bodyText: upstreamBodyText
296
+ }
297
+ });
298
+ return upstream;
299
+ }
300
+ function isRouterAbEcdsaOperationInProgressResponse(input) {
301
+ return input.status === 409 && input.bodyText.includes("ReplayedLocalRequest:") && input.bodyText.includes("SigningWorker ECDSA effect is already in progress");
302
+ }
303
+ function routerAbEcdsaReplayResponse(operation) {
304
+ const response = routerAbEcdsaReplayHttpResponse(operation);
305
+ if (response) return response;
306
+ const failure = routerAbEcdsaReplayUnavailableResult();
307
+ return json(failure.body, { status: failure.status });
308
+ }
309
+ async function resolveV2EcdsaOperationStepUpAdmission(input) {
310
+ const token = extractBearerCredential(input.ctx.request.headers);
311
+ if (!token) return { kind: "not_found" };
312
+ let resolution;
313
+ try {
314
+ resolution = await resolveWalletSessionOperationCredentialAdmission({
315
+ authorizationSessions: input.ctx.service.authorizationSessions,
316
+ token,
317
+ nowMs: Date.now(),
318
+ operation: {
319
+ keyFamily: "ecdsa_secp256k1",
320
+ operationKind: input.operation.operation_kind
321
+ }
322
+ });
323
+ } catch {
324
+ return { kind: "unavailable" };
325
+ }
326
+ if (resolution.kind === "not_found") return { kind: "not_found" };
327
+ if (resolution.kind === "rejected") return {
328
+ kind: "rejected",
329
+ message: "ECDSA operation step-up Wallet Session authorization is invalid"
330
+ };
331
+ if (resolution.admission.curve !== "ecdsa") return {
332
+ kind: "rejected",
333
+ message: "ECDSA operation step-up Wallet Session family is invalid"
334
+ };
335
+ const session = resolution.admission.context.authorization.session;
336
+ const admittedSigner = resolution.admission.admission.signer;
337
+ if (input.operation.wallet_id !== String(session.walletId) || input.operation.material_activation.material_owner !== String(session.walletId) || input.operation.expires_at_ms > session.expiresAtMs || input.operation.expires_at_ms <= Date.now()) return {
338
+ kind: "rejected",
339
+ message: "ECDSA operation step-up Wallet Session scope is invalid"
340
+ };
341
+ const signer = resolveV2EcdsaCustodySigner({
342
+ continuity: await input.ctx.service.walletRegistration.listWalletEcdsaCustodyContinuity({ walletId: String(session.walletId) }),
343
+ walletId: String(session.walletId),
344
+ admittedThresholdPublicKey33B64u: admittedSigner.thresholdPublicKey33B64u,
345
+ admittedEvmAddress: admittedSigner.evmAddress,
346
+ operation: input.operation
347
+ });
348
+ if (!signer) return {
349
+ kind: "rejected",
350
+ message: "ECDSA operation step-up material is not uniquely active"
351
+ };
352
+ if (input.operation.signing_worker_id !== input.operation.normal_signing_scope.signing_worker.server_id || !sameRouterAbMpcMaterialActivationRef(input.operation.material_activation, input.operation.normal_signing_scope.material_activation) || !sameRouterAbMpcMaterialActivationRef(input.operation.material_activation, routerAbMpcMaterialActivationRefToWire(resolution.admission.admission.materialActivation))) return {
353
+ kind: "rejected",
354
+ message: "ECDSA operation step-up material activation is invalid"
355
+ };
356
+ const activeMaterial = {
357
+ ok: true,
358
+ materialActivation: routerAbMpcMaterialActivationRefToWire(resolution.admission.admission.materialActivation),
359
+ keyHandle: signer.walletKey.keyHandle,
360
+ relayerKeyId: signer.walletKey.relayerKeyId,
361
+ participantIds: signer.walletKey.participantIds,
362
+ runtimePolicyScope: signer.runtimePolicyScope
363
+ };
364
+ if (input.operation.operation_kind === "evm.sign_transaction") return {
365
+ kind: "admitted",
366
+ operationKind: "evm.sign_transaction",
367
+ admission: resolution.admission,
368
+ activeMaterial
369
+ };
370
+ return {
371
+ kind: "admitted",
372
+ operationKind: "evm.export_key",
373
+ admission: resolution.admission,
374
+ activeMaterial,
375
+ exportTopology: {
376
+ signer_set: signer.walletKey.publicCapability.signer_set,
377
+ deriver_recipient_keys: signer.walletKey.publicCapability.deriver_recipient_keys,
378
+ router_id: signer.walletKey.publicCapability.router_id
379
+ }
380
+ };
381
+ }
382
+ async function issueEcdsaOperationStepUpAuthorization(input) {
383
+ if (!routerAbEcdsaAtomicAuthorizationConfigured(input.ctx.service.authorizedOperations)) return json({
384
+ ok: false,
385
+ code: "not_configured",
386
+ message: "ECDSA atomic authorization is not configured"
387
+ }, { status: 501 });
388
+ const operation = input.request.operation;
389
+ if (operation.normal_signing_scope.wallet_id !== operation.wallet_id || operation.normal_signing_scope.signing_worker.server_id !== operation.signing_worker_id || operation.material_activation.material_owner !== operation.wallet_id || operation.material_activation.signing_worker !== operation.signing_worker_id || operation.expires_at_ms <= Date.now()) return json({
390
+ ok: false,
391
+ code: "scope_mismatch",
392
+ message: "ECDSA operation step-up scope is invalid"
393
+ }, { status: 403 });
394
+ const v2Resolution = await resolveV2EcdsaOperationStepUpAdmission({
395
+ ctx: input.ctx,
396
+ operation
397
+ });
398
+ if (v2Resolution.kind === "unavailable") return json({
399
+ ok: false,
400
+ code: "wallet_session_unavailable",
401
+ message: "Wallet Session authorization is unavailable"
402
+ }, { status: 503 });
403
+ if (v2Resolution.kind === "rejected") return json({
404
+ ok: false,
405
+ code: "scope_mismatch",
406
+ message: v2Resolution.message
407
+ }, { status: 403 });
408
+ const activeMaterial = v2Resolution.kind === "admitted" ? v2Resolution.activeMaterial : await input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation({
409
+ walletId: operation.wallet_id,
410
+ materialActivation: operation.material_activation
411
+ });
412
+ if (!activeMaterial.ok) return json({
413
+ ok: false,
414
+ code: activeMaterial.code,
415
+ message: activeMaterial.message
416
+ }, { status: activeMaterial.code === "internal" ? 500 : 403 });
417
+ if (activeMaterial.keyHandle !== operation.key_handle || activeMaterial.relayerKeyId !== operation.relayer_key_id || activeMaterial.participantIds[0] !== operation.participant_ids[0] || activeMaterial.participantIds[1] !== operation.participant_ids[1] || !sameRouterAbMpcMaterialActivationRef(activeMaterial.materialActivation, operation.normal_signing_scope.material_activation)) return json({
418
+ ok: false,
419
+ code: "scope_mismatch",
420
+ message: "ECDSA normal-signing scope does not name the active material"
421
+ }, { status: 403 });
422
+ const proof = input.request.proof;
423
+ const authority = proof.authority;
424
+ if (!(await verifyActiveEcdsaOperationStepUpAuthority(input.ctx.service.walletAuthMethods, proof)).ok) return json({
425
+ ok: false,
426
+ code: "scope_mismatch",
427
+ message: "Operation step-up authority is not active"
428
+ }, { status: 403 });
429
+ let v2AuthorityRef;
430
+ if (v2Resolution.kind === "admitted") {
431
+ v2AuthorityRef = await walletAuthAuthorityRef({ authority });
432
+ const session = v2Resolution.admission.context.authorization.session;
433
+ const context = v2Resolution.admission.context;
434
+ if (authority.walletId !== String(session.walletId) || authority.bindingId !== context.authMethod.walletAuthMethodId || context.authMethod.walletAuthorityId !== context.authority.authorityId) return json({
435
+ ok: false,
436
+ code: "scope_mismatch",
437
+ message: "Operation step-up authority does not match the Wallet Session authority"
438
+ }, { status: 403 });
439
+ }
440
+ const proofAuthenticated = await authenticateRouterAbWalletOperationStepUpIdentity({
441
+ kind: "verified_owner_proof",
442
+ headers: Object.fromEntries(input.ctx.request.headers.entries()),
443
+ walletId: operation.wallet_id,
444
+ materialOwner: operation.material_activation.material_owner,
445
+ operationId: operation.operation_id,
446
+ authority,
447
+ runtimePolicyScope: activeMaterial.runtimePolicyScope,
448
+ expiresAtMs: operation.expires_at_ms,
449
+ authorizedOperations: input.ctx.service.authorizedOperations
450
+ });
451
+ if (!proofAuthenticated.ok) return json(proofAuthenticated.error.body, { status: proofAuthenticated.error.status });
452
+ if (authority.walletId !== proofAuthenticated.session.walletId) return json({
453
+ ok: false,
454
+ code: "scope_mismatch",
455
+ message: "Operation step-up authority changed"
456
+ }, { status: 403 });
457
+ const authenticated = v2Resolution.kind === "admitted" && v2AuthorityRef ? {
458
+ ok: true,
459
+ authorizedOperations: proofAuthenticated.authorizedOperations,
460
+ session: {
461
+ tenantId: v2Resolution.admission.context.authorization.session.tenantId,
462
+ principalId: v2Resolution.admission.context.authorization.session.principalId,
463
+ sessionId: String(v2Resolution.admission.context.authorization.session.authorizationId),
464
+ walletId: String(v2Resolution.admission.context.authorization.session.walletId),
465
+ runtimePolicyScope: activeMaterial.runtimePolicyScope,
466
+ laneAuthorization: {
467
+ kind: "authority_ref",
468
+ authorityRef: v2AuthorityRef,
469
+ authSource: proofAuthenticated.session.laneAuthorization.authSource
470
+ }
471
+ },
472
+ authorityRef: v2AuthorityRef,
473
+ requestOrigin: proofAuthenticated.requestOrigin,
474
+ expiresAtMs: operation.expires_at_ms
475
+ } : proofAuthenticated;
476
+ let envelope;
477
+ try {
478
+ envelope = buildCapabilityOperationEnvelope({
479
+ tenantId: authenticated.session.tenantId,
480
+ principalId: authenticated.session.principalId,
481
+ capabilityId: requireAuthorizationValue(parseCapabilityId(activeMaterial.materialActivation.capability)),
482
+ operationId: requireAuthorizationValue(parseCapabilityOperationId(operation.operation_id)),
483
+ operation: buildEvmEcdsaMpcOperationRef(operation.operation_kind),
484
+ digests: {
485
+ laneDigest: parseDigestB64u(operation.operation_digests.lane_digest_b64u),
486
+ intentDigest: parseDigestB64u(operation.operation_digests.intent_digest_b64u),
487
+ displayDigest: parseDigestB64u(operation.operation_digests.display_digest_b64u)
488
+ }
489
+ });
490
+ } catch (error) {
491
+ return json({
492
+ ok: false,
493
+ code: "invalid_body",
494
+ message: error instanceof Error ? error.message : "Operation fingerprint is invalid"
495
+ }, { status: 400 });
496
+ }
497
+ const expectedChallenge = await computeRouterAbEcdsaOperationStepUpChallengeB64u(operation);
498
+ const nowMs = Date.now();
499
+ const requestId = operation.operation_id;
500
+ let freshMaterial;
501
+ if (v2Resolution.kind === "admitted") {
502
+ const refreshedV2Resolution = await resolveV2EcdsaOperationStepUpAdmission({
503
+ ctx: input.ctx,
504
+ operation
505
+ });
506
+ if (refreshedV2Resolution.kind === "unavailable") return json({
507
+ ok: false,
508
+ code: "wallet_session_unavailable",
509
+ message: "Wallet Session authorization is unavailable"
510
+ }, { status: 503 });
511
+ if (refreshedV2Resolution.kind !== "admitted" || !sameWalletSessionOperationCredentialAdmission(v2Resolution.admission, refreshedV2Resolution.admission)) return json({
512
+ ok: false,
513
+ code: "scope_mismatch",
514
+ message: "ECDSA operation step-up Wallet Session authorization changed"
515
+ }, { status: 403 });
516
+ freshMaterial = refreshedV2Resolution.activeMaterial;
517
+ } else {
518
+ const resolvedRegistrationMaterial = await resolveFreshRouterAbEcdsaMaterialActivation({
519
+ resolveEcdsaMaterialActivation: input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation.bind(input.ctx.service.walletRegistration),
520
+ walletId: authenticated.session.walletId,
521
+ expected: operation.material_activation
522
+ });
523
+ if (!resolvedRegistrationMaterial.ok) return json({
524
+ ok: false,
525
+ code: resolvedRegistrationMaterial.code === "internal" ? "internal" : "scope_mismatch",
526
+ message: resolvedRegistrationMaterial.message
527
+ }, { status: resolvedRegistrationMaterial.code === "internal" ? 500 : 403 });
528
+ freshMaterial = resolvedRegistrationMaterial;
529
+ }
530
+ if (freshMaterial.keyHandle !== operation.key_handle || freshMaterial.relayerKeyId !== operation.relayer_key_id || freshMaterial.participantIds[0] !== operation.participant_ids[0] || freshMaterial.participantIds[1] !== operation.participant_ids[1] || !sameRouterAbMpcMaterialActivationRef(freshMaterial.materialActivation, operation.normal_signing_scope.material_activation)) return json({
531
+ ok: false,
532
+ code: "scope_mismatch",
533
+ message: "ECDSA operation step-up material changed before evidence admission"
534
+ }, { status: 403 });
535
+ const evidenceId = requireAuthorizationValue(parseAuthorizationEvidenceId(`ecdsa-step-up-evidence:${requestId}`));
536
+ const evidenceSetId = requireAuthorizationValue(parseAuthorizationEvidenceSetId(`ecdsa-step-up-evidence-set:${requestId}`));
537
+ const expiresAtMs = operation.expires_at_ms;
538
+ const requestOrigin = authenticated.requestOrigin;
539
+ let emailOtpUnseal;
540
+ let factor;
541
+ switch (proof.kind) {
542
+ case "passkey": {
543
+ if (authenticated.session.laneAuthorization.authSource.kind !== "passkey" || proof.authority.factor.credentialIdB64u !== authenticated.session.laneAuthorization.authSource.credentialIdB64u) return json({
544
+ ok: false,
545
+ code: "scope_mismatch",
546
+ message: "Passkey authority changed"
547
+ }, { status: 403 });
548
+ const credential = proof.webauthn_authentication;
549
+ if (String(credential.rawId || credential.id).trim() !== authenticated.session.laneAuthorization.authSource.credentialIdB64u) return json({
550
+ ok: false,
551
+ code: "unauthorized",
552
+ message: "Passkey credential changed"
553
+ }, { status: 401 });
554
+ const verified = await input.ctx.service.webAuthn.verifyWebAuthnAuthenticationLite({
555
+ userId: authenticated.session.walletId,
556
+ rpId: proof.authority.verifier.rpId,
557
+ expectedChallenge,
558
+ expected_origin: requestOrigin,
559
+ webauthn_authentication: credential
560
+ });
561
+ if (!verified.success || !verified.verified) return json({
562
+ ok: false,
563
+ code: verified.code || "not_verified",
564
+ message: verified.message || "WebAuthn authentication verification failed"
565
+ }, { status: 401 });
566
+ factor = buildVerifiedWalletOperationPasskeyFactorResult({
567
+ tenantId: authenticated.session.tenantId,
568
+ principalId: authenticated.session.principalId,
569
+ walletId: walletIdFromString(authenticated.session.walletId),
570
+ requestOrigin,
571
+ audience: requestOrigin,
572
+ factorId: requireAuthorizationValue(parseAuthFactorId(`passkey:${authenticated.session.laneAuthorization.authSource.credentialIdB64u}`)),
573
+ authorityRef: authenticated.authorityRef,
574
+ operation: envelope,
575
+ credentialIdB64u: proof.authority.factor.credentialIdB64u,
576
+ assertionDigest: parseDigestB64u(base64UrlEncode(await sha256BytesUtf8(alphabetizeStringify(credential)))),
577
+ verifiedAtMs: nowMs,
578
+ expiresAtMs
579
+ });
580
+ break;
581
+ }
582
+ case "email_otp": {
583
+ const operationBinding = await hashEmailOtpOperationBinding({
584
+ walletId: authenticated.session.walletId,
585
+ providerUserId: proof.authority.factor.providerUserId,
586
+ orgId: authenticated.session.tenantId,
587
+ operation: operation.operation_kind === "evm.export_key" ? WALLET_EMAIL_OTP_EXPORT_OPERATION : WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION,
588
+ requestOrigin,
589
+ audience: requestOrigin,
590
+ authorityRef: authenticated.authorityRef,
591
+ ...operation.operation_kind === "evm.sign_transaction" ? { operationFingerprintDigest: envelope.digests.laneDigest } : {}
592
+ });
593
+ const verified = await input.ctx.service.emailOtp.verifyEmailOtpChallenge({
594
+ userId: proof.authority.factor.providerUserId,
595
+ walletId: authenticated.session.walletId,
596
+ orgId: authenticated.session.tenantId,
597
+ challengeId: proof.challenge_id,
598
+ otpCode: proof.otp_code,
599
+ otpChannel: EMAIL_OTP_CHANNEL,
600
+ ownerProofBindingDigest: operationBinding,
601
+ operation: operation.operation_kind === "evm.export_key" ? WALLET_EMAIL_OTP_EXPORT_OPERATION : WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION
602
+ });
603
+ if (!verified.ok) return json(verified, { status: verified.code === "invalid_body" ? 400 : 401 });
604
+ const consumed = operation.operation_kind === "evm.export_key" ? null : await input.ctx.service.emailOtp.consumeEmailOtpGrant({
605
+ subject: {
606
+ kind: "provider_identity",
607
+ orgId: requireAuthorizationValue(parseOrgId(authenticated.session.tenantId)),
608
+ providerSubject: requireAuthorizationValue(parseProviderSubject(proof.authority.factor.providerUserId)),
609
+ walletId: walletIdFromString(authenticated.session.walletId)
610
+ },
611
+ loginGrant: verified.loginGrant,
612
+ otpChannel: EMAIL_OTP_CHANNEL
613
+ });
614
+ if (consumed && !consumed.ok) return json(consumed, { status: consumed.code === "invalid_body" ? 400 : 401 });
615
+ if (operation.operation_kind === "evm.export_key") emailOtpUnseal = {
616
+ grant: verified.loginGrant,
617
+ challengeId: verified.challengeId
618
+ };
619
+ const verifiedChallengeId = consumed?.ok ? consumed.challengeId : verified.challengeId;
620
+ factor = buildVerifiedWalletOperationEmailOtpFactorResult({
621
+ tenantId: authenticated.session.tenantId,
622
+ principalId: authenticated.session.principalId,
623
+ walletId: walletIdFromString(authenticated.session.walletId),
624
+ requestOrigin,
625
+ audience: requestOrigin,
626
+ factorId: requireAuthorizationValue(parseAuthFactorId(`email_otp:${proof.authority.factor.provider}:${proof.authority.factor.providerUserId}`)),
627
+ authorityRef: authenticated.authorityRef,
628
+ operation: envelope,
629
+ challengeId: requireAuthorizationValue(parseEmailOtpChallengeId(verifiedChallengeId)),
630
+ verificationReceiptDigest: parseDigestB64u(base64UrlEncode(await sha256BytesUtf8(alphabetizeStringify({
631
+ challengeId: verifiedChallengeId,
632
+ operationFingerprint: expectedChallenge
633
+ })))),
634
+ verifiedAtMs: nowMs,
635
+ expiresAtMs: Math.min(expiresAtMs, verified.grantExpiresAtMs)
636
+ });
637
+ break;
638
+ }
639
+ }
640
+ const evidenceSet = await input.ctx.service.authorizedOperations.recordVerifiedWalletOperationFactorEvidenceSet({
641
+ operation: envelope,
642
+ evidenceId,
643
+ evidenceSetId,
644
+ factor
645
+ });
646
+ const authorizedOperationId = requireAuthorizationValue(parseAuthorizedOperationId(`ecdsa-step-up-authorized-operation:${operation.operation_id}`));
647
+ const atomicOperation = await input.ctx.service.authorizedOperations.admitAuthorizedOperation({
648
+ operation: {
649
+ tenantId: authenticated.session.tenantId,
650
+ authorizedOperationId,
651
+ auditEventId: requireAuthorizationValue(parseAuthorizationAuditEventId(`ecdsa-operation-audit:${operation.operation_id}`)),
652
+ operation: envelope,
653
+ authorization: {
654
+ kind: "verified_step_up",
655
+ evidenceSetDigest: evidenceSet.evidenceSetDigest
656
+ },
657
+ quota: { kind: "quota_neutral" },
658
+ claimedAtMs: nowMs
659
+ },
660
+ material: {
661
+ walletId: walletIdFromString(authenticated.session.walletId),
662
+ keyHandle: freshMaterial.keyHandle,
663
+ runtimePolicyScope: authenticated.session.runtimePolicyScope,
664
+ materialActivation: freshMaterial.materialActivation
665
+ }
666
+ });
667
+ switch (atomicOperation.kind) {
668
+ case "claimed":
669
+ case "operation_in_progress":
670
+ case "replayed": break;
671
+ case "material_mismatch": return json({
672
+ ok: false,
673
+ code: "scope_mismatch",
674
+ message: "ECDSA material activation changed before authorized-operation admission"
675
+ }, { status: 403 });
676
+ case "authorization_grant_rejected":
677
+ case "verified_step_up_rejected": return json({
678
+ ok: false,
679
+ code: atomicOperation.kind,
680
+ message: "ECDSA operation step-up authorization is invalid"
681
+ }, { status: 403 });
682
+ case "wallet_session_quota_exhausted": return json({
683
+ ok: false,
684
+ code: atomicOperation.kind,
685
+ message: "ECDSA operation step-up authorization is unavailable"
686
+ }, { status: 409 });
687
+ }
688
+ const responseAuthorization = {
689
+ kind: "operation_step_up",
690
+ evidence_set_digest: evidenceSet.evidenceSetDigest,
691
+ unseal: emailOtpUnseal ? {
692
+ kind: "email_otp_grant",
693
+ grant: emailOtpUnseal.grant,
694
+ challenge_id: emailOtpUnseal.challengeId
695
+ } : { kind: "not_requested" }
696
+ };
697
+ if (operation.operation_kind === "evm.export_key") {
698
+ const exportTopology = v2Resolution.kind === "admitted" && v2Resolution.operationKind === "evm.export_key" ? v2Resolution.exportTopology : await resolveStrictEcdsaExportTopology({
699
+ ctx: input.ctx,
700
+ operation
701
+ });
702
+ if (!exportTopology) return json({
703
+ ok: false,
704
+ code: "scope_mismatch",
705
+ message: "ECDSA export topology is not uniquely active"
706
+ }, { status: 403 });
707
+ return json({
708
+ ok: true,
709
+ kind: "verified_step_up",
710
+ operation_kind: "evm.export_key",
711
+ export_topology: exportTopology,
712
+ authorization: responseAuthorization,
713
+ expires_at_ms: expiresAtMs
714
+ }, { status: 200 });
715
+ }
716
+ return json({
717
+ ok: true,
718
+ kind: "verified_step_up",
719
+ operation_kind: "evm.sign_transaction",
720
+ authorization: responseAuthorization,
721
+ expires_at_ms: expiresAtMs
722
+ }, { status: 200 });
723
+ }
724
+ function poolFillMaterialActivation(request) {
725
+ return "poolFill" in request ? request.poolFill.scope.material_activation : null;
726
+ }
727
+ function evmAddress20B64u(value) {
728
+ if (!/^0x[0-9a-fA-F]{40}$/.test(value)) return null;
729
+ const bytes = new Uint8Array(20);
730
+ for (let index = 0; index < bytes.length; index += 1) bytes[index] = Number.parseInt(value.slice(2 + index * 2, 4 + index * 2), 16);
731
+ return base64UrlEncode(bytes);
732
+ }
733
+ function validateEcdsaPoolFillOperationIdentity(operation) {
734
+ return operation.wallet_id === operation.normal_signing_scope.wallet_id && operation.signing_worker_id === operation.normal_signing_scope.signing_worker.server_id && operation.material_activation.material_owner === operation.wallet_id && operation.material_activation.signing_worker === operation.signing_worker_id && sameRouterAbMpcMaterialActivationRef(operation.material_activation, operation.normal_signing_scope.material_activation) && operation.expires_at_ms > Date.now();
735
+ }
736
+ async function authorizeEcdsaPoolFillOperationStepUp(input) {
737
+ if (!validateEcdsaPoolFillOperationIdentity(input.operation)) return {
738
+ ok: false,
739
+ error: {
740
+ status: 403,
741
+ body: {
742
+ ok: false,
743
+ code: "scope_mismatch",
744
+ message: "ECDSA pool-fill operation scope is invalid"
745
+ }
746
+ }
747
+ };
748
+ const authenticated = await authenticateRouterAbEcdsaOperationStepUpWithExhaustedCandidate({
749
+ headers: Object.fromEntries(input.ctx.request.headers.entries()),
750
+ request: input.operation,
751
+ authorizedOperations: input.ctx.service.authorizedOperations,
752
+ authorizationSessions: input.ctx.service.authorizationSessions,
753
+ resolveEcdsaMaterialActivation: input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation.bind(input.ctx.service.walletRegistration)
754
+ });
755
+ if (!authenticated.ok) return authenticated;
756
+ const activeMaterial = await input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation({
757
+ walletId: authenticated.session.walletId,
758
+ materialActivation: input.operation.material_activation
759
+ });
760
+ if (!activeMaterial.ok) return {
761
+ ok: false,
762
+ error: {
763
+ status: activeMaterial.code === "internal" ? 500 : 403,
764
+ body: {
765
+ ok: false,
766
+ code: activeMaterial.code === "internal" ? "internal" : "scope_mismatch",
767
+ message: activeMaterial.code === "internal" ? activeMaterial.message : "ECDSA pool-fill material is no longer active"
768
+ }
769
+ }
770
+ };
771
+ if (activeMaterial.keyHandle !== input.operation.key_handle || activeMaterial.relayerKeyId !== input.operation.relayer_key_id || activeMaterial.participantIds[0] !== input.operation.participant_ids[0] || activeMaterial.participantIds[1] !== input.operation.participant_ids[1] || !sameRouterAbMpcMaterialActivationRef(activeMaterial.materialActivation, input.operation.material_activation) || !sameRouterAbMpcMaterialActivationRef(activeMaterial.materialActivation, input.operation.normal_signing_scope.material_activation) || input.poolFillMaterialActivation !== null && !sameRouterAbMpcMaterialActivationRef(activeMaterial.materialActivation, input.poolFillMaterialActivation)) return {
772
+ ok: false,
773
+ error: {
774
+ status: 403,
775
+ body: {
776
+ ok: false,
777
+ code: "scope_mismatch",
778
+ message: "ECDSA pool-fill scopes do not name the active material"
779
+ }
780
+ }
781
+ };
782
+ const freshMaterial = await resolveFreshRouterAbEcdsaMaterialActivation({
783
+ resolveEcdsaMaterialActivation: input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation.bind(input.ctx.service.walletRegistration),
784
+ walletId: authenticated.session.walletId,
785
+ expected: input.operation.material_activation
786
+ });
787
+ if (!freshMaterial.ok) return {
788
+ ok: false,
789
+ error: {
790
+ status: freshMaterial.code === "internal" ? 500 : 403,
791
+ body: {
792
+ ok: false,
793
+ code: freshMaterial.code === "internal" ? "internal" : "scope_mismatch",
794
+ message: freshMaterial.message
795
+ }
796
+ }
797
+ };
798
+ if (freshMaterial.keyHandle !== input.operation.key_handle || freshMaterial.relayerKeyId !== input.operation.relayer_key_id || freshMaterial.participantIds[0] !== input.operation.participant_ids[0] || freshMaterial.participantIds[1] !== input.operation.participant_ids[1] || !sameRouterAbMpcMaterialActivationRef(freshMaterial.materialActivation, input.operation.normal_signing_scope.material_activation) || input.poolFillMaterialActivation !== null && !sameRouterAbMpcMaterialActivationRef(freshMaterial.materialActivation, input.poolFillMaterialActivation)) return {
799
+ ok: false,
800
+ error: {
801
+ status: 403,
802
+ body: {
803
+ ok: false,
804
+ code: "scope_mismatch",
805
+ message: "ECDSA pool-fill material changed before operation admission"
806
+ }
807
+ }
808
+ };
809
+ const claimFailure = await claimRouterAbEcdsaOperationStepUp({
810
+ operationKind: "evm.sign_transaction",
811
+ operation: input.operation,
812
+ materialActivation: freshMaterial.materialActivation,
813
+ keyHandle: freshMaterial.keyHandle,
814
+ authenticated
815
+ });
816
+ if (claimFailure && "status" in claimFailure) return {
817
+ ok: false,
818
+ error: claimFailure
819
+ };
820
+ const walletId = parseWalletId(input.operation.wallet_id);
821
+ if (!walletId.ok) return {
822
+ ok: false,
823
+ error: {
824
+ status: 403,
825
+ body: {
826
+ ok: false,
827
+ code: "scope_mismatch",
828
+ message: "ECDSA wallet identity is invalid"
829
+ }
830
+ }
831
+ };
832
+ return {
833
+ ok: true,
834
+ binding: {
835
+ walletId: walletId.value,
836
+ relayerKeyId: input.operation.relayer_key_id,
837
+ keyHandle: input.operation.key_handle,
838
+ runtimePolicyScope: authenticated.session.runtimePolicyScope,
839
+ participantIds: [...input.operation.participant_ids],
840
+ thresholdExpiresAtMs: input.operation.expires_at_ms,
841
+ routerAbEcdsaDerivationNormalSigning: {
842
+ kind: ROUTER_AB_ECDSA_DERIVATION_NORMAL_SIGNING_STATE_KIND_V1,
843
+ scope: input.operation.normal_signing_scope
844
+ }
845
+ }
846
+ };
847
+ }
848
+ async function authorizeEcdsaPoolFill(input) {
849
+ switch (input.request.authorization.kind) {
850
+ case "reusable_wallet_session": {
851
+ const validated = await validateRouterAbEcdsaDerivationWalletSessionInputs({
852
+ headers: Object.fromEntries(input.ctx.request.headers.entries()),
853
+ authorizationSessions: input.ctx.service.authorizationSessions,
854
+ operationKind: "evm.sign_transaction"
855
+ });
856
+ if (!validated.ok) return {
857
+ ok: false,
858
+ error: {
859
+ status: thresholdEcdsaStatusCode(validated),
860
+ body: validated
861
+ }
862
+ };
863
+ const session = validated.admission.context.authorization.session;
864
+ if (input.request.authorization.wallet_session_id !== session.walletSessionId) return {
865
+ ok: false,
866
+ error: {
867
+ status: 403,
868
+ body: {
869
+ ok: false,
870
+ code: WALLET_SESSION_FAILURE_CODES.scopeMismatch,
871
+ message: "Pool-fill authorization does not match the Wallet Session"
872
+ }
873
+ }
874
+ };
875
+ const admitted = validated.admission.admission;
876
+ const activeMaterial = await input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation({
877
+ walletId: String(session.walletId),
878
+ materialActivation: routerAbMpcMaterialActivationRefToWire(admitted.materialActivation)
879
+ });
880
+ if (!activeMaterial.ok) return {
881
+ ok: false,
882
+ error: {
883
+ status: activeMaterial.code === "internal" ? 500 : 403,
884
+ body: {
885
+ ok: false,
886
+ code: activeMaterial.code === "internal" ? "internal" : WALLET_SESSION_FAILURE_CODES.scopeMismatch,
887
+ message: activeMaterial.code === "internal" ? activeMaterial.message : "Pool-fill Wallet Session material is no longer active"
888
+ }
889
+ }
890
+ };
891
+ const normalSigning = activeMaterial.routerAbEcdsaDerivationNormalSigning;
892
+ const requestedPoolFillMaterial = poolFillMaterialActivation(input.request);
893
+ const requestedKeyHandle = "keyHandle" in input.request ? input.request.keyHandle : void 0;
894
+ if (!sameRouterAbMpcMaterialActivationRef(activeMaterial.materialActivation, routerAbMpcMaterialActivationRefToWire(admitted.materialActivation)) || normalSigning.scope.wallet_id !== String(session.walletId) || normalSigning.scope.public_identity.threshold_public_key33_b64u !== admitted.signer.thresholdPublicKey33B64u || normalSigning.scope.public_identity.ethereum_address20_b64u !== evmAddress20B64u(admitted.signer.evmAddress) || requestedKeyHandle !== void 0 && requestedKeyHandle !== activeMaterial.keyHandle || requestedPoolFillMaterial !== null && (!sameRouterAbMpcMaterialActivationRef(activeMaterial.materialActivation, requestedPoolFillMaterial) || !("poolFill" in input.request) || !sameRouterAbEcdsaDerivationNormalSigningScopeV1(input.request.poolFill.scope, normalSigning.scope))) return {
895
+ ok: false,
896
+ error: {
897
+ status: 403,
898
+ body: {
899
+ ok: false,
900
+ code: WALLET_SESSION_FAILURE_CODES.scopeMismatch,
901
+ message: "Pool-fill scopes do not match the active Wallet Authority material"
902
+ }
903
+ }
904
+ };
905
+ return {
906
+ ok: true,
907
+ binding: {
908
+ walletId: session.walletId,
909
+ relayerKeyId: activeMaterial.relayerKeyId,
910
+ keyHandle: activeMaterial.keyHandle,
911
+ runtimePolicyScope: activeMaterial.runtimePolicyScope,
912
+ participantIds: activeMaterial.participantIds,
913
+ thresholdExpiresAtMs: session.expiresAtMs,
914
+ routerAbEcdsaDerivationNormalSigning: normalSigning
915
+ }
916
+ };
917
+ }
918
+ case "operation_step_up": {
919
+ const operation = input.request.operation;
920
+ if (!operation) return {
921
+ ok: false,
922
+ error: {
923
+ status: 400,
924
+ body: {
925
+ ok: false,
926
+ code: "invalid_body",
927
+ message: "Operation step-up pool fill requires operation preparation"
928
+ }
929
+ }
930
+ };
931
+ return authorizeEcdsaPoolFillOperationStepUp({
932
+ ctx: input.ctx,
933
+ authorization: input.request.authorization,
934
+ operation,
935
+ poolFillMaterialActivation: poolFillMaterialActivation(input.request)
936
+ });
937
+ }
938
+ }
939
+ }
940
+ function ecdsaPoolFillInitRuntimeRequest(request) {
941
+ return {
942
+ ...request.keyHandle === void 0 ? {} : { keyHandle: request.keyHandle },
943
+ ...request.ecdsaThresholdKeyId === void 0 ? {} : { ecdsaThresholdKeyId: request.ecdsaThresholdKeyId },
944
+ ...request.count === void 0 ? {} : { count: request.count },
945
+ ...request.requestTag === void 0 ? {} : { requestTag: request.requestTag },
946
+ poolFill: request.poolFill
947
+ };
948
+ }
949
+ function ecdsaPoolFillStepRuntimeRequest(request) {
950
+ return {
951
+ presignSessionId: request.presignSessionId,
952
+ stage: request.stage,
953
+ ...request.outgoingMessagesB64u === void 0 ? {} : { outgoingMessagesB64u: request.outgoingMessagesB64u },
954
+ ...request.requestTag === void 0 ? {} : { requestTag: request.requestTag }
955
+ };
956
+ }
957
+ function resolvePresignPriorityTurn(resolve) {
958
+ setTimeout(resolve, 5);
959
+ }
960
+ function waitForPresignPriorityTurn() {
961
+ return new Promise(resolvePresignPriorityTurn);
962
+ }
963
+ var PresignPriorityGate = class {
964
+ constructor() {
965
+ this.foregroundInFlight = 0;
966
+ this.backgroundInFlight = 0;
967
+ }
968
+ async acquire(trafficClass) {
969
+ if (trafficClass === "foreground") {
970
+ this.foregroundInFlight += 1;
971
+ return this.createTicket("foreground");
972
+ }
973
+ while (!this.canRunBackgroundNow()) await waitForPresignPriorityTurn();
974
+ this.backgroundInFlight += 1;
975
+ return this.createTicket("background");
976
+ }
977
+ createTicket(trafficClass) {
978
+ let released = false;
979
+ return { release: () => {
980
+ if (released) return;
981
+ released = true;
982
+ if (trafficClass === "foreground") this.foregroundInFlight = Math.max(0, this.foregroundInFlight - 1);
983
+ else this.backgroundInFlight = Math.max(0, this.backgroundInFlight - 1);
984
+ } };
985
+ }
986
+ canRunBackgroundNow() {
987
+ return this.foregroundInFlight === 0 && this.backgroundInFlight === 0;
988
+ }
989
+ };
990
+ function resolvePresignTrafficClass(requestTag) {
991
+ return requestTag === "background_presign_pool_refill" ? "background" : "foreground";
992
+ }
993
+ const presignPriorityGate = new PresignPriorityGate();
994
+ function strictEcdsaAuthorizationFailureStatus(failure) {
995
+ switch (failure.code) {
996
+ case "unauthorized": return 401;
997
+ case "identity_mismatch": return 403;
998
+ default: return walletSessionFailureStatus(failure.code);
999
+ }
1000
+ }
1001
+ async function resolveStrictEcdsaAuthorizationSession(input) {
1002
+ const token = extractBearerCredential(input.ctx.request.headers);
1003
+ if (!token) return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.missing);
1004
+ try {
1005
+ const resolution = await resolveWalletSessionOperationCredentialAdmission({
1006
+ authorizationSessions: input.ctx.service.authorizationSessions,
1007
+ token,
1008
+ nowMs: Date.now(),
1009
+ operation: {
1010
+ keyFamily: "ecdsa_secp256k1",
1011
+ operationKind: input.operationKind
1012
+ }
1013
+ });
1014
+ switch (resolution.kind) {
1015
+ case "not_found": return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.invalid);
1016
+ case "rejected": return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.scopeMismatch);
1017
+ case "admitted":
1018
+ if (resolution.admission.curve !== "ecdsa") return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.scopeMismatch);
1019
+ return resolution.admission;
1020
+ }
1021
+ } catch {
1022
+ return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.unavailable);
1023
+ }
1024
+ }
1025
+ /**
1026
+ * Every post-registration call carries `{request, requestDigestB64u}`.
1027
+ *
1028
+ * The digest is not trusted here — Router recomputes it from the forwarded
1029
+ * request — but the Gateway must sign a request policy over it, so the caller
1030
+ * has to state which request the policy covers.
1031
+ */
1032
+ function parseStrictEcdsaRequestDigestEnvelope(body, label) {
1033
+ if (!body || typeof body !== "object" || Array.isArray(body)) throw new Error(`Strict ECDSA ${label} body must be an object`);
1034
+ const record = body;
1035
+ const keys = Object.keys(record).sort();
1036
+ if (keys.length !== 2 || keys[0] !== "request" || keys[1] !== "requestDigestB64u") throw new Error(`Strict ECDSA ${label} body fields are invalid`);
1037
+ const requestDigestB64u = String(record.requestDigestB64u || "").trim();
1038
+ if (!/^[A-Za-z0-9_-]{43}$/.test(requestDigestB64u)) throw new Error(`Strict ECDSA ${label} request digest must contain 32 base64url bytes`);
1039
+ return {
1040
+ request: record.request,
1041
+ requestDigestB64u
1042
+ };
1043
+ }
1044
+ function parseStrictEcdsaPostRegistrationRequest(pathname, body) {
1045
+ switch (pathname) {
1046
+ case ROUTER_AB_ECDSA_DERIVATION_EXPORT_PATH: {
1047
+ const envelope = parseStrictEcdsaRequestDigestEnvelope(body, "export");
1048
+ return {
1049
+ kind: "export",
1050
+ request: parseRouterAbEcdsaDerivationExplicitExportRequestV1(envelope.request),
1051
+ requestDigestB64u: envelope.requestDigestB64u
1052
+ };
1053
+ }
1054
+ case ROUTER_AB_ECDSA_DERIVATION_REFRESH_PATH: {
1055
+ const envelope = parseStrictEcdsaRequestDigestEnvelope(body, "refresh");
1056
+ const command = parseRouterAbEcdsaDerivationActivationRefreshCommitRequestV1(envelope.request);
1057
+ return {
1058
+ kind: "refresh",
1059
+ command,
1060
+ request: command.refresh_request,
1061
+ requestDigestB64u: envelope.requestDigestB64u
1062
+ };
1063
+ }
1064
+ default: throw new Error("Strict ECDSA post-registration path is invalid");
1065
+ }
1066
+ }
1067
+ function strictEcdsaPostRegistrationRequestAuthority(input) {
1068
+ return {
1069
+ subjectId: input.request.client_id,
1070
+ sessionId: input.request.lifecycle.session_id,
1071
+ accountId: input.request.lifecycle.account_id,
1072
+ expiresAtMs: input.request.expires_at_ms
1073
+ };
1074
+ }
1075
+ function validateStrictEcdsaPostRegistrationRequestExpiry(input) {
1076
+ const nowMs = Date.now();
1077
+ if (input.requestExpiresAtMs <= nowMs || input.requestExpiresAtMs > nowMs + 10 * 6e4) return {
1078
+ ok: false,
1079
+ code: "unauthorized"
1080
+ };
1081
+ if (input.requestExpiresAtMs > input.sessionExpiresAtMs) return {
1082
+ ok: false,
1083
+ code: WALLET_SESSION_FAILURE_CODES.scopeMismatch
1084
+ };
1085
+ return { ok: true };
1086
+ }
1087
+ async function authorizeStrictEcdsaPostRegistrationRequest(input) {
1088
+ const authority = strictEcdsaPostRegistrationRequestAuthority(input.request);
1089
+ if (input.request.request.signer_set.signer_set_id !== input.request.request.lifecycle.signer_set_id || input.request.request.signer_set.selected_server.server_id !== input.request.request.lifecycle.selected_server_id) return {
1090
+ ok: false,
1091
+ code: "identity_mismatch",
1092
+ message: "Strict ECDSA request identity does not match its lifecycle"
1093
+ };
1094
+ const isOperationStepUpExport = input.request.kind === "export" && input.request.request.authorization.kind === "operation_step_up";
1095
+ if (isOperationStepUpExport && !extractBearerCredential(input.ctx.request.headers)) return {
1096
+ ok: true,
1097
+ kind: "verified_operation",
1098
+ operationKind: "evm.export_key",
1099
+ authority
1100
+ };
1101
+ const parsedSession = await resolveStrictEcdsaAuthorizationSession({
1102
+ ctx: input.ctx,
1103
+ operationKind: input.request.kind === "export" ? "evm.export_key" : "evm.sign_transaction"
1104
+ });
1105
+ if ("ok" in parsedSession) return parsedSession;
1106
+ const session = parsedSession.context.authorization.session;
1107
+ if (authority.subjectId !== String(session.walletId) || authority.accountId !== String(session.walletId) || !sameRouterAbMpcMaterialActivationRef(input.request.request.material_activation, routerAbMpcMaterialActivationRefToWire(parsedSession.admission.materialActivation))) return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.scopeMismatch);
1108
+ let activeMaterial;
1109
+ try {
1110
+ activeMaterial = await resolveFreshRouterAbEcdsaMaterialActivation({
1111
+ resolveEcdsaMaterialActivation: input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation.bind(input.ctx.service.walletRegistration),
1112
+ walletId: String(session.walletId),
1113
+ expected: input.request.request.material_activation
1114
+ });
1115
+ } catch {
1116
+ return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.unavailable);
1117
+ }
1118
+ if (!activeMaterial.ok || !sameRouterAbMpcMaterialActivationRef(activeMaterial.materialActivation, routerAbMpcMaterialActivationRefToWire(parsedSession.admission.materialActivation))) return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.scopeMismatch);
1119
+ const expiry = validateStrictEcdsaPostRegistrationRequestExpiry({
1120
+ requestExpiresAtMs: authority.expiresAtMs,
1121
+ sessionExpiresAtMs: session.expiresAtMs
1122
+ });
1123
+ if (!expiry.ok && expiry.code === WALLET_SESSION_FAILURE_CODES.scopeMismatch) return walletSessionFailure(expiry.code);
1124
+ if (!expiry.ok) return {
1125
+ ok: false,
1126
+ code: "unauthorized",
1127
+ message: "Strict ECDSA request expiry is invalid"
1128
+ };
1129
+ if (input.request.kind === "export" && !isOperationStepUpExport) return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.scopeMismatch);
1130
+ if (input.request.kind === "export") return {
1131
+ ok: true,
1132
+ kind: "wallet_session_operation_step_up_v2",
1133
+ operationKind: "evm.export_key",
1134
+ authority,
1135
+ v2Admission: parsedSession
1136
+ };
1137
+ return {
1138
+ ok: true,
1139
+ kind: "wallet_session_operation_credential_v2",
1140
+ operationKind: "evm.sign_transaction",
1141
+ authority,
1142
+ v2Admission: parsedSession
1143
+ };
1144
+ }
1145
+ async function handleStrictEcdsaPostRegistrationRoute(input) {
1146
+ if (!input.port) return json({
1147
+ ok: false,
1148
+ code: "not_configured",
1149
+ message: "Strict Router A/B ECDSA post-registration port is not configured"
1150
+ }, { status: 503 });
1151
+ let parsed;
1152
+ try {
1153
+ parsed = parseStrictEcdsaPostRegistrationRequest(input.pathname, input.body);
1154
+ } catch (error) {
1155
+ return json({
1156
+ ok: false,
1157
+ code: "invalid_body",
1158
+ message: error instanceof Error ? error.message : "Strict ECDSA post-registration request is invalid"
1159
+ }, { status: 400 });
1160
+ }
1161
+ const authorized = await authorizeStrictEcdsaPostRegistrationRequest({
1162
+ ctx: input.ctx,
1163
+ request: parsed
1164
+ });
1165
+ if (!authorized.ok) return json(authorized, { status: strictEcdsaAuthorizationFailureStatus(authorized) });
1166
+ switch (parsed.kind) {
1167
+ case "export": {
1168
+ const exportAuthorization = await authorizeStrictEcdsaExport({
1169
+ ctx: input.ctx,
1170
+ request: parsed.request,
1171
+ authorization: authorized
1172
+ });
1173
+ if (!exportAuthorization.ok) return json(exportAuthorization.error.body, { status: exportAuthorization.error.status });
1174
+ const tenantRoot = await input.ctx.service.walletRegistration.resolveActiveEcdsaTenantRoot({
1175
+ walletId: parsed.request.lifecycle.account_id,
1176
+ materialActivation: parsed.request.material_activation
1177
+ });
1178
+ if (!tenantRoot.ok) return json(tenantRoot, { status: tenantRoot.code === "internal" ? 500 : 403 });
1179
+ const result = await input.port.explicitExport({
1180
+ request: parsed.request,
1181
+ requestDigestB64u: parsed.requestDigestB64u,
1182
+ authority: exportAuthorization.authority,
1183
+ tenantRoot
1184
+ });
1185
+ if (!result.ok) return strictPostRegistrationFailureResponse(result);
1186
+ return json(result.value, { status: 200 });
1187
+ }
1188
+ case "refresh": {
1189
+ const tenantRoot = await input.ctx.service.walletRegistration.resolveActiveEcdsaTenantRoot({
1190
+ walletId: parsed.request.lifecycle.account_id,
1191
+ materialActivation: parsed.request.material_activation
1192
+ });
1193
+ if (!tenantRoot.ok) return json(tenantRoot, { status: tenantRoot.code === "internal" ? 500 : 403 });
1194
+ const result = await input.port.refresh({
1195
+ request: parsed.command,
1196
+ requestDigestB64u: parsed.requestDigestB64u,
1197
+ authority: authorized.authority,
1198
+ tenantRoot
1199
+ });
1200
+ if (!result.ok) return strictPostRegistrationFailureResponse(result);
1201
+ if (result.value.result === "forwarded") {
1202
+ const recorded = await input.ctx.service.walletRegistration.recordEcdsaPostRegistrationProof({
1203
+ operation: "refresh",
1204
+ request: parsed.request,
1205
+ response: result.value
1206
+ });
1207
+ if (!recorded.ok) return json(recorded, { status: recorded.code === "internal" ? 500 : 400 });
1208
+ }
1209
+ return json(result.value, { status: 200 });
1210
+ }
1211
+ }
1212
+ }
1213
+ function strictEcdsaExportScopeMatchesRequest(input) {
1214
+ return input.scope.wallet_id === input.request.lifecycle.account_id && input.scope.context.application_binding_digest_b64u === input.request.context.application_binding_digest_b64u && input.scope.public_identity.context_binding_b64u === input.request.public_identity.context_binding_b64u && input.scope.public_identity.threshold_public_key33_b64u === input.request.public_identity.threshold_public_key33_b64u && input.scope.signing_worker.server_id === input.request.lifecycle.selected_server_id && input.scope.activation_epoch === input.request.lifecycle.root_share_epoch && sameRouterAbMpcMaterialActivationRef(input.scope.material_activation, input.request.material_activation);
1215
+ }
1216
+ function sameV2EcdsaCustodyIdentity(left, right) {
1217
+ return left.walletId === right.walletId && left.walletKey.keyHandle === right.walletKey.keyHandle && left.walletKey.thresholdEcdsaPublicKeyB64u === right.walletKey.thresholdEcdsaPublicKeyB64u && left.walletKey.thresholdOwnerAddress === right.walletKey.thresholdOwnerAddress && left.walletKey.relayerKeyId === right.walletKey.relayerKeyId && left.walletKey.participantIds[0] === right.walletKey.participantIds[0] && left.walletKey.participantIds[1] === right.walletKey.participantIds[1] && sameRouterAbEcdsaDerivationPublicCapabilityV1(left.walletKey.publicCapability, right.walletKey.publicCapability) && sameThresholdEcdsaRuntimePolicyScopeV1(left.runtimePolicyScope, right.runtimePolicyScope);
1218
+ }
1219
+ function sameThresholdEcdsaRuntimePolicyScopeV1(left, right) {
1220
+ return left.orgId === right.orgId && left.projectId === right.projectId && left.envId === right.envId && left.signingRootVersion === right.signingRootVersion;
1221
+ }
1222
+ function strictEcdsaNormalSigningPublicIdentityMatchesSigner(input) {
1223
+ const capability = input.signer.walletKey.publicCapability;
1224
+ return input.scope.wallet_id === String(input.signer.walletId) && input.scope.context.application_binding_digest_b64u === capability.context.application_binding_digest_b64u && input.scope.public_identity.context_binding_b64u === capability.public_identity.context_binding_b64u && input.scope.public_identity.threshold_public_key33_b64u === capability.public_identity.threshold_public_key33_b64u && input.scope.signing_worker.server_id === capability.signer_set.selected_server.server_id && input.scope.activation_epoch === capability.activation_epoch;
1225
+ }
1226
+ function resolveV2EcdsaCustodySigner(input) {
1227
+ const matching = [];
1228
+ for (const candidate of input.continuity) if (candidate.walletId === input.walletId && candidate.walletKey.thresholdEcdsaPublicKeyB64u === input.admittedThresholdPublicKey33B64u && candidate.walletKey.thresholdOwnerAddress === input.admittedEvmAddress && candidate.walletKey.keyHandle === input.operation.key_handle && candidate.walletKey.relayerKeyId === input.operation.relayer_key_id && candidate.walletKey.participantIds[0] === input.operation.participant_ids[0] && candidate.walletKey.participantIds[1] === input.operation.participant_ids[1]) matching.push(candidate);
1229
+ const [canonical] = matching;
1230
+ if (!canonical) return null;
1231
+ for (const candidate of matching) if (!strictEcdsaNormalSigningPublicIdentityMatchesSigner({
1232
+ signer: candidate,
1233
+ scope: input.operation.normal_signing_scope
1234
+ }) || !sameV2EcdsaCustodyIdentity(canonical, candidate)) return null;
1235
+ return canonical;
1236
+ }
1237
+ function strictEcdsaExportScopeMatchesSigner(input) {
1238
+ const capability = input.signer.walletKey.publicCapability;
1239
+ return strictEcdsaNormalSigningPublicIdentityMatchesSigner(input) && sameRouterAbMpcMaterialActivationRef(input.scope.material_activation, capability.material_activation);
1240
+ }
1241
+ async function resolveStrictEcdsaExportTopology(input) {
1242
+ const matches = (await input.ctx.service.walletRegistration.listWalletEcdsaCustodyContinuity({ walletId: input.operation.wallet_id })).filter((candidate) => candidate.walletId === input.operation.wallet_id && candidate.walletKey.keyHandle === input.operation.key_handle && candidate.walletKey.relayerKeyId === input.operation.relayer_key_id && candidate.walletKey.participantIds[0] === input.operation.participant_ids[0] && candidate.walletKey.participantIds[1] === input.operation.participant_ids[1] && sameRouterAbMpcMaterialActivationRef(candidate.walletKey.publicCapability.material_activation, input.operation.material_activation) && strictEcdsaExportScopeMatchesSigner({
1243
+ signer: candidate,
1244
+ scope: input.operation.normal_signing_scope
1245
+ }));
1246
+ const [signer] = matches;
1247
+ if (!signer) return null;
1248
+ for (const candidate of matches) if (!sameV2EcdsaCustodyIdentity(signer, candidate)) return null;
1249
+ const topology = signer.walletKey.publicCapability;
1250
+ if (topology.signer_set.selected_server.server_id !== input.operation.normal_signing_scope.signing_worker.server_id || topology.public_identity.context_binding_b64u !== input.operation.normal_signing_scope.public_identity.context_binding_b64u || topology.context.application_binding_digest_b64u !== input.operation.normal_signing_scope.context.application_binding_digest_b64u) return null;
1251
+ return {
1252
+ signer_set: topology.signer_set,
1253
+ deriver_recipient_keys: topology.deriver_recipient_keys,
1254
+ router_id: topology.router_id
1255
+ };
1256
+ }
1257
+ function strictEcdsaExportFailure(status, code, message) {
1258
+ return {
1259
+ ok: false,
1260
+ error: {
1261
+ status,
1262
+ body: {
1263
+ ok: false,
1264
+ code,
1265
+ message
1266
+ }
1267
+ }
1268
+ };
1269
+ }
1270
+ async function admitStrictEcdsaExportOperationStepUp(input) {
1271
+ if (!routerAbEcdsaAtomicAuthorizationConfigured(input.authorizedOperations)) return strictEcdsaExportFailure(501, "not_configured", "ECDSA atomic authorization is not configured");
1272
+ let authorizedOperationId;
1273
+ try {
1274
+ authorizedOperationId = requireAuthorizationValue(parseAuthorizedOperationId(`ecdsa-step-up-authorized-operation:${input.operation.operation_id}`));
1275
+ } catch (error) {
1276
+ return strictEcdsaExportFailure(400, "invalid_body", error instanceof Error ? error.message : "Export operation step-up admission is invalid");
1277
+ }
1278
+ const existing = await input.authorizedOperations.readAuthorizedOperationById({
1279
+ tenantId: input.authorizedOperations.tenantId,
1280
+ authorizedOperationId
1281
+ });
1282
+ if (!existing) return strictEcdsaExportFailure(409, "authorized_operation_missing", "Operation authorization is unavailable");
1283
+ if (existing.authorization.kind !== "verified_step_up" || existing.quota.kind !== "quota_neutral" || existing.authorizedOperationId !== authorizedOperationId || existing.operation.operationId !== input.operation.operation_id || existing.operation.capabilityId !== input.materialActivation.capability || existing.operation.operation.capabilityKind !== "evm_ecdsa_mpc_signing" || existing.operation.operation.operationKind !== "evm.export_key" || existing.operation.digests.laneDigest !== input.operation.operation_digests.lane_digest_b64u || existing.operation.digests.intentDigest !== input.operation.operation_digests.intent_digest_b64u || existing.operation.digests.displayDigest !== input.operation.operation_digests.display_digest_b64u) return strictEcdsaExportFailure(409, "authorized_operation_missing", "ECDSA export operation authorization has an invalid source or quota");
1284
+ const result = await input.authorizedOperations.admitAuthorizedOperation({
1285
+ operation: {
1286
+ tenantId: existing.tenantId,
1287
+ authorizedOperationId: existing.authorizedOperationId,
1288
+ auditEventId: existing.auditEventId,
1289
+ operation: existing.operation,
1290
+ authorization: existing.authorization,
1291
+ quota: existing.quota,
1292
+ claimedAtMs: Date.now()
1293
+ },
1294
+ material: {
1295
+ walletId: walletIdFromString(input.operation.wallet_id),
1296
+ keyHandle: input.keyHandle,
1297
+ runtimePolicyScope: input.runtimePolicyScope,
1298
+ materialActivation: input.materialActivation
1299
+ }
1300
+ });
1301
+ switch (result.kind) {
1302
+ case "material_mismatch": return strictEcdsaExportFailure(403, "scope_mismatch", "ECDSA material activation changed before export admission");
1303
+ case "claimed":
1304
+ case "operation_in_progress":
1305
+ case "replayed": return {
1306
+ ok: true,
1307
+ evidenceSetDigest: existing.authorization.evidenceSetDigest
1308
+ };
1309
+ case "authorization_grant_rejected":
1310
+ case "verified_step_up_rejected": return strictEcdsaExportFailure(403, result.kind, "Operation step-up authorization is invalid");
1311
+ case "wallet_session_quota_exhausted": return strictEcdsaExportFailure(409, result.kind, "Operation step-up authorization is invalid");
1312
+ }
1313
+ }
1314
+ function sameWalletSessionOperationCredentialAdmission(left, right) {
1315
+ const leftSession = left.context.authorization.session;
1316
+ const rightSession = right.context.authorization.session;
1317
+ return leftSession.tenantId === rightSession.tenantId && leftSession.principalId === rightSession.principalId && leftSession.walletId === rightSession.walletId && leftSession.authorityId === rightSession.authorityId && leftSession.walletAuthMethodId === rightSession.walletAuthMethodId && leftSession.authorityDigestB64u === rightSession.authorityDigestB64u && leftSession.authorityRevocationEpoch === rightSession.authorityRevocationEpoch && leftSession.authorizationId === rightSession.authorizationId && leftSession.walletSessionId === rightSession.walletSessionId && leftSession.quotaId === rightSession.quotaId && leftSession.expiresAtMs === rightSession.expiresAtMs && left.context.authority.authorityId === right.context.authority.authorityId && left.context.authority.authorityDigestB64u === right.context.authority.authorityDigestB64u && left.context.authMethod.walletAuthMethodId === right.context.authMethod.walletAuthMethodId && left.context.authMethod.walletAuthorityId === right.context.authMethod.walletAuthorityId && left.context.retiredAtMs === right.context.retiredAtMs && sameRouterAbMpcMaterialActivationRef(routerAbMpcMaterialActivationRefToWire(left.admission.materialActivation), routerAbMpcMaterialActivationRefToWire(right.admission.materialActivation));
1318
+ }
1319
+ async function authorizeStrictEcdsaV2ExportOperationStepUp(input) {
1320
+ const operation = input.request.operation;
1321
+ if (!operation) return strictEcdsaExportFailure(400, "invalid_body", "Operation step-up export requires operation preparation");
1322
+ const resolution = await resolveV2EcdsaOperationStepUpAdmission({
1323
+ ctx: input.ctx,
1324
+ operation
1325
+ });
1326
+ if (resolution.kind === "unavailable") return strictEcdsaExportFailure(503, "wallet_session_unavailable", "Wallet Session authorization is unavailable");
1327
+ if (resolution.kind !== "admitted") return strictEcdsaExportFailure(403, "scope_mismatch", "ECDSA export operation step-up Wallet Session authorization is invalid");
1328
+ if (!sameWalletSessionOperationCredentialAdmission(input.authorization.v2Admission, resolution.admission)) return strictEcdsaExportFailure(403, "scope_mismatch", "ECDSA export operation step-up Wallet Session changed");
1329
+ const session = resolution.admission.context.authorization.session;
1330
+ const activeMaterial = resolution.activeMaterial;
1331
+ if (input.request.authorization.kind !== "operation_step_up" || operation.operation_kind !== "evm.export_key" || operation.wallet_id !== String(session.walletId) || operation.wallet_id !== input.request.lifecycle.account_id || operation.material_activation.material_owner !== String(session.walletId) || operation.material_activation.signing_worker !== input.request.lifecycle.selected_server_id || operation.signing_worker_id !== input.request.lifecycle.selected_server_id || !sameRouterAbMpcMaterialActivationRef(operation.material_activation, input.request.material_activation) || operation.expires_at_ms < input.request.expires_at_ms || !strictEcdsaExportScopeMatchesRequest({
1332
+ request: input.request,
1333
+ scope: operation.normal_signing_scope
1334
+ }) || activeMaterial.keyHandle !== operation.key_handle || activeMaterial.relayerKeyId !== operation.relayer_key_id || activeMaterial.participantIds[0] !== operation.participant_ids[0] || activeMaterial.participantIds[1] !== operation.participant_ids[1] || !sameRouterAbMpcMaterialActivationRef(activeMaterial.materialActivation, operation.material_activation)) return strictEcdsaExportFailure(403, "scope_mismatch", "ECDSA export operation step-up scope does not match the active Wallet Session material");
1335
+ const admission = await admitStrictEcdsaExportOperationStepUp({
1336
+ operation,
1337
+ materialActivation: activeMaterial.materialActivation,
1338
+ keyHandle: activeMaterial.keyHandle,
1339
+ runtimePolicyScope: activeMaterial.runtimePolicyScope,
1340
+ authorizedOperations: input.ctx.service.authorizedOperations
1341
+ });
1342
+ if (!admission.ok) return admission;
1343
+ return {
1344
+ ok: true,
1345
+ authority: {
1346
+ subjectId: input.authorization.authority.subjectId,
1347
+ sessionId: input.authorization.authority.sessionId,
1348
+ accountId: input.authorization.authority.accountId,
1349
+ expiresAtMs: input.authorization.authority.expiresAtMs,
1350
+ keyHandle: activeMaterial.keyHandle,
1351
+ authorization: input.request.authorization,
1352
+ normalSigningScope: operation.normal_signing_scope,
1353
+ privateAuthorization: {
1354
+ kind: "operation_step_up",
1355
+ evidenceSetDigest: admission.evidenceSetDigest
1356
+ }
1357
+ }
1358
+ };
1359
+ }
1360
+ async function authorizeStrictEcdsaExport(input) {
1361
+ if (input.authorization.kind === "wallet_session_operation_credential_v2") return strictEcdsaExportFailure(403, "scope_mismatch", "ECDSA export requires an export operation step-up");
1362
+ if (input.request.authorization.kind === "operation_step_up") {
1363
+ if (input.authorization.kind === "wallet_session_operation_step_up_v2") return authorizeStrictEcdsaV2ExportOperationStepUp({
1364
+ ctx: input.ctx,
1365
+ request: input.request,
1366
+ authorization: input.authorization
1367
+ });
1368
+ if (input.authorization.authority.subjectId !== input.request.lifecycle.account_id) return strictEcdsaExportFailure(403, "scope_mismatch", "ECDSA export operation authority is invalid");
1369
+ const operation = input.request.operation;
1370
+ if (!operation) return strictEcdsaExportFailure(400, "invalid_body", "Operation step-up export requires operation preparation");
1371
+ if (operation.operation_kind !== "evm.export_key" || operation.wallet_id !== input.request.lifecycle.account_id || operation.material_activation.material_owner !== input.request.lifecycle.account_id || !sameRouterAbMpcMaterialActivationRef(operation.material_activation, input.request.material_activation) || operation.material_activation.signing_worker !== input.request.lifecycle.selected_server_id || operation.signing_worker_id !== input.request.lifecycle.selected_server_id || operation.expires_at_ms < input.request.expires_at_ms || !strictEcdsaExportScopeMatchesRequest({
1372
+ request: input.request,
1373
+ scope: operation.normal_signing_scope
1374
+ })) return strictEcdsaExportFailure(403, "scope_mismatch", "ECDSA export operation scope does not match the request");
1375
+ const activeMaterial = await input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation({
1376
+ walletId: operation.wallet_id,
1377
+ materialActivation: input.request.material_activation
1378
+ });
1379
+ if (!activeMaterial.ok) return strictEcdsaExportFailure(activeMaterial.code === "internal" ? 500 : 403, activeMaterial.code, activeMaterial.message);
1380
+ if (activeMaterial.keyHandle !== operation.key_handle || activeMaterial.relayerKeyId !== operation.relayer_key_id || activeMaterial.participantIds[0] !== operation.participant_ids[0] || activeMaterial.participantIds[1] !== operation.participant_ids[1] || !sameRouterAbMpcMaterialActivationRef(activeMaterial.materialActivation, operation.material_activation) || !sameRouterAbMpcMaterialActivationRef(activeMaterial.materialActivation, operation.normal_signing_scope.material_activation)) return strictEcdsaExportFailure(403, "scope_mismatch", "ECDSA export material is no longer active");
1381
+ const freshMaterial = await resolveFreshRouterAbEcdsaMaterialActivation({
1382
+ resolveEcdsaMaterialActivation: input.ctx.service.walletRegistration.resolveEcdsaMaterialActivation.bind(input.ctx.service.walletRegistration),
1383
+ walletId: operation.wallet_id,
1384
+ expected: operation.material_activation
1385
+ });
1386
+ if (!freshMaterial.ok) return strictEcdsaExportFailure(freshMaterial.code === "internal" ? 500 : 403, freshMaterial.code === "internal" ? "internal" : "scope_mismatch", freshMaterial.message);
1387
+ if (freshMaterial.keyHandle !== operation.key_handle || freshMaterial.relayerKeyId !== operation.relayer_key_id || freshMaterial.participantIds[0] !== operation.participant_ids[0] || freshMaterial.participantIds[1] !== operation.participant_ids[1] || !sameRouterAbMpcMaterialActivationRef(freshMaterial.materialActivation, operation.normal_signing_scope.material_activation)) return strictEcdsaExportFailure(403, "scope_mismatch", "ECDSA export material changed before operation admission");
1388
+ const admission = await admitStrictEcdsaExportOperationStepUp({
1389
+ operation,
1390
+ materialActivation: freshMaterial.materialActivation,
1391
+ keyHandle: freshMaterial.keyHandle,
1392
+ runtimePolicyScope: activeMaterial.runtimePolicyScope,
1393
+ authorizedOperations: input.ctx.service.authorizedOperations
1394
+ });
1395
+ if (!admission.ok) return admission;
1396
+ return {
1397
+ ok: true,
1398
+ authority: {
1399
+ subjectId: input.authorization.authority.subjectId,
1400
+ sessionId: input.authorization.authority.sessionId,
1401
+ accountId: input.authorization.authority.accountId,
1402
+ expiresAtMs: input.authorization.authority.expiresAtMs,
1403
+ keyHandle: operation.key_handle,
1404
+ authorization: input.request.authorization,
1405
+ normalSigningScope: operation.normal_signing_scope,
1406
+ privateAuthorization: {
1407
+ kind: "operation_step_up",
1408
+ evidenceSetDigest: admission.evidenceSetDigest
1409
+ }
1410
+ }
1411
+ };
1412
+ }
1413
+ return strictEcdsaExportFailure(403, "scope_mismatch", "ECDSA export requires an operation step-up");
1414
+ }
1415
+ function strictPostRegistrationFailureResponse(result) {
1416
+ return json({
1417
+ ok: false,
1418
+ code: result.code,
1419
+ message: result.message
1420
+ }, { status: result.retryable ? 502 : 400 });
1421
+ }
1422
+ function assertNeverStrictEcdsaSessionActivationAuthorization(value) {
1423
+ throw new Error(`Unsupported ECDSA session activation authorization: ${String(value)}`);
1424
+ }
1425
+ async function authorizeStrictEcdsaSessionActivation(input) {
1426
+ if (String(input.proof.walletId) !== input.walletId) return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.scopeMismatch);
1427
+ const authorizationSessionId = parseEcdsaAuthorizationSessionId(input.proof.proofId);
1428
+ if (!authorizationSessionId.ok) return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.scopeMismatch);
1429
+ return {
1430
+ ok: true,
1431
+ kind: "issue_direct_wallet_session_v2",
1432
+ proof: input.proof,
1433
+ principalId: input.proof.principalId,
1434
+ authorizationSessionId: authorizationSessionId.value,
1435
+ authorityRef: input.proof.authority,
1436
+ authSource: input.proof.authSource
1437
+ };
1438
+ }
1439
+ async function authorizeStrictEcdsaSessionActivationFromOperationCredential(input) {
1440
+ let resolution;
1441
+ try {
1442
+ resolution = await resolveWalletSessionOperationCredentialAdmission({
1443
+ authorizationSessions: input.authorizationSessions,
1444
+ token: input.operationCredential.token,
1445
+ nowMs: Date.now(),
1446
+ operation: {
1447
+ keyFamily: "ecdsa_secp256k1",
1448
+ operationKind: EVM_ECDSA_MPC_OPERATION_KINDS.signTransaction
1449
+ }
1450
+ });
1451
+ } catch {
1452
+ return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.unavailable);
1453
+ }
1454
+ if (resolution.kind !== "admitted" || resolution.admission.curve !== "ecdsa") return walletSessionFailure(resolution.kind === "not_found" ? WALLET_SESSION_FAILURE_CODES.invalid : WALLET_SESSION_FAILURE_CODES.scopeMismatch);
1455
+ const admission = resolution.admission;
1456
+ const session = admission.context.authorization.session;
1457
+ const proofWalletAuthMethodId = await resolveWalletAuthMethodIdForAuthority({
1458
+ walletId: session.walletId,
1459
+ authorityRef: input.proof.authority,
1460
+ authSource: input.proof.authSource,
1461
+ authMethods: [admission.context.authMethod]
1462
+ });
1463
+ if (String(session.walletId) !== input.walletId || input.operationCredential.walletSessionId !== session.walletSessionId || input.proof.tenantId !== session.tenantId || input.proof.principalId !== session.principalId || input.proof.walletId !== session.walletId || input.proof.authority.walletId !== session.walletId || input.proof.authority.walletAuthMethodId !== session.walletAuthMethodId || proofWalletAuthMethodId !== session.walletAuthMethodId) return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.scopeMismatch);
1464
+ const authorizationSessionId = parseEcdsaAuthorizationSessionId(input.proof.proofId);
1465
+ if (!authorizationSessionId.ok) return walletSessionFailure(WALLET_SESSION_FAILURE_CODES.scopeMismatch);
1466
+ return {
1467
+ ok: true,
1468
+ kind: "wallet_session_operation_credential_v1",
1469
+ proof: input.proof,
1470
+ admission,
1471
+ authorizationSessionId: authorizationSessionId.value
1472
+ };
1473
+ }
1474
+ function exactEcdsaMaterialMatchesActivation(capabilitySubjects, request) {
1475
+ for (const subject of capabilitySubjects) {
1476
+ if (subject.kind !== "sign" || subject.keyFamily !== "ecdsa_secp256k1") continue;
1477
+ return sameRouterAbMpcMaterialActivationRef(request.public_capability.material_activation, routerAbMpcMaterialActivationRefToWire(subject.materialActivation));
1478
+ }
1479
+ return false;
1480
+ }
1481
+ async function handleStrictEcdsaSessionActivation(input) {
1482
+ let request;
1483
+ try {
1484
+ request = parseRouterAbEcdsaPostRegistrationSessionActivationRequestV1(input.body);
1485
+ } catch (error) {
1486
+ return json({
1487
+ ok: false,
1488
+ code: "invalid_body",
1489
+ message: error instanceof Error ? error.message : "ECDSA post-registration session activation is invalid"
1490
+ }, { status: 400 });
1491
+ }
1492
+ const authorized = input.source === "wallet_session_operation_credential_v1" ? await authorizeStrictEcdsaSessionActivationFromOperationCredential({
1493
+ authorizationSessions: input.ctx.service.authorizationSessions,
1494
+ walletId: request.public_capability.client_id,
1495
+ operationCredential: input.operationCredential,
1496
+ proof: input.proof
1497
+ }) : await authorizeStrictEcdsaSessionActivation({
1498
+ walletId: request.public_capability.client_id,
1499
+ proof: input.proof
1500
+ });
1501
+ if (!authorized.ok) return json(authorized, { status: strictEcdsaAuthorizationFailureStatus(authorized) });
1502
+ if (authorized.kind === "wallet_session_operation_credential_v1" && (!sameRouterAbMpcMaterialActivationRef(request.public_capability.material_activation, routerAbMpcMaterialActivationRefToWire(authorized.admission.admission.materialActivation)) || request.session_policy.wallet_session_mint_id !== authorized.admission.context.authorization.session.mintId || request.session_policy.remaining_uses !== authorized.admission.context.authorization.quota.remainingUses || authorized.admission.context.authorization.session.tenantId !== authorized.admission.context.authorization.quota.tenantId || authorized.admission.context.authorization.session.principalId !== authorized.admission.context.authorization.quota.principalId || authorized.admission.context.authorization.session.walletSessionId !== authorized.admission.context.authorization.quota.walletSessionId || authorized.admission.context.authorization.session.quotaId !== authorized.admission.context.authorization.quota.quotaId || authorized.admission.context.authorization.session.expiresAtMs !== authorized.admission.context.authorization.quota.expiresAtMs)) return json({
1503
+ ok: false,
1504
+ code: WALLET_SESSION_FAILURE_CODES.scopeMismatch,
1505
+ message: "ECDSA activation material is outside the exact Wallet Session capability"
1506
+ }, { status: walletSessionFailureStatus(WALLET_SESSION_FAILURE_CODES.scopeMismatch) });
1507
+ const activated = await input.ctx.service.walletRegistration.activateEcdsaPostRegistrationSession(request);
1508
+ if (!activated.ok) return json(activated, { status: activated.code === "not_found" ? 404 : activated.code === "internal" ? 500 : 400 });
1509
+ const walletKey = activated.walletKey;
1510
+ const normalSigning = activated.normalSigning;
1511
+ if (activated.session.thresholdSessionId !== request.session_policy.threshold_session_id || walletKey.walletId !== request.public_capability.client_id) return json({
1512
+ ok: false,
1513
+ code: "scope_mismatch",
1514
+ message: "ECDSA activation did not preserve the requested wallet and threshold session"
1515
+ }, { status: 403 });
1516
+ if (authorized.kind === "wallet_session_operation_credential_v1") {
1517
+ const session = authorized.admission.context.authorization.session;
1518
+ const quota = authorized.admission.context.authorization.quota;
1519
+ if (session.walletId !== walletKey.walletId) return json({
1520
+ ok: false,
1521
+ code: "scope_mismatch",
1522
+ message: "ECDSA activation did not preserve the exact Wallet Session"
1523
+ }, { status: 403 });
1524
+ return json({
1525
+ kind: "router_ab_ecdsa_credential_free_session_activated_v1",
1526
+ public_capability: request.public_capability,
1527
+ session: {
1528
+ authorization_session_id: authorized.authorizationSessionId,
1529
+ authorization_id: session.authorizationId,
1530
+ threshold_session_id: activated.session.thresholdSessionId,
1531
+ wallet_session_id: session.walletSessionId,
1532
+ quota_id: session.quotaId,
1533
+ expires_at_ms: session.expiresAtMs,
1534
+ remaining_uses: quota.remainingUses
1535
+ },
1536
+ normal_signing: normalSigning
1537
+ }, { status: 200 });
1538
+ }
1539
+ if (authorized.kind === "issue_direct_wallet_session_v2") {
1540
+ const mintId = parseWalletSessionMintId(request.session_policy.wallet_session_mint_id);
1541
+ if (!mintId.ok) return json({
1542
+ ok: false,
1543
+ code: "invalid_body",
1544
+ message: "ECDSA Wallet Session mint identity is invalid"
1545
+ }, { status: 400 });
1546
+ const activeAuthority = await input.ctx.service.walletAuthMethods.resolveActiveWalletSessionAuthority({
1547
+ walletId: walletIdFromString(walletKey.walletId),
1548
+ authorityRef: authorized.authorityRef,
1549
+ authSource: authorized.authSource
1550
+ });
1551
+ if (activeAuthority.kind === "rejected") return json({
1552
+ ok: false,
1553
+ code: activeAuthority.code,
1554
+ message: activeAuthority.message
1555
+ }, { status: 401 });
1556
+ if (!exactEcdsaMaterialMatchesActivation(buildWalletSessionCapabilitySubjectsV1(activeAuthority.authority), request)) return json({
1557
+ ok: false,
1558
+ code: "scope_mismatch",
1559
+ message: "ECDSA activation material is outside the resolved Wallet Session authority"
1560
+ }, { status: 403 });
1561
+ const directIssue = await input.ctx.service.authorizationSessions.issueDirectWalletSessionAuthorizationV2({
1562
+ tenantId: input.ctx.service.authorizationSessions.tenantId,
1563
+ principalId: authorized.principalId,
1564
+ walletId: walletIdFromString(walletKey.walletId),
1565
+ authority: activeAuthority.authority,
1566
+ walletAuthMethodId: activeAuthority.authMethod.walletAuthMethodId,
1567
+ mintId: mintId.value,
1568
+ remainingUses: activated.session.remainingUses,
1569
+ issuedAtMs: activated.session.expiresAtMs - request.session_policy.ttl_ms,
1570
+ expiresAtMs: activated.session.expiresAtMs
1571
+ });
1572
+ if (directIssue.kind === "already_committed") return json({
1573
+ ok: false,
1574
+ code: "already_committed",
1575
+ next: directIssue.next,
1576
+ wallet_id: directIssue.walletId,
1577
+ authority_id: directIssue.authorityId,
1578
+ wallet_auth_method_id: directIssue.walletAuthMethodId,
1579
+ authorization_id: directIssue.authorizationId,
1580
+ wallet_session_id: directIssue.walletSessionId,
1581
+ quota_id: directIssue.quotaId
1582
+ }, { status: 409 });
1583
+ return json({
1584
+ kind: "router_ab_ecdsa_post_registration_session_activated_v1",
1585
+ public_capability: request.public_capability,
1586
+ session: {
1587
+ authorization_session_id: authorized.authorizationSessionId,
1588
+ authorization_id: directIssue.session.authorizationId,
1589
+ threshold_session_id: activated.session.thresholdSessionId,
1590
+ wallet_session_id: directIssue.session.walletSessionId,
1591
+ quota_id: directIssue.session.quotaId,
1592
+ expires_at_ms: directIssue.session.expiresAtMs,
1593
+ remaining_uses: directIssue.quota.remainingUses,
1594
+ wallet_session: projectActiveWalletSession(directIssue),
1595
+ operation_credential: directIssue.operationCredential
1596
+ },
1597
+ normal_signing: normalSigning
1598
+ }, { status: 200 });
1599
+ }
1600
+ return assertNeverStrictEcdsaSessionActivationAuthorization(authorized);
1601
+ }
1602
+ async function handleThresholdEcdsa(ctx) {
1603
+ if (ctx.method === "GET" && ctx.pathname === "/router-ab/ecdsa-derivation/healthz") {
1604
+ const runtime = ctx.service.thresholdRuntime.getRouterAbEcdsaPresignRuntime();
1605
+ if (!runtime) {
1606
+ const body = {
1607
+ ok: false,
1608
+ code: "not_configured",
1609
+ message: "Router A/B ECDSA presign runtime is not configured on this server",
1610
+ configured: false
1611
+ };
1612
+ return json(body, { status: thresholdEcdsaStatusCode(body) });
1613
+ }
1614
+ if (runtime.healthz().ok) return json({
1615
+ ok: true,
1616
+ configured: true
1617
+ }, { status: 200 });
1618
+ const body = {
1619
+ ...NOT_IMPLEMENTED,
1620
+ configured: true
1621
+ };
1622
+ return json(body, { status: thresholdEcdsaStatusCode(body) });
1623
+ }
1624
+ if (ctx.method !== "POST") return null;
1625
+ const pathname = ctx.pathname;
1626
+ if (pathname !== "/router-ab/ecdsa-derivation/export" && pathname !== "/router-ab/ecdsa-derivation/sign/prepare" && pathname !== "/router-ab/ecdsa-derivation/sign" && pathname !== "/router-ab/ecdsa-derivation/operation-step-up" && pathname !== "/router-ab/ecdsa-derivation/refresh" && pathname !== "/router-ab/ecdsa-derivation/session/activate" && pathname !== "/router-ab/ecdsa-derivation/presignature-pool/fill/init" && pathname !== "/router-ab/ecdsa-derivation/presignature-pool/fill/step") return null;
1627
+ const bodyUnknown = await readJson(ctx.request.clone());
1628
+ if (pathname === "/router-ab/ecdsa-derivation/operation-step-up") {
1629
+ let request;
1630
+ try {
1631
+ request = parseRouterAbEcdsaOperationStepUpAuthorizationRequestV1(bodyUnknown);
1632
+ } catch (error) {
1633
+ return json({
1634
+ ok: false,
1635
+ code: "invalid_body",
1636
+ message: error instanceof Error ? error.message : "Operation step-up request is invalid"
1637
+ }, { status: 400 });
1638
+ }
1639
+ return issueEcdsaOperationStepUpAuthorization({
1640
+ ctx,
1641
+ request
1642
+ });
1643
+ }
1644
+ if (pathname === "/router-ab/ecdsa-derivation/session/activate") return json({
1645
+ ok: false,
1646
+ code: "owner_proof_required",
1647
+ message: "ECDSA Wallet Session activation requires verified owner authorization"
1648
+ }, { status: 401 });
1649
+ if (pathname === "/router-ab/ecdsa-derivation/export" || pathname === "/router-ab/ecdsa-derivation/refresh") return handleStrictEcdsaPostRegistrationRoute({
1650
+ ctx,
1651
+ body: bodyUnknown,
1652
+ pathname,
1653
+ port: ctx.opts.routerAbEcdsaStrictPostRegistration
1654
+ });
1655
+ const body = bodyUnknown && typeof bodyUnknown === "object" && !Array.isArray(bodyUnknown) ? bodyUnknown : {};
1656
+ if (pathname === "/router-ab/ecdsa-derivation/sign/prepare") return handleRouterAbEcdsaDerivationNormalSigningRoute({
1657
+ ctx,
1658
+ body,
1659
+ phase: "prepare"
1660
+ });
1661
+ if (pathname === "/router-ab/ecdsa-derivation/sign") return handleRouterAbEcdsaDerivationNormalSigningRoute({
1662
+ ctx,
1663
+ body,
1664
+ phase: "finalize"
1665
+ });
1666
+ if (pathname === "/router-ab/ecdsa-derivation/presignature-pool/fill/init") {
1667
+ const runtime = ctx.service.thresholdRuntime.getRouterAbEcdsaPresignRuntime();
1668
+ if (!runtime) {
1669
+ const failure = {
1670
+ ok: false,
1671
+ code: "not_configured",
1672
+ message: "Router A/B ECDSA presign runtime is not configured on this server"
1673
+ };
1674
+ return json(failure, { status: thresholdEcdsaStatusCode(failure) });
1675
+ }
1676
+ const parsedBody = parseRouterAbEcdsaDerivationPoolFillInitRouteRequest(body);
1677
+ const requestTag = parsedBody.ok ? parsedBody.request.requestTag : void 0;
1678
+ const gateTicket = await presignPriorityGate.acquire(resolvePresignTrafficClass(requestTag));
1679
+ try {
1680
+ if (!parsedBody.ok) return json(parsedBody.body, { status: thresholdEcdsaStatusCode(parsedBody.body) });
1681
+ const authorized = await authorizeEcdsaPoolFill({
1682
+ ctx,
1683
+ request: parsedBody.request
1684
+ });
1685
+ if (!authorized.ok) return json(authorized.error.body, { status: authorized.error.status });
1686
+ const result = await runtime.initializePoolFill({
1687
+ binding: authorized.binding,
1688
+ request: ecdsaPoolFillInitRuntimeRequest(parsedBody.request)
1689
+ });
1690
+ return json(result, { status: thresholdEcdsaStatusCode(result) });
1691
+ } finally {
1692
+ gateTicket.release();
1693
+ }
1694
+ }
1695
+ if (pathname === "/router-ab/ecdsa-derivation/presignature-pool/fill/step") {
1696
+ const runtime = ctx.service.thresholdRuntime.getRouterAbEcdsaPresignRuntime();
1697
+ if (!runtime) {
1698
+ const failure = {
1699
+ ok: false,
1700
+ code: "not_configured",
1701
+ message: "Router A/B ECDSA presign runtime is not configured on this server"
1702
+ };
1703
+ return json(failure, { status: thresholdEcdsaStatusCode(failure) });
1704
+ }
1705
+ const parsedBody = parseRouterAbEcdsaDerivationPoolFillStepRouteRequest(body);
1706
+ const requestTag = parsedBody.ok ? parsedBody.request.requestTag : void 0;
1707
+ const gateTicket = await presignPriorityGate.acquire(resolvePresignTrafficClass(requestTag));
1708
+ try {
1709
+ if (!parsedBody.ok) return json(parsedBody.body, { status: thresholdEcdsaStatusCode(parsedBody.body) });
1710
+ const authorized = await authorizeEcdsaPoolFill({
1711
+ ctx,
1712
+ request: parsedBody.request
1713
+ });
1714
+ if (!authorized.ok) return json(authorized.error.body, { status: authorized.error.status });
1715
+ const result = await runtime.advancePoolFill({
1716
+ binding: authorized.binding,
1717
+ request: ecdsaPoolFillStepRuntimeRequest(parsedBody.request)
1718
+ });
1719
+ return json(result, { status: thresholdEcdsaStatusCode(result) });
1720
+ } finally {
1721
+ gateTicket.release();
1722
+ }
1723
+ }
1724
+ return null;
1725
+ }
1726
+ //#endregion
1727
+ export { authorizeEcdsaPoolFill, authorizeStrictEcdsaSessionActivationFromOperationCredential, decideRouterAbEcdsaOperationStepUpExecution, handleStrictEcdsaSessionActivation, handleThresholdEcdsa, resolveV2EcdsaCustodySigner };
1728
+
1729
+ //# sourceMappingURL=thresholdEcdsa.js.map