@seams/wallet 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/.build-inputs.sha256 +1 -1
  2. package/dist/esm/SeamsWeb/SeamsWeb.js +1 -0
  3. package/dist/esm/SeamsWeb/operations/registration/registration.js +170 -33
  4. package/dist/esm/SeamsWeb/operations/registration/registrationTiming.js +33 -2
  5. package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +3 -0
  6. package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +63 -10
  7. package/dist/esm/core/rpcClients/relayer/walletRegistration.js +88 -4
  8. package/dist/esm/core/signingEngine/session/passkey/prfCache.js +24 -4
  9. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +5 -3
  10. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +40 -3
  11. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +31 -35
  12. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +64 -10
  13. package/dist/esm/core/signingEngine/walletCustody/ceremonyDriver.js +1 -1
  14. package/dist/esm/react/SeamsWeb/SeamsWeb.js +1 -0
  15. package/dist/esm/react/SeamsWeb/operations/registration/registration.js +170 -33
  16. package/dist/esm/react/SeamsWeb/operations/registration/registrationTiming.js +33 -2
  17. package/dist/esm/react/SeamsWeb/signingSurface/BrowserSigningSurface.js +3 -0
  18. package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +63 -10
  19. package/dist/esm/react/core/rpcClients/relayer/walletRegistration.js +88 -4
  20. package/dist/esm/react/core/signingEngine/session/passkey/prfCache.js +24 -4
  21. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +5 -3
  22. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +40 -3
  23. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +31 -35
  24. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +64 -10
  25. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyDriver.js +1 -1
  26. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519Yao.js +13 -1
  27. package/dist/esm/sdk/{adapters-Dgy69gf0.js → adapters-LgE4nnos.js} +95 -45
  28. package/dist/esm/sdk/{defaultConfigs-DJCLCrg9.js → defaultConfigs-CyNOW4Sy.js} +1 -1
  29. package/dist/{public/sdk/ecdsaCapabilityManifest-DA_fklIs.js → esm/sdk/ecdsaCapabilityManifest-C8itxV9S.js} +1 -1
  30. package/dist/{public/sdk/ecdsaPresignLifecycle-D_KCktCj.js → esm/sdk/ecdsaPresignLifecycle-CnSnzoRJ.js} +13 -1
  31. package/dist/esm/sdk/{ed25519SeedMaterial-0VmS6K9P.js → ed25519SeedMaterial-Cghz8-XB.js} +2 -2
  32. package/dist/esm/sdk/{exactSessionState-C2aAv_ED.js → exactSessionState-Bt0HforB.js} +64 -11
  33. package/dist/esm/sdk/{export-viewer-host-NhjFdpm-.js → export-viewer-host-B3K81QGA.js} +1 -1
  34. package/dist/esm/sdk/{host-DACTruOj.js → host-Y_xmIzPO.js} +2 -2
  35. package/dist/esm/sdk/{localOnly-DTNq69fJ.js → localOnly-B5TYHJiq.js} +2 -2
  36. package/dist/{public/sdk/nearEd25519YaoMaterialActivation-4AuGG2DG.js → esm/sdk/nearEd25519YaoMaterialActivation-BLxVE6E5.js} +89 -5
  37. package/dist/esm/sdk/{nearEd25519YaoSigningPreparation-jiGcQylO.js → nearEd25519YaoSigningPreparation-DX6xG-IW.js} +1 -1
  38. package/dist/esm/sdk/{prfCache-Dwwauj4v.js → prfCache-CgAr-VEU.js} +24 -4
  39. package/dist/{public/sdk/recovery-entrypoint-CFTX6PFZ.js → esm/sdk/recovery-entrypoint-D39R1avB.js} +3 -3
  40. package/dist/{public/sdk/registration-CuP1WmQu.js → esm/sdk/registration-BtPLgKHk.js} +1 -1
  41. package/dist/esm/sdk/{registration-D8nYJKec.js → registration-D-istkMZ.js} +253 -38
  42. package/dist/esm/sdk/{registrationPreparationPreload-DDe0sbZi.js → registrationPreparationPreload-CvnlDCVn.js} +2 -2
  43. package/dist/{public/sdk/router-DeX_cJ2f.js → esm/sdk/router-CeFS9SgT.js} +3 -3
  44. package/dist/{public/sdk/routerAbNormalSigning-BGpRKRAj.js → esm/sdk/routerAbNormalSigning-DktZKnf1.js} +1 -1
  45. package/dist/{public/sdk/runtime-auth-Ch00YcH5.js → esm/sdk/runtime-auth-B7z1ANNp.js} +8 -8
  46. package/dist/esm/sdk/{runtime-device-link-CEhVZYAw.js → runtime-device-link-B8HGDakg.js} +4 -4
  47. package/dist/esm/sdk/{runtime-ecdsa-tempo-B-qMRrmx.js → runtime-ecdsa-tempo-DKdS5-us.js} +5 -5
  48. package/dist/{public/sdk/runtime-email-otp-giyMPib8.js → esm/sdk/runtime-email-otp-D5bxhdyG.js} +4 -4
  49. package/dist/{public/sdk/runtime-export-CV-6G1Oy.js → esm/sdk/runtime-export--hvNrx8l.js} +4 -4
  50. package/dist/{public/sdk/runtime-near-DoDcS88O.js → esm/sdk/runtime-near-CEexHoug.js} +4 -4
  51. package/dist/{public/sdk/runtime-preferences-Canyenle.js → esm/sdk/runtime-preferences-BiqPp1lV.js} +4 -4
  52. package/dist/esm/sdk/{runtime-recovery-lWyILD1g.js → runtime-recovery-BYu1gDq_.js} +4 -4
  53. package/dist/esm/sdk/{runtimeContext-BdTaYxJD.js → runtimeContext-CH97jPZ0.js} +80 -37
  54. package/dist/{public/sdk/runtimeLoader-Dxn8UA8B.js → esm/sdk/runtimeLoader-BFAmJAbu.js} +9 -9
  55. package/dist/esm/sdk/{secp256k1-CQFsI3qQ.js → secp256k1-Cr1jBW1n.js} +3 -3
  56. package/dist/esm/sdk/{signEvmFamily-CZLET02E.js → signEvmFamily-Dxk4sBPY.js} +7 -7
  57. package/dist/esm/sdk/{signNear-BeUWiWm_.js → signNear-B0OCVKoH.js} +6 -6
  58. package/dist/esm/sdk/{signerLoader-C_w8vuhm.js → signerLoader-D0WU1jq_.js} +1 -1
  59. package/dist/{public/sdk/transactionState-Dd13hMoY.js → esm/sdk/transactionState-Bpm4GamO.js} +2 -2
  60. package/dist/esm/sdk/tx-confirm-ui.js +134 -93
  61. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  62. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  63. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  64. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  65. package/dist/esm/sdk/wallet-ui.css +85 -31
  66. package/dist/{public/sdk/walletRecoveryCommit-DNvzgeIX.js → esm/sdk/walletRecoveryCommit-G6w6N5RV.js} +3 -3
  67. package/dist/esm/sdk/{warmSessionHydration-CCKeEIIy.js → warmSessionHydration-DDNYdTCz.js} +1 -1
  68. package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +13 -1
  69. package/dist/public/headers.manifest.json +1 -1
  70. package/dist/public/sdk/{adapters-Dgy69gf0.js → adapters-LgE4nnos.js} +95 -45
  71. package/dist/public/sdk/{defaultConfigs-DJCLCrg9.js → defaultConfigs-CyNOW4Sy.js} +1 -1
  72. package/dist/{esm/sdk/ecdsaCapabilityManifest-DA_fklIs.js → public/sdk/ecdsaCapabilityManifest-C8itxV9S.js} +1 -1
  73. package/dist/{esm/sdk/ecdsaPresignLifecycle-D_KCktCj.js → public/sdk/ecdsaPresignLifecycle-CnSnzoRJ.js} +13 -1
  74. package/dist/public/sdk/{ed25519SeedMaterial-0VmS6K9P.js → ed25519SeedMaterial-Cghz8-XB.js} +2 -2
  75. package/dist/public/sdk/{exactSessionState-C2aAv_ED.js → exactSessionState-Bt0HforB.js} +64 -11
  76. package/dist/public/sdk/{export-viewer-host-NhjFdpm-.js → export-viewer-host-B3K81QGA.js} +1 -1
  77. package/dist/public/sdk/{host-DACTruOj.js → host-Y_xmIzPO.js} +2 -2
  78. package/dist/public/sdk/{localOnly-DTNq69fJ.js → localOnly-B5TYHJiq.js} +2 -2
  79. package/dist/{esm/sdk/nearEd25519YaoMaterialActivation-4AuGG2DG.js → public/sdk/nearEd25519YaoMaterialActivation-BLxVE6E5.js} +89 -5
  80. package/dist/public/sdk/{nearEd25519YaoSigningPreparation-jiGcQylO.js → nearEd25519YaoSigningPreparation-DX6xG-IW.js} +1 -1
  81. package/dist/public/sdk/{prfCache-Dwwauj4v.js → prfCache-CgAr-VEU.js} +24 -4
  82. package/dist/{esm/sdk/recovery-entrypoint-CFTX6PFZ.js → public/sdk/recovery-entrypoint-D39R1avB.js} +3 -3
  83. package/dist/{esm/sdk/registration-CuP1WmQu.js → public/sdk/registration-BtPLgKHk.js} +1 -1
  84. package/dist/public/sdk/{registration-D8nYJKec.js → registration-D-istkMZ.js} +253 -38
  85. package/dist/public/sdk/{registrationPreparationPreload-DDe0sbZi.js → registrationPreparationPreload-CvnlDCVn.js} +2 -2
  86. package/dist/{esm/sdk/router-DeX_cJ2f.js → public/sdk/router-CeFS9SgT.js} +3 -3
  87. package/dist/{esm/sdk/routerAbNormalSigning-BGpRKRAj.js → public/sdk/routerAbNormalSigning-DktZKnf1.js} +1 -1
  88. package/dist/{esm/sdk/runtime-auth-Ch00YcH5.js → public/sdk/runtime-auth-B7z1ANNp.js} +8 -8
  89. package/dist/public/sdk/{runtime-device-link-CEhVZYAw.js → runtime-device-link-B8HGDakg.js} +4 -4
  90. package/dist/public/sdk/{runtime-ecdsa-tempo-B-qMRrmx.js → runtime-ecdsa-tempo-DKdS5-us.js} +5 -5
  91. package/dist/{esm/sdk/runtime-email-otp-giyMPib8.js → public/sdk/runtime-email-otp-D5bxhdyG.js} +4 -4
  92. package/dist/{esm/sdk/runtime-export-CV-6G1Oy.js → public/sdk/runtime-export--hvNrx8l.js} +4 -4
  93. package/dist/{esm/sdk/runtime-near-DoDcS88O.js → public/sdk/runtime-near-CEexHoug.js} +4 -4
  94. package/dist/{esm/sdk/runtime-preferences-Canyenle.js → public/sdk/runtime-preferences-BiqPp1lV.js} +4 -4
  95. package/dist/public/sdk/{runtime-recovery-lWyILD1g.js → runtime-recovery-BYu1gDq_.js} +4 -4
  96. package/dist/public/sdk/{runtimeContext-BdTaYxJD.js → runtimeContext-CH97jPZ0.js} +80 -37
  97. package/dist/{esm/sdk/runtimeLoader-Dxn8UA8B.js → public/sdk/runtimeLoader-BFAmJAbu.js} +9 -9
  98. package/dist/public/sdk/{secp256k1-CQFsI3qQ.js → secp256k1-Cr1jBW1n.js} +3 -3
  99. package/dist/public/sdk/{signEvmFamily-CZLET02E.js → signEvmFamily-Dxk4sBPY.js} +7 -7
  100. package/dist/public/sdk/{signNear-BeUWiWm_.js → signNear-B0OCVKoH.js} +6 -6
  101. package/dist/public/sdk/{signerLoader-C_w8vuhm.js → signerLoader-D0WU1jq_.js} +1 -1
  102. package/dist/{esm/sdk/transactionState-Dd13hMoY.js → public/sdk/transactionState-Bpm4GamO.js} +2 -2
  103. package/dist/public/sdk/tx-confirm-ui.js +134 -93
  104. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  105. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  106. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  107. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  108. package/dist/public/sdk/wallet-ui.css +85 -31
  109. package/dist/{esm/sdk/walletRecoveryCommit-DNvzgeIX.js → public/sdk/walletRecoveryCommit-G6w6N5RV.js} +3 -3
  110. package/dist/public/sdk/{warmSessionHydration-CCKeEIIy.js → warmSessionHydration-DDNYdTCz.js} +1 -1
  111. package/dist/public/sdk/workers/passkey-mpc-session.worker.js +92 -8
  112. package/dist/public/wallet-assets.manifest.json +74 -74
  113. package/dist/public/wallet-service/index.html +4 -4
  114. package/dist/types/wallet/src/SeamsWeb/operations/registration/registration.d.ts +15 -0
  115. package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationTiming.d.ts +11 -1
  116. package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +6 -0
  117. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +8 -2
  118. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +49 -10
  119. package/dist/types/wallet/src/core/signingEngine/session/passkey/prfCache.d.ts +7 -9
  120. package/dist/types/wallet/src/core/signingEngine/session/passkey/warmSessionHydration.d.ts +7 -8
  121. package/dist/types/wallet/src/core/signingEngine/session/passkey/warmSessionMaterialWriter.d.ts +9 -9
  122. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/public.d.ts +7 -8
  123. package/dist/types/wallet/src/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.d.ts +3 -0
  124. package/dist/types/wallet/src/core/signingEngine/uiConfirm/uiConfirm.types.d.ts +6 -0
  125. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/shamir3pass/clientSealPreparation.d.ts +2 -0
  126. package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +15 -1
  127. package/dist/workers/passkey-mpc-session.worker.js +92 -8
  128. package/package.json +1 -1
@@ -29,6 +29,7 @@ const ROUTE_PAYLOAD_BREAKDOWN_MAX_DEPTH = 2;
29
29
  const ROUTE_PAYLOAD_BREAKDOWN_MAX_FIELDS = 64;
30
30
  const WALLET_REGISTRATION_SETUP_PATH = "/wallets/register/setup";
31
31
  const WALLET_REGISTRATION_RESPOND_PATH = "/wallets/register/respond";
32
+ const WALLET_REGISTRATION_NEAR_ADMISSION_PATH = "/wallets/register/near-admission";
32
33
  const WALLET_REGISTRATION_ACTIVATE_PATH = "/wallets/register/activate";
33
34
  const WALLET_REGISTRATION_NEAR_PROVISIONING_PATH = "/wallets/register/near-provisioning";
34
35
  /** Managed environment id header for Router API `api_credentials` auth. */
@@ -1731,6 +1732,47 @@ async function respondWalletRegistration(args) {
1731
1732
  onServerTiming: args.onServerTiming
1732
1733
  }));
1733
1734
  }
1735
+ async function authorizeWalletRegistrationNearAdmission(args) {
1736
+ const body = {
1737
+ registrationCeremonyId: args.registrationCeremonyId,
1738
+ signedSetup: args.signedSetup
1739
+ };
1740
+ switch (args.kind) {
1741
+ case "passkey":
1742
+ body.webauthn_registration = args.webauthnRegistration;
1743
+ break;
1744
+ case "email_otp":
1745
+ body.emailOtpRegistrationProof = args.emailOtpRegistrationProof;
1746
+ break;
1747
+ }
1748
+ const response = await postJson({
1749
+ relayerUrl: args.relayerUrl,
1750
+ path: WALLET_REGISTRATION_NEAR_ADMISSION_PATH,
1751
+ headers: args.headers,
1752
+ body
1753
+ });
1754
+ const responseName = "Wallet registration NEAR admission";
1755
+ const record = requireWalletRegistrationResponseObject({
1756
+ responseName,
1757
+ field: "body",
1758
+ value: response
1759
+ });
1760
+ assertWalletRegistrationResponseKeys(record, [
1761
+ "ok",
1762
+ "registrationCeremonyId",
1763
+ "ed25519"
1764
+ ], responseName);
1765
+ if (readWalletRegistrationResponseField(record, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
1766
+ return {
1767
+ ok: true,
1768
+ registrationCeremonyId: requireResponseString({
1769
+ responseName,
1770
+ field: "registrationCeremonyId",
1771
+ value: readWalletRegistrationResponseField(record, "registrationCeremonyId", responseName)
1772
+ }),
1773
+ ed25519: parseWalletRegistrationRespondEd25519DeferredWork(readWalletRegistrationResponseField(record, "ed25519", responseName))
1774
+ };
1775
+ }
1734
1776
  function parseRegistrationEstablishedSessionResult(value, expectedWalletId) {
1735
1777
  const responseName = "Wallet registration established session";
1736
1778
  const parsed = parseRegistrationEstablishedSessionResultV2(value);
@@ -1938,6 +1980,31 @@ async function activateWalletRegistration(args) {
1938
1980
  onServerTiming: args.onServerTiming
1939
1981
  }));
1940
1982
  }
1983
+ function parseWalletRegistrationSessionSealResponse(value) {
1984
+ const responseName = "Wallet registration session seal";
1985
+ const record = requireWalletRegistrationResponseObject({
1986
+ responseName,
1987
+ field: "body",
1988
+ value
1989
+ });
1990
+ assertWalletRegistrationResponseKeys(record, [
1991
+ "ciphertext",
1992
+ "keyVersion",
1993
+ "expiresAtMs",
1994
+ "remainingUses"
1995
+ ], responseName);
1996
+ const ciphertext = readWalletRegistrationResponseField(record, "ciphertext", responseName);
1997
+ const keyVersion = readWalletRegistrationResponseField(record, "keyVersion", responseName);
1998
+ const expiresAtMs = readWalletRegistrationResponseField(record, "expiresAtMs", responseName);
1999
+ const remainingUses = readWalletRegistrationResponseField(record, "remainingUses", responseName);
2000
+ if (typeof ciphertext !== "string" || !ciphertext.trim() || typeof keyVersion !== "string" || !keyVersion.trim() || typeof expiresAtMs !== "number" || !Number.isSafeInteger(expiresAtMs) || expiresAtMs <= 0 || typeof remainingUses !== "number" || !Number.isSafeInteger(remainingUses) || remainingUses < 0) throw new Error(`${responseName} is invalid`);
2001
+ return {
2002
+ ciphertext,
2003
+ keyVersion,
2004
+ expiresAtMs,
2005
+ remainingUses
2006
+ };
2007
+ }
1941
2008
  function parseWalletRegistrationNearProvisioningResponseV2(value) {
1942
2009
  const responseName = "Wallet registration NEAR provisioning";
1943
2010
  const record = requireWalletRegistrationResponseObject({
@@ -1994,7 +2061,8 @@ function parseWalletRegistrationNearProvisioningResponseV2(value) {
1994
2061
  "ed25519",
1995
2062
  "authorityScope",
1996
2063
  "nearProvisioning",
1997
- "registrationEstablishedSession"
2064
+ "registrationEstablishedSession",
2065
+ "sessionSeal"
1998
2066
  ], responseName);
1999
2067
  const provisioning = requireWalletRegistrationResponseObject({
2000
2068
  responseName,
@@ -2008,10 +2076,25 @@ function parseWalletRegistrationNearProvisioningResponseV2(value) {
2008
2076
  expectedKind: "near_ed25519"
2009
2077
  });
2010
2078
  if (!finalized.ok || finalized.kind !== "near_ed25519") throw new Error(`${responseName} did not return a finalized Ed25519 wallet`);
2011
- return {
2079
+ const sessionSeal = readOptionalWalletRegistrationResponseField(record, "sessionSeal", responseName);
2080
+ const registrationEstablishedSession = parseRegistrationEstablishedSessionResult(readWalletRegistrationResponseField(record, "registrationEstablishedSession", responseName), finalized.walletId);
2081
+ if (isEmailOtpWalletRegistrationFinalizeResponse(finalized)) {
2082
+ if (sessionSeal !== void 0) throw new Error(`${responseName} returned a session seal for an Email OTP authority`);
2083
+ return {
2084
+ ...finalized,
2085
+ nearProvisioning: { status: "near_ready" },
2086
+ registrationEstablishedSession
2087
+ };
2088
+ }
2089
+ const success = {
2012
2090
  ...finalized,
2013
2091
  nearProvisioning: { status: "near_ready" },
2014
- registrationEstablishedSession: parseRegistrationEstablishedSessionResult(readWalletRegistrationResponseField(record, "registrationEstablishedSession", responseName), finalized.walletId)
2092
+ registrationEstablishedSession
2093
+ };
2094
+ if (sessionSeal === void 0) return success;
2095
+ return {
2096
+ ...success,
2097
+ sessionSeal: parseWalletRegistrationSessionSealResponse(sessionSeal)
2015
2098
  };
2016
2099
  }
2017
2100
  async function completeWalletRegistrationNearProvisioning(args) {
@@ -2023,6 +2106,7 @@ async function completeWalletRegistrationNearProvisioning(args) {
2023
2106
  };
2024
2107
  if (args.auth.kind === "email_otp") body.emailOtpEnrollment = args.auth.enrollment;
2025
2108
  if (args.walletCustodyCommit) body.walletCustodyCommit = args.walletCustodyCommit;
2109
+ if (args.sessionSeal) body.sessionSeal = args.sessionSeal;
2026
2110
  return parseWalletRegistrationNearProvisioningResponseV2(await postJson({
2027
2111
  relayerUrl: args.relayerUrl,
2028
2112
  path: WALLET_REGISTRATION_NEAR_PROVISIONING_PATH,
@@ -2278,6 +2362,6 @@ async function fetchWalletEcdsaKeyFactsInventoryWithWebAuthn(args) {
2278
2362
  });
2279
2363
  }
2280
2364
  //#endregion
2281
- export { activateWalletAddSignerEcdsa, activateWalletRegistration, completeWalletRegistrationNearProvisioning, createWalletAddAuthMethodIntent, createWalletAddSignerIntent, fetchWalletEcdsaKeyFactsInventoryWithOperationCredential, fetchWalletEcdsaKeyFactsInventoryWithWebAuthn, finalizeWalletAddAuthMethod, finalizeWalletAddSigner, fundImplicitNearAccountForTesting, isEmailOtpWalletRegistrationFinalizeResponse, parseWalletRegistrationEcdsaDerivationRespond, requestAddAuthMethodEmailOtpChallenge, respondWalletAddSignerEcdsa, respondWalletRegistration, revokeWalletAuthMethod, setupWalletRegistration, startWalletAddAuthMethod, startWalletAddSigner };
2365
+ export { activateWalletAddSignerEcdsa, activateWalletRegistration, authorizeWalletRegistrationNearAdmission, completeWalletRegistrationNearProvisioning, createWalletAddAuthMethodIntent, createWalletAddSignerIntent, fetchWalletEcdsaKeyFactsInventoryWithOperationCredential, fetchWalletEcdsaKeyFactsInventoryWithWebAuthn, finalizeWalletAddAuthMethod, finalizeWalletAddSigner, fundImplicitNearAccountForTesting, isEmailOtpWalletRegistrationFinalizeResponse, parseWalletRegistrationEcdsaDerivationRespond, requestAddAuthMethodEmailOtpChallenge, respondWalletAddSignerEcdsa, respondWalletRegistration, revokeWalletAuthMethod, setupWalletRegistration, startWalletAddAuthMethod, startWalletAddSigner };
2282
2366
 
2283
2367
  //# sourceMappingURL=walletRegistration.js.map
@@ -15,23 +15,43 @@ function normalizeSigningSessionCacheEntry(args) {
15
15
  if (!thresholdSessionId || !prfFirstB64u) throw new Error("Missing thresholdSessionId or prfFirstB64u for signing session hydration");
16
16
  if (!Number.isFinite(expiresAtMsRaw) || expiresAtMsRaw <= 0) throw new Error("Invalid expiresAtMs for signing session hydration");
17
17
  if (remainingUses == null) throw new Error("Invalid remainingUses for signing session hydration");
18
- return {
18
+ const normalized = {
19
19
  thresholdSessionId,
20
20
  prfFirstB64u,
21
21
  expiresAtMs: Math.floor(expiresAtMsRaw),
22
22
  remainingUses,
23
+ ...args.diagnostics ? { diagnostics: args.diagnostics } : {}
24
+ };
25
+ if (args.preparedServerSeal) return {
26
+ ...normalized,
27
+ transport: args.transport,
28
+ preparedServerSeal: args.preparedServerSeal
29
+ };
30
+ return {
31
+ ...normalized,
23
32
  ...args.transport ? { transport: args.transport } : {}
24
33
  };
25
34
  }
26
35
  async function cacheCredentialBoundarySetupExportPrfFirst(writer, args) {
27
36
  const normalized = normalizeSigningSessionCacheEntry(args);
28
- await writer.putWarmSessionMaterial({
37
+ const material = {
29
38
  thresholdSessionId: normalized.thresholdSessionId,
30
39
  prfFirstB64u: normalized.prfFirstB64u,
31
40
  expiresAtMs: normalized.expiresAtMs,
32
41
  remainingUses: normalized.remainingUses,
33
- ...args.transport ? { transport: args.transport } : {},
34
- ...args.diagnostics ? { diagnostics: args.diagnostics } : {}
42
+ ...normalized.diagnostics ? { diagnostics: normalized.diagnostics } : {}
43
+ };
44
+ if (normalized.preparedServerSeal) {
45
+ await writer.putWarmSessionMaterial({
46
+ ...material,
47
+ transport: normalized.transport,
48
+ preparedServerSeal: normalized.preparedServerSeal
49
+ });
50
+ return;
51
+ }
52
+ await writer.putWarmSessionMaterial({
53
+ ...material,
54
+ ...normalized.transport ? { transport: normalized.transport } : {}
35
55
  });
36
56
  }
37
57
  //#endregion
@@ -230,7 +230,8 @@ var PasskeyMpcSessionDurableState = class {
230
230
  metadata,
231
231
  purpose,
232
232
  relayerUrl,
233
- diagnostics: args.diagnostics
233
+ diagnostics: args.diagnostics,
234
+ completedSeal: args.completedSeal
234
235
  });
235
236
  else persistTask = this.persistExactRecord({
236
237
  thresholdSessionId,
@@ -238,7 +239,8 @@ var PasskeyMpcSessionDurableState = class {
238
239
  metadata,
239
240
  purpose,
240
241
  relayerUrl,
241
- diagnostics: args.diagnostics
242
+ diagnostics: args.diagnostics,
243
+ completedSeal: args.completedSeal
242
244
  });
243
245
  const task = persistTask.finally(() => {
244
246
  signingSessionSealPersistSingleFlight.delete(singleFlightKey);
@@ -379,7 +381,7 @@ var PasskeyMpcSessionDurableState = class {
379
381
  };
380
382
  const groupId = SIGNING_SESSION_SEAL_GROUP_ID;
381
383
  const sealStartedAt = performance.now();
382
- const sealed = await this.deps.sealAndPersistWarmSessionMaterial({
384
+ const sealed = args.completedSeal ?? await this.deps.sealAndPersistWarmSessionMaterial({
383
385
  thresholdSessionId: args.thresholdSessionId,
384
386
  transport: normalizedPasskeyTransport(args.transport, groupId)
385
387
  });
@@ -237,7 +237,8 @@ var PasskeyMpcSessionManagerImpl = class {
237
237
  this.boundHandleWorkerMessage = this.handleWorkerMessage.bind(this);
238
238
  this.boundHandleWorkerError = this.handleWorkerError.bind(this);
239
239
  this.putWarmSessionMaterial = async (args) => {
240
- const { diagnostics, ...workerPayload } = args;
240
+ const { diagnostics, preparedServerSeal, ...workerPayload } = args;
241
+ if (preparedServerSeal && !args.transport) throw new Error("Prepared server seal requires exact persistence transport");
241
242
  const workerReadyStartedAt = performance.now();
242
243
  await this.ensureWorkerReady();
243
244
  recordDiagnosticDuration({
@@ -260,11 +261,38 @@ var PasskeyMpcSessionManagerImpl = class {
260
261
  bucket: "worker_put",
261
262
  startedAt: workerPutStartedAt
262
263
  });
264
+ let completedSeal;
265
+ if (preparedServerSeal && args.transport) {
266
+ const completed = await this.sendMessage({
267
+ type: "COMPLETE_SESSION_CLIENT_SEAL",
268
+ id: this.generateMessageId(),
269
+ payload: {
270
+ preparationId: preparedServerSeal.preparationId,
271
+ thresholdSessionId: args.thresholdSessionId,
272
+ transport: requirePasskeySealTransport(args.transport),
273
+ serverSeal: {
274
+ ok: true,
275
+ ciphertext: preparedServerSeal.ciphertext,
276
+ keyVersion: preparedServerSeal.keyVersion,
277
+ expiresAtMs: preparedServerSeal.expiresAtMs,
278
+ remainingUses: preparedServerSeal.remainingUses
279
+ }
280
+ }
281
+ });
282
+ const parsed = completed.success ? parseWarmSessionSealAndPersistResult(completed.data) : null;
283
+ if (!parsed) {
284
+ const message = completed.success ? "Prepared signing-session seal returned an invalid response" : completed.error || "Prepared signing-session seal failed";
285
+ throw new Error(message);
286
+ }
287
+ if (!parsed.ok) throw new Error(`Prepared signing-session seal failed (${parsed.code}): ${parsed.message}`);
288
+ completedSeal = parsed;
289
+ }
263
290
  const persistStartedAt = performance.now();
264
- const persisted = args.transport ? await this.persistSigningSessionSealForThresholdSession({
291
+ const persisted = args.transport ? await this.durableState.persistSigningSessionSealForThresholdSession({
265
292
  thresholdSessionId: args.thresholdSessionId,
266
293
  transport: requirePasskeySealTransport(args.transport),
267
- ...diagnostics ? { diagnostics } : {}
294
+ ...diagnostics ? { diagnostics } : {},
295
+ ...completedSeal ? { completedSeal } : {}
268
296
  }) : null;
269
297
  recordDiagnosticDuration({
270
298
  diagnostics,
@@ -488,6 +516,15 @@ var PasskeyMpcSessionManagerImpl = class {
488
516
  });
489
517
  if (!response.success) throw new Error(response.error || "Client seal cleanup failed");
490
518
  }
519
+ async readPreparedSigningSessionHydration(input) {
520
+ const response = await this.sendMessage({
521
+ type: "READ_SESSION_CLIENT_SEAL",
522
+ id: this.generateMessageId(),
523
+ payload: input
524
+ });
525
+ if (!response.success || !isObjectRecord(response.data) || response.data.ok !== true || typeof response.data.ciphertext !== "string" || !response.data.ciphertext.trim()) throw new Error(response.success ? "Prepared client seal is invalid" : response.error || "Client seal read failed");
526
+ return { ciphertext: response.data.ciphertext };
527
+ }
491
528
  async restorePasskeyEcdsaRecord(args) {
492
529
  const thresholdSessionId = args.purpose.thresholdSessionId;
493
530
  const chainTarget = args.purpose.chainTarget;
@@ -30,12 +30,16 @@ var TransactionReceipt = class extends Component {
30
30
  if (receipt.view === "toast") return /* @__PURE__ */ jsxs("div", {
31
31
  class: "seams-transaction-toast",
32
32
  "data-completed-stages": completedStages,
33
+ "data-stage": receipt.state.kind,
33
34
  "data-pending": pending,
34
35
  children: [
35
36
  /* @__PURE__ */ jsx("div", {
36
37
  class: "seams-toast-progress",
37
38
  "aria-hidden": "true",
38
- children: /* @__PURE__ */ jsx("span", {})
39
+ children: /* @__PURE__ */ jsx("span", {
40
+ class: "seams-toast-progress-fill",
41
+ children: pending && /* @__PURE__ */ jsx("span", { class: "seams-toast-progress-active" })
42
+ })
39
43
  }),
40
44
  /* @__PURE__ */ jsx("span", {
41
45
  class: "seams-receipt-symbol",
@@ -62,17 +66,12 @@ var TransactionReceipt = class extends Component {
62
66
  children: [
63
67
  /* @__PURE__ */ jsxs("div", {
64
68
  class: "seams-review-toolbar",
65
- children: [/* @__PURE__ */ jsx("span", { children: "Transaction receipt" }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("button", {
69
+ children: [/* @__PURE__ */ jsx("span", { children: "Transaction receipt" }), /* @__PURE__ */ jsx("button", {
66
70
  type: "button",
67
71
  "aria-label": "Minimize transaction",
68
72
  onClick: this.minimize,
69
73
  children: /* @__PURE__ */ jsx(ReviewIcon, { kind: "minimize" })
70
- }), /* @__PURE__ */ jsx("button", {
71
- type: "button",
72
- "aria-label": receiptIsPending(receipt.state) ? "Minimize transaction" : "Close receipt",
73
- onClick: this.close,
74
- children: /* @__PURE__ */ jsx(ReviewIcon, { kind: "close" })
75
- })] })]
74
+ })]
76
75
  }),
77
76
  /* @__PURE__ */ jsxs("div", {
78
77
  class: "seams-receipt-heading",
@@ -132,33 +131,30 @@ var TransactionReceipt = class extends Component {
132
131
  })
133
132
  ]
134
133
  }),
135
- /* @__PURE__ */ jsx("div", {
136
- class: "seams-receipt-box",
137
- children: /* @__PURE__ */ jsx(ReviewDisclosure, {
138
- label: "Receipt details",
139
- children: /* @__PURE__ */ jsxs("dl", {
140
- class: "seams-review-fields",
141
- children: [
142
- data.model?.signerAccount && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", { children: "From" }), /* @__PURE__ */ jsx("dd", {
143
- class: "seams-review-recipient",
144
- children: /* @__PURE__ */ jsx(CopyReviewValue, {
145
- value: data.model.signerAccount,
146
- address: true,
147
- label: `Copy signer address ${data.model.signerAccount}`
148
- })
149
- })] }),
150
- recipient && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", { children: "To" }), /* @__PURE__ */ jsx("dd", {
151
- class: "seams-review-recipient",
152
- children: /* @__PURE__ */ jsx(CopyReviewValue, {
153
- value: recipient,
154
- address: true,
155
- label: `Copy recipient address ${recipient}`
156
- })
157
- })] }),
158
- receipt.state.hash && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", { children: "Transaction" }), /* @__PURE__ */ jsxs("dd", { children: [/* @__PURE__ */ jsx(ReviewAddress, { value: receipt.state.hash }), /* @__PURE__ */ jsx(CopyReviewValue, { value: receipt.state.hash })] })] }),
159
- /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", { children: "Status" }), /* @__PURE__ */ jsx("dd", { children: heading })] })
160
- ]
161
- })
134
+ /* @__PURE__ */ jsx(ReviewDisclosure, {
135
+ label: "Receipt details",
136
+ children: /* @__PURE__ */ jsxs("dl", {
137
+ class: "seams-review-fields",
138
+ children: [
139
+ data.model?.signerAccount && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", { children: "From" }), /* @__PURE__ */ jsx("dd", {
140
+ class: "seams-review-recipient",
141
+ children: /* @__PURE__ */ jsx(CopyReviewValue, {
142
+ value: data.model.signerAccount,
143
+ address: true,
144
+ label: `Copy signer address ${data.model.signerAccount}`
145
+ })
146
+ })] }),
147
+ recipient && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", { children: "To" }), /* @__PURE__ */ jsx("dd", {
148
+ class: "seams-review-recipient",
149
+ children: /* @__PURE__ */ jsx(CopyReviewValue, {
150
+ value: recipient,
151
+ address: true,
152
+ label: `Copy recipient address ${recipient}`
153
+ })
154
+ })] }),
155
+ receipt.state.hash && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", { children: "Transaction" }), /* @__PURE__ */ jsxs("dd", { children: [/* @__PURE__ */ jsx(ReviewAddress, { value: receipt.state.hash }), /* @__PURE__ */ jsx(CopyReviewValue, { value: receipt.state.hash })] })] }),
156
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", { children: "Status" }), /* @__PURE__ */ jsx("dd", { children: heading })] })
157
+ ]
162
158
  })
163
159
  }),
164
160
  /* @__PURE__ */ jsx("button", {
@@ -11,6 +11,27 @@ import { render } from "preact";
11
11
  import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
12
12
  //#region src/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.tsx
13
13
  /** @jsxImportSource preact */
14
+ const RECEIPT_MORPH_DURATION_MS = 360;
15
+ const RECEIPT_MORPH_EASING = "cubic-bezier(0.22, 1, 0.36, 1)";
16
+ const RECEIPT_ANCHORS = [
17
+ ".seams-receipt-symbol",
18
+ "[role=\"status\"]",
19
+ ".seams-review-amount"
20
+ ];
21
+ function captureReceiptAnchors(surface) {
22
+ const anchors = [];
23
+ for (const selector of RECEIPT_ANCHORS) {
24
+ const element = surface.querySelector(selector);
25
+ if (!element) continue;
26
+ anchors.push({
27
+ selector,
28
+ text: element.textContent,
29
+ bounds: element.getBoundingClientRect(),
30
+ fontSize: getComputedStyle(element).fontSize
31
+ });
32
+ }
33
+ return anchors;
34
+ }
14
35
  let nextSurfaceId = 0;
15
36
  var MountedConfirmationSurface = class {
16
37
  constructor(input) {
@@ -22,6 +43,7 @@ var MountedConfirmationSurface = class {
22
43
  this.receiptMotion = [];
23
44
  this.receiptShell?.remove();
24
45
  this.receiptShell = null;
46
+ this.element.removeAttribute("data-receipt-morphing");
25
47
  };
26
48
  this.dispose = () => {
27
49
  if (this.state.kind === "disposed") return;
@@ -100,6 +122,7 @@ var MountedConfirmationSurface = class {
100
122
  const viewChanged = this.receipt?.view !== model.view;
101
123
  const previousShell = this.receiptShell ?? this.element.querySelector(".modal-container-root");
102
124
  const previousBounds = previousShell?.getBoundingClientRect();
125
+ const anchors = viewChanged ? captureReceiptAnchors(this.element) : [];
103
126
  const previousRadius = previousShell ? getComputedStyle(previousShell).borderRadius : "26px";
104
127
  if (viewChanged) this.clearReceiptMotion();
105
128
  this.receipt = model;
@@ -115,6 +138,7 @@ var MountedConfirmationSurface = class {
115
138
  shell.setAttribute("aria-hidden", "true");
116
139
  this.element.appendChild(shell);
117
140
  this.receiptShell = shell;
141
+ this.element.setAttribute("data-receipt-morphing", "");
118
142
  const morph = shell.animate([{
119
143
  left: `${previousBounds.left}px`,
120
144
  top: `${previousBounds.top}px`,
@@ -128,18 +152,48 @@ var MountedConfirmationSurface = class {
128
152
  height: `${bounds.height}px`,
129
153
  borderRadius: getComputedStyle(target).borderRadius
130
154
  }], {
131
- duration: 360,
132
- easing: "cubic-bezier(0.22, 1, 0.36, 1)",
155
+ duration: RECEIPT_MORPH_DURATION_MS,
156
+ easing: RECEIPT_MORPH_EASING,
133
157
  fill: "both"
134
158
  });
135
- const reveal = target.animate([{ opacity: 0 }, { opacity: 1 }], {
136
- duration: 140,
137
- delay: 220,
138
- fill: "backwards",
139
- easing: "ease-out"
140
- });
141
- this.receiptMotion = [morph, reveal];
142
- reveal.onfinish = this.clearReceiptMotion;
159
+ this.receiptMotion = [morph];
160
+ const shared = /* @__PURE__ */ new Set();
161
+ for (const anchor of anchors) {
162
+ const element = target.querySelector(anchor.selector);
163
+ if (!element || element.textContent !== anchor.text) continue;
164
+ const destination = element.getBoundingClientRect();
165
+ shared.add(element);
166
+ const scale = parseFloat(anchor.fontSize) / parseFloat(getComputedStyle(element).fontSize);
167
+ this.receiptMotion.push(element.animate([{
168
+ transform: `translate(${anchor.bounds.left - destination.left}px, ${anchor.bounds.top - destination.top}px) scale(${scale})`,
169
+ transformOrigin: "top left"
170
+ }, {
171
+ transform: "translate(0, 0) scale(1)",
172
+ transformOrigin: "top left"
173
+ }], {
174
+ duration: RECEIPT_MORPH_DURATION_MS,
175
+ easing: RECEIPT_MORPH_EASING
176
+ }));
177
+ }
178
+ const details = target.querySelectorAll(".seams-transaction-receipt > :not(.seams-receipt-heading), .seams-receipt-heading > .seams-receipt-symbol, .seams-receipt-heading h2, .seams-receipt-heading p, .seams-transaction-toast > :not(.seams-transaction-toast-text, .seams-toast-progress), .seams-transaction-toast-text > *");
179
+ let order = 0;
180
+ for (const detail of details) {
181
+ if (shared.has(detail)) continue;
182
+ this.receiptMotion.push(detail.animate([{
183
+ opacity: 0,
184
+ transform: "translateY(8px)"
185
+ }, {
186
+ opacity: 1,
187
+ transform: "translateY(0)"
188
+ }], {
189
+ duration: 120,
190
+ delay: model.view === "toast" ? 240 : 180 + Math.min(order, 4) * 15,
191
+ fill: "backwards",
192
+ easing: "ease-out"
193
+ }));
194
+ order += 1;
195
+ }
196
+ morph.onfinish = this.clearReceiptMotion;
143
197
  }
144
198
  }
145
199
  remove() {
@@ -71,7 +71,7 @@ function isRegistrationBenchmarkDiagnosticsEnabled() {
71
71
  function recordWalletCustodyTiming(ceremonyId, stage, startedAt) {
72
72
  if (!isRegistrationBenchmarkDiagnosticsEnabled()) return;
73
73
  try {
74
- console.debug("[WalletCustody] timing " + JSON.stringify({
74
+ console.info("[WalletCustody] timing " + JSON.stringify({
75
75
  event: "wallet_custody_timing",
76
76
  ceremonyId,
77
77
  stage: `custody.${stage}`,
@@ -17,6 +17,18 @@ function sameRouterAbEd25519YaoActivationBindingV1(left, right) {
17
17
  function sameRouterAbEd25519YaoByteSequence(left, right) {
18
18
  return left.length === right.length && left.every((value, index) => value === right[index]);
19
19
  }
20
+ function sameRouterAbEd25519YaoParticipantPairV1(left, right) {
21
+ return left[0] === right[0] && left[1] === right[1];
22
+ }
23
+ function sameRouterAbEd25519YaoLifecycleScopeV1(left, right) {
24
+ return left.lifecycle_id === right.lifecycle_id && left.root_share_epoch === right.root_share_epoch && left.account_id === right.account_id && left.threshold_session_id === right.threshold_session_id && left.signer_set_id === right.signer_set_id && left.signing_worker_id === right.signing_worker_id && sameRouterAbMpcMaterialActivationRef(left.material_activation, right.material_activation);
25
+ }
26
+ function sameRouterAbEd25519YaoApplicationBindingFactsV1(left, right) {
27
+ return left.wallet_id === right.wallet_id && left.near_ed25519_signing_key_id === right.near_ed25519_signing_key_id && left.signing_root_id === right.signing_root_id && left.key_creation_signer_slot === right.key_creation_signer_slot;
28
+ }
29
+ function sameRouterAbEd25519YaoRegistrationAdmissionRequestV1(left, right) {
30
+ return sameRouterAbEd25519YaoLifecycleScopeV1(left.scope, right.scope) && sameRouterAbEd25519YaoApplicationBindingFactsV1(left.application_binding, right.application_binding) && sameRouterAbEd25519YaoParticipantPairV1(left.participant_ids, right.participant_ids);
31
+ }
20
32
  const REGISTRATION_WORK_KIND = "registration_prepare";
21
33
  const REGISTRATION_PRIMITIVE_REQUEST_KIND = "registration";
22
34
  const RECOVERY_WORK_KIND = "recovery";
@@ -803,6 +815,6 @@ function parseEncryptedPackageValue(value) {
803
815
  return parseEncryptedPackage(value, "encrypted_package");
804
816
  }
805
817
  //#endregion
806
- export { ED25519_YAO_CONTROL_CIPHERTEXT_MAX_BYTES_V1, ROUTER_AB_ED25519_YAO_EMAIL_OTP_RECOVERY_BOOTSTRAP_KIND_V1, ROUTER_AB_ED25519_YAO_EXPORT_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_EXPORT_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ACTIVATE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_CHALLENGE_ID_HEADER_V1, ROUTER_AB_ED25519_YAO_RECOVERY_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_WARM_RECOVERY_BOOTSTRAP_PATH_V1, deriveRouterAbEd25519YaoApplicationBindingDigestV1, parseRouterAbEd25519YaoActivationAdmissionReceiptV1, parseRouterAbEd25519YaoActivationExecuteRequestV1, parseRouterAbEd25519YaoActivationPublicReceiptV1, parseRouterAbEd25519YaoActivationResultV1, parseRouterAbEd25519YaoApplicationBindingFactsV1, parseRouterAbEd25519YaoCeremonyBindingV1, parseRouterAbEd25519YaoEncryptedPackageV1, parseRouterAbEd25519YaoExportAdmissionReceiptV1, parseRouterAbEd25519YaoExportExecuteRequestV1, parseRouterAbEd25519YaoExportResultV1, parseRouterAbEd25519YaoParticipantIdsV1, parseRouterAbEd25519YaoRecoveryActivationAdmissionReceiptV1, parseRouterAbEd25519YaoRecoveryActivationExecuteRequestV1, parseRouterAbEd25519YaoRecoveryActivationReceiptV1, parseRouterAbEd25519YaoRecoveryActivationResultV1, parseRouterAbEd25519YaoRecoveryAdmissionRequestV1, parseRouterAbEd25519YaoRegistrationActivationAdmissionReceiptV1, parseRouterAbEd25519YaoRegistrationActivationExecuteRequestV1, parseRouterAbEd25519YaoRegistrationActivationResultV1, parseRouterAbEd25519YaoRegistrationAdmissionRequestV1, parseRouterAbEd25519YaoWarmRecoveryBootstrapRequestV1, sameRouterAbEd25519YaoActivationBindingV1 };
818
+ export { ED25519_YAO_CONTROL_CIPHERTEXT_MAX_BYTES_V1, ROUTER_AB_ED25519_YAO_EMAIL_OTP_RECOVERY_BOOTSTRAP_KIND_V1, ROUTER_AB_ED25519_YAO_EXPORT_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_EXPORT_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ACTIVATE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_CHALLENGE_ID_HEADER_V1, ROUTER_AB_ED25519_YAO_RECOVERY_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_WARM_RECOVERY_BOOTSTRAP_PATH_V1, deriveRouterAbEd25519YaoApplicationBindingDigestV1, parseRouterAbEd25519YaoActivationAdmissionReceiptV1, parseRouterAbEd25519YaoActivationExecuteRequestV1, parseRouterAbEd25519YaoActivationPublicReceiptV1, parseRouterAbEd25519YaoActivationResultV1, parseRouterAbEd25519YaoApplicationBindingFactsV1, parseRouterAbEd25519YaoCeremonyBindingV1, parseRouterAbEd25519YaoEncryptedPackageV1, parseRouterAbEd25519YaoExportAdmissionReceiptV1, parseRouterAbEd25519YaoExportExecuteRequestV1, parseRouterAbEd25519YaoExportResultV1, parseRouterAbEd25519YaoParticipantIdsV1, parseRouterAbEd25519YaoRecoveryActivationAdmissionReceiptV1, parseRouterAbEd25519YaoRecoveryActivationExecuteRequestV1, parseRouterAbEd25519YaoRecoveryActivationReceiptV1, parseRouterAbEd25519YaoRecoveryActivationResultV1, parseRouterAbEd25519YaoRecoveryAdmissionRequestV1, parseRouterAbEd25519YaoRegistrationActivationAdmissionReceiptV1, parseRouterAbEd25519YaoRegistrationActivationExecuteRequestV1, parseRouterAbEd25519YaoRegistrationActivationResultV1, parseRouterAbEd25519YaoRegistrationAdmissionRequestV1, parseRouterAbEd25519YaoWarmRecoveryBootstrapRequestV1, sameRouterAbEd25519YaoActivationBindingV1, sameRouterAbEd25519YaoRegistrationAdmissionRequestV1 };
807
819
 
808
820
  //# sourceMappingURL=routerAbEd25519Yao.js.map