@seams/wallet-server 0.10.2 → 0.11.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 (96) hide show
  1. package/THIRD_PARTY_NOTICES.md +33 -1812
  2. package/artifact-manifest.json +30 -30
  3. package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
  4. package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
  5. package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
  6. package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
  7. package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
  8. package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
  9. package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
  10. package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
  11. package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
  12. package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
  13. package/cloudflare-router-ab/build/router/index.js +2 -2
  14. package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
  15. package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
  16. package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
  17. package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
  18. package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
  19. package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
  20. package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
  21. package/dist/esm/cloud-host.js +7 -6
  22. package/dist/esm/hosted-wallet-gateway.js +1 -1
  23. package/dist/esm/index.js +1 -2
  24. package/dist/esm/localHostedWalletGatewayHandler.js +17 -11
  25. package/dist/esm/localIntendedYaoFault.js +34 -3
  26. package/dist/esm/localIntendedYaoRecoveryFault.js +19 -16
  27. package/dist/esm/localIntendedYaoSigningFault.js +31 -16
  28. package/dist/esm/router/auth/routerApiKeyAuth.js +1 -13
  29. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +3 -3
  30. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
  31. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +1 -1
  32. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +1 -1
  33. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +1 -1
  34. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +19 -0
  35. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +5 -5
  36. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +5 -2
  37. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +7 -1
  38. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +29 -4
  39. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationRead.js +6 -3
  40. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +51 -29
  41. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +23 -7
  42. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +1 -1
  43. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +2 -2
  44. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +3 -3
  45. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +1 -1
  46. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +1 -1
  47. package/dist/esm/router/cloudflare-adaptor.js +2 -2
  48. package/dist/esm/router/cloudflare.js +2477 -2438
  49. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +1 -1
  50. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +39 -32
  51. package/dist/esm/router/framework/registrationSetupDispatch.js +11 -3
  52. package/dist/esm/router/framework/routeResponses.js +1 -5
  53. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +1 -1
  54. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +2 -2
  55. package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +51 -24
  56. package/dist/esm/shared-ts/src/utils/validation.js +5 -1
  57. package/dist/esm/threshold/session/signingSessionSeal/index.js +1 -2
  58. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
  59. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  60. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
  61. package/dist/types/wallet-server/src/cloud-host.d.ts +1 -0
  62. package/dist/types/wallet-server/src/localHostedWalletGatewayHandler.d.ts +1 -1
  63. package/dist/types/wallet-server/src/localIntendedYaoFault.d.ts +13 -3
  64. package/dist/types/wallet-server/src/localIntendedYaoRecoveryFault.d.ts +4 -2
  65. package/dist/types/wallet-server/src/localIntendedYaoSigningFault.d.ts +4 -2
  66. package/dist/types/wallet-server/src/router/auth/routerApiKeyAuth.d.ts +0 -8
  67. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +2 -0
  68. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +1 -0
  69. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +2 -0
  70. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +25 -5
  71. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts +15 -0
  72. package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +1 -1
  73. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +2 -0
  74. package/dist/types/wallet-server/src/router/framework/routeResponses.d.ts +0 -2
  75. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/index.d.ts +1 -2
  76. package/package.json +2 -9
  77. package/src/README.md +5 -3
  78. package/dist/esm/router/express-adaptor.js +0 -84
  79. package/dist/esm/router/express.js +0 -26400
  80. package/dist/esm/router/node/nodeHostedWalletGateway.js +0 -64
  81. package/dist/esm/router/node/nodeHostedWalletGatewayCheck.js +0 -163
  82. package/dist/esm/router/node/nodeHostedWalletGatewayMain.js +0 -120
  83. package/dist/esm/router/node/nodeHttp.js +0 -79
  84. package/dist/esm/router/node/nodeSqlite.js +0 -43
  85. package/dist/esm/router/node/signerSqlMigrations.js +0 -48
  86. package/dist/esm/storage/syncSqlite.js +0 -79
  87. package/dist/esm/threshold/session/signingSessionSeal/transport/express.js +0 -75
  88. package/dist/types/wallet-server/src/router/express-adaptor.d.ts +0 -22
  89. package/dist/types/wallet-server/src/router/node/nodeHostedWalletGateway.d.ts +0 -34
  90. package/dist/types/wallet-server/src/router/node/nodeHostedWalletGatewayCheck.d.ts +0 -21
  91. package/dist/types/wallet-server/src/router/node/nodeHostedWalletGatewayMain.d.ts +0 -2
  92. package/dist/types/wallet-server/src/router/node/nodeHttp.d.ts +0 -13
  93. package/dist/types/wallet-server/src/router/node/nodeSqlite.d.ts +0 -22
  94. package/dist/types/wallet-server/src/router/node/signerSqlMigrations.d.ts +0 -20
  95. package/dist/types/wallet-server/src/storage/syncSqlite.d.ts +0 -28
  96. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/express.d.ts +0 -12
@@ -40,6 +40,25 @@ var D1RegistrationCeremonyRecordStore = class {
40
40
  prepareGet(scope, id) {
41
41
  return this.prepareRead(this.normalizeKey(scope, id));
42
42
  }
43
+ /** Load the ceremony's immutable founding identities and their current records together. */
44
+ prepareFoundingRecordsRead(id) {
45
+ const key = this.normalizeKey("ceremony", id);
46
+ return this.database.prepare(`
47
+ SELECT json_extract(ceremony.record_json, '$.foundingWalletAuthorityId') AS authority_id,
48
+ json_extract(ceremony.record_json, '$.foundingWalletAuthMethodId') AS auth_method_id,
49
+ (SELECT record_json FROM wallet_authorities
50
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
51
+ AND authority_id = json_extract(ceremony.record_json, '$.foundingWalletAuthorityId'))
52
+ AS authority_json,
53
+ (SELECT record_json FROM wallet_auth_methods
54
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
55
+ AND wallet_auth_method_id = json_extract(ceremony.record_json, '$.foundingWalletAuthMethodId'))
56
+ AS auth_method_json
57
+ FROM registration_ceremony_records AS ceremony
58
+ WHERE namespace = ?1 AND org_id = ?2 AND project_id = ?3 AND env_id = ?4
59
+ AND record_scope = ?5 AND record_id = ?6
60
+ `).bind(...this.bindKey(key));
61
+ }
43
62
  async parseGet(scope, id, row) {
44
63
  if (!row) return null;
45
64
  const parsed = parseStoredRow(row);
@@ -20,16 +20,16 @@ import { thresholdEcdsaChainTargetFromValue } from "../../../../core/thresholdEc
20
20
  import { buildWalletEcdsaSignerRecord, parseWalletEd25519SignerRecord } from "../../../../core/d1WalletStore.js";
21
21
  import { nearEd25519SigningKeyIdFromString, walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
22
22
  import { registrationPreparationIdFromString } from "../../../../core/types.js";
23
- import "../../../../shared-ts/src/signing-lanes/index.js";
24
- import { parsePasskeyCustodyEnvelopeRecord } from "../../../../shared-ts/src/passkey-custody/custodyEnvelope.js";
25
- import "../../../../shared-ts/src/passkey-custody/index.js";
26
23
  import { parseImplicitNearAccountId, parseNamedNearAccountId } from "../../../../shared-ts/src/utils/near.js";
27
24
  import { findRegistrationSignerPlanNearEd25519Branch, normalizeAddSignerSelection, normalizeRegistrationSignerPlan, registrationSignerBranchKeyFromString, registrationSignerSetSelectionFromPlan } from "../../../../shared-ts/src/utils/registrationSignerPlan.js";
25
+ import { parseStoredRegistrationSignerPlan, parseStoredWalletRegistrationPreparedContext, storedRegistrationSignerPlansMatch } from "../../../../core/RegistrationCeremonyStore.js";
26
+ import "../../../../shared-ts/src/signing-lanes/index.js";
28
27
  import { addAuthMethodIntentGrantFromString, addSignerIntentGrantFromString, normalizeAddAuthMethodIntentCaller } from "../../../../shared-ts/src/utils/registrationIntent.js";
28
+ import { parsePasskeyCustodyEnvelopeRecord } from "../../../../shared-ts/src/passkey-custody/custodyEnvelope.js";
29
+ import "../../../../shared-ts/src/passkey-custody/index.js";
29
30
  import { parseEcdsaDerivationPublicIdentity, parseThresholdEd25519AuthorityScope, thresholdEd25519AuthorityScopeFromWalletAuthAuthority, thresholdEd25519AuthorityScopesMatch } from "../../../../core/ThresholdService/validation.js";
30
- import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
31
- import { parseStoredRegistrationSignerPlan, parseStoredWalletRegistrationPreparedContext, storedRegistrationSignerPlansMatch } from "../../../../core/RegistrationCeremonyStore.js";
32
31
  import { parseStoredRouterAbEcdsaPendingActivationV1 } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
32
+ import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
33
33
  //#region src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.ts
34
34
  function inferRuntimePolicyScopeFromSigningRoot(input) {
35
35
  const signingRootId = normalizeOptionalTrimmedString(input.signingRootId);
@@ -1,9 +1,9 @@
1
1
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
2
2
  import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
3
- import { prepareD1RegistrationHomeReservation } from "./d1WalletExecutionAuthority.js";
3
+ import { D1RegistrationCeremonyRecordStore } from "./d1RegistrationCeremonyRecordStore.js";
4
4
  import { parseD1StoredAddAuthMethodIntent, parseD1StoredAddSignerIntent, parseD1StoredWalletAddAuthMethodCeremony, parseD1StoredWalletAddAuthMethodFinalizeReplay, parseD1StoredWalletAddSignerCeremony, parseD1StoredWalletAddSignerFinalizeReplay, parseD1StoredWalletRegistrationCeremony } from "./d1RegistrationCeremonyRecords.js";
5
+ import { prepareD1RegistrationHomeReservation } from "./d1WalletExecutionAuthority.js";
5
6
  import { retryTransientD1 } from "../../../../storage/d1Retry.js";
6
- import { D1RegistrationCeremonyRecordStore } from "./d1RegistrationCeremonyRecordStore.js";
7
7
  //#region src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.ts
8
8
  var CloudflareD1RegistrationCeremonyIntentStore = class {
9
9
  constructor(input) {
@@ -47,6 +47,9 @@ var CloudflareD1RegistrationCeremonyIntentStore = class {
47
47
  prepareCeremonyRead(registrationCeremonyId) {
48
48
  return this.storage.prepareGet("ceremony", registrationCeremonyId);
49
49
  }
50
+ prepareFoundingRecordsRead(registrationCeremonyId) {
51
+ return this.storage.prepareFoundingRecordsRead(registrationCeremonyId);
52
+ }
50
53
  async parseCeremonyRead(registrationCeremonyId, result) {
51
54
  return (await this.parseCeremonySnapshotRead(registrationCeremonyId, result))?.ceremony ?? null;
52
55
  }
@@ -71,6 +71,12 @@ function registrationSignerBranchesFromPlan(plan) {
71
71
  function recordRegistrationServerTiming(sink, name, startedAtMs) {
72
72
  sink.push([name, Math.max(0, Date.now() - startedAtMs)]);
73
73
  }
74
+ /** The `Server-Timing` header of a registration route's recorded waits. */
75
+ function registrationServerTimingHeaders(serverTiming) {
76
+ if (serverTiming.length === 0) return void 0;
77
+ const header = serverTiming.map(([name, durationMs]) => `${name};dur=${Math.max(0, durationMs).toFixed(1)}`).join(", ");
78
+ return { "Server-Timing": header };
79
+ }
74
80
  async function recordRegistrationPromiseTiming(args) {
75
81
  try {
76
82
  return await args.promise;
@@ -79,6 +85,6 @@ async function recordRegistrationPromiseTiming(args) {
79
85
  }
80
86
  }
81
87
  //#endregion
82
- export { createD1RegistrationRouteTimingRecorder, errorMessage, finishD1RegistrationRouteTiming, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationIntentSignerBranches, registrationPreparedContextEcdsaChainTargets, registrationSignerBranchesFromPlan, resolveRegistrationPreparedContextFromPlan, startD1RegistrationRouteTiming };
88
+ export { createD1RegistrationRouteTimingRecorder, errorMessage, finishD1RegistrationRouteTiming, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationIntentSignerBranches, registrationPreparedContextEcdsaChainTargets, registrationServerTimingHeaders, registrationSignerBranchesFromPlan, resolveRegistrationPreparedContextFromPlan, startD1RegistrationRouteTiming };
83
89
 
84
90
  //# sourceMappingURL=d1RegistrationSetupSupport.js.map
@@ -1,4 +1,4 @@
1
- import { mpcMaterialActivationRefsEqual, parseWalletId } from "../../../../shared-ts/src/utils/domainIds.js";
1
+ import { mpcMaterialActivationRefsEqual, parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId } from "../../../../shared-ts/src/utils/domainIds.js";
2
2
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
3
3
  import { parseWalletAuthMethodRecordV2, sameWalletAuthMethodRecordV2 } from "../../../../shared-ts/src/utils/walletAuthMethodRecord.js";
4
4
  import { parseWalletAuthorityV1 } from "../../../../shared-ts/src/authorization/walletAuthority.js";
@@ -123,6 +123,30 @@ function canExtendFoundingAuthorityWithEd25519(existing, next) {
123
123
  const nextEcdsa = next.signerActivations.ecdsa;
124
124
  return existing.signerActivations.keyFamilies.length === 1 && existing.signerActivations.keyFamilies[0] === "ecdsa_secp256k1" && next.signerActivations.keyFamilies.length === 2 && next.signerActivations.keyFamilies[0] === "ed25519" && next.signerActivations.keyFamilies[1] === "ecdsa_secp256k1" && existingEcdsa !== void 0 && nextEcdsa !== void 0 && sameWalletEcdsaSignerActivationV1(existingEcdsa, nextEcdsa) && foundingAuthorityIdentityMatches(existing, next) && next.updatedAtMs >= existing.updatedAtMs;
125
125
  }
126
+ function parseRegistrationFoundingRead(result) {
127
+ if (!result.success) throw new Error("Registration founding records read failed");
128
+ const row = result.results?.[0];
129
+ if (!row) return null;
130
+ const authorityId = parseWalletAuthorityId(row.authority_id);
131
+ const authMethodId = parseWalletAuthMethodId(row.auth_method_id);
132
+ if (!authorityId.ok || !authMethodId.ok) throw new Error("Registration founding identity is invalid");
133
+ return {
134
+ kind: "snapshot",
135
+ records: {
136
+ walletAuthorityId: authorityId.value,
137
+ walletAuthMethodId: authMethodId.value,
138
+ authorityRow: row.authority_json === null ? null : { record_json: row.authority_json },
139
+ authMethodRow: row.auth_method_json === null ? null : { record_json: row.auth_method_json }
140
+ }
141
+ };
142
+ }
143
+ function readFoundingRecords(database, scope, founding) {
144
+ if (founding === null) return Promise.resolve(null);
145
+ switch (founding.kind) {
146
+ case "read": return readStoredFoundingRecords(database, scope, founding.ids);
147
+ case "snapshot": return Promise.resolve(founding.records);
148
+ }
149
+ }
126
150
  async function readStoredFoundingRecords(database, scope, ids) {
127
151
  const authorityRead = database.prepare(`SELECT record_json
128
152
  FROM wallet_authorities
@@ -196,7 +220,8 @@ function prepareFoundingStatements(input) {
196
220
  if (!authMethodRow) statements.push(prepareD1WalletAuthMethodV2PutStatement({
197
221
  database: input.database,
198
222
  scope: input.scope,
199
- record: foundingAuthMethod
223
+ record: foundingAuthMethod,
224
+ insertOnly: true
200
225
  }));
201
226
  return statements;
202
227
  }
@@ -224,7 +249,7 @@ var CloudflareD1WalletRegistrationCommitStore = class {
224
249
  walletId: authority.walletId,
225
250
  rpId: authority.rpId,
226
251
  credentialIdB64u: authority.credentialIdB64u
227
- }) : void 0, founding ? readStoredFoundingRecords(this.database, this.scope, founding) : null]);
252
+ }) : void 0, readFoundingRecords(this.database, this.scope, founding)]);
228
253
  return this.commit.bind(this, authority, stored);
229
254
  }
230
255
  async claimPasskeyAhead(input) {
@@ -336,6 +361,6 @@ function isEd25519Signer(signer) {
336
361
  return signer.version === "wallet_signer_ed25519_v1";
337
362
  }
338
363
  //#endregion
339
- export { CloudflareD1WalletRegistrationCommitStore };
364
+ export { CloudflareD1WalletRegistrationCommitStore, parseRegistrationFoundingRead };
340
365
 
341
366
  //# sourceMappingURL=d1WalletRegistrationCommitStore.js.map
@@ -1,4 +1,5 @@
1
1
  import { parseRouterAbEd25519YaoRegistrationAdmissionReadV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js";
2
+ import { parseRegistrationFoundingRead } from "./d1WalletRegistrationCommitStore.js";
2
3
  //#region src/router/cloudflare/d1/registration/d1WalletRegistrationRead.ts
3
4
  /** Read admission and immutable finalization state from one D1 snapshot. */
4
5
  var D1WalletRegistrationRead = class {
@@ -42,16 +43,18 @@ var D1WalletRegistrationRead = class {
42
43
  ceremonies.prepareCeremonyRead(home.ceremonyId),
43
44
  this.decisions.prepareRead(home.ceremonyId),
44
45
  this.passkeyClaims.prepareHeldPasskeyClaimRead(home.ceremonyId),
45
- this.yaoRecords.prepareRead(home.ceremonyId)
46
+ this.yaoRecords.prepareRead(home.ceremonyId),
47
+ ceremonies.prepareFoundingRecordsRead(home.ceremonyId)
46
48
  ]);
47
- const [homeRead, operationRead, ceremonyRead, decisionRead, passkeyClaimRead, yaoRead] = results;
48
- if (results.length !== 6 || !homeRead || !operationRead || !ceremonyRead || !decisionRead || !passkeyClaimRead || !yaoRead) throw new Error("Registration finalization D1 batch returned incomplete results");
49
+ const [homeRead, operationRead, ceremonyRead, decisionRead, passkeyClaimRead, yaoRead, foundingRead] = results;
50
+ if (results.length !== 7 || !homeRead || !operationRead || !ceremonyRead || !decisionRead || !passkeyClaimRead || !yaoRead || !foundingRead) throw new Error("Registration finalization D1 batch returned incomplete results");
49
51
  const admission = await this.authority.admitHomeRead(home, homeRead);
50
52
  if (!admission.ok) return admission;
51
53
  if (!ceremonyRead.success) throw new Error("Registration ceremony D1 read failed");
52
54
  return {
53
55
  ok: true,
54
56
  operation: this.operations.parseReadResult(operationRead),
57
+ readFounding: parseRegistrationFoundingRead.bind(void 0, foundingRead),
55
58
  decision: this.decisions.parseRead(home.ceremonyId, decisionRead),
56
59
  heldPasskeyClaim: this.passkeyClaims.parseHeldPasskeyClaimRead(passkeyClaimRead),
57
60
  readCeremony: ceremonies.parseCeremonyRead.bind(ceremonies, home.ceremonyId, ceremonyRead),
@@ -20,34 +20,34 @@ import { buildActiveWalletAuthorityV1, buildWalletSignerActivationSetV1, compute
20
20
  import { ROUTER_AB_ED25519_NORMAL_SIGNING_STATE_KIND } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
21
21
  import { normalizeThresholdEd25519ParticipantIds } from "../../../../shared-ts/src/threshold/participants.js";
22
22
  import { nearEd25519SigningKeyIdFromString, registrationEd25519AuthorityScopeFromAuthority, walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
23
- import { walletCustodyCeremonyCommitPayloadFromWire } from "../../../../shared-ts/src/passkey-custody/ceremonyCommitPayload.js";
24
- import "../../../../shared-ts/src/passkey-custody/index.js";
23
+ import { admitRegistrationReservationHome, cancelRegistrationHome } from "../../../domains/walletRegistration/walletRegistrationReservation.js";
25
24
  import { parseImplicitNearAccountId, parseNamedNearAccountId } from "../../../../shared-ts/src/utils/near.js";
26
25
  import { registrationNearEd25519BranchKey } from "../../../../shared-ts/src/utils/registrationSignerPlan.js";
26
+ import { buildStoredWalletRegistrationEvmFamilyEcdsaFinalizedBranch, buildStoredWalletRegistrationNearEd25519YaoAuthorizedBranch, findStoredWalletRegistrationEvmFamilyEcdsaBranch, findStoredWalletRegistrationNearEd25519YaoBranch, replaceStoredWalletRegistrationSignerBranch, storedRegistrationAuthoritiesMatch, verifiedRegistrationCeremonyAuthority } from "../../../../core/RegistrationCeremonyStore.js";
27
27
  import { registrationIntentGrantFromString } from "../../../../shared-ts/src/utils/registrationIntent.js";
28
+ import { walletCustodyCeremonyCommitPayloadFromWire } from "../../../../shared-ts/src/passkey-custody/ceremonyCommitPayload.js";
29
+ import "../../../../shared-ts/src/passkey-custody/index.js";
30
+ import { parseEcdsaDerivationPublicIdentity, thresholdEd25519AuthorityScopeFromWalletAuthAuthority } from "../../../../core/ThresholdService/validation.js";
28
31
  import { createRouterAbTraceContextV1 } from "../../../../shared-ts/src/utils/routerAbTraceContext.js";
32
+ import { routerAbEcdsaStrictRegistrationRequestBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
33
+ import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, buildD1WalletRecord, parseWalletIdForIntent, thresholdEcdsaChainTargetsEqual } from "./d1RegistrationCeremonyRecords.js";
34
+ import { createD1RegistrationRouteTimingRecorder, errorMessage, finishD1RegistrationRouteTiming, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationSignerBranchesFromPlan, startD1RegistrationRouteTiming } from "./d1RegistrationSetupSupport.js";
29
35
  import { buildTenantRootIdentityFromAuthenticatedDeploymentV1 } from "../../../../shared-ts/src/tenant-root/tenantRootIdentity.js";
30
36
  import { DEFAULT_WALLET_SESSION_TTL_MS } from "../../../../shared-ts/src/threshold/sessionPolicy.js";
31
- import { parseEcdsaDerivationPublicIdentity, thresholdEd25519AuthorityScopeFromWalletAuthAuthority } from "../../../../core/ThresholdService/validation.js";
32
37
  import { walletAuthAuthorityFromRegistrationAuthority, walletRegistrationFinalizeAuthMethodFromAuthority } from "../wallet/d1WalletAuthMethodBoundary.js";
33
38
  import { buildRouterAbEd25519YaoRegistrationCapabilityRecordV1 } from "../../../domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js";
34
39
  import { buildRouterAbEd25519YaoProductAdmissionRequestV1, projectRouterAbEd25519YaoExactWalletSession } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
35
40
  import { routerAbEd25519YaoRegistrationExecutionTimingEntriesV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js";
36
41
  import { runRouterAbEd25519YaoRegistrationSideEffectV2, throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
37
42
  import { buildYaoEd25519WalletSignerRecord, ed25519NearPublicKeyFromBytes, implicitNearAccountIdFromEd25519PublicKeyBytes } from "../ed25519Yao/d1Ed25519YaoWalletSigner.js";
38
- import { buildStoredWalletRegistrationEvmFamilyEcdsaFinalizedBranch, buildStoredWalletRegistrationNearEd25519YaoAuthorizedBranch, findStoredWalletRegistrationEvmFamilyEcdsaBranch, findStoredWalletRegistrationNearEd25519YaoBranch, replaceStoredWalletRegistrationSignerBranch, storedRegistrationAuthoritiesMatch, verifiedRegistrationCeremonyAuthority } from "../../../../core/RegistrationCeremonyStore.js";
39
- import { routerAbEcdsaStrictRegistrationRequestBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
40
- import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, buildD1WalletRecord, parseWalletIdForIntent, thresholdEcdsaChainTargetsEqual } from "./d1RegistrationCeremonyRecords.js";
41
43
  import { deriveThresholdEcdsaKeyHandle } from "../../../../shared-ts/src/utils/thresholdEcdsaKeyHandle.js";
42
44
  import { isTransientD1Error, retryTransientD1 } from "../../../../storage/d1Retry.js";
43
- import { admitRegistrationReservationHome, cancelRegistrationHome } from "../../../domains/walletRegistration/walletRegistrationReservation.js";
44
45
  import { listThresholdEcdsaKeyIdentityTargetsForUser } from "../../../../core/authService/thresholdEcdsaKeyInventory.js";
45
46
  import { routerAbEd25519YaoLifecycleDecisionLookupV1, routerAbEd25519YaoLifecycleDecisionV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.js";
46
47
  import { reserveRegistrationCustody } from "../../../domains/passkeyCustody/registrationCustodyOutcome.js";
47
48
  import { resolveTenantRootIdentityV1 } from "../../../domains/tenantRoot/tenantRootIdentityResolution.js";
48
49
  import { walletRegistrationOperationPreparedFromCeremony } from "./d1WalletRegistrationPreparation.js";
49
50
  import { computeWalletRegistrationSetupDigestB64u, parseWalletRegistrationSetupClaims, verifySignedWalletRegistrationSetup, verifyWalletRegistrationSetupClaims } from "../../../domains/walletRegistration/walletRegistrationSetupPayload.js";
50
- import { createD1RegistrationRouteTimingRecorder, errorMessage, finishD1RegistrationRouteTiming, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationSignerBranchesFromPlan, startD1RegistrationRouteTiming } from "./d1RegistrationSetupSupport.js";
51
51
  import { projectWalletRegistrationSessionCommitReceiptV2, registrationCommitActivation, registrationReplayAuthMethodFields, replayedRegistrationCommit, unissuedRegistrationCommit } from "./walletRegistrationSessionCommitReceipt.js";
52
52
  import { assertDirectWalletSessionOwnerProof, buildRegistrationOwnerProof, issueDirectRegistrationEstablishedEcdsaSession, issueDirectRegistrationEstablishedEd25519Session, projectCurrentNearRegistrationSession, replayDirectRegistrationEstablishedEcdsaSession, replayDirectRegistrationEstablishedEd25519Session, walletSessionPrincipalId } from "./walletRegistrationEstablishedSessionIssuer.js";
53
53
  import { commitWalletRegistration } from "./d1WalletRegistrationInitialSession.js";
@@ -2154,7 +2154,7 @@ var CloudflareD1WalletRegistrationService = class {
2154
2154
  }, effectivePrepared, source, args.serverTiming, initialSessionPlan, args.lifecycleDecision, args.heldPasskeyClaim, {
2155
2155
  kind: "snapshot",
2156
2156
  authority: args.readYaoAdmission()
2157
- });
2157
+ }, args.readFounding());
2158
2158
  if (!execution.ok) return unissuedRegistrationCommit(throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1(execution));
2159
2159
  const finalized = execution.finalized;
2160
2160
  if (finalized.kind !== "near_ed25519") {
@@ -2357,22 +2357,29 @@ var CloudflareD1WalletRegistrationService = class {
2357
2357
  };
2358
2358
  const admissionStartedAtMs = Date.now();
2359
2359
  const operationKey = `near-provisioning:${input.registrationCeremonyId}:${input.idempotencyKey}`;
2360
- const initial = await this.registrationRead.readFinalization({
2361
- ceremonyId: verified.claims.registrationCeremonyId,
2362
- walletId: walletIdFromString(verified.claims.walletId)
2363
- }, operationKey);
2364
- recordRegistrationServerTiming(serverTiming, "near_finalize_initial_read", admissionStartedAtMs);
2360
+ const [initial, requestFingerprintBytes] = await Promise.all([recordRegistrationPromiseTiming({
2361
+ sink: serverTiming,
2362
+ name: "near_finalize_initial_read",
2363
+ startedAtMs: admissionStartedAtMs,
2364
+ promise: this.registrationRead.readFinalization({
2365
+ ceremonyId: verified.claims.registrationCeremonyId,
2366
+ walletId: walletIdFromString(verified.claims.walletId)
2367
+ }, operationKey)
2368
+ }), recordRegistrationPromiseTiming({
2369
+ sink: serverTiming,
2370
+ name: "near_finalize_fingerprint",
2371
+ startedAtMs: Date.now(),
2372
+ promise: sha256BytesUtf8(alphabetizeStringify({
2373
+ version: "wallet_registration_near_provisioning_digest_v1",
2374
+ registrationCeremonyId: input.registrationCeremonyId,
2375
+ setupDigestB64u: verified.claims.setupDigestB64u,
2376
+ idempotencyKey: input.idempotencyKey,
2377
+ ed25519: input.ed25519,
2378
+ emailOtpEnrollment: input.emailOtpEnrollment
2379
+ }))
2380
+ })]);
2365
2381
  if (!initial.ok) return initial;
2366
- const fingerprintStartedAtMs = Date.now();
2367
- const requestFingerprint = base64UrlEncode(await sha256BytesUtf8(alphabetizeStringify({
2368
- version: "wallet_registration_near_provisioning_digest_v1",
2369
- registrationCeremonyId: input.registrationCeremonyId,
2370
- setupDigestB64u: verified.claims.setupDigestB64u,
2371
- idempotencyKey: input.idempotencyKey,
2372
- ed25519: input.ed25519,
2373
- emailOtpEnrollment: input.emailOtpEnrollment
2374
- })));
2375
- recordRegistrationServerTiming(serverTiming, "near_finalize_fingerprint", fingerprintStartedAtMs);
2382
+ const requestFingerprint = base64UrlEncode(requestFingerprintBytes);
2376
2383
  const sideEffectStartedAtMs = Date.now();
2377
2384
  let preparedCeremony = null;
2378
2385
  const run = await runRouterAbEd25519YaoRegistrationSideEffectV2(this.registrationRead.operations, {
@@ -2403,7 +2410,8 @@ var CloudflareD1WalletRegistrationService = class {
2403
2410
  preparedCeremony: () => preparedCeremony,
2404
2411
  lifecycleDecision: initial.decision,
2405
2412
  heldPasskeyClaim: initial.heldPasskeyClaim,
2406
- readYaoAdmission: initial.readYaoAdmission
2413
+ readYaoAdmission: initial.readYaoAdmission,
2414
+ readFounding: initial.readFounding
2407
2415
  }),
2408
2416
  projectReceipt: (execution) => projectWalletRegistrationSessionCommitReceiptV2({
2409
2417
  operation: "near_provisioning",
@@ -2553,6 +2561,7 @@ var CloudflareD1WalletRegistrationService = class {
2553
2561
  const ceremony = input.ceremony;
2554
2562
  const stored = storedRespondEd25519DeferredWork(ceremony.signerState);
2555
2563
  let authority;
2564
+ const authorityStartedAtMs = Date.now();
2556
2565
  if (stored) {
2557
2566
  const replayAuthority = await this.verifyRespondReplayAuthority({
2558
2567
  ceremony,
@@ -2586,6 +2595,7 @@ var CloudflareD1WalletRegistrationService = class {
2586
2595
  };
2587
2596
  authority = verified.authority;
2588
2597
  }
2598
+ recordRegistrationServerTiming(input.serverTiming, "respond_authority_verify", authorityStartedAtMs);
2589
2599
  if (authority.walletId !== ceremony.intent.walletId) return {
2590
2600
  ok: false,
2591
2601
  code: "scope_mismatch",
@@ -2597,12 +2607,14 @@ var CloudflareD1WalletRegistrationService = class {
2597
2607
  code: "not_configured",
2598
2608
  message: "Ed25519 Yao registration is unavailable"
2599
2609
  };
2610
+ const requestStartedAtMs = Date.now();
2600
2611
  const admissionRequest = stored ? stored.admissionRequest : await buildRespondEd25519AdmissionRequest({
2601
2612
  ceremony,
2602
2613
  branch: input.branch,
2603
2614
  authority,
2604
2615
  signingWorkerId: runtime.signingWorkerId
2605
2616
  });
2617
+ recordRegistrationServerTiming(input.serverTiming, "yao_admission_request", requestStartedAtMs);
2606
2618
  const verifiedAuthority = authority;
2607
2619
  const branchKey = input.branch.branchKey;
2608
2620
  const ceremonyStore = this.getRegistrationCeremonyIntentStore();
@@ -2620,6 +2632,7 @@ var CloudflareD1WalletRegistrationService = class {
2620
2632
  })]
2621
2633
  }
2622
2634
  });
2635
+ const bindStartedAtMs = Date.now();
2623
2636
  const admitted = await runtime.bindAndAdmitVerifiedRegistration({
2624
2637
  kind: "verified_registration_intent",
2625
2638
  ownershipGeneration: input.ownershipGeneration,
@@ -2631,6 +2644,7 @@ var CloudflareD1WalletRegistrationService = class {
2631
2644
  expected: input.snapshot,
2632
2645
  next: authorizedCeremony(bound)
2633
2646
  }), input.startedDispatchRoot, requireRegistrationEd25519YaoMint(ceremony).sessionId);
2647
+ recordRegistrationServerTiming(input.serverTiming, "yao_admission_bind", bindStartedAtMs);
2634
2648
  if (!admitted.ok) return {
2635
2649
  ok: false,
2636
2650
  code: admitted.code,
@@ -2638,6 +2652,7 @@ var CloudflareD1WalletRegistrationService = class {
2638
2652
  };
2639
2653
  if (!stored && admitted.companionWrite === "not_committed") {
2640
2654
  const next = authorizedCeremony(admitted.admissionRequest);
2655
+ const commitStartedAtMs = Date.now();
2641
2656
  try {
2642
2657
  await ceremonyStore.commitEcdsaClaim({
2643
2658
  expected: input.snapshot,
@@ -2647,6 +2662,7 @@ var CloudflareD1WalletRegistrationService = class {
2647
2662
  const committed = await ceremonyStore.getCeremony(ceremony.registrationCeremonyId);
2648
2663
  if (!committed || alphabetizeStringify(committed) !== alphabetizeStringify(next)) throw error;
2649
2664
  }
2665
+ recordRegistrationServerTiming(input.serverTiming, "respond_ceremony_commit", commitStartedAtMs);
2650
2666
  }
2651
2667
  if (!stored && input.waitUntil && verifiedAuthority.kind === "passkey") input.waitUntil(this.walletRegistrationCommitStore.claimPasskeyAhead({
2652
2668
  registrationCeremonyId: ceremony.registrationCeremonyId,
@@ -2901,7 +2917,7 @@ var CloudflareD1WalletRegistrationService = class {
2901
2917
  }, prepared, {
2902
2918
  kind: "stored_ceremony",
2903
2919
  ceremony: activatedCeremony
2904
- }, [], { kind: "separate" }, null, null, { kind: "stored" });
2920
+ }, [], { kind: "separate" }, null, null, { kind: "stored" }, null);
2905
2921
  if (!execution.ok) return unissuedRegistrationCommit(throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1(execution));
2906
2922
  const commit = execution.finalized;
2907
2923
  if (commit.kind !== "evm_family_ecdsa") {
@@ -3237,7 +3253,7 @@ var CloudflareD1WalletRegistrationService = class {
3237
3253
  };
3238
3254
  }
3239
3255
  }
3240
- async executeWalletRegistrationFinalize(request, prepared, source, serverTiming, initialSessionPlan, lifecycleDecision, heldPasskeyClaim, yaoAdmission) {
3256
+ async executeWalletRegistrationFinalize(request, prepared, source, serverTiming, initialSessionPlan, lifecycleDecision, heldPasskeyClaim, yaoAdmission, founding) {
3241
3257
  const finalizeTiming = createD1RegistrationRouteTimingRecorder("wallets_register_finalize");
3242
3258
  const totalTiming = startD1RegistrationRouteTiming("registerFinalizeTotalMs");
3243
3259
  let startedCustody = null;
@@ -3476,7 +3492,10 @@ var CloudflareD1WalletRegistrationService = class {
3476
3492
  sink: serverTiming,
3477
3493
  name: "near_finalize_authority_reserve",
3478
3494
  startedAtMs: Date.now(),
3479
- promise: this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, heldPasskeyClaim, prepared)
3495
+ promise: this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, heldPasskeyClaim, founding ?? {
3496
+ kind: "read",
3497
+ ids: prepared
3498
+ })
3480
3499
  })]);
3481
3500
  if (activationConsumption.status === "rejected") throw activationConsumption.reason;
3482
3501
  if (authorityReservation.status === "rejected") throw authorityReservation.reason;
@@ -3605,7 +3624,10 @@ var CloudflareD1WalletRegistrationService = class {
3605
3624
  } else {
3606
3625
  custodyReservation = reserveCustody();
3607
3626
  startedCustody = custodyReservation;
3608
- commitWallet = await this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, null, prepared);
3627
+ commitWallet = await this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, null, {
3628
+ kind: "read",
3629
+ ids: prepared
3630
+ });
3609
3631
  }
3610
3632
  if (yaoDecisionFound?.kind === "decided_otherwise") return {
3611
3633
  ok: false,
@@ -1,37 +1,53 @@
1
1
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
2
2
  import { deriveSigningRootId } from "../../../../shared-ts/src/threshold/signingRootScope.js";
3
3
  import { registrationPreparationIdFromString } from "../../../../core/types.js";
4
- import { buildRouterAbEd25519YaoProductAdmissionRequestV1, mintRouterAbEd25519YaoRegistrationIdentityV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
5
4
  import { buildStoredWalletRegistrationEvmFamilyEcdsaPreparedBranch, findStoredWalletRegistrationEvmFamilyEcdsaBranch } from "../../../../core/RegistrationCeremonyStore.js";
6
5
  import { routerAbEcdsaStrictRegistrationFactsBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
7
6
  import { buildRegistrationIntent, inferRuntimePolicyScopeFromSigningRoot } from "./d1RegistrationCeremonyRecords.js";
7
+ import { errorMessage, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationIntentSignerBranches, registrationPreparedContextEcdsaChainTargets, registrationSignerBranchesFromPlan, resolveRegistrationPreparedContextFromPlan } from "./d1RegistrationSetupSupport.js";
8
+ import { buildRouterAbEd25519YaoProductAdmissionRequestV1, mintRouterAbEd25519YaoRegistrationIdentityV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
8
9
  import { isTransientD1Error } from "../../../../storage/d1Retry.js";
9
- import { errorMessage, registrationIntentSignerBranches, registrationPreparedContextEcdsaChainTargets, registrationSignerBranchesFromPlan, resolveRegistrationPreparedContextFromPlan } from "./d1RegistrationSetupSupport.js";
10
10
  import { buildWalletRegistrationSetupSignature, normalizeWalletRegistrationSetupRequest, walletRegistrationSetupError, walletRegistrationSetupExpiresAtMs, walletRegistrationSetupIntentDigest } from "./d1WalletRegistrationSetup.js";
11
11
  import { buildD1EvmFamilyEcdsaRegistrationPrepare } from "./d1EvmFamilyEcdsaRegistrationBranch.js";
12
12
  //#region src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.ts
13
13
  async function executeD1WalletRegistrationSetup(input, dependencies) {
14
+ const serverTiming = input.serverTiming ?? [];
14
15
  try {
15
16
  const normalized = normalizeWalletRegistrationSetupRequest(input.request);
16
17
  if (!normalized.ok) return walletRegistrationSetupError(normalized.code, normalized.message);
17
18
  if (!dependencies.reservation) return walletRegistrationSetupError("registration_authority_unavailable", "Registration reservation authority is required");
19
+ const reserveStartedAtMs = Date.now();
18
20
  const admitted = await dependencies.reservation.reserve(input);
21
+ recordRegistrationServerTiming(serverTiming, "setup_reserve", reserveStartedAtMs);
19
22
  if (!admitted.ok) return admitted;
20
23
  const reservation = admitted.reservation;
21
24
  const wallet = { walletId: reservation.walletId };
22
25
  if (input.request.wallet?.kind === "provided" && input.request.wallet.walletId !== wallet.walletId) return walletRegistrationSetupError("reservation_conflict", "Registration reservation changed the requested wallet");
23
26
  const expiresAtMs = walletRegistrationSetupExpiresAtMs(reservation.reservedAtMs);
24
27
  if (Date.now() >= expiresAtMs) return walletRegistrationSetupError("registration_expired", "Registration setup has expired");
25
- const [startup, setup] = await Promise.allSettled([dependencies.startRegistrationWallets?.({
26
- kind: "objects",
27
- walletId: wallet.walletId,
28
- ownershipGeneration: admitted.ownershipGeneration
29
- }), completeReservedRegistrationSetup(input, dependencies, admitted, normalized, expiresAtMs)]);
28
+ const parallelStartedAtMs = Date.now();
29
+ const [startup, setup] = await Promise.allSettled([recordRegistrationPromiseTiming({
30
+ sink: serverTiming,
31
+ name: "setup_wallet_objects",
32
+ startedAtMs: parallelStartedAtMs,
33
+ promise: dependencies.startRegistrationWallets?.({
34
+ kind: "objects",
35
+ walletId: wallet.walletId,
36
+ ownershipGeneration: admitted.ownershipGeneration
37
+ })
38
+ }), recordRegistrationPromiseTiming({
39
+ sink: serverTiming,
40
+ name: "setup_ceremony",
41
+ startedAtMs: parallelStartedAtMs,
42
+ promise: completeReservedRegistrationSetup(input, dependencies, admitted, normalized, expiresAtMs)
43
+ })]);
30
44
  if (setup.status === "rejected") throw setup.reason;
31
45
  if (!setup.value.ok) return setup.value;
32
46
  if (startup.status === "rejected") throw startup.reason;
33
47
  if (dependencies.startRegistrationWallets) try {
48
+ const pairStartedAtMs = Date.now();
34
49
  const preparation = await describeCommittedSetupPair(setup.value, dependencies);
50
+ recordRegistrationServerTiming(serverTiming, "setup_pair_describe", pairStartedAtMs);
35
51
  if (preparation.status === "described") await dependencies.startRegistrationWallets({
36
52
  kind: "pair",
37
53
  walletId: wallet.walletId,
@@ -2,8 +2,8 @@ import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
2
2
  import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
3
3
  import { alphabetizeStringify, sha256BytesUtf8 } from "../../../../shared-ts/src/utils/digests.js";
4
4
  import "../../../../shared-ts/src/utils/encoders.js";
5
- import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
6
5
  import { parseD1WalletAddSignerFinalizeTerminalResponse, parseWalletIdForIntent } from "../registration/d1RegistrationCeremonyRecords.js";
6
+ import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
7
7
  //#region src/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.ts
8
8
  function parseWalletAddSignerFinalizePrepared(raw) {
9
9
  if (!isPlainObject(raw)) return null;
@@ -13,14 +13,14 @@ import { buildRouterAbEcdsaDerivationPublicCapabilityV1, parseRouterAbEcdsaRegis
13
13
  import { buildWalletEcdsaSignerActivationV1, extendEd25519WalletAuthorityWithEcdsa, isActiveEd25519WalletAuthorityV1 } from "../../../../shared-ts/src/authorization/walletAuthority.js";
14
14
  import { registrationPreparationIdFromString } from "../../../../core/types.js";
15
15
  import { addSignerIntentGrantFromString, computeAddSignerIntentDigestB64u, sameAddSignerIntentV1 } from "../../../../shared-ts/src/utils/registrationIntent.js";
16
+ import { routerAbEcdsaStrictRegistrationRequestMatchesFacts } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
17
+ import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, normalizeThresholdEcdsaChainTargets, parseD1AddSignerIntent, parseD1RuntimePolicyScope, parseD1StoredAddSignerAuth, parseD1StoredAddSignerIntent, parseD1StoredWalletAddSignerCeremony, parseWalletIdForIntent, positiveIntegerArraysEqual, runtimePolicyScopeMatches, thresholdEcdsaChainTargetsEqual } from "../registration/d1RegistrationCeremonyRecords.js";
16
18
  import { buildTenantRootIdentityFromAuthenticatedDeploymentV1 } from "../../../../shared-ts/src/tenant-root/tenantRootIdentity.js";
17
19
  import { WalletAuthorityCommitConflictError } from "./d1WalletAuthorityStore.js";
18
20
  import { buildRouterAbEd25519YaoRegistrationCapabilityRecordV1 } from "../../../domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js";
19
21
  import { buildRouterAbEd25519YaoAddSignerAdmissionRequestV1, createRouterAbEd25519YaoMaterialActivationRefV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
20
22
  import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV1, runRouterAbEd25519YaoRegistrationSideEffectV1, throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
21
23
  import { buildYaoEd25519WalletSignerRecord, ed25519NearPublicKeyFromBytes, implicitNearAccountIdFromEd25519PublicKeyBytes } from "../ed25519Yao/d1Ed25519YaoWalletSigner.js";
22
- import { routerAbEcdsaStrictRegistrationRequestMatchesFacts } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
23
- import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, normalizeThresholdEcdsaChainTargets, parseD1AddSignerIntent, parseD1RuntimePolicyScope, parseD1StoredAddSignerAuth, parseD1StoredAddSignerIntent, parseD1StoredWalletAddSignerCeremony, parseWalletIdForIntent, positiveIntegerArraysEqual, runtimePolicyScopeMatches, thresholdEcdsaChainTargetsEqual } from "../registration/d1RegistrationCeremonyRecords.js";
24
24
  import { buildD1WalletAddSignerFinalizePrepared, fingerprintD1WalletAddSignerFinalizePrepared, rejectUnexpectedWalletAddSignerFinalizePreparation, returnD1WalletAddSignerFinalizePrepared } from "./d1WalletAddSignerFinalizeRecord.js";
25
25
  import { routerAbEd25519YaoLifecycleDecisionLookupV1, routerAbEd25519YaoLifecycleDecisionV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.js";
26
26
  import { buildD1EvmFamilyEcdsaRegistrationPrepare } from "../registration/d1EvmFamilyEcdsaRegistrationBranch.js";
@@ -13,15 +13,15 @@ import { deriveWebAuthnAuthenticatorDeviceInfo } from "../../../../shared-ts/src
13
13
  import { parseSessionOrigin } from "../../../../authorization/domain.js";
14
14
  import { secureRandomBase64Url } from "../../../../shared-ts/src/utils/secureRandomId.js";
15
15
  import { PASSKEY_PRF_FIRST_SALT_V1, PASSKEY_PRF_SECOND_SALT_V1 } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
16
+ import { addAuthMethodIntentGrantFromString, computeAddAuthMethodIntentDigestB64u } from "../../../../shared-ts/src/utils/registrationIntent.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 { addAuthMethodIntentGrantFromString, computeAddAuthMethodIntentDigestB64u } from "../../../../shared-ts/src/utils/registrationIntent.js";
19
+ import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
20
+ import { parseWalletIdForIntent } from "../registration/d1RegistrationCeremonyRecords.js";
19
21
  import { parseWebAuthnClientDataJsonBase64url, webAuthnOriginHostnameOrEmpty } from "../../../auth/webAuthnCredentialCodecs.js";
20
22
  import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_ACTIONS, WALLET_EMAIL_OTP_UNLOCK_OPERATION } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
21
23
  import { resolveWalletAuthMethodIdForAuthority } from "../../../../core/signingLanes/WalletExecutionLaneProjection.js";
22
- import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
23
24
  import { d1HostIsWithinWebAuthnRpId, resolveD1AddAuthMethodExistingAuth, resolveD1AddSignerExistingAuth, verifyD1LinkedDeviceFreshRevokeProofV1, walletAuthAuthorityFromRegistrationAuthority } from "./d1WalletAuthMethodBoundary.js";
24
- import { parseWalletIdForIntent } from "../registration/d1RegistrationCeremonyRecords.js";
25
25
  import { runtimePolicyScopeKey } from "../../../../core/EmailOtpRecords.js";
26
26
  import { expiredGoogleEmailOtpRegistrationAttemptRecord } from "../emailOtp/d1GoogleEmailOtpRegistrationRecords.js";
27
27
  import { admitAddWalletAuthMethod } from "../../../../shared-ts/src/utils/addWalletAuthMethod.js";
@@ -4,8 +4,8 @@ import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimit
4
4
  import { WalletLifecycleLocator } from "../../../../authorization/lifecycleRouting.js";
5
5
  import { secureRandomBase64Url } from "../../../../shared-ts/src/utils/secureRandomId.js";
6
6
  import { failedVerification, failure } from "../../../../shared-ts/src/utils/failure.js";
7
- import { decodeWebAuthnBase64UrlOrBase64, parseWebAuthnAuthenticationCredential, parseWebAuthnClientDataJsonBase64url, webAuthnCredentialIdB64uFromCredential, webAuthnOriginHostnameOrEmpty } from "../../../auth/webAuthnCredentialCodecs.js";
8
7
  import { nonNegativeSafeInteger, optionalNonNegativeInteger, parseD1BoundaryWalletId, parseD1BoundaryWalletIdResult, parseJsonObject } from "../auth/d1RouterApiAuthBoundary.js";
8
+ import { decodeWebAuthnBase64UrlOrBase64, parseWebAuthnAuthenticationCredential, parseWebAuthnClientDataJsonBase64url, webAuthnCredentialIdB64uFromCredential, webAuthnOriginHostnameOrEmpty } from "../../../auth/webAuthnCredentialCodecs.js";
9
9
  import { parseWebAuthnAuthenticatorRowDeviceInfo, webAuthnSyncWalletBindingFromCredentialBinding } from "./d1WebAuthnRecords.js";
10
10
  import { d1HostIsWithinWebAuthnRpId } from "../wallet/d1WalletAuthMethodBoundary.js";
11
11
  import { webAuthnAuthenticationFailure, webAuthnLoginEd25519, webAuthnSyncCredentialBinding } from "../../../../core/authService/webauthnVerificationOutcomes.js";
@@ -8,8 +8,8 @@ import { parseWalletAuthorityV1 } from "../../../../shared-ts/src/authorization/
8
8
  import { parseWebAuthnAuthenticatorDeviceInfoJson } from "../../../../shared-ts/src/utils/webauthnDeviceInfo.js";
9
9
  import { hasExactKeys } from "../../../../shared-ts/src/utils/exactKeys.js";
10
10
  import "../../../../shared-ts/src/passkey-custody/index.js";
11
- import { parseRecoveryCodeReservationId } from "../../../../shared-ts/src/wallet-recovery/recoveryCodeReservation.js";
12
11
  import { nonNegativeSafeInteger, optionalNonNegativeInteger, positiveInteger } from "../auth/d1RouterApiAuthBoundary.js";
12
+ import { parseRecoveryCodeReservationId } from "../../../../shared-ts/src/wallet-recovery/recoveryCodeReservation.js";
13
13
  //#region src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.ts
14
14
  function parseWebAuthnAuthenticatorRowDeviceInfo(raw) {
15
15
  return parseWebAuthnAuthenticatorDeviceInfoJson(raw);
@@ -1,6 +1,6 @@
1
1
  import { ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, parseRouterAbPublicKeysetV2 } from "../shared-ts/src/utils/routerAbPublicKeyset.js";
2
2
  import { defineRoute, matchesRouteDefinitionRequest } from "./framework/routeDefinitions.js";
3
- import { extractBearerCredential, extractRouterApiEnvironmentId, resolveSourceIpFromExpressRequest, resolveSourceIpFromFetchHeaders } from "./auth/routerApiKeyAuth.js";
3
+ import { extractBearerCredential, extractRouterApiEnvironmentId, resolveSourceIpFromFetchHeaders } from "./auth/routerApiKeyAuth.js";
4
4
  import { InMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createRouterAbNormalSigningAdmissionAdapter } from "./domains/signingOperations/routerAbNormalSigningAdmissionCore.js";
5
5
  import { CloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1RouterAbNormalSigningAdmissionStore } from "./cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js";
6
6
  import { getRouterApiRouteExtensionRoutes } from "./framework/routeExtensions.js";
@@ -41,4 +41,4 @@ import { handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1 } from ".
41
41
  import { createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1 } from "./domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js";
42
42
  import { runRouterAbEd25519YaoRegistrationSideEffectV1 } from "./domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
43
43
  import { CLOUDFLARE_ROUTER_ED25519_YAO_SOURCE_PRESERVING_EXECUTE_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_DEACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_RESERVE_INACTIVE_SOURCE_PRESERVING_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_DEACTIVATE_RESERVATION_PATH_V1, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1 } from "./cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js";
44
- export { CLOUDFLARE_ROUTER_ED25519_YAO_SOURCE_PRESERVING_EXECUTE_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_DEACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_RESERVE_INACTIVE_SOURCE_PRESERVING_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_DEACTIVATE_RESERVATION_PATH_V1, CloudflareD1AuthorizationStore, CloudflareD1RouterAbNormalSigningAdmissionStore, CloudflareD1VaultProxyStore, CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, CloudflareD1WebAuthnAuthService, CloudflareD1WebAuthnStore, CloudflareDurableObjectVersionedJsonRecordStore, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, CloudflareVersionedJsonRecordStoreError, DEFAULT_WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_V1, DEFAULT_WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_V1, InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAdapter, InMemoryRouterAbEd25519YaoRegistrationService, InMemoryRouterAbNormalSigningAdmissionStore, ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, RouterAbEd25519YaoHttpRegistrationBackend, StaticCloudflareTenantStorageRouteResolver, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, WALLET_CONSOLE_API_WALLET_DETAIL_PREFIX_V1, WALLET_CONSOLE_OPS_BASE_PATH_V1, WALLET_CONSOLE_OP_PATHS_V1, WALLET_CONSOLE_SERVICE_ORIGIN_V1, WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_ID_V1, WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_ID_V1, WALLET_CONTROL_AUTH_MARKER_V1, WALLET_CONTROL_BASE_PATH_V1, WALLET_CONTROL_SERVICE_ORIGIN_V1, WALLET_RUNTIME_OPS_BASE_PATH_V1, WALLET_RUNTIME_OP_PATHS_V1, WALLET_RUNTIME_SERVICE_ORIGIN_V1, buildRouterAbEd25519YaoProductAdmissionRequestV1, coerceRouterLogger, createCloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1VersionedJsonRecordStore, createCloudflareDurableObjectVersionedJsonRecordStore, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createCloudflareRouter, createCloudflareTenantStorageRoute, createCloudflareWalletGatewayRouterV1, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterApiRuntimeSnapshotConsumer, createRouterAbEd25519YaoCeremonyStateStoreV1, createRouterAbEd25519YaoHttpRegistrationBackendFromEnv, createRouterAbEd25519YaoProductRegistrationCompositionFromPortsV1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1, createRouterAbEd25519YaoProductRegistrationRuntimeV1, createRouterAbEd25519YaoProductRegistrationStateV1, createRouterAbEd25519YaoRegistrationModule, createRouterAbNormalSigningAdmissionAdapter, createRouterApiModule, createSelfHostedCloudflareSigningRouter, createSelfHostedCloudflareSigningWorker, createSignerD1DoStorageTarget, createStaticCloudflareTenantStorageRouteResolver, createStaticCloudflareTenantStorageRouteResolverFromBindings, createStaticWalletConsoleBindingV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createWalletConsoleOpsClient, createWalletConsoleRelayProxyExtensionV1, createWalletControlClientBindings, createWalletRuntimeOpsHandler, decodeWalletConsoleTenantRootActiveLineageRequestV1, decodeWalletConsoleTenantRootActiveLineageResponseV1, defineRoute, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, extractBearerCredential, extractRouterApiEnvironmentId, getRouterApiRouteExtensionRoutes, handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1, handleStaticWalletConsoleRequestV1, handleWalletControlRequest, matchesRouteDefinitionRequest, mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, parseRouterAbPublicKeysetV2, parseStaticWalletConsoleBindingConfigV1, parseWalletRegistrationContextResponse, parseWalletRuntimeExecuteSignedDelegateRequest, parseWalletRuntimeExecuteSignedDelegateResponse, parseWalletRuntimeExecuteSignedDelegateResult, parseWalletRuntimeRelayerAccount, parseWalletRuntimeWalletIdentitiesResult, parseWalletRuntimeWalletIdentityRequest, partitionRouterAbEd25519YaoProductRegistrationStateV1, randomTenantRootCreationGrantBytesV1, readEnvironmentCsv, readEnvironmentString, requireEnvironmentString, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1, resolveRuntimeTenantRootLineage, resolveSourceIpFromExpressRequest, resolveSourceIpFromFetchHeaders, runRouterAbEd25519YaoProductRegistrationRequestScopedV1, runRouterAbEd25519YaoRegistrationSideEffectV1, runRouterAbEd25519YaoRegistrationTwoPhaseV1, runRouterAbPrewarmScheduledV1, signTenantRootCreationGrantV1, tenantRootIdentityDigestB64uV1, validateRuntimeSnapshotExpectation, walletConsoleApiWalletGetRouteDefinitionV1, walletConsoleApiWalletListRouteDefinitionV1, walletConsoleApiWalletSearchRouteDefinitionV1, walletConsoleRelayRouteDefinitionsV1, walletConsoleSignedDelegateRouteDefinitionV1, walletConsoleSponsoredEvmCallRouteDefinitionV1 };
44
+ export { CLOUDFLARE_ROUTER_ED25519_YAO_SOURCE_PRESERVING_EXECUTE_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_DEACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_RESERVE_INACTIVE_SOURCE_PRESERVING_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_DEACTIVATE_RESERVATION_PATH_V1, CloudflareD1AuthorizationStore, CloudflareD1RouterAbNormalSigningAdmissionStore, CloudflareD1VaultProxyStore, CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, CloudflareD1WebAuthnAuthService, CloudflareD1WebAuthnStore, CloudflareDurableObjectVersionedJsonRecordStore, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, CloudflareVersionedJsonRecordStoreError, DEFAULT_WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_V1, DEFAULT_WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_V1, InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAdapter, InMemoryRouterAbEd25519YaoRegistrationService, InMemoryRouterAbNormalSigningAdmissionStore, ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, RouterAbEd25519YaoHttpRegistrationBackend, StaticCloudflareTenantStorageRouteResolver, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, WALLET_CONSOLE_API_WALLET_DETAIL_PREFIX_V1, WALLET_CONSOLE_OPS_BASE_PATH_V1, WALLET_CONSOLE_OP_PATHS_V1, WALLET_CONSOLE_SERVICE_ORIGIN_V1, WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_ID_V1, WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_ID_V1, WALLET_CONTROL_AUTH_MARKER_V1, WALLET_CONTROL_BASE_PATH_V1, WALLET_CONTROL_SERVICE_ORIGIN_V1, WALLET_RUNTIME_OPS_BASE_PATH_V1, WALLET_RUNTIME_OP_PATHS_V1, WALLET_RUNTIME_SERVICE_ORIGIN_V1, buildRouterAbEd25519YaoProductAdmissionRequestV1, coerceRouterLogger, createCloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1VersionedJsonRecordStore, createCloudflareDurableObjectVersionedJsonRecordStore, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createCloudflareRouter, createCloudflareTenantStorageRoute, createCloudflareWalletGatewayRouterV1, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterApiRuntimeSnapshotConsumer, createRouterAbEd25519YaoCeremonyStateStoreV1, createRouterAbEd25519YaoHttpRegistrationBackendFromEnv, createRouterAbEd25519YaoProductRegistrationCompositionFromPortsV1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1, createRouterAbEd25519YaoProductRegistrationRuntimeV1, createRouterAbEd25519YaoProductRegistrationStateV1, createRouterAbEd25519YaoRegistrationModule, createRouterAbNormalSigningAdmissionAdapter, createRouterApiModule, createSelfHostedCloudflareSigningRouter, createSelfHostedCloudflareSigningWorker, createSignerD1DoStorageTarget, createStaticCloudflareTenantStorageRouteResolver, createStaticCloudflareTenantStorageRouteResolverFromBindings, createStaticWalletConsoleBindingV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createWalletConsoleOpsClient, createWalletConsoleRelayProxyExtensionV1, createWalletControlClientBindings, createWalletRuntimeOpsHandler, decodeWalletConsoleTenantRootActiveLineageRequestV1, decodeWalletConsoleTenantRootActiveLineageResponseV1, defineRoute, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, extractBearerCredential, extractRouterApiEnvironmentId, getRouterApiRouteExtensionRoutes, handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1, handleStaticWalletConsoleRequestV1, handleWalletControlRequest, matchesRouteDefinitionRequest, mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, parseRouterAbPublicKeysetV2, parseStaticWalletConsoleBindingConfigV1, parseWalletRegistrationContextResponse, parseWalletRuntimeExecuteSignedDelegateRequest, parseWalletRuntimeExecuteSignedDelegateResponse, parseWalletRuntimeExecuteSignedDelegateResult, parseWalletRuntimeRelayerAccount, parseWalletRuntimeWalletIdentitiesResult, parseWalletRuntimeWalletIdentityRequest, partitionRouterAbEd25519YaoProductRegistrationStateV1, randomTenantRootCreationGrantBytesV1, readEnvironmentCsv, readEnvironmentString, requireEnvironmentString, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1, resolveRuntimeTenantRootLineage, resolveSourceIpFromFetchHeaders, runRouterAbEd25519YaoProductRegistrationRequestScopedV1, runRouterAbEd25519YaoRegistrationSideEffectV1, runRouterAbEd25519YaoRegistrationTwoPhaseV1, runRouterAbPrewarmScheduledV1, signTenantRootCreationGrantV1, tenantRootIdentityDigestB64uV1, validateRuntimeSnapshotExpectation, walletConsoleApiWalletGetRouteDefinitionV1, walletConsoleApiWalletListRouteDefinitionV1, walletConsoleApiWalletSearchRouteDefinitionV1, walletConsoleRelayRouteDefinitionsV1, walletConsoleSignedDelegateRouteDefinitionV1, walletConsoleSponsoredEvmCallRouteDefinitionV1 };