@getpara/core-sdk 2.12.0 → 2.13.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/dist/cjs/ParaCore.js +793 -2003
  2. package/dist/cjs/constants.js +4 -1
  3. package/dist/cjs/services/AuthService.js +787 -0
  4. package/dist/cjs/services/BaseAuthFlowService.js +78 -0
  5. package/dist/cjs/services/ExternalWalletService.js +386 -0
  6. package/dist/cjs/services/LoginFlowService.js +163 -0
  7. package/dist/cjs/services/PollingService.js +448 -0
  8. package/dist/cjs/services/PortalUrlService.js +379 -0
  9. package/dist/cjs/services/PregenWalletService.js +442 -0
  10. package/dist/cjs/services/SessionManagementService.js +280 -0
  11. package/dist/cjs/services/SignupFlowService.js +185 -0
  12. package/dist/cjs/services/VerificationFlowService.js +242 -0
  13. package/dist/cjs/services/WalletService.js +577 -0
  14. package/dist/cjs/services/types/AuthServiceTypes.js +15 -0
  15. package/dist/cjs/services/types/BaseAuthFlowServiceTypes.js +15 -0
  16. package/dist/cjs/services/types/ExternalWalletServiceTypes.js +15 -0
  17. package/dist/cjs/services/types/LoginFlowServiceTypes.js +15 -0
  18. package/dist/cjs/services/types/PollingServiceTypes.js +15 -0
  19. package/dist/cjs/services/types/PortalUrlServiceTypes.js +15 -0
  20. package/dist/cjs/services/types/PregenWalletServiceTypes.js +15 -0
  21. package/dist/cjs/services/types/SessionManagementServiceTypes.js +15 -0
  22. package/dist/cjs/services/types/SignupFlowServiceTypes.js +15 -0
  23. package/dist/cjs/services/types/VerificationFlowServiceTypes.js +15 -0
  24. package/dist/cjs/services/types/WalletServiceTypes.js +15 -0
  25. package/dist/cjs/services/types/index.js +15 -0
  26. package/dist/cjs/state/CoreStateManager.js +297 -0
  27. package/dist/cjs/state/actors/authenticateWithEmailOrPhone.js +50 -0
  28. package/dist/cjs/state/actors/authenticateWithExternalWallet.js +50 -0
  29. package/dist/cjs/state/actors/authenticateWithFarcaster.js +50 -0
  30. package/dist/cjs/state/actors/authenticateWithFarcasterLegacy.js +50 -0
  31. package/dist/cjs/state/actors/authenticateWithTelegram.js +50 -0
  32. package/dist/cjs/state/actors/authenticateWithTelegramLegacy.js +50 -0
  33. package/dist/cjs/state/actors/checkUserState.js +53 -0
  34. package/dist/cjs/state/actors/claimWallets.js +56 -0
  35. package/dist/cjs/state/actors/connectExternalConnectors.js +54 -0
  36. package/dist/cjs/state/actors/connectExternalWallet.js +50 -0
  37. package/dist/cjs/state/actors/createGuestWallets.js +50 -0
  38. package/dist/cjs/state/actors/createWallets.js +73 -0
  39. package/dist/cjs/state/actors/polling.js +91 -0
  40. package/dist/cjs/state/actors/processAuthentication.js +50 -0
  41. package/dist/cjs/state/actors/setupAfterLogin.js +52 -0
  42. package/dist/cjs/state/actors/setupPara.js +50 -0
  43. package/dist/cjs/state/actors/signExternalWalletVerification.js +79 -0
  44. package/dist/cjs/state/actors/switchExternalWallet.js +50 -0
  45. package/dist/cjs/state/actors/verifyExternalWallet.js +50 -0
  46. package/dist/cjs/state/actors/verifyNewAccount.js +50 -0
  47. package/dist/cjs/state/actors/waitForExternalWalletProviders.js +54 -0
  48. package/dist/cjs/state/machines/authStateMachine.helpers.js +137 -0
  49. package/dist/cjs/state/machines/authStateMachine.js +1084 -0
  50. package/dist/cjs/state/machines/coreStateMachine.js +383 -0
  51. package/dist/cjs/state/machines/walletStateMachine.js +437 -0
  52. package/dist/cjs/state/types/auth.js +15 -0
  53. package/dist/cjs/state/types/core.js +15 -0
  54. package/dist/cjs/state/types/wallet.js +15 -0
  55. package/dist/cjs/types/{auth.js → accountLinking.js} +3 -3
  56. package/dist/cjs/types/authState.js +15 -0
  57. package/dist/cjs/types/coreApi.js +3 -1
  58. package/dist/cjs/types/index.js +2 -2
  59. package/dist/cjs/types/serviceInterfaces.js +15 -0
  60. package/dist/cjs/types/util.js +15 -0
  61. package/dist/cjs/utils/formatting.js +6 -0
  62. package/dist/cjs/utils/retryBackoff.js +30 -0
  63. package/dist/cjs/utils/stateErrorHelpers.js +60 -0
  64. package/dist/cjs/utils/stateListener.js +129 -0
  65. package/dist/esm/ParaCore.js +796 -2031
  66. package/dist/esm/constants.js +3 -1
  67. package/dist/esm/services/AuthService.js +717 -0
  68. package/dist/esm/services/BaseAuthFlowService.js +25 -0
  69. package/dist/esm/services/ExternalWalletService.js +327 -0
  70. package/dist/esm/services/LoginFlowService.js +97 -0
  71. package/dist/esm/services/PollingService.js +389 -0
  72. package/dist/esm/services/PortalUrlService.js +320 -0
  73. package/dist/esm/services/PregenWalletService.js +393 -0
  74. package/dist/esm/services/SessionManagementService.js +236 -0
  75. package/dist/esm/services/SignupFlowService.js +119 -0
  76. package/dist/esm/services/VerificationFlowService.js +178 -0
  77. package/dist/esm/services/WalletService.js +514 -0
  78. package/dist/esm/services/types/AuthServiceTypes.js +0 -0
  79. package/dist/esm/services/types/BaseAuthFlowServiceTypes.js +0 -0
  80. package/dist/esm/services/types/ExternalWalletServiceTypes.js +0 -0
  81. package/dist/esm/services/types/LoginFlowServiceTypes.js +0 -0
  82. package/dist/esm/services/types/PollingServiceTypes.js +0 -0
  83. package/dist/esm/services/types/PortalUrlServiceTypes.js +0 -0
  84. package/dist/esm/services/types/PregenWalletServiceTypes.js +0 -0
  85. package/dist/esm/services/types/SessionManagementServiceTypes.js +0 -0
  86. package/dist/esm/services/types/SignupFlowServiceTypes.js +0 -0
  87. package/dist/esm/services/types/VerificationFlowServiceTypes.js +0 -0
  88. package/dist/esm/services/types/WalletServiceTypes.js +0 -0
  89. package/dist/esm/services/types/index.js +0 -0
  90. package/dist/esm/state/CoreStateManager.js +261 -0
  91. package/dist/esm/state/actors/authenticateWithEmailOrPhone.js +10 -0
  92. package/dist/esm/state/actors/authenticateWithExternalWallet.js +10 -0
  93. package/dist/esm/state/actors/authenticateWithFarcaster.js +10 -0
  94. package/dist/esm/state/actors/authenticateWithFarcasterLegacy.js +10 -0
  95. package/dist/esm/state/actors/authenticateWithTelegram.js +10 -0
  96. package/dist/esm/state/actors/authenticateWithTelegramLegacy.js +10 -0
  97. package/dist/esm/state/actors/checkUserState.js +13 -0
  98. package/dist/esm/state/actors/claimWallets.js +16 -0
  99. package/dist/esm/state/actors/connectExternalConnectors.js +14 -0
  100. package/dist/esm/state/actors/connectExternalWallet.js +10 -0
  101. package/dist/esm/state/actors/createGuestWallets.js +10 -0
  102. package/dist/esm/state/actors/createWallets.js +20 -0
  103. package/dist/esm/state/actors/polling.js +55 -0
  104. package/dist/esm/state/actors/processAuthentication.js +10 -0
  105. package/dist/esm/state/actors/setupAfterLogin.js +12 -0
  106. package/dist/esm/state/actors/setupPara.js +10 -0
  107. package/dist/esm/state/actors/signExternalWalletVerification.js +15 -0
  108. package/dist/esm/state/actors/switchExternalWallet.js +10 -0
  109. package/dist/esm/state/actors/verifyExternalWallet.js +10 -0
  110. package/dist/esm/state/actors/verifyNewAccount.js +10 -0
  111. package/dist/esm/state/actors/waitForExternalWalletProviders.js +14 -0
  112. package/dist/esm/state/machines/authStateMachine.helpers.js +92 -0
  113. package/dist/esm/state/machines/authStateMachine.js +1039 -0
  114. package/dist/esm/state/machines/coreStateMachine.js +343 -0
  115. package/dist/esm/state/machines/walletStateMachine.js +382 -0
  116. package/dist/esm/state/types/auth.js +0 -0
  117. package/dist/esm/state/types/core.js +0 -0
  118. package/dist/esm/state/types/wallet.js +0 -0
  119. package/dist/esm/types/authState.js +0 -0
  120. package/dist/esm/types/coreApi.js +3 -1
  121. package/dist/esm/types/index.js +1 -1
  122. package/dist/esm/types/serviceInterfaces.js +0 -0
  123. package/dist/esm/types/util.js +0 -0
  124. package/dist/esm/utils/formatting.js +6 -0
  125. package/dist/esm/utils/retryBackoff.js +7 -0
  126. package/dist/esm/utils/stateErrorHelpers.js +37 -0
  127. package/dist/esm/utils/stateListener.js +106 -0
  128. package/dist/types/ParaCore.d.ts +190 -119
  129. package/dist/types/PlatformUtils.d.ts +23 -0
  130. package/dist/types/constants.d.ts +1 -0
  131. package/dist/types/index.d.ts +4 -2
  132. package/dist/types/services/AuthService.d.ts +72 -0
  133. package/dist/types/services/BaseAuthFlowService.d.ts +28 -0
  134. package/dist/types/services/ExternalWalletService.d.ts +44 -0
  135. package/dist/types/services/LoginFlowService.d.ts +9 -0
  136. package/dist/types/services/PollingService.d.ts +35 -0
  137. package/dist/types/services/PortalUrlService.d.ts +26 -0
  138. package/dist/types/services/PregenWalletService.d.ts +38 -0
  139. package/dist/types/services/SessionManagementService.d.ts +28 -0
  140. package/dist/types/services/SignupFlowService.d.ts +10 -0
  141. package/dist/types/services/VerificationFlowService.d.ts +17 -0
  142. package/dist/types/services/WalletService.d.ts +54 -0
  143. package/dist/types/services/types/AuthServiceTypes.d.ts +147 -0
  144. package/dist/types/services/types/BaseAuthFlowServiceTypes.d.ts +4 -0
  145. package/dist/types/services/types/ExternalWalletServiceTypes.d.ts +67 -0
  146. package/dist/types/services/types/LoginFlowServiceTypes.d.ts +19 -0
  147. package/dist/types/services/types/PollingServiceTypes.d.ts +82 -0
  148. package/dist/types/services/types/PortalUrlServiceTypes.d.ts +46 -0
  149. package/dist/types/services/types/PregenWalletServiceTypes.d.ts +73 -0
  150. package/dist/types/services/types/SessionManagementServiceTypes.d.ts +27 -0
  151. package/dist/types/services/types/SignupFlowServiceTypes.d.ts +18 -0
  152. package/dist/types/services/types/VerificationFlowServiceTypes.d.ts +90 -0
  153. package/dist/types/services/types/WalletServiceTypes.d.ts +109 -0
  154. package/dist/types/services/types/index.d.ts +11 -0
  155. package/dist/types/state/CoreStateManager.d.ts +36 -0
  156. package/dist/types/state/actors/authenticateWithEmailOrPhone.d.ts +8 -0
  157. package/dist/types/state/actors/authenticateWithExternalWallet.d.ts +8 -0
  158. package/dist/types/state/actors/authenticateWithFarcaster.d.ts +3 -0
  159. package/dist/types/state/actors/authenticateWithFarcasterLegacy.d.ts +3 -0
  160. package/dist/types/state/actors/authenticateWithTelegram.d.ts +3 -0
  161. package/dist/types/state/actors/authenticateWithTelegramLegacy.d.ts +8 -0
  162. package/dist/types/state/actors/checkUserState.d.ts +6 -0
  163. package/dist/types/state/actors/claimWallets.d.ts +8 -0
  164. package/dist/types/state/actors/connectExternalConnectors.d.ts +4 -0
  165. package/dist/types/state/actors/connectExternalWallet.d.ts +3 -0
  166. package/dist/types/state/actors/createGuestWallets.d.ts +3 -0
  167. package/dist/types/state/actors/createWallets.d.ts +10 -0
  168. package/dist/types/state/actors/polling.d.ts +3 -0
  169. package/dist/types/state/actors/processAuthentication.d.ts +10 -0
  170. package/dist/types/state/actors/setupAfterLogin.d.ts +5 -0
  171. package/dist/types/state/actors/setupPara.d.ts +2 -0
  172. package/dist/types/state/actors/signExternalWalletVerification.d.ts +7 -0
  173. package/dist/types/state/actors/switchExternalWallet.d.ts +3 -0
  174. package/dist/types/state/actors/verifyExternalWallet.d.ts +8 -0
  175. package/dist/types/state/actors/verifyNewAccount.d.ts +8 -0
  176. package/dist/types/state/actors/waitForExternalWalletProviders.d.ts +2 -0
  177. package/dist/types/state/machines/authStateMachine.d.ts +2570 -0
  178. package/dist/types/state/machines/authStateMachine.helpers.d.ts +57 -0
  179. package/dist/types/state/machines/coreStateMachine.d.ts +22033 -0
  180. package/dist/types/state/machines/walletStateMachine.d.ts +1049 -0
  181. package/dist/types/state/types/auth.d.ts +113 -0
  182. package/dist/types/state/types/core.d.ts +114 -0
  183. package/dist/types/state/types/wallet.d.ts +76 -0
  184. package/dist/types/types/authState.d.ts +66 -0
  185. package/dist/types/types/config.d.ts +5 -0
  186. package/dist/types/types/coreApi.d.ts +148 -298
  187. package/dist/types/types/index.d.ts +3 -1
  188. package/dist/types/types/methods.d.ts +1 -191
  189. package/dist/types/types/serviceInterfaces.d.ts +125 -0
  190. package/dist/types/types/util.d.ts +43 -0
  191. package/dist/types/types/wallet.d.ts +3 -1
  192. package/dist/types/utils/retryBackoff.d.ts +2 -0
  193. package/dist/types/utils/stateErrorHelpers.d.ts +2 -0
  194. package/dist/types/utils/stateListener.d.ts +47 -0
  195. package/package.json +5 -4
  196. /package/dist/esm/types/{auth.js → accountLinking.js} +0 -0
  197. /package/dist/types/types/{auth.d.ts → accountLinking.d.ts} +0 -0
@@ -0,0 +1,1039 @@
1
+ import {
2
+ __async,
3
+ __spreadProps,
4
+ __spreadValues
5
+ } from "../../chunk-7B52C2XE.js";
6
+ import { assign, setup, and, or, sendTo, fromPromise } from "xstate";
7
+ import { createAuthenticateWithEmailOrPhoneActor } from "../actors/authenticateWithEmailOrPhone.js";
8
+ import { createAuthenticateWithExternalWalletActor } from "../actors/authenticateWithExternalWallet.js";
9
+ import { createCheckUserStateActor } from "../actors/checkUserState.js";
10
+ import { createProcessAuthenticationActor } from "../actors/processAuthentication.js";
11
+ import { createVerifyNewAccountActor } from "../actors/verifyNewAccount.js";
12
+ import { createPollingActor } from "../actors/polling.js";
13
+ import { ParaEvent } from "../../types/index.js";
14
+ import { createVerifyExternalWalletActor } from "../actors/verifyExternalWallet.js";
15
+ import { createAuthenticateWithTelegramActor } from "../actors/authenticateWithTelegram.js";
16
+ import { createAuthenticateWithFarcasterActor } from "../actors/authenticateWithFarcaster.js";
17
+ import { extractErrorMessage, formatStateError } from "../../utils/stateErrorHelpers.js";
18
+ import { createConnectExternalWalletActor } from "../actors/connectExternalWallet.js";
19
+ import { createSignExternalWalletVerificationActor } from "../actors/signExternalWalletVerification.js";
20
+ import { createSwitchExternalWalletActor } from "../actors/switchExternalWallet.js";
21
+ import { createAuthenticateWithTelegramLegacyActor } from "../actors/authenticateWithTelegramLegacy.js";
22
+ import { createAuthenticateWithFarcasterLegacyActor } from "../actors/authenticateWithFarcasterLegacy.js";
23
+ import { dispatchEvent } from "../../utils/events.js";
24
+ import {
25
+ AUTH_RESTART_TRANSITIONS,
26
+ computeIsNewUser,
27
+ DEFAULT_AUTH_OPTS,
28
+ isCancelError,
29
+ makeErrorTransitions,
30
+ makePollingOnHandlers,
31
+ setAuthErrorAssign,
32
+ setAuthResultAssign,
33
+ setServerAuthStateAssign
34
+ } from "./authStateMachine.helpers.js";
35
+ function createAuthStateMachine(paraCoreInterface) {
36
+ return setup({
37
+ types: {
38
+ context: {},
39
+ events: {},
40
+ input: {}
41
+ },
42
+ actors: {
43
+ checkUserState: createCheckUserStateActor(paraCoreInterface),
44
+ authenticateWithEmailOrPhone: createAuthenticateWithEmailOrPhoneActor(paraCoreInterface.authService),
45
+ authenticateWithExternalWallet: createAuthenticateWithExternalWalletActor(paraCoreInterface.authService),
46
+ authenticateWithTelegram: createAuthenticateWithTelegramActor(paraCoreInterface.pollingService),
47
+ authenticateWithTelegramLegacy: createAuthenticateWithTelegramLegacyActor(paraCoreInterface.authService),
48
+ authenticateWithFarcaster: createAuthenticateWithFarcasterActor(paraCoreInterface.pollingService),
49
+ authenticateWithFarcasterLegacy: createAuthenticateWithFarcasterLegacyActor(paraCoreInterface.authService),
50
+ processAuthentication: createProcessAuthenticationActor(paraCoreInterface.authService),
51
+ verifyNewAccount: createVerifyNewAccountActor(paraCoreInterface.authService),
52
+ verifyExternalWallet: createVerifyExternalWalletActor(paraCoreInterface.authService),
53
+ polling: createPollingActor(paraCoreInterface.pollingService),
54
+ connectExternalWallet: createConnectExternalWalletActor(paraCoreInterface.externalWalletService),
55
+ signExternalWalletVerification: createSignExternalWalletVerificationActor(paraCoreInterface.externalWalletService),
56
+ switchExternalWallet: createSwitchExternalWalletActor(paraCoreInterface.externalWalletService),
57
+ logoutActor: fromPromise(() => __async(this, null, function* () {
58
+ yield paraCoreInterface.logout({ skipStateReset: true });
59
+ }))
60
+ },
61
+ actions: {
62
+ logTransition: (_, params) => {
63
+ paraCoreInterface.devLog(`[auth] \u2192 ${params.to}${params.detail ? ` (${params.detail})` : ""}`);
64
+ },
65
+ fetchPregenWalletsFromOverride: (_, params) => {
66
+ void paraCoreInterface.pregenWalletService.fetchPregenWalletsFromOverride(params).catch((error) => console.error("Failed to fetch pregen wallets:", error));
67
+ },
68
+ storeAuthStateResult: assign({
69
+ authStateResult: ({ event }) => {
70
+ if ("output" in event) {
71
+ return event.output;
72
+ }
73
+ return null;
74
+ }
75
+ }),
76
+ setPollingCallbacks: assign({
77
+ pollingCallbacks: ({ event, context }) => {
78
+ if ("data" in event && event.data) {
79
+ return {
80
+ onCancel: "onCancel" in event.data ? event.data.onCancel : void 0,
81
+ onPoll: "onPoll" in event.data ? event.data.onPoll : void 0,
82
+ isCanceled: "isCanceled" in event.data ? event.data.isCanceled : void 0
83
+ };
84
+ }
85
+ return context.pollingCallbacks || null;
86
+ }
87
+ }),
88
+ setAutoCreate: assign({
89
+ shouldAutoCreateWallets: true
90
+ }),
91
+ setSessionOptions: assign({
92
+ shouldAutoCreateWallets: ({ event }) => {
93
+ if ("data" in event && event.data && typeof event.data === "object" && "autoCreateWallets" in event.data) {
94
+ return !!event.data.autoCreateWallets;
95
+ }
96
+ return false;
97
+ },
98
+ skipSessionRefreshOnSetup: ({ event }) => {
99
+ if ("data" in event && event.data && typeof event.data === "object" && "skipSessionRefresh" in event.data) {
100
+ return event.data.skipSessionRefresh || false;
101
+ }
102
+ return false;
103
+ }
104
+ }),
105
+ setIsLegacy: assign({
106
+ isLegacy: ({ event }) => "data" in event && "isLegacy" in event.data && event.data.isLegacy
107
+ }),
108
+ resetState: assign({
109
+ authStateResult: null,
110
+ serverAuthStateResult: null,
111
+ isNewUser: false,
112
+ error: null,
113
+ pollingCallbacks: null,
114
+ shouldAutoCreateWallets: false,
115
+ skipSessionRefreshOnSetup: false,
116
+ isLegacy: false,
117
+ retryAttempts: {},
118
+ externalWalletInfo: void 0,
119
+ externalWalletSignVerification: void 0
120
+ }),
121
+ resetError: assign({
122
+ error: null
123
+ }),
124
+ incrementRetryAttempt: assign({
125
+ retryAttempts: ({ context }, params) => {
126
+ var _a;
127
+ const newCount = (((_a = context.retryAttempts) == null ? void 0 : _a[params.type]) || 0) + 1;
128
+ paraCoreInterface.devLog(`[auth] Retry ${params.type}: attempt ${newCount}/3`);
129
+ return __spreadProps(__spreadValues({}, context.retryAttempts), {
130
+ [params.type]: newCount
131
+ });
132
+ }
133
+ }),
134
+ resetRetryAttempts: assign({
135
+ retryAttempts: {}
136
+ })
137
+ },
138
+ guards: {
139
+ isNewUser: ({ context }) => context.isNewUser,
140
+ authStageIsVerify: ({ context }) => {
141
+ var _a;
142
+ return ((_a = context.authStateResult) == null ? void 0 : _a.stage) === "verify";
143
+ },
144
+ authStageIsLogin: ({ context }) => {
145
+ var _a;
146
+ return ((_a = context.authStateResult) == null ? void 0 : _a.stage) === "login";
147
+ },
148
+ authStageIsSignup: ({ context }) => {
149
+ var _a;
150
+ return ((_a = context.authStateResult) == null ? void 0 : _a.stage) === "signup";
151
+ },
152
+ authStageIsDone: ({ context }) => {
153
+ var _a;
154
+ return ((_a = context.authStateResult) == null ? void 0 : _a.stage) === "done";
155
+ },
156
+ canRetryExternalWallet: ({ context }) => {
157
+ var _a;
158
+ return (((_a = context.retryAttempts) == null ? void 0 : _a.externalWalletVerification) || 0) < 3;
159
+ },
160
+ canRetryNewAccount: ({ context }) => {
161
+ var _a;
162
+ return (((_a = context.retryAttempts) == null ? void 0 : _a.newAccountVerification) || 0) < 3;
163
+ }
164
+ }
165
+ }).createMachine({
166
+ id: "auth",
167
+ initial: "checking_state",
168
+ context: ({ input: { coreRef } }) => ({
169
+ coreRef,
170
+ authStateResult: null,
171
+ serverAuthStateResult: null,
172
+ isNewUser: false,
173
+ error: null,
174
+ pollingCallbacks: null,
175
+ shouldAutoCreateWallets: false,
176
+ skipSessionRefreshOnSetup: false,
177
+ isLegacy: false,
178
+ retryAttempts: {}
179
+ }),
180
+ states: {
181
+ checking_state: {
182
+ invoke: {
183
+ src: "checkUserState",
184
+ onDone: [
185
+ {
186
+ guard: ({ event }) => {
187
+ const output = event.output;
188
+ return output.isGuestMode;
189
+ },
190
+ target: "guest_mode"
191
+ },
192
+ {
193
+ guard: ({ event }) => {
194
+ const output = event.output;
195
+ return paraCoreInterface.isPortal() && output.isAuthenticated || output.isFullyLoggedIn;
196
+ },
197
+ target: "authenticated"
198
+ },
199
+ { target: "clearing_state" }
200
+ ],
201
+ onError: {
202
+ target: "error",
203
+ actions: setAuthErrorAssign("Failed to check authentication state")
204
+ }
205
+ }
206
+ },
207
+ clearing_state: {
208
+ invoke: {
209
+ src: "logoutActor",
210
+ onDone: "unauthenticated",
211
+ onError: "unauthenticated"
212
+ }
213
+ },
214
+ unauthenticated: {
215
+ on: __spreadProps(__spreadValues({}, AUTH_RESTART_TRANSITIONS), {
216
+ INITIALIZE_GUEST_MODE: "guest_mode",
217
+ SESSION_IMPORTED: "authenticated"
218
+ })
219
+ },
220
+ guest_mode: {
221
+ entry: [
222
+ sendTo(({ context }) => context.coreRef, {
223
+ type: "GUEST_MODE"
224
+ })
225
+ ],
226
+ on: {
227
+ AUTHENTICATE_EMAIL_PHONE: "authenticating_email_phone",
228
+ AUTHENTICATE_OAUTH: "authenticating_oauth"
229
+ }
230
+ },
231
+ authenticating_email_phone: {
232
+ entry: ["setIsLegacy"],
233
+ invoke: {
234
+ src: "authenticateWithEmailOrPhone",
235
+ input: ({ event }) => {
236
+ if (event.type === "AUTHENTICATE_EMAIL_PHONE") {
237
+ return event.data;
238
+ }
239
+ throw new Error("Invalid event type for email/phone authentication");
240
+ },
241
+ onDone: [
242
+ {
243
+ target: "processing_authentication",
244
+ actions: [
245
+ setAuthResultAssign(),
246
+ {
247
+ type: "fetchPregenWalletsFromOverride",
248
+ params: ({ event }) => {
249
+ const output = event.output;
250
+ return { authInfo: output.authState.auth };
251
+ }
252
+ }
253
+ ]
254
+ }
255
+ ],
256
+ onError: {
257
+ target: "error",
258
+ actions: setAuthErrorAssign("Email/phone authentication failed")
259
+ }
260
+ },
261
+ on: {
262
+ CANCEL: { target: "unauthenticated", actions: ["resetState"] }
263
+ }
264
+ },
265
+ authenticating_oauth: {
266
+ invoke: {
267
+ src: "polling",
268
+ input: ({ event }) => {
269
+ if (event.type === "AUTHENTICATE_OAUTH") {
270
+ const { onOAuthUrl, onOAuthPopup, method, appScheme, portalTheme, useShortUrls } = event.data;
271
+ let oauthSessionLookupId;
272
+ let oauthAuthState = null;
273
+ return {
274
+ init: () => __async(this, null, function* () {
275
+ try {
276
+ const { sessionLookupId } = yield paraCoreInterface.pollingService.initOAuthPolling({
277
+ onOAuthPopup,
278
+ onOAuthUrl,
279
+ method,
280
+ appScheme,
281
+ portalTheme,
282
+ useShortUrls
283
+ });
284
+ oauthSessionLookupId = sessionLookupId;
285
+ } catch (error) {
286
+ throw new Error(`OAuth initialization failed: ${extractErrorMessage(error, "Unknown error")}`);
287
+ }
288
+ }),
289
+ checkCondition: () => __async(this, null, function* () {
290
+ try {
291
+ const result = yield paraCoreInterface.pollingService.waitForOAuth({
292
+ onSuccess: (serverAuthState) => {
293
+ oauthAuthState = serverAuthState;
294
+ }
295
+ })();
296
+ return __spreadProps(__spreadValues({}, result), {
297
+ data: {
298
+ authState: oauthAuthState,
299
+ sessionLookupId: oauthSessionLookupId,
300
+ portalTheme: portalTheme || {},
301
+ useShortUrls: useShortUrls || false
302
+ }
303
+ });
304
+ } catch (error) {
305
+ throw new Error(`OAuth polling failed: ${extractErrorMessage(error, "Unknown error")}`);
306
+ }
307
+ }),
308
+ onPoll: () => {
309
+ var _a, _b;
310
+ return (_b = (_a = event.data).onPoll) == null ? void 0 : _b.call(_a);
311
+ },
312
+ onCancel: () => {
313
+ var _a, _b;
314
+ return (_b = (_a = event.data).onCancel) == null ? void 0 : _b.call(_a);
315
+ },
316
+ isCanceled: event.data.isCanceled || (() => false),
317
+ id: "authenticatingOauth"
318
+ };
319
+ }
320
+ throw new Error("Invalid event type for OAuth authentication");
321
+ },
322
+ onError: {
323
+ target: "error",
324
+ actions: setAuthErrorAssign("OAuth authentication failed")
325
+ }
326
+ },
327
+ entry: [
328
+ assign({
329
+ pollingCallbacks: ({ event }) => {
330
+ if (event.type === "AUTHENTICATE_OAUTH") {
331
+ return {
332
+ onPoll: event.data.onPoll,
333
+ onCancel: event.data.onCancel,
334
+ isCanceled: event.data.isCanceled
335
+ };
336
+ }
337
+ return null;
338
+ }
339
+ }),
340
+ "setIsLegacy"
341
+ ],
342
+ on: makePollingOnHandlers("processing_authentication", "OAuth authentication failed", [
343
+ assign({
344
+ serverAuthStateResult: ({ event }) => {
345
+ var _a, _b, _c, _d;
346
+ const authState = ((_a = event.data) == null ? void 0 : _a.authState) || null;
347
+ return {
348
+ authState,
349
+ opts: {
350
+ sessionLookupId: (_b = event.data) == null ? void 0 : _b.sessionLookupId,
351
+ portalTheme: ((_c = event.data) == null ? void 0 : _c.portalTheme) || {},
352
+ useShortUrls: ((_d = event.data) == null ? void 0 : _d.useShortUrls) || false,
353
+ isFromExternalWallet: false
354
+ }
355
+ };
356
+ },
357
+ isNewUser: ({ event }) => {
358
+ var _a;
359
+ const authState = (_a = event.data) == null ? void 0 : _a.authState;
360
+ return authState ? computeIsNewUser(authState) : false;
361
+ }
362
+ })
363
+ ])
364
+ },
365
+ switching_external_wallet: {
366
+ invoke: {
367
+ src: "switchExternalWallet",
368
+ input: ({ event }) => {
369
+ if (event.type === "SWITCH_EXTERNAL_WALLET") {
370
+ return event.data;
371
+ }
372
+ throw new Error("Invalid event type for external wallet authentication");
373
+ },
374
+ onDone: [
375
+ {
376
+ target: "authenticated",
377
+ actions: [
378
+ assign({
379
+ externalWalletInfo: ({ event, context }) => {
380
+ var _a;
381
+ const output = event.output;
382
+ return __spreadValues({
383
+ externalWallet: __spreadValues(__spreadValues({}, output.externalWallet), (_a = context.externalWalletInfo) == null ? void 0 : _a.externalWallet)
384
+ }, context.externalWalletInfo);
385
+ }
386
+ })
387
+ ]
388
+ }
389
+ ],
390
+ onError: {
391
+ target: "error",
392
+ actions: setAuthErrorAssign("External wallet authentication failed")
393
+ }
394
+ },
395
+ on: {
396
+ CANCEL: { target: "unauthenticated", actions: ["resetState"] }
397
+ }
398
+ },
399
+ connecting_external_wallet: {
400
+ invoke: {
401
+ src: "connectExternalWallet",
402
+ input: ({ event }) => {
403
+ if (event.type === "CONNECT_EXTERNAL_WALLET") {
404
+ return event.data;
405
+ }
406
+ throw new Error("Invalid event type for external wallet authentication");
407
+ },
408
+ onDone: [
409
+ {
410
+ target: "authenticating_external_wallet",
411
+ actions: [
412
+ assign({
413
+ externalWalletInfo: ({ event }) => {
414
+ const output = event.output;
415
+ return output;
416
+ }
417
+ })
418
+ ]
419
+ }
420
+ ],
421
+ onError: {
422
+ target: "error",
423
+ actions: setAuthErrorAssign("External wallet authentication failed")
424
+ }
425
+ },
426
+ on: {
427
+ CANCEL: { target: "unauthenticated", actions: ["resetState"] }
428
+ }
429
+ },
430
+ authenticating_external_wallet: {
431
+ entry: [
432
+ assign({
433
+ externalWalletInfo: ({ event, context }) => {
434
+ var _a;
435
+ if (event.type === "AUTHENTICATE_EXTERNAL_WALLET" && ((_a = event.data) == null ? void 0 : _a.externalWallet)) {
436
+ const wallet = Array.isArray(event.data.externalWallet) ? event.data.externalWallet[0] : event.data.externalWallet;
437
+ return { externalWallet: wallet, chainId: event.data.chainId || "" };
438
+ }
439
+ return context.externalWalletInfo;
440
+ }
441
+ })
442
+ ],
443
+ invoke: {
444
+ src: "authenticateWithExternalWallet",
445
+ input: ({ event, context }) => {
446
+ if (event.type === "AUTHENTICATE_EXTERNAL_WALLET") {
447
+ return event.data;
448
+ }
449
+ if (context.externalWalletInfo) {
450
+ return context.externalWalletInfo;
451
+ }
452
+ throw new Error("No external wallet info available for authentication");
453
+ },
454
+ onDone: [
455
+ {
456
+ target: "processing_authentication",
457
+ actions: [setAuthResultAssign(true)]
458
+ }
459
+ ],
460
+ onError: {
461
+ target: "error",
462
+ actions: setAuthErrorAssign("External wallet authentication failed")
463
+ }
464
+ },
465
+ on: {
466
+ CANCEL: { target: "unauthenticated", actions: ["resetState"] }
467
+ }
468
+ },
469
+ authenticating_telegram_legacy: {
470
+ entry: [assign({ isLegacy: true })],
471
+ invoke: {
472
+ src: "authenticateWithTelegramLegacy",
473
+ input: ({ event }) => {
474
+ if (event.type === "AUTHENTICATE_TELEGRAM_LEGACY") {
475
+ return event.data;
476
+ }
477
+ throw new Error("Invalid event type for Telegram authentication");
478
+ },
479
+ onDone: [
480
+ {
481
+ target: "processing_authentication",
482
+ actions: [setAuthResultAssign()]
483
+ }
484
+ ],
485
+ onError: [
486
+ {
487
+ target: "unauthenticated",
488
+ guard: ({ event }) => isCancelError(event.error),
489
+ actions: ["resetState"]
490
+ },
491
+ {
492
+ target: "error",
493
+ actions: setAuthErrorAssign("Telegram authentication failed")
494
+ }
495
+ ]
496
+ }
497
+ },
498
+ authenticating_telegram: {
499
+ entry: [
500
+ assign({
501
+ pollingCallbacks: ({ event }) => {
502
+ if (event.type === "AUTHENTICATE_TELEGRAM") {
503
+ return {
504
+ isCanceled: event.data.isCanceled
505
+ };
506
+ }
507
+ return null;
508
+ },
509
+ isLegacy: false
510
+ })
511
+ ],
512
+ invoke: {
513
+ src: "authenticateWithTelegram",
514
+ input: ({ event }) => {
515
+ if (event.type === "AUTHENTICATE_TELEGRAM") {
516
+ return event.data;
517
+ }
518
+ throw new Error("Invalid event type for Telegram authentication");
519
+ },
520
+ onDone: [
521
+ {
522
+ target: "processing_authentication",
523
+ actions: [setAuthResultAssign()]
524
+ }
525
+ ],
526
+ onError: [
527
+ {
528
+ target: "unauthenticated",
529
+ guard: ({ event }) => isCancelError(event.error),
530
+ actions: ["resetState"]
531
+ },
532
+ {
533
+ target: "error",
534
+ actions: setAuthErrorAssign("Telegram authentication failed")
535
+ }
536
+ ]
537
+ }
538
+ },
539
+ authenticating_farcaster_legacy: {
540
+ entry: [
541
+ assign({
542
+ pollingCallbacks: ({ event }) => {
543
+ if (event.type === "AUTHENTICATE_FARCASTER_LEGACY") {
544
+ return {
545
+ onPoll: event.data.onPoll,
546
+ onCancel: event.data.onCancel,
547
+ isCanceled: event.data.isCanceled
548
+ };
549
+ }
550
+ return null;
551
+ }
552
+ }),
553
+ assign({ isLegacy: true })
554
+ ],
555
+ invoke: {
556
+ src: "authenticateWithFarcasterLegacy",
557
+ input: ({ event }) => {
558
+ if (event.type === "AUTHENTICATE_FARCASTER_LEGACY") {
559
+ return event.data;
560
+ }
561
+ throw new Error("Invalid event type for Farcaster authentication");
562
+ },
563
+ onDone: [
564
+ {
565
+ target: "waiting_for_farcaster",
566
+ guard: ({ event }) => {
567
+ const output = event.output;
568
+ return !output.authState;
569
+ }
570
+ },
571
+ {
572
+ target: "processing_authentication",
573
+ actions: [setAuthResultAssign()]
574
+ }
575
+ ],
576
+ onError: [
577
+ {
578
+ target: "unauthenticated",
579
+ guard: ({ event }) => isCancelError(event.error),
580
+ actions: ["resetState"]
581
+ },
582
+ {
583
+ target: "error",
584
+ actions: setAuthErrorAssign("Farcaster authentication failed")
585
+ }
586
+ ]
587
+ }
588
+ },
589
+ waiting_for_farcaster: {
590
+ invoke: {
591
+ src: "polling",
592
+ input: ({ context }) => {
593
+ var _a;
594
+ let farcasterAuthState = null;
595
+ return {
596
+ checkCondition: () => __async(this, null, function* () {
597
+ try {
598
+ const result = yield paraCoreInterface.pollingService.waitForFarcasterAuth({
599
+ onSuccess: (serverAuthState) => {
600
+ farcasterAuthState = serverAuthState;
601
+ }
602
+ })();
603
+ return __spreadProps(__spreadValues({}, result), {
604
+ data: {
605
+ authState: farcasterAuthState
606
+ }
607
+ });
608
+ } catch (error) {
609
+ throw new Error(`Farcaster polling failed: ${extractErrorMessage(error, "Unknown error")}`);
610
+ }
611
+ }),
612
+ onPoll: () => {
613
+ var _a2, _b;
614
+ return (_b = (_a2 = context.pollingCallbacks) == null ? void 0 : _a2.onPoll) == null ? void 0 : _b.call(_a2);
615
+ },
616
+ onCancel: () => {
617
+ var _a2, _b;
618
+ return (_b = (_a2 = context.pollingCallbacks) == null ? void 0 : _a2.onCancel) == null ? void 0 : _b.call(_a2);
619
+ },
620
+ isCanceled: ((_a = context.pollingCallbacks) == null ? void 0 : _a.isCanceled) || (() => false),
621
+ id: "waitingForFarcasterAuth"
622
+ };
623
+ },
624
+ onError: {
625
+ target: "error",
626
+ actions: setAuthErrorAssign("Session waiting failed")
627
+ }
628
+ },
629
+ on: makePollingOnHandlers("processing_authentication", "Session polling failed", [
630
+ assign({
631
+ serverAuthStateResult: ({ event, context }) => {
632
+ var _a, _b;
633
+ const authState = ((_a = event.data) == null ? void 0 : _a.authState) || null;
634
+ return {
635
+ authState,
636
+ opts: ((_b = context.serverAuthStateResult) == null ? void 0 : _b.opts) || DEFAULT_AUTH_OPTS
637
+ };
638
+ },
639
+ isNewUser: ({ event }) => {
640
+ var _a;
641
+ const authState = (_a = event.data) == null ? void 0 : _a.authState;
642
+ return authState ? computeIsNewUser(authState) : false;
643
+ }
644
+ })
645
+ ])
646
+ },
647
+ authenticating_farcaster: {
648
+ entry: [
649
+ assign({
650
+ pollingCallbacks: ({ event }) => {
651
+ if (event.type === "AUTHENTICATE_FARCASTER") {
652
+ return {
653
+ isCanceled: event.data.isCanceled
654
+ };
655
+ }
656
+ return null;
657
+ },
658
+ isLegacy: false
659
+ })
660
+ ],
661
+ invoke: {
662
+ src: "authenticateWithFarcaster",
663
+ input: ({ event }) => {
664
+ if (event.type === "AUTHENTICATE_FARCASTER") {
665
+ return event.data;
666
+ }
667
+ throw new Error("Invalid event type for Farcaster authentication");
668
+ },
669
+ onDone: [
670
+ {
671
+ target: "processing_authentication",
672
+ actions: [setAuthResultAssign()]
673
+ }
674
+ ],
675
+ onError: [
676
+ {
677
+ target: "unauthenticated",
678
+ guard: ({ event }) => isCancelError(event.error),
679
+ actions: ["resetState"]
680
+ },
681
+ {
682
+ target: "error",
683
+ actions: setAuthErrorAssign("Farcaster authentication failed")
684
+ }
685
+ ]
686
+ }
687
+ },
688
+ processing_authentication: {
689
+ entry: [{ type: "logTransition", params: { to: "processing_authentication" } }],
690
+ invoke: {
691
+ src: "processAuthentication",
692
+ input: ({ context }) => context.serverAuthStateResult,
693
+ onDone: [
694
+ {
695
+ target: "authenticated",
696
+ actions: [
697
+ "storeAuthStateResult",
698
+ { type: "logTransition", params: { to: "authenticated", detail: "external wallet, no full auth" } }
699
+ ],
700
+ guard: and([
701
+ ({ event }) => {
702
+ const output = event.output;
703
+ return !!output.externalWallet;
704
+ },
705
+ or([
706
+ ({ event }) => {
707
+ var _a;
708
+ const output = event.output;
709
+ return output.stage === "done" && !((_a = output.externalWallet) == null ? void 0 : _a.withFullParaAuth);
710
+ },
711
+ ({ event }) => {
712
+ var _a, _b;
713
+ const output = event.output;
714
+ return output.stage === "verify" && !((_a = output.externalWallet) == null ? void 0 : _a.withFullParaAuth) && !((_b = output.externalWallet) == null ? void 0 : _b.withVerification);
715
+ }
716
+ ])
717
+ ])
718
+ },
719
+ {
720
+ target: "verifying_external_wallet",
721
+ actions: [
722
+ "storeAuthStateResult",
723
+ {
724
+ type: "logTransition",
725
+ params: { to: "verifying_external_wallet", detail: "external wallet with verification" }
726
+ }
727
+ ],
728
+ guard: and([
729
+ ({ event }) => {
730
+ const output = event.output;
731
+ return !!output.externalWallet;
732
+ },
733
+ ({ event }) => {
734
+ var _a, _b;
735
+ const output = event.output;
736
+ return output.stage === "verify" && !((_a = output.externalWallet) == null ? void 0 : _a.withFullParaAuth) && ((_b = output.externalWallet) == null ? void 0 : _b.withVerification);
737
+ }
738
+ ])
739
+ },
740
+ {
741
+ target: "awaiting_wallet_signature",
742
+ actions: [
743
+ "storeAuthStateResult",
744
+ {
745
+ type: "logTransition",
746
+ params: { to: "awaiting_wallet_signature", detail: "external wallet with full auth" }
747
+ }
748
+ ],
749
+ guard: and([
750
+ ({ event }) => {
751
+ const output = event.output;
752
+ return !!output.externalWallet;
753
+ },
754
+ ({ event }) => {
755
+ var _a;
756
+ const output = event.output;
757
+ return output.stage === "verify" && !!((_a = output.externalWallet) == null ? void 0 : _a.withFullParaAuth);
758
+ }
759
+ ])
760
+ },
761
+ {
762
+ target: "awaiting_account_verification",
763
+ actions: [
764
+ "storeAuthStateResult",
765
+ { type: "logTransition", params: { to: "awaiting_account_verification", detail: "non-enclave verify" } }
766
+ ],
767
+ guard: and([
768
+ ({ event }) => {
769
+ var _a;
770
+ const output = event.output;
771
+ return output.stage === "verify" && !((_a = output.externalWallet) == null ? void 0 : _a.withFullParaAuth);
772
+ },
773
+ () => !paraCoreInterface.authService.isEnclaveUser
774
+ ])
775
+ },
776
+ {
777
+ target: "awaiting_session_start",
778
+ actions: [
779
+ "storeAuthStateResult",
780
+ { type: "logTransition", params: { to: "awaiting_session_start", detail: "default route" } }
781
+ ]
782
+ }
783
+ ],
784
+ onError: {
785
+ target: "error",
786
+ actions: setAuthErrorAssign("Authentication processing failed")
787
+ }
788
+ }
789
+ },
790
+ awaiting_wallet_signature: {
791
+ on: {
792
+ SIGN_EXTERNAL_WALLET_VERIFICATION: {
793
+ target: "signing_external_wallet_verification",
794
+ actions: ["resetError"]
795
+ },
796
+ CANCEL: { target: "unauthenticated", actions: ["resetState"] }
797
+ }
798
+ },
799
+ awaiting_wallet_verification: {
800
+ on: {
801
+ VERIFY_EXTERNAL_WALLET: {
802
+ target: "verifying_external_wallet",
803
+ actions: ["resetError"]
804
+ },
805
+ CANCEL: { target: "unauthenticated", actions: ["resetState"] }
806
+ }
807
+ },
808
+ awaiting_account_verification: {
809
+ on: {
810
+ VERIFY_NEW_ACCOUNT: {
811
+ target: "verifying_new_account",
812
+ guard: and(["authStageIsVerify", () => !paraCoreInterface.authService.isEnclaveUser]),
813
+ actions: ["resetError"]
814
+ },
815
+ CANCEL: { target: "unauthenticated", actions: ["resetState"] }
816
+ }
817
+ },
818
+ awaiting_session_start: {
819
+ on: {
820
+ WAIT_FOR_SESSION: {
821
+ target: "waiting_for_session",
822
+ actions: ["setPollingCallbacks", "setSessionOptions", "resetError"]
823
+ },
824
+ WAIT_FOR_WALLET_CREATION: {
825
+ target: "waiting_for_session",
826
+ actions: ["setPollingCallbacks", "setAutoCreate", "resetError"]
827
+ },
828
+ CANCEL: { target: "unauthenticated", actions: ["resetState"] }
829
+ }
830
+ },
831
+ verifying_new_account: {
832
+ invoke: {
833
+ src: "verifyNewAccount",
834
+ input: ({ event }) => {
835
+ if (event.type === "VERIFY_NEW_ACCOUNT") {
836
+ return event.data;
837
+ }
838
+ throw new Error("Invalid event type for new account verification");
839
+ },
840
+ onDone: {
841
+ target: "processing_authentication",
842
+ actions: ["resetRetryAttempts", setServerAuthStateAssign()]
843
+ },
844
+ onError: [
845
+ {
846
+ target: "awaiting_account_verification",
847
+ guard: "canRetryNewAccount",
848
+ actions: [
849
+ {
850
+ type: "incrementRetryAttempt",
851
+ params: { type: "newAccountVerification" }
852
+ },
853
+ setAuthErrorAssign("Account verification failed")
854
+ ]
855
+ },
856
+ {
857
+ target: "error",
858
+ actions: assign({
859
+ error: ({ event, context }) => {
860
+ var _a;
861
+ return (((_a = context.retryAttempts) == null ? void 0 : _a.newAccountVerification) || 0) >= 3 ? new Error("Account verification failed after max retries") : formatStateError(event.error, "Account verification failed");
862
+ }
863
+ })
864
+ }
865
+ ]
866
+ }
867
+ },
868
+ verifying_external_wallet: {
869
+ invoke: {
870
+ src: "verifyExternalWallet",
871
+ input: ({ event, context }) => {
872
+ var _a, _b;
873
+ if (event.type === "VERIFY_EXTERNAL_WALLET" && event.data) {
874
+ return event.data;
875
+ }
876
+ if (context.externalWalletInfo) {
877
+ const signatureVerificationMessage = (_b = (_a = context.authStateResult) == null ? void 0 : _a.signatureVerificationMessage) != null ? _b : "";
878
+ if (!signatureVerificationMessage) {
879
+ throw new Error("No signature verification message provided by server for external wallet verification");
880
+ }
881
+ return __spreadProps(__spreadValues({}, context.externalWalletInfo), {
882
+ signatureVerificationMessage
883
+ });
884
+ }
885
+ throw new Error("No external wallet info available for verification. Logout and try again.");
886
+ },
887
+ onDone: {
888
+ target: "processing_authentication",
889
+ actions: ["resetRetryAttempts", setServerAuthStateAssign(true)]
890
+ },
891
+ onError: [
892
+ {
893
+ target: "awaiting_wallet_verification",
894
+ guard: "canRetryExternalWallet",
895
+ actions: [
896
+ {
897
+ type: "incrementRetryAttempt",
898
+ params: { type: "externalWalletVerification" }
899
+ },
900
+ setAuthErrorAssign("External wallet verification failed")
901
+ ]
902
+ },
903
+ {
904
+ target: "error",
905
+ actions: assign({
906
+ error: ({ event, context }) => context.retryAttempts.externalWalletVerification >= 3 ? new Error("External wallet verification failed after max retries") : formatStateError(event.error, "External wallet verification failed")
907
+ })
908
+ }
909
+ ]
910
+ }
911
+ },
912
+ signing_external_wallet_verification: {
913
+ invoke: {
914
+ src: "signExternalWalletVerification",
915
+ input: ({ event, context }) => {
916
+ var _a;
917
+ if (event.type === "SIGN_EXTERNAL_WALLET_VERIFICATION") {
918
+ return __spreadProps(__spreadValues({}, event.data), { externalWallet: (_a = context.externalWalletInfo) == null ? void 0 : _a.externalWallet });
919
+ }
920
+ throw new Error("Invalid event type for external wallet verification");
921
+ },
922
+ onDone: {
923
+ target: "awaiting_wallet_verification",
924
+ actions: [
925
+ "resetRetryAttempts",
926
+ assign({
927
+ externalWalletSignVerification: ({ event }) => {
928
+ return event.output;
929
+ }
930
+ })
931
+ ]
932
+ },
933
+ onError: [
934
+ {
935
+ target: "awaiting_wallet_signature",
936
+ guard: "canRetryExternalWallet",
937
+ actions: [
938
+ {
939
+ type: "incrementRetryAttempt",
940
+ params: { type: "externalWalletVerification" }
941
+ },
942
+ setAuthErrorAssign("External wallet verification failed")
943
+ ]
944
+ },
945
+ {
946
+ target: "error",
947
+ actions: assign({
948
+ error: ({ event, context }) => context.retryAttempts.externalWalletVerification >= 3 ? new Error("External wallet verification failed after max retries") : formatStateError(event.error, "External wallet verification failed")
949
+ })
950
+ }
951
+ ]
952
+ },
953
+ on: {
954
+ CANCEL: { target: "unauthenticated", actions: ["resetState"] }
955
+ }
956
+ },
957
+ waiting_for_session: {
958
+ invoke: {
959
+ src: "polling",
960
+ input: ({ context }) => {
961
+ var _a;
962
+ return {
963
+ init: () => __async(this, null, function* () {
964
+ try {
965
+ yield paraCoreInterface.sessionManagementService.touchSession();
966
+ if (!paraCoreInterface.authService.isExternalWalletAuth) {
967
+ paraCoreInterface.devLog("[waitingForSession] Clearing external wallets");
968
+ paraCoreInterface.externalWalletService.externalWallets = {};
969
+ }
970
+ } catch (error) {
971
+ throw new Error(`Session touch failed: ${extractErrorMessage(error, "Unknown error")}`);
972
+ }
973
+ }),
974
+ checkCondition: () => __async(this, null, function* () {
975
+ try {
976
+ return yield paraCoreInterface.pollingService.waitForSession();
977
+ } catch (error) {
978
+ throw new Error(`Session polling failed: ${extractErrorMessage(error, "Unknown error")}`);
979
+ }
980
+ }),
981
+ onPoll: () => {
982
+ var _a2, _b;
983
+ return (_b = (_a2 = context.pollingCallbacks) == null ? void 0 : _a2.onPoll) == null ? void 0 : _b.call(_a2);
984
+ },
985
+ onCancel: () => {
986
+ var _a2, _b;
987
+ return (_b = (_a2 = context.pollingCallbacks) == null ? void 0 : _a2.onCancel) == null ? void 0 : _b.call(_a2);
988
+ },
989
+ isCanceled: ((_a = context.pollingCallbacks) == null ? void 0 : _a.isCanceled) || (() => false),
990
+ id: "waitingForSession"
991
+ };
992
+ },
993
+ onError: {
994
+ target: "error",
995
+ actions: setAuthErrorAssign("Session waiting failed")
996
+ }
997
+ },
998
+ entry: ["setPollingCallbacks", { type: "logTransition", params: { to: "waiting_for_session" } }],
999
+ on: makePollingOnHandlers("authenticated", "Session polling failed")
1000
+ },
1001
+ authenticated: {
1002
+ entry: [
1003
+ { type: "logTransition", params: { to: "authenticated" } },
1004
+ sendTo(({ context }) => context.coreRef, {
1005
+ type: "AUTHENTICATED"
1006
+ }),
1007
+ ({ context }) => {
1008
+ if (context.isNewUser) {
1009
+ dispatchEvent(ParaEvent.ACCOUNT_CREATION_EVENT, true);
1010
+ }
1011
+ }
1012
+ ],
1013
+ on: {
1014
+ SWITCH_EXTERNAL_WALLET: {
1015
+ target: "switching_external_wallet",
1016
+ guard: and([() => paraCoreInterface.externalWalletService.externalWalletConnectionType !== "NONE"])
1017
+ }
1018
+ }
1019
+ },
1020
+ error: {
1021
+ entry: [
1022
+ ({ context }) => {
1023
+ var _a;
1024
+ paraCoreInterface.devLog(`[auth] \u2192 error: ${((_a = context.error) == null ? void 0 : _a.message) || "unknown"}`);
1025
+ }
1026
+ ],
1027
+ on: __spreadProps(__spreadValues({}, makeErrorTransitions(AUTH_RESTART_TRANSITIONS)), {
1028
+ RESET: {
1029
+ target: "unauthenticated",
1030
+ actions: "resetState"
1031
+ }
1032
+ })
1033
+ }
1034
+ }
1035
+ });
1036
+ }
1037
+ export {
1038
+ createAuthStateMachine
1039
+ };