@tatchi-xyz/sdk 0.31.0 → 0.32.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 (197) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/core/IndexedDBManager/passkeyClientDB.js +2 -2
  3. package/dist/cjs/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
  4. package/dist/cjs/core/TatchiPasskey/faucets/createAccountRelayServer.js +9 -8
  5. package/dist/cjs/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
  6. package/dist/cjs/core/TatchiPasskey/login.js +1 -1
  7. package/dist/cjs/core/TatchiPasskey/login.js.map +1 -1
  8. package/dist/cjs/core/TatchiPasskey/registration.js +107 -63
  9. package/dist/cjs/core/TatchiPasskey/registration.js.map +1 -1
  10. package/dist/cjs/core/WalletIframe/client/on-events-progress-bus.js +1 -1
  11. package/dist/cjs/core/WalletIframe/client/on-events-progress-bus.js.map +1 -1
  12. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js +1 -10
  13. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js.map +1 -1
  14. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +58 -67
  15. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
  16. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +74 -75
  17. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
  18. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js +17 -7
  19. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js.map +1 -1
  20. package/dist/cjs/core/WebAuthnManager/index.js +3 -3
  21. package/dist/cjs/core/WebAuthnManager/index.js.map +1 -1
  22. package/dist/cjs/core/defaultConfigs.js +3 -1
  23. package/dist/cjs/core/defaultConfigs.js.map +1 -1
  24. package/dist/cjs/core/types/sdkSentEvents.js +3 -2
  25. package/dist/cjs/core/types/sdkSentEvents.js.map +1 -1
  26. package/dist/cjs/react/components/AccountMenuButton/TransactionSettingsSection.js +3 -3
  27. package/dist/cjs/react/components/AccountMenuButton/TransactionSettingsSection.js.map +1 -1
  28. package/dist/cjs/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-CRlobBrN.css → PasskeyAuthMenu-D2eRb2-S.css} +3 -1
  29. package/dist/cjs/react/components/PasskeyAuthMenu/PasskeyAuthMenu-D2eRb2-S.css.map +1 -0
  30. package/dist/cjs/react/components/PasskeyAuthMenu/preload.js +1 -1
  31. package/dist/cjs/react/components/PasskeyAuthMenu/preload.js.map +1 -1
  32. package/dist/cjs/react/components/PasskeyAuthMenu/shell.js +52 -13
  33. package/dist/cjs/react/components/PasskeyAuthMenu/shell.js.map +1 -1
  34. package/dist/cjs/react/components/PasskeyAuthMenu/skeleton.js +4 -2
  35. package/dist/cjs/react/components/PasskeyAuthMenu/skeleton.js.map +1 -1
  36. package/dist/cjs/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js +5 -1
  37. package/dist/cjs/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js.map +1 -1
  38. package/dist/cjs/react/context/useTatchiWithSdkFlow.js +1 -1
  39. package/dist/cjs/react/context/useTatchiWithSdkFlow.js.map +1 -1
  40. package/dist/cjs/react/index.js +1 -1
  41. package/dist/cjs/react/src/core/IndexedDBManager/passkeyClientDB.js +2 -2
  42. package/dist/cjs/react/src/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
  43. package/dist/cjs/react/src/core/TatchiPasskey/faucets/createAccountRelayServer.js +9 -8
  44. package/dist/cjs/react/src/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
  45. package/dist/cjs/react/src/core/TatchiPasskey/login.js +1 -1
  46. package/dist/cjs/react/src/core/TatchiPasskey/login.js.map +1 -1
  47. package/dist/cjs/react/src/core/TatchiPasskey/registration.js +107 -63
  48. package/dist/cjs/react/src/core/TatchiPasskey/registration.js.map +1 -1
  49. package/dist/cjs/react/src/core/WalletIframe/client/on-events-progress-bus.js +1 -1
  50. package/dist/cjs/react/src/core/WalletIframe/client/on-events-progress-bus.js.map +1 -1
  51. package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js +1 -10
  52. package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js.map +1 -1
  53. package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +58 -67
  54. package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
  55. package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +74 -75
  56. package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
  57. package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js +17 -7
  58. package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js.map +1 -1
  59. package/dist/cjs/react/src/core/WebAuthnManager/index.js +3 -3
  60. package/dist/cjs/react/src/core/WebAuthnManager/index.js.map +1 -1
  61. package/dist/cjs/react/src/core/defaultConfigs.js +3 -1
  62. package/dist/cjs/react/src/core/defaultConfigs.js.map +1 -1
  63. package/dist/cjs/react/src/core/types/sdkSentEvents.js +3 -2
  64. package/dist/cjs/react/src/core/types/sdkSentEvents.js.map +1 -1
  65. package/dist/cjs/server/core/AuthService.js +49 -6
  66. package/dist/cjs/server/core/AuthService.js.map +1 -1
  67. package/dist/cjs/server/sdk/src/core/defaultConfigs.js.map +1 -1
  68. package/dist/esm/core/IndexedDBManager/passkeyClientDB.js +2 -2
  69. package/dist/esm/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
  70. package/dist/esm/core/TatchiPasskey/faucets/createAccountRelayServer.js +9 -8
  71. package/dist/esm/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
  72. package/dist/esm/core/TatchiPasskey/login.js +1 -1
  73. package/dist/esm/core/TatchiPasskey/login.js.map +1 -1
  74. package/dist/esm/core/TatchiPasskey/registration.js +107 -63
  75. package/dist/esm/core/TatchiPasskey/registration.js.map +1 -1
  76. package/dist/esm/core/WalletIframe/client/on-events-progress-bus.js +1 -1
  77. package/dist/esm/core/WalletIframe/client/on-events-progress-bus.js.map +1 -1
  78. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js +1 -10
  79. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js.map +1 -1
  80. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +58 -67
  81. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
  82. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +74 -75
  83. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
  84. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js +17 -7
  85. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js.map +1 -1
  86. package/dist/esm/core/WebAuthnManager/index.js +3 -3
  87. package/dist/esm/core/WebAuthnManager/index.js.map +1 -1
  88. package/dist/esm/core/defaultConfigs.js +3 -1
  89. package/dist/esm/core/defaultConfigs.js.map +1 -1
  90. package/dist/esm/core/types/sdkSentEvents.js +3 -2
  91. package/dist/esm/core/types/sdkSentEvents.js.map +1 -1
  92. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +3 -3
  93. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js.map +1 -1
  94. package/dist/esm/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-D2VHZ04W.css → PasskeyAuthMenu-qTHAv58Z.css} +3 -1
  95. package/dist/esm/react/components/PasskeyAuthMenu/PasskeyAuthMenu-qTHAv58Z.css.map +1 -0
  96. package/dist/esm/react/components/PasskeyAuthMenu/preload.js +1 -1
  97. package/dist/esm/react/components/PasskeyAuthMenu/preload.js.map +1 -1
  98. package/dist/esm/react/components/PasskeyAuthMenu/shell.js +52 -13
  99. package/dist/esm/react/components/PasskeyAuthMenu/shell.js.map +1 -1
  100. package/dist/esm/react/components/PasskeyAuthMenu/skeleton.js +4 -2
  101. package/dist/esm/react/components/PasskeyAuthMenu/skeleton.js.map +1 -1
  102. package/dist/esm/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js +5 -1
  103. package/dist/esm/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js.map +1 -1
  104. package/dist/esm/react/context/useTatchiWithSdkFlow.js +1 -1
  105. package/dist/esm/react/context/useTatchiWithSdkFlow.js.map +1 -1
  106. package/dist/esm/react/index.js +1 -1
  107. package/dist/esm/react/src/core/IndexedDBManager/passkeyClientDB.js +2 -2
  108. package/dist/esm/react/src/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
  109. package/dist/esm/react/src/core/TatchiPasskey/faucets/createAccountRelayServer.js +9 -8
  110. package/dist/esm/react/src/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
  111. package/dist/esm/react/src/core/TatchiPasskey/login.js +1 -1
  112. package/dist/esm/react/src/core/TatchiPasskey/login.js.map +1 -1
  113. package/dist/esm/react/src/core/TatchiPasskey/registration.js +107 -63
  114. package/dist/esm/react/src/core/TatchiPasskey/registration.js.map +1 -1
  115. package/dist/esm/react/src/core/WalletIframe/client/on-events-progress-bus.js +1 -1
  116. package/dist/esm/react/src/core/WalletIframe/client/on-events-progress-bus.js.map +1 -1
  117. package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js +1 -10
  118. package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js.map +1 -1
  119. package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +58 -67
  120. package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
  121. package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +74 -75
  122. package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
  123. package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js +17 -7
  124. package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js.map +1 -1
  125. package/dist/esm/react/src/core/WebAuthnManager/index.js +3 -3
  126. package/dist/esm/react/src/core/WebAuthnManager/index.js.map +1 -1
  127. package/dist/esm/react/src/core/defaultConfigs.js +3 -1
  128. package/dist/esm/react/src/core/defaultConfigs.js.map +1 -1
  129. package/dist/esm/react/src/core/types/sdkSentEvents.js +3 -2
  130. package/dist/esm/react/src/core/types/sdkSentEvents.js.map +1 -1
  131. package/dist/esm/react/styles/styles.css +2 -0
  132. package/dist/esm/sdk/{EmailRecovery-Dl8b4ONg.js → EmailRecovery-Y7rurd4B.js} +3 -3
  133. package/dist/esm/sdk/{EmailRecovery-v9oNO2Tc.js → EmailRecovery-lsjLWApQ.js} +1 -1
  134. package/dist/esm/sdk/{IndexedDBManager-B1cUvdyY.js → IndexedDBManager-CmdN7smS.js} +3 -3
  135. package/dist/esm/sdk/{createAdapters-Dv7ZJPf1.js → createAdapters-4c8mBiD5.js} +2 -11
  136. package/dist/esm/sdk/{createAdapters-Dv7ZJPf1.js.map → createAdapters-4c8mBiD5.js.map} +1 -1
  137. package/dist/esm/sdk/{createAdapters-1Hmc1vVC.js → createAdapters-DF32SIZa.js} +1 -10
  138. package/dist/esm/sdk/{defaultConfigs-BmCU1_qI.js → defaultConfigs-BQqiXif-.js} +3 -1
  139. package/dist/esm/sdk/{delegateAction-DdkvFFKA.js → delegateAction-Bq5zkOvn.js} +1 -1
  140. package/dist/esm/sdk/{emailRecovery-4J-g9tlY.js → emailRecovery-B1hbE_sM.js} +6 -6
  141. package/dist/esm/sdk/{getDeviceNumber-f8bfPB9U.js → getDeviceNumber-WiNzKx1x.js} +4 -2
  142. package/dist/esm/sdk/{getDeviceNumber-f8bfPB9U.js.map → getDeviceNumber-WiNzKx1x.js.map} +1 -1
  143. package/dist/esm/sdk/{linkDevice-C98klpcE.js → linkDevice-CRPf5aW2.js} +5 -5
  144. package/dist/esm/sdk/{localOnly-40zxrBMm.js → localOnly-COpDBMkm.js} +2 -2
  145. package/dist/esm/sdk/{localOnly-40zxrBMm.js.map → localOnly-COpDBMkm.js.map} +1 -1
  146. package/dist/esm/sdk/{localOnly-BZPBj14l.js → localOnly-DQQuqgjJ.js} +1 -1
  147. package/dist/esm/sdk/{login-DnROv3eA.js → login-DUIWZHp_.js} +4 -4
  148. package/dist/esm/sdk/offline-export-app.js +32 -21
  149. package/dist/esm/sdk/offline-export-app.js.map +1 -1
  150. package/dist/esm/sdk/{registration-BP9M3tE1.js → registration-BR2G9tz_.js} +59 -68
  151. package/dist/esm/sdk/{registration-MrAOC8Ub.js → registration-R70lvG_o.js} +60 -69
  152. package/dist/esm/sdk/registration-R70lvG_o.js.map +1 -0
  153. package/dist/esm/sdk/{relay-Dq9D7fhG.js → relay-BCEyWFew.js} +1 -1
  154. package/dist/esm/sdk/{router-BEGGuWaB.js → router-Cj2WexK-.js} +3 -3
  155. package/dist/esm/sdk/{rpcCalls-CMzj_Va_.js → rpcCalls-C1sp-Epo.js} +3 -3
  156. package/dist/esm/sdk/{rpcCalls-B44MZora.js → rpcCalls-VL4loDKP.js} +2 -2
  157. package/dist/esm/sdk/{scanDevice-Cp-r-Z2T.js → scanDevice-C0HcnZym.js} +5 -5
  158. package/dist/esm/sdk/{sdkSentEvents-CzAZBFjP.js → sdkSentEvents-BfkcI7EN.js} +3 -2
  159. package/dist/esm/sdk/{signNEP413-DsyWH_Jo.js → signNEP413-lj0swHsD.js} +1 -1
  160. package/dist/esm/sdk/{syncAccount-CqWCmBVb.js → syncAccount-DnQ9AstS.js} +5 -5
  161. package/dist/esm/sdk/{syncAccount-Dt5jJbEB.js → syncAccount-xh81Vppo.js} +3 -3
  162. package/dist/esm/sdk/{transactions-DAZrPW-6.js → transactions-Cg1TIUyK.js} +76 -77
  163. package/dist/esm/sdk/{transactions-CrjP8yPD.js → transactions-CxsklyCK.js} +77 -78
  164. package/dist/esm/sdk/transactions-CxsklyCK.js.map +1 -0
  165. package/dist/esm/sdk/wallet-iframe-host.js +160 -105
  166. package/dist/esm/server/core/AuthService.js +49 -6
  167. package/dist/esm/server/core/AuthService.js.map +1 -1
  168. package/dist/esm/server/sdk/src/core/defaultConfigs.js.map +1 -1
  169. package/dist/esm/wasm_vrf_worker/pkg/wasm_vrf_worker_bg.wasm +0 -0
  170. package/dist/types/src/__tests__/setup/bootstrap.d.ts.map +1 -1
  171. package/dist/types/src/core/IndexedDBManager/passkeyClientDB.d.ts +1 -1
  172. package/dist/types/src/core/IndexedDBManager/passkeyClientDB.d.ts.map +1 -1
  173. package/dist/types/src/core/TatchiPasskey/faucets/createAccountRelayServer.d.ts +6 -6
  174. package/dist/types/src/core/TatchiPasskey/faucets/createAccountRelayServer.d.ts.map +1 -1
  175. package/dist/types/src/core/TatchiPasskey/registration.d.ts.map +1 -1
  176. package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.d.ts +0 -5
  177. package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.d.ts.map +1 -1
  178. package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.d.ts.map +1 -1
  179. package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.d.ts.map +1 -1
  180. package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.d.ts.map +1 -1
  181. package/dist/types/src/core/WebAuthnManager/index.d.ts +1 -1
  182. package/dist/types/src/core/WebAuthnManager/index.d.ts.map +1 -1
  183. package/dist/types/src/core/defaultConfigs.d.ts.map +1 -1
  184. package/dist/types/src/core/types/sdkSentEvents.d.ts +18 -7
  185. package/dist/types/src/core/types/sdkSentEvents.d.ts.map +1 -1
  186. package/dist/types/src/react/components/PasskeyAuthMenu/preload.d.ts.map +1 -1
  187. package/dist/types/src/react/components/PasskeyAuthMenu/shell.d.ts.map +1 -1
  188. package/dist/types/src/react/components/PasskeyAuthMenu/skeleton.d.ts +1 -1
  189. package/dist/types/src/react/components/PasskeyAuthMenu/skeleton.d.ts.map +1 -1
  190. package/dist/types/src/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.d.ts.map +1 -1
  191. package/dist/types/src/server/core/AuthService.d.ts.map +1 -1
  192. package/dist/workers/wasm_vrf_worker_bg.wasm +0 -0
  193. package/package.json +4 -4
  194. package/dist/cjs/react/components/PasskeyAuthMenu/PasskeyAuthMenu-CRlobBrN.css.map +0 -1
  195. package/dist/esm/react/components/PasskeyAuthMenu/PasskeyAuthMenu-D2VHZ04W.css.map +0 -1
  196. package/dist/esm/sdk/registration-MrAOC8Ub.js.map +0 -1
  197. package/dist/esm/sdk/transactions-CrjP8yPD.js.map +0 -1
@@ -13,7 +13,7 @@ import { toError } from "./errors-DevlT39D.js";
13
13
  import { isSerializedRegistrationCredential, serializeRegistrationCredentialWithPRF } from "./safari-fallbacks-BcMFntiP.js";
14
14
  import "./touchIdPrompt-JPhrOx8o.js";
15
15
  import { ERROR_MESSAGES, getIntentDigest, getNearAccountId, getRegisterAccountPayload, isUserCancelledSecureConfirm } from "./collectAuthenticationCredentialForVrfChallenge-DqzPzwvU.js";
16
- import { createConfirmSession, createConfirmTxFlowAdapters } from "./createAdapters-1Hmc1vVC.js";
16
+ import { createConfirmSession, createConfirmTxFlowAdapters } from "./createAdapters-DF32SIZa.js";
17
17
 
18
18
  //#region src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.ts
19
19
  async function handleRegistrationFlow(ctx, request, worker, opts) {
@@ -27,78 +27,70 @@ async function handleRegistrationFlow(ctx, request, worker, opts) {
27
27
  transactionSummary
28
28
  });
29
29
  const nearAccountId = getNearAccountId(request);
30
- console.debug("[RegistrationFlow] start", {
31
- nearAccountId,
32
- uiMode: confirmationConfig?.uiMode,
33
- behavior: confirmationConfig?.behavior,
34
- theme: confirmationConfig?.theme,
35
- intentDigest: transactionSummary?.intentDigest
36
- });
37
- const nearRpc = await adapters.near.fetchNearContext({
38
- nearAccountId,
39
- txCount: 1,
40
- reserveNonces: true
41
- });
42
- if (nearRpc.error && !nearRpc.transactionContext) return session.confirmAndCloseModal({
43
- requestId: request.requestId,
44
- intentDigest: getIntentDigest(request),
45
- confirmed: false,
46
- error: `${ERROR_MESSAGES.nearRpcFailed}: ${nearRpc.details}`
47
- });
48
- const transactionContext = nearRpc.transactionContext;
49
- session.setReservedNonces(nearRpc.reservedNonces);
50
- const computeBoundIntentDigestB64u = async () => {
51
- const uiIntentDigest = getIntentDigest(request);
52
- if (!uiIntentDigest) throw new Error("Missing intentDigest for registration flow");
53
- return sha256Base64UrlUtf8(uiIntentDigest);
54
- };
55
- const rpId = adapters.vrf.getRpId();
56
- const boundIntentDigestB64u = await computeBoundIntentDigestB64u();
57
- const bootstrap = await adapters.vrf.generateVrfKeypairBootstrap({
58
- vrfInputData: {
59
- userId: nearAccountId,
60
- rpId,
61
- blockHeight: transactionContext.txBlockHeight,
62
- blockHash: transactionContext.txBlockHash,
63
- intentDigest: boundIntentDigestB64u
64
- },
65
- saveInMemory: true,
66
- sessionId: request.requestId
67
- });
68
- let uiVrfChallenge = bootstrap.vrfChallenge;
69
- console.debug("[RegistrationFlow] VRF bootstrap ok", { blockHeight: uiVrfChallenge.blockHeight });
70
- const { confirmed, error: uiError } = await session.promptUser({ vrfChallenge: uiVrfChallenge });
71
- if (!confirmed) {
72
- console.debug("[RegistrationFlow] user cancelled");
73
- return session.confirmAndCloseModal({
30
+ try {
31
+ const nearRpc = await adapters.near.fetchNearContext({
32
+ nearAccountId,
33
+ txCount: 1,
34
+ reserveNonces: true
35
+ });
36
+ if (nearRpc.error && !nearRpc.transactionContext) return session.confirmAndCloseModal({
74
37
  requestId: request.requestId,
75
38
  intentDigest: getIntentDigest(request),
76
39
  confirmed: false,
77
- error: uiError
40
+ error: `${ERROR_MESSAGES.nearRpcFailed}: ${nearRpc.details}`
78
41
  });
79
- }
80
- try {
81
- const refreshed = await adapters.vrf.maybeRefreshVrfChallenge(request, nearAccountId);
82
- uiVrfChallenge = refreshed.vrfChallenge;
83
- session.updateUI({ vrfChallenge: uiVrfChallenge });
84
- console.debug("[RegistrationFlow] VRF JIT refresh ok", { blockHeight: uiVrfChallenge.blockHeight });
85
- } catch (e) {
86
- console.debug("[RegistrationFlow] VRF JIT refresh skipped", e);
87
- }
88
- let credential;
89
- let deviceNumber = request.payload?.deviceNumber ?? 1;
90
- const tryCreate = async (dn) => {
91
- console.debug("[RegistrationFlow] navigator.credentials.create start", { deviceNumber: dn });
92
- return await adapters.webauthn.createRegistrationCredential({
93
- nearAccountId,
94
- challenge: uiVrfChallenge,
95
- deviceNumber: dn
42
+ const transactionContext = nearRpc.transactionContext;
43
+ session.setReservedNonces(nearRpc.reservedNonces);
44
+ const computeBoundIntentDigestB64u = async () => {
45
+ const uiIntentDigest = getIntentDigest(request);
46
+ if (!uiIntentDigest) throw new Error("Missing intentDigest for registration flow");
47
+ return sha256Base64UrlUtf8(uiIntentDigest);
48
+ };
49
+ const rpId = adapters.vrf.getRpId();
50
+ const boundIntentDigestB64u = await computeBoundIntentDigestB64u();
51
+ const bootstrap = await adapters.vrf.generateVrfKeypairBootstrap({
52
+ vrfInputData: {
53
+ userId: nearAccountId,
54
+ rpId,
55
+ blockHeight: transactionContext.txBlockHeight,
56
+ blockHash: transactionContext.txBlockHash,
57
+ intentDigest: boundIntentDigestB64u
58
+ },
59
+ saveInMemory: true,
60
+ sessionId: request.requestId
96
61
  });
97
- };
98
- try {
62
+ let uiVrfChallenge = bootstrap.vrfChallenge;
63
+ console.debug("[RegistrationFlow] VRF bootstrap ok", { blockHeight: uiVrfChallenge.blockHeight });
64
+ const { confirmed, error: uiError } = await session.promptUser({ vrfChallenge: uiVrfChallenge });
65
+ if (!confirmed) {
66
+ console.debug("[RegistrationFlow] user cancelled");
67
+ return session.confirmAndCloseModal({
68
+ requestId: request.requestId,
69
+ intentDigest: getIntentDigest(request),
70
+ confirmed: false,
71
+ error: uiError
72
+ });
73
+ }
74
+ try {
75
+ const refreshed = await adapters.vrf.maybeRefreshVrfChallenge(request, nearAccountId);
76
+ uiVrfChallenge = refreshed.vrfChallenge;
77
+ session.updateUI({ vrfChallenge: uiVrfChallenge });
78
+ console.debug("[RegistrationFlow] VRF JIT refresh ok", { blockHeight: uiVrfChallenge.blockHeight });
79
+ } catch (e) {
80
+ console.debug("[RegistrationFlow] VRF JIT refresh skipped", e);
81
+ }
82
+ let credential;
83
+ let deviceNumber = request.payload?.deviceNumber ?? 1;
84
+ const tryCreate = async (dn) => {
85
+ console.debug("[RegistrationFlow] navigator.credentials.create start", { deviceNumber: dn });
86
+ return await adapters.webauthn.createRegistrationCredential({
87
+ nearAccountId,
88
+ challenge: uiVrfChallenge,
89
+ deviceNumber: dn
90
+ });
91
+ };
99
92
  try {
100
93
  credential = await tryCreate(deviceNumber);
101
- console.debug("[RegistrationFlow] credentials.create ok");
102
94
  } catch (e) {
103
95
  const err = toError(e);
104
96
  const name = String(err?.name || "");
@@ -149,14 +141,13 @@ async function handleRegistrationFlow(ctx, request, worker, opts) {
149
141
  } catch (err) {
150
142
  const cancelled = isUserCancelledSecureConfirm(err);
151
143
  const msg = String(toError(err)?.message || err || "");
152
- if (/Missing PRF result/i.test(msg) || /Missing PRF results/i.test(msg)) return session.cleanupAndRethrow(err);
153
144
  if (cancelled) window.parent?.postMessage({ type: "WALLET_UI_CLOSED" }, "*");
154
145
  const isPrfBrowserUnsupported = /WebAuthn PRF output is missing from navigator\.credentials\.create\(\)/i.test(msg) || /does not fully support the WebAuthn PRF extension during registration/i.test(msg) || /roaming hardware authenticators .* not supported in this flow/i.test(msg);
155
146
  return session.confirmAndCloseModal({
156
147
  requestId: request.requestId,
157
148
  intentDigest: getIntentDigest(request),
158
149
  confirmed: false,
159
- error: cancelled ? ERROR_MESSAGES.cancelled : isPrfBrowserUnsupported ? msg : ERROR_MESSAGES.collectCredentialsFailed
150
+ error: cancelled ? ERROR_MESSAGES.cancelled : isPrfBrowserUnsupported ? msg : msg || ERROR_MESSAGES.collectCredentialsFailed
160
151
  });
161
152
  }
162
153
  }
@@ -1,6 +1,6 @@
1
1
  import "./validation-hUZgySTx.js";
2
2
  import { ERROR_MESSAGES, getIntentDigest, getNearAccountId, getRegisterAccountPayload, isSerializedRegistrationCredential, isUserCancelledSecureConfirm, serializeRegistrationCredentialWithPRF, sha256Base64UrlUtf8, toError } from "./collectAuthenticationCredentialForVrfChallenge-C9p90e5Z.js";
3
- import { createConfirmSession, createConfirmTxFlowAdapters } from "./createAdapters-Dv7ZJPf1.js";
3
+ import { createConfirmSession, createConfirmTxFlowAdapters } from "./createAdapters-4c8mBiD5.js";
4
4
  import "./css-loader-DWW-_Vli.js";
5
5
 
6
6
  //#region src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.ts
@@ -15,78 +15,70 @@ async function handleRegistrationFlow(ctx, request, worker, opts) {
15
15
  transactionSummary
16
16
  });
17
17
  const nearAccountId = getNearAccountId(request);
18
- console.debug("[RegistrationFlow] start", {
19
- nearAccountId,
20
- uiMode: confirmationConfig?.uiMode,
21
- behavior: confirmationConfig?.behavior,
22
- theme: confirmationConfig?.theme,
23
- intentDigest: transactionSummary?.intentDigest
24
- });
25
- const nearRpc = await adapters.near.fetchNearContext({
26
- nearAccountId,
27
- txCount: 1,
28
- reserveNonces: true
29
- });
30
- if (nearRpc.error && !nearRpc.transactionContext) return session.confirmAndCloseModal({
31
- requestId: request.requestId,
32
- intentDigest: getIntentDigest(request),
33
- confirmed: false,
34
- error: `${ERROR_MESSAGES.nearRpcFailed}: ${nearRpc.details}`
35
- });
36
- const transactionContext = nearRpc.transactionContext;
37
- session.setReservedNonces(nearRpc.reservedNonces);
38
- const computeBoundIntentDigestB64u = async () => {
39
- const uiIntentDigest = getIntentDigest(request);
40
- if (!uiIntentDigest) throw new Error("Missing intentDigest for registration flow");
41
- return sha256Base64UrlUtf8(uiIntentDigest);
42
- };
43
- const rpId = adapters.vrf.getRpId();
44
- const boundIntentDigestB64u = await computeBoundIntentDigestB64u();
45
- const bootstrap = await adapters.vrf.generateVrfKeypairBootstrap({
46
- vrfInputData: {
47
- userId: nearAccountId,
48
- rpId,
49
- blockHeight: transactionContext.txBlockHeight,
50
- blockHash: transactionContext.txBlockHash,
51
- intentDigest: boundIntentDigestB64u
52
- },
53
- saveInMemory: true,
54
- sessionId: request.requestId
55
- });
56
- let uiVrfChallenge = bootstrap.vrfChallenge;
57
- console.debug("[RegistrationFlow] VRF bootstrap ok", { blockHeight: uiVrfChallenge.blockHeight });
58
- const { confirmed, error: uiError } = await session.promptUser({ vrfChallenge: uiVrfChallenge });
59
- if (!confirmed) {
60
- console.debug("[RegistrationFlow] user cancelled");
61
- return session.confirmAndCloseModal({
18
+ try {
19
+ const nearRpc = await adapters.near.fetchNearContext({
20
+ nearAccountId,
21
+ txCount: 1,
22
+ reserveNonces: true
23
+ });
24
+ if (nearRpc.error && !nearRpc.transactionContext) return session.confirmAndCloseModal({
62
25
  requestId: request.requestId,
63
26
  intentDigest: getIntentDigest(request),
64
27
  confirmed: false,
65
- error: uiError
28
+ error: `${ERROR_MESSAGES.nearRpcFailed}: ${nearRpc.details}`
66
29
  });
67
- }
68
- try {
69
- const refreshed = await adapters.vrf.maybeRefreshVrfChallenge(request, nearAccountId);
70
- uiVrfChallenge = refreshed.vrfChallenge;
71
- session.updateUI({ vrfChallenge: uiVrfChallenge });
72
- console.debug("[RegistrationFlow] VRF JIT refresh ok", { blockHeight: uiVrfChallenge.blockHeight });
73
- } catch (e) {
74
- console.debug("[RegistrationFlow] VRF JIT refresh skipped", e);
75
- }
76
- let credential;
77
- let deviceNumber = request.payload?.deviceNumber ?? 1;
78
- const tryCreate = async (dn) => {
79
- console.debug("[RegistrationFlow] navigator.credentials.create start", { deviceNumber: dn });
80
- return await adapters.webauthn.createRegistrationCredential({
81
- nearAccountId,
82
- challenge: uiVrfChallenge,
83
- deviceNumber: dn
30
+ const transactionContext = nearRpc.transactionContext;
31
+ session.setReservedNonces(nearRpc.reservedNonces);
32
+ const computeBoundIntentDigestB64u = async () => {
33
+ const uiIntentDigest = getIntentDigest(request);
34
+ if (!uiIntentDigest) throw new Error("Missing intentDigest for registration flow");
35
+ return sha256Base64UrlUtf8(uiIntentDigest);
36
+ };
37
+ const rpId = adapters.vrf.getRpId();
38
+ const boundIntentDigestB64u = await computeBoundIntentDigestB64u();
39
+ const bootstrap = await adapters.vrf.generateVrfKeypairBootstrap({
40
+ vrfInputData: {
41
+ userId: nearAccountId,
42
+ rpId,
43
+ blockHeight: transactionContext.txBlockHeight,
44
+ blockHash: transactionContext.txBlockHash,
45
+ intentDigest: boundIntentDigestB64u
46
+ },
47
+ saveInMemory: true,
48
+ sessionId: request.requestId
84
49
  });
85
- };
86
- try {
50
+ let uiVrfChallenge = bootstrap.vrfChallenge;
51
+ console.debug("[RegistrationFlow] VRF bootstrap ok", { blockHeight: uiVrfChallenge.blockHeight });
52
+ const { confirmed, error: uiError } = await session.promptUser({ vrfChallenge: uiVrfChallenge });
53
+ if (!confirmed) {
54
+ console.debug("[RegistrationFlow] user cancelled");
55
+ return session.confirmAndCloseModal({
56
+ requestId: request.requestId,
57
+ intentDigest: getIntentDigest(request),
58
+ confirmed: false,
59
+ error: uiError
60
+ });
61
+ }
62
+ try {
63
+ const refreshed = await adapters.vrf.maybeRefreshVrfChallenge(request, nearAccountId);
64
+ uiVrfChallenge = refreshed.vrfChallenge;
65
+ session.updateUI({ vrfChallenge: uiVrfChallenge });
66
+ console.debug("[RegistrationFlow] VRF JIT refresh ok", { blockHeight: uiVrfChallenge.blockHeight });
67
+ } catch (e) {
68
+ console.debug("[RegistrationFlow] VRF JIT refresh skipped", e);
69
+ }
70
+ let credential;
71
+ let deviceNumber = request.payload?.deviceNumber ?? 1;
72
+ const tryCreate = async (dn) => {
73
+ console.debug("[RegistrationFlow] navigator.credentials.create start", { deviceNumber: dn });
74
+ return await adapters.webauthn.createRegistrationCredential({
75
+ nearAccountId,
76
+ challenge: uiVrfChallenge,
77
+ deviceNumber: dn
78
+ });
79
+ };
87
80
  try {
88
81
  credential = await tryCreate(deviceNumber);
89
- console.debug("[RegistrationFlow] credentials.create ok");
90
82
  } catch (e) {
91
83
  const err = toError(e);
92
84
  const name = String(err?.name || "");
@@ -137,18 +129,17 @@ async function handleRegistrationFlow(ctx, request, worker, opts) {
137
129
  } catch (err) {
138
130
  const cancelled = isUserCancelledSecureConfirm(err);
139
131
  const msg = String(toError(err)?.message || err || "");
140
- if (/Missing PRF result/i.test(msg) || /Missing PRF results/i.test(msg)) return session.cleanupAndRethrow(err);
141
132
  if (cancelled) window.parent?.postMessage({ type: "WALLET_UI_CLOSED" }, "*");
142
133
  const isPrfBrowserUnsupported = /WebAuthn PRF output is missing from navigator\.credentials\.create\(\)/i.test(msg) || /does not fully support the WebAuthn PRF extension during registration/i.test(msg) || /roaming hardware authenticators .* not supported in this flow/i.test(msg);
143
134
  return session.confirmAndCloseModal({
144
135
  requestId: request.requestId,
145
136
  intentDigest: getIntentDigest(request),
146
137
  confirmed: false,
147
- error: cancelled ? ERROR_MESSAGES.cancelled : isPrfBrowserUnsupported ? msg : ERROR_MESSAGES.collectCredentialsFailed
138
+ error: cancelled ? ERROR_MESSAGES.cancelled : isPrfBrowserUnsupported ? msg : msg || ERROR_MESSAGES.collectCredentialsFailed
148
139
  });
149
140
  }
150
141
  }
151
142
 
152
143
  //#endregion
153
144
  export { handleRegistrationFlow };
154
- //# sourceMappingURL=registration-MrAOC8Ub.js.map
145
+ //# sourceMappingURL=registration-R70lvG_o.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registration-R70lvG_o.js","names":["uiVrfChallenge: VRFChallenge","credential: PublicKeyCredential | undefined","e: unknown","serialized: WebAuthnRegistrationCredential","err: unknown"],"sources":["../../../src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.ts"],"sourcesContent":["import type { VrfWorkerManagerContext } from '../../';\nimport type { ConfirmationConfig } from '../../../../types/signer-worker';\nimport {\n TransactionSummary,\n RegistrationSecureConfirmRequest,\n} from '../types';\nimport { VRFChallenge, TransactionContext } from '../../../../types';\nimport type { WebAuthnRegistrationCredential } from '../../../../types/webauthn';\nimport { sha256Base64UrlUtf8 } from '../../../../digests/intentDigest';\nimport {\n getNearAccountId,\n getIntentDigest,\n isUserCancelledSecureConfirm,\n ERROR_MESSAGES,\n getRegisterAccountPayload,\n} from './index';\nimport { isSerializedRegistrationCredential, serializeRegistrationCredentialWithPRF } from '../../../credentialsHelpers';\nimport { toError } from '../../../../../utils/errors';\nimport { createConfirmSession } from '../adapters/session';\nimport { createConfirmTxFlowAdapters } from '../adapters/createAdapters';\n\nexport async function handleRegistrationFlow(\n ctx: VrfWorkerManagerContext,\n request: RegistrationSecureConfirmRequest,\n worker: Worker,\n opts: { confirmationConfig: ConfirmationConfig; transactionSummary: TransactionSummary },\n): Promise<void> {\n\n const { confirmationConfig, transactionSummary } = opts;\n const adapters = createConfirmTxFlowAdapters(ctx);\n const session = createConfirmSession({\n adapters,\n worker,\n request,\n confirmationConfig,\n transactionSummary,\n });\n const nearAccountId = getNearAccountId(request);\n\n try {\n // 1) NEAR context\n const nearRpc = await adapters.near.fetchNearContext({ nearAccountId, txCount: 1, reserveNonces: true });\n if (nearRpc.error && !nearRpc.transactionContext) {\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: false,\n error: `${ERROR_MESSAGES.nearRpcFailed}: ${nearRpc.details}`,\n });\n }\n const transactionContext = nearRpc.transactionContext as TransactionContext;\n session.setReservedNonces(nearRpc.reservedNonces);\n\n const computeBoundIntentDigestB64u = async (): Promise<string> => {\n const uiIntentDigest = getIntentDigest(request);\n if (!uiIntentDigest) {\n throw new Error('Missing intentDigest for registration flow');\n }\n return sha256Base64UrlUtf8(uiIntentDigest);\n };\n\n // 2) Initial VRF challenge via bootstrap\n const rpId = adapters.vrf.getRpId();\n const boundIntentDigestB64u = await computeBoundIntentDigestB64u();\n const bootstrap = await adapters.vrf.generateVrfKeypairBootstrap({\n vrfInputData: {\n userId: nearAccountId,\n rpId,\n blockHeight: transactionContext.txBlockHeight,\n blockHash: transactionContext.txBlockHash,\n intentDigest: boundIntentDigestB64u,\n },\n saveInMemory: true,\n sessionId: request.requestId,\n });\n let uiVrfChallenge: VRFChallenge = bootstrap.vrfChallenge;\n console.debug('[RegistrationFlow] VRF bootstrap ok', { blockHeight: uiVrfChallenge.blockHeight });\n\n // 3) UI confirm\n const { confirmed, error: uiError } = await session.promptUser({ vrfChallenge: uiVrfChallenge });\n if (!confirmed) {\n console.debug('[RegistrationFlow] user cancelled');\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: false,\n error: uiError,\n });\n }\n\n // 4) JIT refresh VRF (best-effort)\n try {\n const refreshed = await adapters.vrf.maybeRefreshVrfChallenge(request, nearAccountId);\n uiVrfChallenge = refreshed.vrfChallenge;\n session.updateUI({ vrfChallenge: uiVrfChallenge });\n console.debug('[RegistrationFlow] VRF JIT refresh ok', { blockHeight: uiVrfChallenge.blockHeight });\n } catch (e) {\n console.debug('[RegistrationFlow] VRF JIT refresh skipped', e);\n }\n\n // 5) Collect registration credentials (with duplicate retry)\n let credential: PublicKeyCredential | undefined;\n let deviceNumber = request.payload?.deviceNumber ?? 1;\n\n const tryCreate = async (dn?: number): Promise<PublicKeyCredential> => {\n console.debug('[RegistrationFlow] navigator.credentials.create start', { deviceNumber: dn });\n return await adapters.webauthn.createRegistrationCredential({\n nearAccountId,\n challenge: uiVrfChallenge,\n deviceNumber: dn,\n });\n };\n\n try {\n credential = await tryCreate(deviceNumber);\n } catch (e: unknown) {\n\n const err = toError(e);\n const name = String(err?.name || '');\n const msg = String(err?.message || '');\n const isDuplicate = name === 'InvalidStateError' || /excluded|already\\s*registered/i.test(msg);\n\n if (isDuplicate) {\n const nextDeviceNumber = (deviceNumber !== undefined && Number.isFinite(deviceNumber)) ? (deviceNumber + 1) : 2;\n console.debug('[RegistrationFlow] duplicate credential, retry with next deviceNumber', { nextDeviceNumber });\n // Keep request payload and intentDigest in sync with the deviceNumber retry.\n deviceNumber = nextDeviceNumber;\n getRegisterAccountPayload(request).deviceNumber = nextDeviceNumber;\n request.intentDigest = request.type === 'registerAccount'\n ? `register:${nearAccountId}:${nextDeviceNumber}`\n : `device2-register:${nearAccountId}:${nextDeviceNumber}`;\n\n // Regenerate a VRF challenge bound to the updated intentDigest so the contract-side\n // VRF input derivation remains consistent end-to-end.\n const retryBoundIntentDigestB64u = await computeBoundIntentDigestB64u();\n const retryBootstrap = await adapters.vrf.generateVrfKeypairBootstrap({\n vrfInputData: {\n userId: nearAccountId,\n rpId,\n blockHeight: transactionContext.txBlockHeight,\n blockHash: transactionContext.txBlockHash,\n intentDigest: retryBoundIntentDigestB64u,\n },\n saveInMemory: true,\n sessionId: request.requestId,\n });\n uiVrfChallenge = retryBootstrap.vrfChallenge;\n session.updateUI({ vrfChallenge: uiVrfChallenge });\n\n credential = await tryCreate(nextDeviceNumber);\n } else {\n console.error('[RegistrationFlow] credentials.create failed (non-duplicate)', { name, msg });\n throw err;\n }\n }\n\n // We require registration credentials to include dual PRF outputs (first + second)\n // so VRF/NEAR key derivation can happen inside the workers without passing PRF outputs\n // as separate main-thread values.\n const serialized: WebAuthnRegistrationCredential = isSerializedRegistrationCredential(credential)\n ? (credential as unknown as WebAuthnRegistrationCredential)\n : serializeRegistrationCredentialWithPRF({\n credential: credential! as PublicKeyCredential,\n firstPrfOutput: true,\n secondPrfOutput: true,\n });\n\n // 6) Respond + close\n session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: true,\n credential: serialized,\n // PRF outputs are embedded in serialized credential; VRF worker extracts and sends via MessagePort\n vrfChallenge: uiVrfChallenge,\n transactionContext,\n });\n } catch (err: unknown) {\n\n const cancelled = isUserCancelledSecureConfirm(err);\n const msg = String((toError(err))?.message || err || '');\n if (cancelled) {\n window.parent?.postMessage({ type: 'WALLET_UI_CLOSED' }, '*');\n }\n\n const isPrfBrowserUnsupported =\n /WebAuthn PRF output is missing from navigator\\.credentials\\.create\\(\\)/i.test(msg)\n || /does not fully support the WebAuthn PRF extension during registration/i.test(msg)\n || /roaming hardware authenticators .* not supported in this flow/i.test(msg);\n\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: false,\n error: cancelled\n ? ERROR_MESSAGES.cancelled\n : (isPrfBrowserUnsupported ? msg : (msg || ERROR_MESSAGES.collectCredentialsFailed)),\n });\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ActionPhase, ActionStatus } from "./sdkSentEvents-CzAZBFjP.js";
1
+ import { ActionPhase, ActionStatus } from "./sdkSentEvents-BfkcI7EN.js";
2
2
 
3
3
  //#region src/core/TatchiPasskey/relay.ts
4
4
  const toNumberArray = (value) => Array.isArray(value) ? value : Array.from(value);
@@ -2,10 +2,10 @@ import { extractBorshBytesFromPlainSignedTx, isBoolean, isObject, isPlainSignedT
2
2
  import "./rpc-Dq3ioE9T.js";
3
3
  import { mergeSignerMode } from "./signer-worker-DK847sXj.js";
4
4
  import "./base64-dqpWgddX.js";
5
- import { ActionPhase, DeviceLinkingPhase, EmailRecoveryPhase, LoginPhase, RegistrationPhase, SyncAccountPhase } from "./sdkSentEvents-CzAZBFjP.js";
5
+ import { ActionPhase, DeviceLinkingPhase, EmailRecoveryPhase, LoginPhase, RegistrationPhase, SyncAccountPhase } from "./sdkSentEvents-BfkcI7EN.js";
6
6
  import { toError } from "./errors-DevlT39D.js";
7
7
  import { SignedTransaction, openOfflineExportWindow } from "./overlay-Ci2FOQKE.js";
8
- import { PASSKEY_MANAGER_DEFAULT_CONFIGS } from "./defaultConfigs-BmCU1_qI.js";
8
+ import { PASSKEY_MANAGER_DEFAULT_CONFIGS } from "./defaultConfigs-BQqiXif-.js";
9
9
  import { WebAuthnBridgeMessage, serializeAuthenticationCredentialWithPRF, serializeRegistrationCredentialWithPRF } from "./safari-fallbacks-BcMFntiP.js";
10
10
 
11
11
  //#region src/core/WalletIframe/client/on-events-progress-bus.ts
@@ -32,7 +32,7 @@ const HIDE_PHASES = new Set([
32
32
  DeviceLinkingPhase.LOGIN_ERROR,
33
33
  DeviceLinkingPhase.DEVICE_LINKING_ERROR,
34
34
  RegistrationPhase.STEP_5_CONTRACT_REGISTRATION,
35
- RegistrationPhase.STEP_8_REGISTRATION_COMPLETE,
35
+ RegistrationPhase.STEP_9_REGISTRATION_COMPLETE,
36
36
  RegistrationPhase.REGISTRATION_ERROR,
37
37
  LoginPhase.STEP_3_VRF_UNLOCK,
38
38
  LoginPhase.STEP_4_LOGIN_COMPLETE,
@@ -4,9 +4,9 @@ import "./rpc-Dq3ioE9T.js";
4
4
  import "./signer-worker-DK847sXj.js";
5
5
  import "./base64-dqpWgddX.js";
6
6
  import "./vrf-worker-BzQsJ5BW.js";
7
- import "./sdkSentEvents-CzAZBFjP.js";
7
+ import "./sdkSentEvents-BfkcI7EN.js";
8
8
  import "./errors-DevlT39D.js";
9
- import "./defaultConfigs-BmCU1_qI.js";
10
- import { buildSetRecoveryEmailsActions, checkCanRegisterUserContractCall, executeDeviceLinkingContractCalls, getAuthenticatorsByUser, getCredentialIdsContractCall, getDeviceLinkingAccountContractCall, getEmailRecoveryAttempt, getRecoveryEmailHashesContractCall, hasAccessKey, syncAuthenticatorsContractCall, thresholdEd25519Keygen, thresholdEd25519KeygenFromRegistrationTx, verifyAuthenticationResponse, waitForAccessKeyAbsent } from "./rpcCalls-B44MZora.js";
9
+ import "./defaultConfigs-BQqiXif-.js";
10
+ import { buildSetRecoveryEmailsActions, checkCanRegisterUserContractCall, executeDeviceLinkingContractCalls, getAuthenticatorsByUser, getCredentialIdsContractCall, getDeviceLinkingAccountContractCall, getEmailRecoveryAttempt, getRecoveryEmailHashesContractCall, hasAccessKey, syncAuthenticatorsContractCall, thresholdEd25519Keygen, thresholdEd25519KeygenFromRegistrationTx, verifyAuthenticationResponse, waitForAccessKeyAbsent } from "./rpcCalls-VL4loDKP.js";
11
11
 
12
12
  export { buildSetRecoveryEmailsActions, getRecoveryEmailHashesContractCall };
@@ -3,9 +3,9 @@ import { ActionType } from "./actions-fHadejPs.js";
3
3
  import { DEFAULT_WAIT_STATUS } from "./rpc-Dq3ioE9T.js";
4
4
  import { base64UrlDecode, base64UrlEncode } from "./base64-dqpWgddX.js";
5
5
  import { createRandomVRFChallenge } from "./vrf-worker-BzQsJ5BW.js";
6
- import { ActionPhase, DeviceLinkingPhase, DeviceLinkingStatus } from "./sdkSentEvents-CzAZBFjP.js";
6
+ import { ActionPhase, DeviceLinkingPhase, DeviceLinkingStatus } from "./sdkSentEvents-BfkcI7EN.js";
7
7
  import { errorMessage } from "./errors-DevlT39D.js";
8
- import { DEFAULT_EMAIL_RECOVERY_CONTRACTS } from "./defaultConfigs-BmCU1_qI.js";
8
+ import { DEFAULT_EMAIL_RECOVERY_CONTRACTS } from "./defaultConfigs-BQqiXif-.js";
9
9
 
10
10
  //#region src/core/rpcCalls.ts
11
11
  function normalizeByteArray(input) {
@@ -3,18 +3,18 @@ import "./actions-fHadejPs.js";
3
3
  import "./rpc-Dq3ioE9T.js";
4
4
  import "./signer-worker-DK847sXj.js";
5
5
  import "./base64-dqpWgddX.js";
6
- import { getLoginSession } from "./login-DnROv3eA.js";
6
+ import { getLoginSession } from "./login-DUIWZHp_.js";
7
7
  import "./vrf-worker-BzQsJ5BW.js";
8
- import { DeviceLinkingPhase, DeviceLinkingStatus } from "./sdkSentEvents-CzAZBFjP.js";
8
+ import { DeviceLinkingPhase, DeviceLinkingStatus } from "./sdkSentEvents-BfkcI7EN.js";
9
9
  import { DEVICE_LINKING_CONFIG, DeviceLinkingError, DeviceLinkingErrorCode } from "./config-BbNXtVtu.js";
10
10
  import "./accountIds-DVDhXwVA.js";
11
11
  import "./intentDigest-yivVENNK.js";
12
12
  import "./errors-DevlT39D.js";
13
- import "./IndexedDBManager-B1cUvdyY.js";
14
- import "./defaultConfigs-BmCU1_qI.js";
13
+ import "./IndexedDBManager-CmdN7smS.js";
14
+ import "./defaultConfigs-BQqiXif-.js";
15
15
  import "./safari-fallbacks-BcMFntiP.js";
16
16
  import "./touchIdPrompt-JPhrOx8o.js";
17
- import { executeDeviceLinkingContractCalls } from "./rpcCalls-B44MZora.js";
17
+ import { executeDeviceLinkingContractCalls } from "./rpcCalls-VL4loDKP.js";
18
18
  import "./getDeviceNumber-y3mMtky6.js";
19
19
 
20
20
  //#region src/core/TatchiPasskey/scanDevice.ts
@@ -6,8 +6,9 @@ let RegistrationPhase = /* @__PURE__ */ function(RegistrationPhase$1) {
6
6
  RegistrationPhase$1["STEP_4_ACCESS_KEY_ADDITION"] = "access-key-addition";
7
7
  RegistrationPhase$1["STEP_5_CONTRACT_REGISTRATION"] = "contract-registration";
8
8
  RegistrationPhase$1["STEP_6_ACCOUNT_VERIFICATION"] = "account-verification";
9
- RegistrationPhase$1["STEP_7_DATABASE_STORAGE"] = "database-storage";
10
- RegistrationPhase$1["STEP_8_REGISTRATION_COMPLETE"] = "registration-complete";
9
+ RegistrationPhase$1["STEP_7_THRESHOLD_KEY_ENROLLMENT"] = "threshold-key-enrollment";
10
+ RegistrationPhase$1["STEP_8_DATABASE_STORAGE"] = "database-storage";
11
+ RegistrationPhase$1["STEP_9_REGISTRATION_COMPLETE"] = "registration-complete";
11
12
  RegistrationPhase$1["REGISTRATION_ERROR"] = "error";
12
13
  return RegistrationPhase$1;
13
14
  }({});
@@ -1,6 +1,6 @@
1
1
  import { mergeSignerMode } from "./signer-worker-DK847sXj.js";
2
2
  import { base64Encode } from "./base64-dqpWgddX.js";
3
- import { ActionPhase, ActionStatus } from "./sdkSentEvents-CzAZBFjP.js";
3
+ import { ActionPhase, ActionStatus } from "./sdkSentEvents-BfkcI7EN.js";
4
4
 
5
5
  //#region src/core/TatchiPasskey/signNEP413.ts
6
6
  /**
@@ -4,13 +4,13 @@ import "./rpc-Dq3ioE9T.js";
4
4
  import "./signer-worker-DK847sXj.js";
5
5
  import "./base64-dqpWgddX.js";
6
6
  import "./vrf-worker-BzQsJ5BW.js";
7
- import "./sdkSentEvents-CzAZBFjP.js";
7
+ import "./sdkSentEvents-BfkcI7EN.js";
8
8
  import "./accountIds-DVDhXwVA.js";
9
9
  import "./errors-DevlT39D.js";
10
- import "./IndexedDBManager-B1cUvdyY.js";
11
- import "./defaultConfigs-BmCU1_qI.js";
12
- import "./rpcCalls-B44MZora.js";
10
+ import "./IndexedDBManager-CmdN7smS.js";
11
+ import "./defaultConfigs-BQqiXif-.js";
12
+ import "./rpcCalls-VL4loDKP.js";
13
13
  import "./getDeviceNumber-y3mMtky6.js";
14
- import { SyncAccountFlow, syncAccount } from "./syncAccount-Dt5jJbEB.js";
14
+ import { SyncAccountFlow, syncAccount } from "./syncAccount-xh81Vppo.js";
15
15
 
16
16
  export { SyncAccountFlow };
@@ -1,10 +1,10 @@
1
1
  import { ensureEd25519Prefix, validateNearAccountId } from "./validation-BTq6LGPp.js";
2
2
  import { base64UrlDecode } from "./base64-dqpWgddX.js";
3
3
  import { createRandomVRFChallenge } from "./vrf-worker-BzQsJ5BW.js";
4
- import { SyncAccountPhase, SyncAccountStatus } from "./sdkSentEvents-CzAZBFjP.js";
4
+ import { SyncAccountPhase, SyncAccountStatus } from "./sdkSentEvents-BfkcI7EN.js";
5
5
  import { toAccountId } from "./accountIds-DVDhXwVA.js";
6
- import { IndexedDBManager, buildThresholdEd25519Participants2pV1 } from "./IndexedDBManager-B1cUvdyY.js";
7
- import { getCredentialIdsContractCall, hasAccessKey, syncAuthenticatorsContractCall } from "./rpcCalls-B44MZora.js";
6
+ import { IndexedDBManager, buildThresholdEd25519Participants2pV1 } from "./IndexedDBManager-CmdN7smS.js";
7
+ import { getCredentialIdsContractCall, hasAccessKey, syncAuthenticatorsContractCall } from "./rpcCalls-VL4loDKP.js";
8
8
  import { parseDeviceNumber } from "./getDeviceNumber-y3mMtky6.js";
9
9
 
10
10
  //#region src/core/WebAuthnManager/userHandle.ts