@seams/wallet-server 0.27.0 → 0.28.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 (142) hide show
  1. package/artifact-manifest.json +18 -13
  2. package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
  3. package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
  4. package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
  5. package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
  6. package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
  7. package/dist/esm/auth/externalAuthService.js +98 -0
  8. package/dist/esm/auth/externalAuthStore.js +217 -0
  9. package/dist/esm/authorization/domain.js +2 -2
  10. package/dist/esm/authorization/factorEvidence.js +1 -1
  11. package/dist/esm/authorization/service.js +2 -2
  12. package/dist/esm/authorization/vaultProxyUse.js +1 -1
  13. package/dist/esm/cloud-host.js +10 -9
  14. package/dist/esm/core/ThresholdService/validation.js +1 -1
  15. package/dist/esm/core/WebAuthnCredentialBindingStore.js +1 -1
  16. package/dist/esm/core/authService/webauthn.js +1 -1
  17. package/dist/esm/core/d1EcdsaSignerRead.js +1 -1
  18. package/dist/esm/core/d1WalletAuthMethodStore.js +2 -2
  19. package/dist/esm/core/d1WalletStore.js +1 -1
  20. package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +1 -1
  21. package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +1 -1
  22. package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +2 -2
  23. package/dist/esm/core/nearRelayerAccountProvisioning.js +1 -1
  24. package/dist/esm/hosted-wallet-gateway.js +3 -3
  25. package/dist/esm/index.js +1 -1
  26. package/dist/esm/router/auth/webAuthnCredentialCodecs.js +1 -1
  27. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +5 -2
  28. package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +2 -2
  29. package/dist/esm/router/cloudflare/d1/authorization/d1VaultProxyStore.js +2 -2
  30. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +3 -3
  31. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +1 -1
  32. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +2 -2
  33. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +1 -1
  34. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.js +1 -1
  35. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetAuthenticatorStore.js +1 -1
  36. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +1 -1
  37. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.js +1 -1
  38. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.js +2 -2
  39. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkSourceReader.js +1 -1
  40. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +1 -1
  41. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +1 -1
  42. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +1 -1
  43. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +1 -1
  44. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +2 -2
  45. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +2 -2
  46. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +1 -1
  47. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +2 -2
  48. package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +7 -1
  49. package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +1 -1
  50. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +2 -2
  51. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +2 -2
  52. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.js +1 -1
  53. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js +1 -1
  54. package/dist/esm/router/cloudflare/d1/registration/d1EvmFamilyEcdsaRegistrationBranch.js +1 -1
  55. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +2 -2
  56. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +1 -1
  57. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +1 -1
  58. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +3 -3
  59. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +1 -1
  60. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +1 -1
  61. package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +1 -1
  62. package/dist/esm/router/cloudflare/d1/wallet/authorizationSnapshotLayout.js +1 -0
  63. package/dist/esm/router/cloudflare/d1/wallet/d1VoiceIdWalletSessionChallenges.js +2 -2
  64. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodRevocationReplayStore.js +1 -1
  65. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +2 -2
  66. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +2 -2
  67. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationCleanup.js +2 -1
  68. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationIntake.js +1 -1
  69. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorizationSnapshot.js +1 -1
  70. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationChallenges.js +1 -1
  71. package/dist/esm/router/cloudflare/d1/wallet/d1WalletRelocationOwnerRequest.js +2 -2
  72. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +2 -2
  73. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +2 -2
  74. package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +9 -0
  75. package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +6 -0
  76. package/dist/esm/router/cloudflare-adaptor.js +1 -1
  77. package/dist/esm/router/cloudflare.js +4635 -4359
  78. package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +1 -1
  79. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +3 -3
  80. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +2 -2
  81. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +1 -1
  82. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +1 -1
  83. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +1 -1
  84. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +1 -1
  85. package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +1 -1
  86. package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js +2 -2
  87. package/dist/esm/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.js +2 -2
  88. package/dist/esm/router/domains/signingOperations/routerAbOperationStepUp.js +1 -1
  89. package/dist/esm/router/domains/tenantRoot/tenantRootIdentityResolution.js +1 -1
  90. package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +1 -1
  91. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +3 -3
  92. package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +2 -2
  93. package/dist/esm/router/framework/http.js +1 -1
  94. package/dist/esm/router/framework/routeDefinitions.js +2 -1
  95. package/dist/esm/router/transport/fetch/createFetchRouter.js +5 -3
  96. package/dist/esm/router/transport/fetch/routes/auth.js +1 -1
  97. package/dist/esm/router/transport/fetch/routes/deviceLinking.js +3 -3
  98. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +1 -1
  99. package/dist/esm/router/transport/fetch/routes/ecdsaOperationStepUpFactor.js +1 -1
  100. package/dist/esm/router/transport/fetch/routes/externalAuth.js +244 -0
  101. package/dist/esm/router/transport/fetch/routes/normalSigningRouterProxy.js +1 -1
  102. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +4 -4
  103. package/dist/esm/router/transport/fetch/routes/sessions.js +2 -2
  104. package/dist/esm/router/transport/fetch/routes/syncAccount.js +2 -2
  105. package/dist/esm/router/transport/fetch/routes/syncAccountBootstrap.js +1 -1
  106. package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +4 -4
  107. package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +4 -4
  108. package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +2 -2
  109. package/dist/esm/router/transport/fetch/routes/walletRegistration.js +3 -3
  110. package/dist/esm/shared-ts/src/auth/externalAuth.js +45 -0
  111. package/dist/esm/shared-ts/src/authorization/voiceIdDeviceAssertion.js +1 -1
  112. package/dist/esm/shared-ts/src/authorization/walletAuthority.js +2 -2
  113. package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +1 -1
  114. package/dist/esm/shared-ts/src/device-linking/digests.js +1 -1
  115. package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +1 -1
  116. package/dist/esm/shared-ts/src/device-linking/parsers.js +2 -2
  117. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +1 -1
  118. package/dist/esm/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +1 -1
  119. package/dist/esm/shared-ts/src/device-linking/wireFields.js +2 -2
  120. package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +1 -1
  121. package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +1 -1
  122. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +1 -1
  123. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -1
  124. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +1 -1
  125. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -1
  126. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +1 -1
  127. package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +1 -1
  128. package/dist/esm/threshold/session/signingSessionSeal/service.js +1 -1
  129. package/dist/esm/threshold/session/signingSessionSeal/transport/fetch.js +1 -1
  130. package/dist/esm/threshold/session/signingSessionSeal/transport/shared.js +1 -1
  131. package/dist/types/shared-ts/src/auth/externalAuth.d.ts +84 -0
  132. package/dist/types/wallet-server/src/auth/externalAuthService.d.ts +36 -0
  133. package/dist/types/wallet-server/src/auth/externalAuthStore.d.ts +61 -0
  134. package/dist/types/wallet-server/src/cloud-host.d.ts +2 -1
  135. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcBoundary.d.ts +5 -0
  136. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/authorizationSnapshotLayout.d.ts +1 -1
  137. package/dist/types/wallet-server/src/router/cloudflare/runtime/staticWalletConsoleBinding.d.ts +2 -0
  138. package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +1 -0
  139. package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +1 -0
  140. package/dist/types/wallet-server/src/router/transport/fetch/routes/externalAuth.d.ts +5 -0
  141. package/migrations/d1-signer/0085_external_wallet_auth.sql +158 -0
  142. package/package.json +1 -1
@@ -1,21 +1,21 @@
1
1
  import { parseEmailOtpChallengeId, parseOrgId, parseProviderSubject, parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId, parseWalletRecoveryOperationId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../../../../shared-ts/src/utils/domainIds.js";
2
- import { buildVaultOperationRef, parseAuthFactorId, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parseDeviceId, parsePrincipalId, parseTenantId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
3
2
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
4
3
  import { isPlainObject, requireTrimmedString } from "../../../../shared-ts/src/utils/validation.js";
5
- import { buildDelegatedWalletAuthorityV1, buildFullOwnerPermissionsV1, sameDelegatedWalletAuthorityV1 } from "../../../../shared-ts/src/authorization/delegatedAuthority.js";
6
4
  import { base64UrlDecode } from "../../../../shared-ts/src/utils/base64.js";
7
5
  import { alphabetizeStringify } from "../../../../shared-ts/src/utils/digests.js";
8
6
  import { sha256Utf8DigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
7
+ import { buildVaultOperationRef, parseAuthFactorId, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parseDeviceId, parsePrincipalId, parseTenantId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
8
+ import { buildDelegatedWalletAuthorityV1, buildFullOwnerPermissionsV1, sameDelegatedWalletAuthorityV1 } from "../../../../shared-ts/src/authorization/delegatedAuthority.js";
9
9
  import { buildCapabilityOperationEnvelope, computeCapabilityOperationFingerprintDigest } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
10
10
  import { buildPasskeyWalletAuthAuthority, walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
11
11
  import { parseSessionOrigin, parseVerifiedOwnerProofId } from "../../../../authorization/domain.js";
12
12
  import { buildVerifiedWalletOperationEmailOtpFactorResult, buildVerifiedWalletOperationPasskeyFactorResult } from "../../../../authorization/factorEvidence.js";
13
- import { findRouteDefinitionById, matchesRouteDefinitionRequest } from "../../../framework/routeDefinitions.js";
14
13
  import { extractBearerCredential, resolveSourceIpFromFetchHeaders } from "../../../auth/routerApiKeyAuth.js";
14
+ import { readJson } from "../../../framework/http.js";
15
+ import { findRouteDefinitionById, matchesRouteDefinitionRequest } from "../../../framework/routeDefinitions.js";
15
16
  import { toFetchRouteResponse } from "../../../framework/routeResponses.js";
16
17
  import { parsePasskeyCustodyEnvelopeRecord } from "../../../../shared-ts/src/passkey-custody/custodyEnvelope.js";
17
18
  import "../../../../shared-ts/src/passkey-custody/index.js";
18
- import { readJson } from "../../../framework/http.js";
19
19
  import { parseWebAuthnAuthenticationCredential, unredactedWebAuthnExtensionField } from "../../../auth/webAuthnCredentialCodecs.js";
20
20
  import { parseCustodyOwnerProof, parseRecoveryBackupAcknowledgementRequest, parseRecoveryStatusRequest, requireExactObjectFields } from "./walletCustodyRequestBoundary.js";
21
21
  import { isHostWithinRpId, originHostnameOrEmpty } from "../../../../core/authService/webauthnOidcHelpers.js";
@@ -1,17 +1,17 @@
1
1
  import { parseOrgId, parseProviderSubject, parseWalletAuthMethodId, parseWalletId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../../../../shared-ts/src/utils/domainIds.js";
2
- import { parseMpcWalletSigningQuotaId, parseWalletSessionId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
3
2
  import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
4
3
  import { sha256HexUtf8 } from "../../../../shared-ts/src/utils/digests.js";
5
4
  import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
6
5
  import { base58Encode } from "../../../../shared-ts/src/utils/base58.js";
6
+ import { parseMpcWalletSigningQuotaId, parseWalletSessionId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
7
7
  import { routerAbMpcMaterialActivationRefToWire, sameRouterAbMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
8
8
  import { normalizeRuntimePolicyScope } from "../../../../shared-ts/src/threshold/signingRootScope.js";
9
9
  import { walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
10
10
  import { parseRouterAbEcdsaCredentialFreeSessionActivationResponseV1, parseRouterAbEcdsaPostRegistrationSessionActivationPolicyV1, parseRouterAbEcdsaPostRegistrationSessionActivationResponseV1, sameRouterAbEcdsaDerivationPublicCapabilityV1, sameRouterAbEcdsaRegistrationActivationReceiptV1 } from "../../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
11
11
  import { parseHostedWalletSeamsSessionExchangeCode, parseHostedWalletSeamsSessionExchangeNonce, parsePrimaryWalletSessionOperationCredentialToken, parseSessionOrigin, projectExactWalletSessionAuthorizationV1 } from "../../../../authorization/domain.js";
12
- import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
13
12
  import { extractBearerCredential, resolveSourceIpFromFetchHeaders } from "../../../auth/routerApiKeyAuth.js";
14
13
  import { json, readJson } from "../../../framework/http.js";
14
+ import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
15
15
  import { routerApiEmailOtpRouteService } from "../../../framework/authServicePort.js";
16
16
  import { emailOtpStatusCode, hashEmailOtpOperationBinding } from "../../../domains/emailOtp/emailOtpSessionRouteHelpers.js";
17
17
  import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_EXPORT_OPERATION } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
@@ -1,12 +1,12 @@
1
1
  import { parseWalletId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../../../../shared-ts/src/utils/domainIds.js";
2
- import { parseAuthFactorId, parsePrincipalId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
3
2
  import { alphabetizeStringify } from "../../../../shared-ts/src/utils/digests.js";
4
3
  import { sha256Utf8DigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
4
+ import { parseAuthFactorId, parsePrincipalId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
5
5
  import { walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
6
6
  import { parseSessionOrigin, parseVerifiedOwnerProofId } from "../../../../authorization/domain.js";
7
7
  import { buildVerifiedWalletSessionPasskeyFactorResult } from "../../../../authorization/factorEvidence.js";
8
- import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
9
8
  import { json, jsonFailure, readJson } from "../../../framework/http.js";
9
+ import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
10
10
  import { parseSyncAccountOptionsRequest, parseSyncAccountVerifyRequest } from "../../../domains/syncAccount/syncAccountRequestValidation.js";
11
11
  import { DEFAULT_WALLET_SESSION_TTL_MS } from "../../../../shared-ts/src/threshold/sessionPolicy.js";
12
12
  import { issueSyncAccountBootstrapV1 } from "./syncAccountBootstrap.js";
@@ -1,6 +1,6 @@
1
1
  import { mpcMaterialActivationRefsEqual, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../../../../shared-ts/src/utils/domainIds.js";
2
- import { parsePrincipalId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
3
2
  import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
3
+ import { parsePrincipalId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
4
4
  import { routerAbMpcMaterialActivationRefFromWire } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
5
5
  import { parseRouterAbEcdsaCredentialFreeSessionActivationResponseV1, parseRouterAbEcdsaPostRegistrationSessionActivationPolicyV1 } from "../../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
6
6
  import { projectActiveWalletSession } from "../../../../authorization/domain.js";
@@ -1,20 +1,20 @@
1
1
  import { parseWalletId } from "../../../../shared-ts/src/utils/domainIds.js";
2
- import { EVM_ECDSA_MPC_OPERATION_KINDS, buildEvmEcdsaMpcOperationRef, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parseEcdsaAuthorizationSessionId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
3
2
  import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
4
3
  import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
5
- import { buildCapabilityOperationEnvelope } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
6
4
  import "../../../../shared-ts/src/utils/encoders.js";
5
+ import { EVM_ECDSA_MPC_OPERATION_KINDS, buildEvmEcdsaMpcOperationRef, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parseEcdsaAuthorizationSessionId, parseWalletSessionMintId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
6
+ import { buildCapabilityOperationEnvelope } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
7
7
  import { routerAbMpcMaterialActivationRefToWire, sameRouterAbMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
8
8
  import { walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
9
9
  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, parseRouterAbEcdsaPrepareSourceV1, sameRouterAbEcdsaDerivationNormalSigningScopeV1, sameRouterAbEcdsaDerivationPublicCapabilityV1 } from "../../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
10
10
  import { buildWalletSessionCapabilitySubjectsV1, projectActiveWalletSession, walletSessionAuthorizationV2RecordsEqual } from "../../../../authorization/domain.js";
11
+ import { extractBearerCredential } from "../../../auth/routerApiKeyAuth.js";
12
+ import { json, readJson } from "../../../framework/http.js";
11
13
  import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
12
14
  import { WALLET_SESSION_FAILURE_CODES } from "../../../../shared-ts/src/utils/walletSessionFailure.js";
13
- import { extractBearerCredential } from "../../../auth/routerApiKeyAuth.js";
14
15
  import { walletSessionFailure, walletSessionFailureStatus } from "../../../auth/walletSessionFailure.js";
15
16
  import { resolveWalletSessionAuthorizationV2Admission } from "../../../domains/signingOperations/walletExecutionAdmission.js";
16
17
  import { resolveWalletSessionOperationCredentialAdmission, validateEcdsaPreprocessingSession } from "../../../auth/commonRouterUtils.js";
17
- import { json, readJson } from "../../../framework/http.js";
18
18
  import { thresholdEcdsaStatusCode } from "../../../../threshold/statusCodes.js";
19
19
  import { signingPrepareSessionResponse } from "../../../domains/signingOperations/signingPrepareSession.js";
20
20
  import { authenticateRouterAbWalletOperationStepUpIdentity } from "../../../domains/signingOperations/routerAbOperationStepUp.js";
@@ -1,20 +1,20 @@
1
1
  import { parseEmailOtpChallengeId, parseOrgId, parseProviderSubject, parseWalletId, parseWebAuthnCredentialIdB64u } from "../../../../shared-ts/src/utils/domainIds.js";
2
- import { buildAuthorizationGrantRef, parseAuthFactorId, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parsePrincipalId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
3
2
  import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
4
3
  import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
5
4
  import { alphabetizeStringify, sha256BytesUtf8 } from "../../../../shared-ts/src/utils/digests.js";
6
5
  import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
7
- import { buildCapabilityOperationEnvelope, computeCapabilityOperationFingerprintDigest, parseCapabilityOperationFingerprintDigest, parseSigningOperationFingerprintDigest } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
8
6
  import "../../../../shared-ts/src/utils/encoders.js";
7
+ import { buildAuthorizationGrantRef, parseAuthFactorId, parseAuthorizationAuditEventId, parseAuthorizationEvidenceId, parseAuthorizationEvidenceSetId, parseAuthorizedOperationId, parseCapabilityId, parseCapabilityOperationId, parsePrincipalId } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
8
+ import { buildCapabilityOperationEnvelope, computeCapabilityOperationFingerprintDigest, parseCapabilityOperationFingerprintDigest, parseSigningOperationFingerprintDigest } from "../../../../shared-ts/src/authorization/operationFingerprint.js";
9
9
  import { sameRouterAbMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
10
10
  import { isPasskeyWalletAuthAuthority, walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
11
11
  import { authorizedOperationReplayBodyInit, parseSessionOrigin, parseVerifiedOwnerProofId } from "../../../../authorization/domain.js";
12
12
  import { buildVerifiedWalletOperationEmailOtpFactorResult, buildVerifiedWalletOperationPasskeyFactorResult, buildVerifiedWalletSessionPasskeyFactorResult } from "../../../../authorization/factorEvidence.js";
13
- import { ROUTER_AB_ED25519_NORMAL_SIGNING_PATH, ROUTER_AB_ED25519_NORMAL_SIGNING_PREPARE_PATH, ROUTER_AB_ED25519_WALLET_SESSION_PATH } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
14
13
  import { normalizeCorsOrigin } from "../../../../core/SessionService.js";
14
+ import { json, readJson } from "../../../framework/http.js";
15
+ import { ROUTER_AB_ED25519_NORMAL_SIGNING_PATH, ROUTER_AB_ED25519_NORMAL_SIGNING_PREPARE_PATH, ROUTER_AB_ED25519_WALLET_SESSION_PATH } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
15
16
  import { walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
16
17
  import { resolveThresholdRuntimePolicyScope } from "../../../auth/commonRouterUtils.js";
17
- import { json, readJson } from "../../../framework/http.js";
18
18
  import { emailOtpStatusCode, hashEmailOtpOperationBinding } from "../../../domains/emailOtp/emailOtpSessionRouteHelpers.js";
19
19
  import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
20
20
  import { thresholdEd25519StatusCode } from "../../../../threshold/statusCodes.js";
@@ -1,10 +1,10 @@
1
1
  import { parseMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/domainIds.js";
2
- import { EVM_ECDSA_MPC_OPERATION_KINDS } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
3
2
  import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
3
+ import { EVM_ECDSA_MPC_OPERATION_KINDS } from "../../../../shared-ts/src/authorization/capabilityKinds.js";
4
4
  import { routerAbMpcMaterialActivationRefToWire } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
5
+ import { json, readJson } from "../../../framework/http.js";
5
6
  import { walletSessionFailure, walletSessionFailureStatus } from "../../../auth/walletSessionFailure.js";
6
7
  import { validateRouterAbEcdsaDerivationWalletSessionInputs } from "../../../auth/commonRouterUtils.js";
7
- import { json, readJson } from "../../../framework/http.js";
8
8
  //#region src/router/transport/fetch/routes/walletExecutionLanePreflight.ts
9
9
  const OWNER_WALLET_EXECUTION_LANE_PREFLIGHT_PATH = "/wallet/execution-lane/owner";
10
10
  function parsePreflightRequest(raw) {
@@ -1,9 +1,9 @@
1
- import { findRouteDefinitionById, matchesRouteDefinitionRequest } from "../../../framework/routeDefinitions.js";
2
1
  import { resolveSourceIpFromFetchHeaders } from "../../../auth/routerApiKeyAuth.js";
3
- import { toFetchRouteResponse } from "../../../framework/routeResponses.js";
4
- import { handleRouterApiWalletAddAuthMethodEmailOtpChallenge, handleRouterApiWalletAddAuthMethodFinalize, handleRouterApiWalletAddAuthMethodIntent, handleRouterApiWalletAddAuthMethodStart, handleRouterApiWalletAddSignerEcdsaActivation, handleRouterApiWalletAddSignerEcdsaDerivationRespond, handleRouterApiWalletAddSignerFinalize, handleRouterApiWalletAddSignerIntent, handleRouterApiWalletAddSignerStart, handleRouterApiWalletEcdsaKeyFactsInventory, handleRouterApiWalletNearImplicitAccountFund, handleRouterApiWalletRegistrationActivate, handleRouterApiWalletRegistrationNearAdmission, handleRouterApiWalletRegistrationNearProvisioning, handleRouterApiWalletRegistrationRespond, handleRouterApiWalletRegistrationSetup, handleRouterApiWalletRevokeAuthMethod } from "../../../domains/walletRegistration/walletRegistrationRoutes.js";
5
2
  import "../../../../shared-ts/src/utils/walletManagementProtocol.js";
6
3
  import { jsonFailure, readJson } from "../../../framework/http.js";
4
+ import { findRouteDefinitionById, matchesRouteDefinitionRequest } from "../../../framework/routeDefinitions.js";
5
+ import { toFetchRouteResponse } from "../../../framework/routeResponses.js";
6
+ import { handleRouterApiWalletAddAuthMethodEmailOtpChallenge, handleRouterApiWalletAddAuthMethodFinalize, handleRouterApiWalletAddAuthMethodIntent, handleRouterApiWalletAddAuthMethodStart, handleRouterApiWalletAddSignerEcdsaActivation, handleRouterApiWalletAddSignerEcdsaDerivationRespond, handleRouterApiWalletAddSignerFinalize, handleRouterApiWalletAddSignerIntent, handleRouterApiWalletAddSignerStart, handleRouterApiWalletEcdsaKeyFactsInventory, handleRouterApiWalletNearImplicitAccountFund, handleRouterApiWalletRegistrationActivate, handleRouterApiWalletRegistrationNearAdmission, handleRouterApiWalletRegistrationNearProvisioning, handleRouterApiWalletRegistrationRespond, handleRouterApiWalletRegistrationSetup, handleRouterApiWalletRevokeAuthMethod } from "../../../domains/walletRegistration/walletRegistrationRoutes.js";
7
7
  import { routerApiWalletRegistrationRouteService } from "../../../framework/authServicePort.js";
8
8
  //#region src/router/transport/fetch/routes/walletRegistration.ts
9
9
  const ROUTE_IDS = [
@@ -0,0 +1,45 @@
1
+ import { parseWalletId } from "../utils/domainIds.js";
2
+ import { requireCanonicalString, requireRecord } from "../utils/validation.js";
3
+ import { parseUnixMs } from "../passkey-custody/primitives.js";
4
+ //#region ../shared-ts/src/auth/externalAuth.ts
5
+ const EXTERNAL_AUTH_PATH = "/wallet/external-auth";
6
+ function parseExternalAuthConfiguration(raw) {
7
+ const value = requireRecord(raw, "external authentication configuration");
8
+ if (typeof value.revision !== "number" || !Number.isSafeInteger(value.revision) || value.revision < 0) throw new Error("Invalid external authentication revision");
9
+ if (value.kind === "disabled") return {
10
+ kind: "disabled",
11
+ revision: value.revision
12
+ };
13
+ if (value.kind === "google") return {
14
+ kind: "google",
15
+ revision: value.revision,
16
+ clientId: requireCanonicalString(value.clientId, "clientId")
17
+ };
18
+ throw new Error("Unsupported external authentication configuration");
19
+ }
20
+ function parseExternalWalletAuthentication(value) {
21
+ const record = requireRecord(value, "external authentication");
22
+ const walletId = parseWalletId(record.walletId);
23
+ if (!walletId.ok || record.kind !== "external_authenticated" || record.provider !== "google" || record.permission !== "wallet_settings_read" || "authMethod" in record) throw new Error("External authentication is invalid");
24
+ return {
25
+ kind: "external_authenticated",
26
+ walletId: walletId.value,
27
+ sessionId: requireCanonicalString(record.sessionId, "sessionId"),
28
+ associationId: requireCanonicalString(record.associationId, "associationId"),
29
+ environmentId: requireCanonicalString(record.environmentId, "environmentId"),
30
+ provider: "google",
31
+ permission: "wallet_settings_read",
32
+ expiresAtMs: parseUnixMs(record.expiresAtMs, "expiresAtMs")
33
+ };
34
+ }
35
+ function externalAuthFailure(code) {
36
+ return {
37
+ ok: false,
38
+ code,
39
+ message: "Wallet authentication could not be completed."
40
+ };
41
+ }
42
+ //#endregion
43
+ export { EXTERNAL_AUTH_PATH, externalAuthFailure, parseExternalAuthConfiguration, parseExternalWalletAuthentication };
44
+
45
+ //# sourceMappingURL=externalAuth.js.map
@@ -1,9 +1,9 @@
1
1
  import { parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId } from "../utils/domainIds.js";
2
- import { parseWalletSessionMintId } from "./capabilityKinds.js";
3
2
  import { isPlainObject } from "../utils/validation.js";
4
3
  import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
5
4
  import { alphabetizeStringify } from "../utils/digests.js";
6
5
  import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
6
+ import { parseWalletSessionMintId } from "./capabilityKinds.js";
7
7
  //#region ../shared-ts/src/authorization/voiceIdDeviceAssertion.ts
8
8
  const CHALLENGE_DOMAIN = "seams:wallet-session:voiceid-device:v1";
9
9
  const MAXIMUM_CHALLENGE_MS = 6e4;
@@ -1,10 +1,10 @@
1
1
  import { parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseMpcMaterialActivationRef, parseWalletAuthorityId, parseWalletId, parseWalletRecoveryOperationId } from "../utils/domainIds.js";
2
- import { parseDeviceId } from "./capabilityKinds.js";
3
2
  import { requireRecord } from "../utils/validation.js";
4
- import { parseDelegatedWalletPermissionSetV1 } from "./delegatedAuthority.js";
5
3
  import { base64UrlEncode } from "../utils/base64.js";
6
4
  import { sha256Bytes } from "../utils/digests.js";
7
5
  import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
6
+ import { parseDeviceId } from "./capabilityKinds.js";
7
+ import { parseDelegatedWalletPermissionSetV1 } from "./delegatedAuthority.js";
8
8
  import { buildExactAdministeredSignerManifestV1, parseExactAdministeredSignerManifestV1 } from "../device-linking/delegatedActivationPlan.js";
9
9
  import { concat, lp32, rawDigest, rawPublicKey, text, u32, u64 } from "../utils/digestEncoding.js";
10
10
  //#region ../shared-ts/src/authorization/walletAuthority.ts
@@ -1,7 +1,7 @@
1
1
  import { parseWalletId, parseWalletKeyId } from "../utils/domainIds.js";
2
2
  import { requireRecord } from "../utils/validation.js";
3
- import { rejectUnknownFields } from "../utils/exactRecord.js";
4
3
  import { parseEd25519PublicKeyB64u, parseSecp256k1CompressedPublicKeyB64u, requireParsed } from "../passkey-custody/primitives.js";
4
+ import { rejectUnknownFields } from "../utils/exactRecord.js";
5
5
  //#region ../shared-ts/src/device-linking/delegatedActivationPlan.ts
6
6
  const MANIFEST_FIELDS = [
7
7
  "kind",
@@ -1,6 +1,6 @@
1
- import { delegatedWalletPermissionNamesV1 } from "../authorization/delegatedAuthority.js";
2
1
  import { alphabetizeStringify } from "../utils/digests.js";
3
2
  import { sha256DigestB64u, sha256Utf8DigestB64u } from "../utils/canonicalPrimitives.js";
3
+ import { delegatedWalletPermissionNamesV1 } from "../authorization/delegatedAuthority.js";
4
4
  import { concat, lp32, rawDigest, rawPublicKey, text, u32, u64 } from "../utils/digestEncoding.js";
5
5
  import "./committedSignerPackages.js";
6
6
  //#region ../shared-ts/src/device-linking/digests.ts
@@ -1,8 +1,8 @@
1
1
  import { parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseLinkedDeviceId, parseWalletId, parseWalletKeyId } from "../utils/domainIds.js";
2
2
  import { requireRecord } from "../utils/validation.js";
3
- import { rejectUnknownFields } from "../utils/exactRecord.js";
4
3
  import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
5
4
  import { parseDigestField, parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, requireParsed } from "../passkey-custody/primitives.js";
5
+ import { rejectUnknownFields } from "../utils/exactRecord.js";
6
6
  //#region ../shared-ts/src/device-linking/ed25519ExportRoot.ts
7
7
  /**
8
8
  * Authenticated relay records for the cross-device Ed25519 Yao Client export
@@ -1,9 +1,9 @@
1
1
  import { requireArray, requireRecord } from "../utils/validation.js";
2
+ import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
3
+ import { parseEd25519PublicKeyB64u } from "../passkey-custody/primitives.js";
2
4
  import { exactRecord } from "../utils/exactRecord.js";
3
5
  import { wireLiteral, wireNullable, wireObject, wireUnion } from "../utils/wireSchema.js";
4
6
  import "../authorization/delegatedAuthority.js";
5
- import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
6
- import { parseEd25519PublicKeyB64u } from "../passkey-custody/primitives.js";
7
7
  import { authorizationDeviceId, credentialId, digest, enrollmentId, linkedDeviceId, parseDelegatedWalletAuthority, parseNonEmptyToken, parseNonNegativeSafeInteger, parseTargetEmail, parseUnixTime, rpId, sessionId, walletAuthMethodId, walletAuthorityId, walletId, walletKeyId, walletSessionAuthorizationId, walletSessionId } from "./wireFields.js";
8
8
  import { parseWalletAddAuthMethodRegistrationOptions } from "../utils/addAuthMethodRegistration.js";
9
9
  import { requireRouterAbX25519PublicKey } from "../utils/routerAbPublicKeyset.js";
@@ -1,9 +1,9 @@
1
1
  import { mpcMaterialActivationRefsEqual, parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseMpcMaterialActivationRef, parseWalletAuthorityId, parseWalletKeyId } from "../utils/domainIds.js";
2
- import { parseDeviceId } from "../authorization/capabilityKinds.js";
3
2
  import { requireRecordCopy } from "../utils/validation.js";
4
3
  import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
5
4
  import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
6
5
  import { parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseSecp256k1CompressedPublicKeyB64u } from "../passkey-custody/primitives.js";
6
+ import { parseDeviceId } from "../authorization/capabilityKinds.js";
7
7
  import { routerAbMpcMaterialActivationRefFromWire } from "../utils/routerAbNormalSigningIdentity.js";
8
8
  import { parseRouterAbEd25519YaoActivationBindingV1, parseRouterAbEd25519YaoActivationPublicReceiptV1, parseRouterAbEd25519YaoApplicationBindingFactsV1, parseRouterAbEd25519YaoEncryptedPackageV1, parseRouterAbEd25519YaoParticipantIdsV1, parseRouterAbEd25519YaoRegistrationActivationAdmissionReceiptV1, sameRouterAbEd25519YaoByteSequence } from "../utils/routerAbEd25519Yao.js";
9
9
  import { parseSdkEcdsaDerivationThresholdKeyId } from "../threshold/ecdsaDerivationRoleLocalBootstrap.js";
@@ -1,8 +1,8 @@
1
1
  import { parseLinkDeviceSessionId, parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId } from "../utils/domainIds.js";
2
- import { parseMpcWalletSigningQuotaId, parsePrincipalId, parseTenantId, parseWalletSessionAuthorizationId, parseWalletSessionId } from "../authorization/capabilityKinds.js";
3
2
  import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
4
3
  import { alphabetizeStringify } from "../utils/digests.js";
5
4
  import { parseDigestB64u, sha256Utf8DigestB64u } from "../utils/canonicalPrimitives.js";
5
+ import { parseMpcWalletSigningQuotaId, parsePrincipalId, parseTenantId, parseWalletSessionAuthorizationId, parseWalletSessionId } from "../authorization/capabilityKinds.js";
6
6
  import { parseLinkDevicePublicKeyB64u } from "./parsers.js";
7
7
  //#region ../shared-ts/src/device-linking/walletSessionCredentialDelivery.ts
8
8
  const DELIVERY_AAD_DOMAIN = "seams/linked-device/wallet-session-credential-delivery-aad/v1";
@@ -1,9 +1,9 @@
1
1
  import { parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseLinkedDeviceId, parseMpcMaterialActivationRef, parseVerifiedEmailAddress, parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId, parseWalletKeyId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../utils/domainIds.js";
2
+ import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
3
+ import { parseUnixMs } from "../passkey-custody/primitives.js";
2
4
  import { parseDeviceId, parseMpcWalletSigningQuotaId, parseWalletSessionAuthorizationId, parseWalletSessionId } from "../authorization/capabilityKinds.js";
3
5
  import { wireLabeled, wireNullable, wireResult } from "../utils/wireSchema.js";
4
6
  import { parseDelegatedWalletAuthorityV1 } from "../authorization/delegatedAuthority.js";
5
- import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
6
- import { parseUnixMs } from "../passkey-custody/primitives.js";
7
7
  //#region ../shared-ts/src/device-linking/wireFields.ts
8
8
  const sessionId = /* @__PURE__ */ wireResult(parseLinkDeviceSessionId);
9
9
  const walletId = /* @__PURE__ */ wireResult(parseWalletId);
@@ -1,7 +1,7 @@
1
1
  import { parsePasskeyEnvelopeId, parseWalletAuthMethodId, parseWalletId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../utils/domainIds.js";
2
2
  import { requireRecord } from "../utils/validation.js";
3
- import { rejectUnknownFields } from "../utils/exactRecord.js";
4
3
  import { parseDigestField, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, parseEnvelopeRevision, parseUnixMs } from "./primitives.js";
4
+ import { rejectUnknownFields } from "../utils/exactRecord.js";
5
5
  import { parsePasskeyCustodySecretBinding } from "./custodySecretBinding.js";
6
6
  //#region ../shared-ts/src/passkey-custody/custodyEnvelope.ts
7
7
  const WALLET_CUSTODY_ENVELOPE_VERSION_V2 = "wallet_custody_envelope_v2";
@@ -1,7 +1,7 @@
1
1
  import { parseLaneShareEpoch, parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseLinkedDeviceId, parseSigningLaneId, parseThresholdEcdsaSessionId, parseWalletKeyId } from "../utils/domainIds.js";
2
2
  import { requireRecord } from "../utils/validation.js";
3
- import { rejectUnknownFields } from "../utils/exactRecord.js";
4
3
  import { parseDigestField, parseEd25519PublicKeyB64u, parseSecp256k1CompressedPublicKeyB64u } from "./primitives.js";
4
+ import { rejectUnknownFields } from "../utils/exactRecord.js";
5
5
  import { requireEvmFamilySigningKeySlotId } from "../signing-lanes/evmFamilySigningKeySlotId.js";
6
6
  import { parseNearEd25519SigningKeyId } from "../utils/registrationIds.js";
7
7
  //#region ../shared-ts/src/passkey-custody/custodySecretBinding.ts
@@ -1,9 +1,9 @@
1
1
  import { hasWhitespaceOrControlCharacters, parseMpcSigningWorkerRef } from "../utils/domainIds.js";
2
2
  import { requireRecord } from "../utils/validation.js";
3
- import { rejectUnknownFields } from "../utils/exactRecord.js";
4
3
  import { base64UrlEncode } from "../utils/base64.js";
5
4
  import { sha256Bytes } from "../utils/digests.js";
6
5
  import { parseDigestField, requireParsed } from "../passkey-custody/primitives.js";
6
+ import { rejectUnknownFields } from "../utils/exactRecord.js";
7
7
  import { concat } from "../utils/digestEncoding.js";
8
8
  import { parseLaneParticipantBindingDigestB64u } from "./participants.js";
9
9
  import { encodeLaneCanonicalDigestV1, encodeLaneCanonicalTextV1, encodeLaneCanonicalU64V1 } from "./participantDigest.js";
@@ -1,9 +1,9 @@
1
1
  import { parseEcdsaActiveStateId, parseRootShareEpoch, parseThresholdEcdsaSessionId } from "./domainIds.js";
2
- import { EVM_ECDSA_MPC_OPERATION_KINDS, parseEcdsaAuthorizationSessionId, parseMpcWalletSigningQuotaId, parseWalletSessionAuthorizationId, parseWalletSessionId, parseWalletSessionMintId } from "../authorization/capabilityKinds.js";
3
2
  import { requireRecord } from "./validation.js";
4
3
  import { base64UrlDecode, base64UrlEncode } from "./base64.js";
5
4
  import { alphabetizeStringify, sha256BytesUtf8 } from "./digests.js";
6
5
  import { parseCorrelationId } from "./canonicalPrimitives.js";
6
+ import { EVM_ECDSA_MPC_OPERATION_KINDS, parseEcdsaAuthorizationSessionId, parseMpcWalletSigningQuotaId, parseWalletSessionAuthorizationId, parseWalletSessionId, parseWalletSessionMintId } from "../authorization/capabilityKinds.js";
7
7
  import { parseActiveWalletSessionV1, parseWalletSessionOperationCredentialV1 } from "../device-linking/activeWalletSession.js";
8
8
  import { requireRouterAbX25519PublicKey } from "./routerAbPublicKeyset.js";
9
9
  import { canonicalRouterAbMpcMaterialActivationRefBytes, canonicalRouterAbNormalSigningAuthorizationBytes, parseRouterAbMpcMaterialActivationRef, parseRouterAbNormalSigningAuthorization, routerAbMpcMaterialActivationRefToWire, sameRouterAbMpcMaterialActivationRef } from "./routerAbNormalSigningIdentity.js";
@@ -1,9 +1,9 @@
1
1
  import { parseEmailOtpProviderUserId, parseWalletAuthMethodId, parseWalletAuthorityBindingDigest, parseWalletId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "./domainIds.js";
2
2
  import { requireRecord } from "./validation.js";
3
- import { rejectUnknownFields } from "./exactRecord.js";
4
3
  import { base64UrlEncode } from "./base64.js";
5
4
  import { alphabetizeStringify, sha256BytesUtf8 } from "./digests.js";
6
5
  import { parseDigestB64u } from "./canonicalPrimitives.js";
6
+ import { rejectUnknownFields } from "./exactRecord.js";
7
7
  //#region ../shared-ts/src/utils/walletAuthAuthority.ts
8
8
  const WALLET_AUTHORITY_BINDING_DIGEST_DOMAIN = "seams:wallet-authority-binding:v1|";
9
9
  function buildVoiceIdWalletAuthAuthority(input) {
@@ -1,5 +1,5 @@
1
- import "../authorization/capabilityKinds.js";
2
1
  import { requireTrimmedString } from "../utils/validation.js";
2
+ import "../authorization/capabilityKinds.js";
3
3
  import "../utils/walletAuthMethodRecord.js";
4
4
  import "../authorization/walletAuthority.js";
5
5
  //#region ../shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.ts
@@ -1,7 +1,7 @@
1
1
  import { parseWalletId } from "../utils/domainIds.js";
2
2
  import { requireRecord } from "../utils/validation.js";
3
- import { rejectUnknownFields } from "../utils/exactRecord.js";
4
3
  import { parseDigestField, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, parseUnixMs } from "../passkey-custody/primitives.js";
4
+ import { rejectUnknownFields } from "../utils/exactRecord.js";
5
5
  import "../passkey-custody/index.js";
6
6
  import { parseRecoveryCodeReservationId } from "./recoveryCodeReservation.js";
7
7
  import { parseDerivedWalletRecoveryKeyId } from "./recoveryKeyId.js";
@@ -1,6 +1,6 @@
1
1
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
2
- import { SIGNING_SESSION_SEAL_ALG, SIGNING_SESSION_SEAL_GROUP_ID, encodeSigningSessionHkdfTuple } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
3
2
  import { failure } from "../../../../shared-ts/src/utils/failure.js";
3
+ import { SIGNING_SESSION_SEAL_ALG, SIGNING_SESSION_SEAL_GROUP_ID, encodeSigningSessionHkdfTuple } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
4
4
  import { parseSigningSessionSealKeyVersion } from "../../../../shared-ts/src/threshold/keyMaterialBrands.js";
5
5
  import { addSigningSessionSealLock, deriveSigningSessionSealLockKeyHandle, destroySigningSessionSealLockKeyHandle, removeSigningSessionSealLock } from "./shamir3PassWasm.js";
6
6
  //#region src/threshold/session/signingSessionSeal/crypto/cipher.ts
@@ -1,7 +1,7 @@
1
1
  import { base64UrlEncode } from "../../../shared-ts/src/utils/base64.js";
2
2
  import { sha256BytesUtf8 } from "../../../shared-ts/src/utils/digests.js";
3
- import "../../../shared-ts/src/utils/encoders.js";
4
3
  import { failure } from "../../../shared-ts/src/utils/failure.js";
4
+ import "../../../shared-ts/src/utils/encoders.js";
5
5
  //#region src/threshold/session/signingSessionSeal/service.ts
6
6
  const SIGNING_SESSION_SEAL_LOG_LABEL = "[threshold-signing-session-seal]";
7
7
  const SIGNING_SESSION_SEAL_IDEMPOTENCY_TTL_MS_DEFAULT = 9e4;
@@ -1,6 +1,6 @@
1
1
  import { failure } from "../../../../shared-ts/src/utils/failure.js";
2
- import { authorizeSigningSessionSealRequest, buildSigningSessionSealApplyPath, buildSigningSessionSealRemovePath, parseSigningSessionSealApplyBody, parseSigningSessionSealRemoveBody, resolveSigningSessionSealBasePath, signingSessionSealAuthorizeStatusCode, signingSessionSealStatusCode } from "./shared.js";
3
2
  import { headersToRecord, readJson } from "../../../../router/framework/http.js";
3
+ import { authorizeSigningSessionSealRequest, buildSigningSessionSealApplyPath, buildSigningSessionSealRemovePath, parseSigningSessionSealApplyBody, parseSigningSessionSealRemoveBody, resolveSigningSessionSealBasePath, signingSessionSealAuthorizeStatusCode, signingSessionSealStatusCode } from "./shared.js";
4
4
  //#region src/threshold/session/signingSessionSeal/transport/fetch.ts
5
5
  function json(body, status = 200) {
6
6
  return new Response(JSON.stringify(body), {
@@ -1,8 +1,8 @@
1
1
  import { parseThresholdSessionId } from "../../../../shared-ts/src/utils/domainIds.js";
2
2
  import { ensureLeadingSlash } from "../../../../shared-ts/src/utils/normalize.js";
3
3
  import { asRecord } from "../../../../shared-ts/src/utils/validation.js";
4
- import { WALLET_SESSION_SEAL_BASE_PATH } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
5
4
  import { failure } from "../../../../shared-ts/src/utils/failure.js";
5
+ import { WALLET_SESSION_SEAL_BASE_PATH } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
6
6
  //#region src/threshold/session/signingSessionSeal/transport/shared.ts
7
7
  const DEFAULT_BASE_PATH = WALLET_SESSION_SEAL_BASE_PATH;
8
8
  function readRequiredString(obj, key) {
@@ -0,0 +1,84 @@
1
+ import { type WalletId } from '../utils/domainIds';
2
+ import type { ReadonlyExclusiveUnion } from '../utils/variant';
3
+ export declare const EXTERNAL_AUTH_PATH = "/wallet/external-auth";
4
+ export type ExternalAuthConfiguration = ReadonlyExclusiveUnion<{
5
+ kind: 'disabled';
6
+ revision: number;
7
+ } | {
8
+ kind: 'google';
9
+ revision: number;
10
+ clientId: string;
11
+ }>;
12
+ export declare function parseExternalAuthConfiguration(raw: unknown): ExternalAuthConfiguration;
13
+ type ExternalAuthFailureCode = 'invalid_request' | 'invalid_credential' | 'access_denied' | 'expired' | 'superseded' | 'unavailable' | 'rate_limited';
14
+ export type ExternalAuthResult<T> = ReadonlyExclusiveUnion<{
15
+ ok: true;
16
+ value: T;
17
+ } | {
18
+ ok: false;
19
+ code: ExternalAuthFailureCode;
20
+ message: string;
21
+ }>;
22
+ export type ExternalAuthenticateInput = ReadonlyExclusiveUnion<{
23
+ method: 'google';
24
+ walletId: string;
25
+ idToken: string;
26
+ } | {
27
+ method: 'handoff';
28
+ walletId: string;
29
+ attemptId: string;
30
+ code: string;
31
+ }>;
32
+ export type ExternalAuthAttempt = Readonly<{
33
+ attemptId: string;
34
+ walletId: WalletId;
35
+ expiresAtMs: number;
36
+ }>;
37
+ export type ExternalAuthCommand = ReadonlyExclusiveUnion<{
38
+ action: 'authenticate';
39
+ input: ExternalAuthenticateInput;
40
+ } | {
41
+ action: 'prepare';
42
+ walletId: string;
43
+ } | {
44
+ action: 'associate';
45
+ walletId: string;
46
+ idToken: string;
47
+ } | {
48
+ action: 'unlink';
49
+ walletId: string;
50
+ associationId: string;
51
+ }>;
52
+ export declare function parseExternalAuthCommand(raw: unknown): ExternalAuthCommand;
53
+ export type ExternalWalletAuthentication = Readonly<{
54
+ kind: 'external_authenticated';
55
+ walletId: WalletId;
56
+ sessionId: string;
57
+ associationId: string;
58
+ environmentId: string;
59
+ provider: 'google';
60
+ permission: 'wallet_settings_read';
61
+ expiresAtMs: number;
62
+ authMethod?: never;
63
+ }>;
64
+ export type ExternalWalletSettings = Readonly<{
65
+ authentication: ExternalWalletAuthentication;
66
+ accounts: readonly Readonly<{
67
+ family: 'ed25519' | 'ecdsa';
68
+ address: string;
69
+ publicKey: string;
70
+ }>[];
71
+ methods: readonly Readonly<{
72
+ id: string;
73
+ kind: 'passkey' | 'email_otp' | 'voiceid';
74
+ }>[];
75
+ devices: readonly Readonly<{
76
+ id: string;
77
+ }>[];
78
+ }>;
79
+ export declare function parseExternalWalletAuthentication(value: unknown): ExternalWalletAuthentication;
80
+ export declare function externalAuthFailure(code: ExternalAuthFailureCode): ExternalAuthResult<never>;
81
+ export declare function parseExternalAuthFailure(value: unknown): ExternalAuthResult<never>;
82
+ export declare function parseExternalWalletSettings(value: unknown): ExternalWalletSettings;
83
+ export {};
84
+ //# sourceMappingURL=externalAuth.d.ts.map
@@ -0,0 +1,36 @@
1
+ import type { ExternalAuthResult, ExternalWalletAuthentication, ExternalWalletSettings } from '../../../shared-ts/src/auth/externalAuth';
2
+ import type { WalletId } from '../../../shared-ts/src/utils/domainIds';
3
+ import type { D1WalletStore } from '../core/d1WalletStore';
4
+ import type { WalletAuthMethodV2Store } from '../core/d1WalletAuthMethodStore';
5
+ import { ExternalAuthStore, type ExternalAuthTrust } from './externalAuthStore';
6
+ export declare class ExternalAuthService {
7
+ readonly store: ExternalAuthStore;
8
+ private readonly wallets;
9
+ private readonly methods;
10
+ constructor(store: ExternalAuthStore, wallets: D1WalletStore, methods: WalletAuthMethodV2Store);
11
+ verifyGoogle(trust: ExternalAuthTrust, idToken: string): Promise<ExternalAuthResult<{
12
+ subject: string;
13
+ expiresAtMs: number;
14
+ trust: ExternalAuthTrust;
15
+ }>>;
16
+ prepare(input: {
17
+ walletId: WalletId;
18
+ originBinding: string;
19
+ binding: string;
20
+ sessionToken: string;
21
+ }): Promise<ExternalAuthResult<{
22
+ attemptId: string;
23
+ walletId: WalletId;
24
+ expiresAtMs: number;
25
+ }>>;
26
+ exchange(input: {
27
+ walletId: WalletId;
28
+ attemptId: string;
29
+ idToken: string;
30
+ trust: ExternalAuthTrust;
31
+ }): Promise<ExternalAuthResult<{
32
+ code: string;
33
+ }>>;
34
+ settings(authentication: ExternalWalletAuthentication): Promise<ExternalWalletSettings>;
35
+ }
36
+ //# sourceMappingURL=externalAuthService.d.ts.map