@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,343 @@
1
+ import {
2
+ __async
3
+ } from "../../chunk-7B52C2XE.js";
4
+ import { assign, fromPromise, setup } from "xstate";
5
+ import { createAuthStateMachine } from "./authStateMachine.js";
6
+ import { createWalletStateMachine } from "./walletStateMachine.js";
7
+ import { createSetupParaActor } from "../actors/setupPara.js";
8
+ import { createWaitForExternalWalletProvidersActor } from "../actors/waitForExternalWalletProviders.js";
9
+ import { dispatchEvent } from "../../utils/events.js";
10
+ import { ParaEvent } from "../../index.js";
11
+ function createCoreStateMachine(paraCoreInterface) {
12
+ return setup({
13
+ types: {
14
+ context: {}
15
+ },
16
+ actors: {
17
+ setupPara: createSetupParaActor(paraCoreInterface),
18
+ waitForExternalWalletProviders: createWaitForExternalWalletProvidersActor(paraCoreInterface),
19
+ authMachine: createAuthStateMachine(paraCoreInterface),
20
+ walletMachine: createWalletStateMachine(paraCoreInterface),
21
+ logoutPara: fromPromise(() => __async(this, null, function* () {
22
+ yield paraCoreInterface.logout();
23
+ }))
24
+ },
25
+ actions: {
26
+ spawnAuthMachine: assign({
27
+ authMachineRef: ({ spawn, self }) => {
28
+ paraCoreInterface.devLog("[core] Spawning auth machine");
29
+ return spawn("authMachine", { input: { coreRef: self } });
30
+ }
31
+ }),
32
+ spawnWalletMachine: assign(({ context, spawn }) => {
33
+ var _a, _b, _c, _d;
34
+ const authMachineSnapshot = context.authMachineRef.getSnapshot();
35
+ const authData = authMachineSnapshot.context;
36
+ const previousWalletSnapshot = (_b = (_a = context.walletMachineRef) == null ? void 0 : _a.getSnapshot) == null ? void 0 : _b.call(_a);
37
+ const previousWalletsResult = (_d = (_c = previousWalletSnapshot == null ? void 0 : previousWalletSnapshot.context) == null ? void 0 : _c.newWalletsResult) != null ? _d : null;
38
+ paraCoreInterface.devLog("[core] Spawning wallet machine");
39
+ return {
40
+ walletMachineRef: spawn("walletMachine", {
41
+ input: {
42
+ shouldAutoCreateWallets: (authData == null ? void 0 : authData.shouldAutoCreateWallets) || false,
43
+ authStateResult: authData == null ? void 0 : authData.authStateResult,
44
+ isNewUser: authData == null ? void 0 : authData.isNewUser,
45
+ isGuestMode: authMachineSnapshot.value === "guest_mode",
46
+ skipSessionRefreshOnSetup: (authData == null ? void 0 : authData.skipSessionRefreshOnSetup) || false,
47
+ previousWalletsResult
48
+ }
49
+ })
50
+ };
51
+ }),
52
+ clearWalletMachine: assign({
53
+ walletMachineRef: null
54
+ }),
55
+ clearState: assign({
56
+ authMachineRef: null,
57
+ walletMachineRef: null,
58
+ error: null,
59
+ setupRetryCount: 0,
60
+ lastErrorSource: null
61
+ }),
62
+ clearErrors: assign({
63
+ error: null
64
+ }),
65
+ setError: assign({
66
+ error: ({ event }) => event.error || new Error("An error occurred")
67
+ }),
68
+ setIsReady: assign({
69
+ isReady: true
70
+ }),
71
+ dispatchAuthenticatedEvent: ({ context }) => {
72
+ if (!context.authMachineRef.getSnapshot().context.isNewUser) {
73
+ dispatchEvent(ParaEvent.LOGIN_EVENT, true);
74
+ return;
75
+ }
76
+ dispatchEvent(ParaEvent.ACCOUNT_SETUP_EVENT, true);
77
+ }
78
+ }
79
+ }).createMachine({
80
+ id: "para",
81
+ initial: "setting_up",
82
+ context: {
83
+ authMachineRef: null,
84
+ walletMachineRef: null,
85
+ error: null,
86
+ isReady: false,
87
+ setupRetryCount: 0,
88
+ lastErrorSource: null
89
+ },
90
+ states: {
91
+ setting_up: {
92
+ invoke: {
93
+ src: "setupPara",
94
+ onDone: [
95
+ {
96
+ target: "waiting_for_external_wallet_providers",
97
+ guard: () => Object.keys(paraCoreInterface.externalWalletService.externalWallets).length > 0
98
+ },
99
+ {
100
+ target: "auth_flow",
101
+ actions: ["spawnAuthMachine", "setIsReady"]
102
+ }
103
+ ],
104
+ onError: { target: "error" }
105
+ }
106
+ },
107
+ waiting_for_external_wallet_providers: {
108
+ invoke: {
109
+ src: "waitForExternalWalletProviders",
110
+ onDone: [
111
+ {
112
+ target: "error",
113
+ guard: ({ event, context }) => event.output === false && context.setupRetryCount >= 2,
114
+ actions: assign({
115
+ error: () => new Error("External wallet providers failed to load after multiple attempts")
116
+ })
117
+ },
118
+ {
119
+ target: "setting_up",
120
+ guard: ({ event }) => event.output === false,
121
+ actions: assign({
122
+ authMachineRef: null,
123
+ walletMachineRef: null,
124
+ isReady: false,
125
+ error: null,
126
+ setupRetryCount: ({ context }) => context.setupRetryCount + 1
127
+ })
128
+ },
129
+ {
130
+ target: "auth_flow",
131
+ guard: ({ event }) => event.output === true,
132
+ actions: ["spawnAuthMachine", "setIsReady"]
133
+ }
134
+ ],
135
+ onError: { target: "error" }
136
+ }
137
+ },
138
+ auth_flow: {
139
+ on: {
140
+ // Forward events to auth machine
141
+ "AUTHENTICATE_EMAIL_PHONE": {
142
+ actions: ({ context, event }) => context.authMachineRef.send(event)
143
+ },
144
+ "AUTHENTICATE_OAUTH": {
145
+ actions: ({ context, event }) => context.authMachineRef.send(event)
146
+ },
147
+ "AUTHENTICATE_EXTERNAL_WALLET": {
148
+ actions: ({ context, event }) => context.authMachineRef.send(event)
149
+ },
150
+ "CONNECT_EXTERNAL_WALLET": {
151
+ actions: ({ context, event }) => context.authMachineRef.send(event)
152
+ },
153
+ "AUTHENTICATE_TELEGRAM": {
154
+ actions: ({ context, event }) => context.authMachineRef.send(event)
155
+ },
156
+ "AUTHENTICATE_TELEGRAM_LEGACY": {
157
+ actions: ({ context, event }) => context.authMachineRef.send(event)
158
+ },
159
+ "AUTHENTICATE_FARCASTER": {
160
+ actions: ({ context, event }) => context.authMachineRef.send(event)
161
+ },
162
+ "AUTHENTICATE_FARCASTER_LEGACY": {
163
+ actions: ({ context, event }) => context.authMachineRef.send(event)
164
+ },
165
+ "VERIFY_NEW_ACCOUNT": {
166
+ actions: ({ context, event }) => context.authMachineRef.send(event)
167
+ },
168
+ "VERIFY_EXTERNAL_WALLET": {
169
+ actions: ({ context, event }) => context.authMachineRef.send(event)
170
+ },
171
+ "SIGN_EXTERNAL_WALLET_VERIFICATION": {
172
+ actions: ({ context, event }) => context.authMachineRef.send(event)
173
+ },
174
+ "WAIT_FOR_SESSION": {
175
+ actions: ({ context, event }) => context.authMachineRef.send(event)
176
+ },
177
+ // During auth_flow, WAIT_FOR_WALLET_CREATION is forwarded to the auth machine
178
+ // where it signals wallet readiness on the auth side. During wallet_flow (below),
179
+ // the same event is forwarded to the wallet machine to trigger actual wallet creation.
180
+ "WAIT_FOR_WALLET_CREATION": {
181
+ actions: ({ context, event }) => context.authMachineRef.send(event)
182
+ },
183
+ "INITIALIZE_GUEST_MODE": {
184
+ actions: ({ context, event }) => context.authMachineRef.send(event)
185
+ },
186
+ "SESSION_IMPORTED": {
187
+ actions: ({ context, event }) => context.authMachineRef.send(event)
188
+ },
189
+ "CANCEL": {
190
+ actions: ({ context, event }) => context.authMachineRef.send(event)
191
+ },
192
+ // Pass logout event through to reset auth flow
193
+ "LOGOUT": {
194
+ target: "logging_out"
195
+ },
196
+ // Listen for auth machine authenticated
197
+ "AUTHENTICATED": [
198
+ {
199
+ guard: ({ context }) => context.walletMachineRef === null,
200
+ target: "wallet_flow",
201
+ actions: "spawnWalletMachine"
202
+ }
203
+ ],
204
+ // Listen for auth machine in guest mode
205
+ "GUEST_MODE": [
206
+ {
207
+ guard: ({ context }) => context.walletMachineRef === null,
208
+ target: "wallet_flow",
209
+ actions: "spawnWalletMachine"
210
+ }
211
+ ],
212
+ // Handle auth machine errors
213
+ "xstate.error.actor.*": {
214
+ guard: ({ event, context }) => event.actorId === context.authMachineRef.id,
215
+ target: "error",
216
+ actions: "setError"
217
+ }
218
+ }
219
+ },
220
+ wallet_flow: {
221
+ on: {
222
+ // Forward wallet events
223
+ "WAIT_FOR_WALLET_CREATION": {
224
+ actions: ({ context, event }) => context.walletMachineRef.send(event)
225
+ },
226
+ "LOGOUT": {
227
+ target: "logging_out"
228
+ },
229
+ // Listen for wallet machine completion
230
+ "xstate.done.actor.*": [
231
+ {
232
+ target: "guest_mode",
233
+ guard: ({ event, context }) => {
234
+ const isWalletMachine = event.actorId === context.walletMachineRef.id;
235
+ const walletSnapshot = context.walletMachineRef.getSnapshot();
236
+ const isGuestMode = walletSnapshot.value === "guest_mode";
237
+ return isWalletMachine && isGuestMode;
238
+ }
239
+ },
240
+ {
241
+ target: "authenticated",
242
+ guard: ({ event, context }) => {
243
+ const isWalletMachine = event.actorId === context.walletMachineRef.id;
244
+ const walletSnapshot = context.walletMachineRef.getSnapshot();
245
+ const isDone = walletSnapshot.value === "wallets_ready" || walletSnapshot.value === "no_wallets_needed";
246
+ return isWalletMachine && isDone;
247
+ }
248
+ },
249
+ {
250
+ target: "error",
251
+ guard: ({ event, context }) => {
252
+ const isWalletMachine = event.actorId === context.walletMachineRef.id;
253
+ if (!isWalletMachine) return false;
254
+ const walletSnapshot = context.walletMachineRef.getSnapshot();
255
+ const hasError = walletSnapshot.value === "error";
256
+ return hasError;
257
+ },
258
+ actions: assign({
259
+ error: ({ context }) => {
260
+ var _a;
261
+ const walletSnapshot = context.walletMachineRef.getSnapshot();
262
+ return ((_a = walletSnapshot.context) == null ? void 0 : _a.error) || new Error("Wallet setup failed");
263
+ },
264
+ lastErrorSource: () => "wallet"
265
+ })
266
+ }
267
+ ],
268
+ // Handle wallet machine errors
269
+ "xstate.error.actor.*": {
270
+ guard: ({ event, context }) => event.actorId === context.walletMachineRef.id,
271
+ target: "error",
272
+ actions: ["setError", assign({ lastErrorSource: () => "wallet" })]
273
+ }
274
+ }
275
+ },
276
+ authenticated: {
277
+ entry: ["dispatchAuthenticatedEvent"],
278
+ on: {
279
+ LOGOUT: {
280
+ target: "logging_out"
281
+ },
282
+ SWITCH_EXTERNAL_WALLET: {
283
+ actions: ({ context, event }) => context.authMachineRef.send(event)
284
+ }
285
+ }
286
+ },
287
+ guest_mode: {
288
+ on: {
289
+ LOGOUT: {
290
+ target: "logging_out"
291
+ },
292
+ AUTHENTICATE_EMAIL_PHONE: {
293
+ actions: ["clearWalletMachine", ({ context, event }) => context.authMachineRef.send(event)]
294
+ },
295
+ AUTHENTICATE_OAUTH: {
296
+ actions: ["clearWalletMachine", ({ context, event }) => context.authMachineRef.send(event)]
297
+ },
298
+ WAIT_FOR_SESSION: {
299
+ actions: ({ context, event }) => context.authMachineRef.send(event)
300
+ },
301
+ // Listen for auth machine authenticated
302
+ AUTHENTICATED: [
303
+ {
304
+ guard: ({ context }) => context.walletMachineRef === null,
305
+ target: "wallet_flow",
306
+ actions: "spawnWalletMachine"
307
+ }
308
+ ]
309
+ }
310
+ },
311
+ logging_out: {
312
+ entry: ["clearState"],
313
+ invoke: {
314
+ src: "logoutPara",
315
+ onDone: {
316
+ target: "auth_flow",
317
+ actions: ["spawnAuthMachine", "setIsReady"]
318
+ },
319
+ onError: {
320
+ // Still proceed even if logout fails
321
+ target: "auth_flow",
322
+ actions: ["spawnAuthMachine", "setIsReady"]
323
+ }
324
+ }
325
+ },
326
+ error: {
327
+ on: {
328
+ LOGOUT: {
329
+ target: "logging_out"
330
+ },
331
+ RETRY_WALLET_FLOW: {
332
+ target: "wallet_flow",
333
+ guard: ({ context }) => context.lastErrorSource === "wallet",
334
+ actions: ["clearErrors", "spawnWalletMachine"]
335
+ }
336
+ }
337
+ }
338
+ }
339
+ });
340
+ }
341
+ export {
342
+ createCoreStateMachine
343
+ };