@n1xyz/wallet-widget 0.0.33-alpha.1 → 0.0.33-alpha.3

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 (137) hide show
  1. package/dist/animations/N1Loader.js +14 -8
  2. package/dist/animations/N1Loader.js.map +1 -1
  3. package/dist/animations/Processing.js +14 -8
  4. package/dist/animations/Processing.js.map +1 -1
  5. package/dist/components/LoadingFallback.js +6 -2
  6. package/dist/components/LoadingFallback.js.map +1 -1
  7. package/dist/components/Logo.js +25 -22
  8. package/dist/components/Logo.js.map +1 -1
  9. package/dist/components/N1ConnectButton.js +18 -12
  10. package/dist/components/N1ConnectButton.js.map +1 -1
  11. package/dist/components/logos/ArbitrumLogo.js +7 -3
  12. package/dist/components/logos/ArbitrumLogo.js.map +1 -1
  13. package/dist/components/logos/BaseLogo.js +7 -3
  14. package/dist/components/logos/BaseLogo.js.map +1 -1
  15. package/dist/components/logos/BeraLogo.js +7 -3
  16. package/dist/components/logos/BeraLogo.js.map +1 -1
  17. package/dist/components/logos/BitcoinLogo.js +7 -3
  18. package/dist/components/logos/BitcoinLogo.js.map +1 -1
  19. package/dist/components/logos/EthereumLogo.js +7 -3
  20. package/dist/components/logos/EthereumLogo.js.map +1 -1
  21. package/dist/components/logos/HyperliquidLogo.js +7 -3
  22. package/dist/components/logos/HyperliquidLogo.js.map +1 -1
  23. package/dist/components/logos/OptimismLogo.js +7 -3
  24. package/dist/components/logos/OptimismLogo.js.map +1 -1
  25. package/dist/components/logos/SolanaLogo.js +7 -3
  26. package/dist/components/logos/SolanaLogo.js.map +1 -1
  27. package/dist/components/logos/ZeroOneLogo.js +7 -3
  28. package/dist/components/logos/ZeroOneLogo.js.map +1 -1
  29. package/dist/components/logos/index.js +25 -9
  30. package/dist/components/logos/index.js.map +1 -1
  31. package/dist/config/solana.js +7 -3
  32. package/dist/config/solana.js.map +1 -1
  33. package/dist/config.js +5 -2
  34. package/dist/config.js.map +1 -1
  35. package/dist/context/n1-wallet-context.js +8 -4
  36. package/dist/context/n1-wallet-context.js.map +1 -1
  37. package/dist/errors/types.js +6 -3
  38. package/dist/errors/types.js.map +1 -1
  39. package/dist/features/onboarding-flow/N1WalletModal.js +59 -23
  40. package/dist/features/onboarding-flow/N1WalletModal.js.map +1 -1
  41. package/dist/features/onboarding-flow/OnboardingFlow.js +50 -46
  42. package/dist/features/onboarding-flow/OnboardingFlow.js.map +1 -1
  43. package/dist/features/onboarding-flow/components/ChainButton.js +7 -4
  44. package/dist/features/onboarding-flow/components/ChainButton.js.map +1 -1
  45. package/dist/features/onboarding-flow/components/Header.js +15 -11
  46. package/dist/features/onboarding-flow/components/Header.js.map +1 -1
  47. package/dist/features/onboarding-flow/components/ImageWithFallback.js +10 -6
  48. package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +1 -1
  49. package/dist/features/onboarding-flow/components/TransactionTable.js +13 -10
  50. package/dist/features/onboarding-flow/components/TransactionTable.js.map +1 -1
  51. package/dist/features/onboarding-flow/components/WaitingMessage.js +14 -8
  52. package/dist/features/onboarding-flow/components/WaitingMessage.js.map +1 -1
  53. package/dist/features/onboarding-flow/components/index.js +21 -5
  54. package/dist/features/onboarding-flow/components/index.js.map +1 -1
  55. package/dist/features/onboarding-flow/index.js +5 -1
  56. package/dist/features/onboarding-flow/index.js.map +1 -1
  57. package/dist/features/onboarding-flow/providers/DepositFlowProvider.js +60 -55
  58. package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -1
  59. package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js +48 -43
  60. package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -1
  61. package/dist/features/onboarding-flow/providers/StateProvider.js +11 -7
  62. package/dist/features/onboarding-flow/providers/StateProvider.js.map +1 -1
  63. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +74 -69
  64. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -1
  65. package/dist/features/onboarding-flow/providers/debug.js +21 -18
  66. package/dist/features/onboarding-flow/providers/debug.js.map +1 -1
  67. package/dist/features/onboarding-flow/providers/index.js +16 -5
  68. package/dist/features/onboarding-flow/providers/index.js.map +1 -1
  69. package/dist/features/onboarding-flow/providers/onboardingStateMachine.js +20 -15
  70. package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -1
  71. package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js +11 -8
  72. package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -1
  73. package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js +38 -34
  74. package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js.map +1 -1
  75. package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js +51 -47
  76. package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js.map +1 -1
  77. package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js +12 -8
  78. package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js.map +1 -1
  79. package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js +28 -25
  80. package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js.map +1 -1
  81. package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js +13 -10
  82. package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js.map +1 -1
  83. package/dist/features/onboarding-flow/screens/07-ErrorScreen.js +10 -7
  84. package/dist/features/onboarding-flow/screens/07-ErrorScreen.js.map +1 -1
  85. package/dist/features/onboarding-flow/screens/index.js +23 -7
  86. package/dist/features/onboarding-flow/screens/index.js.map +1 -1
  87. package/dist/features/onboarding-flow/types.js +6 -3
  88. package/dist/features/onboarding-flow/types.js.map +1 -1
  89. package/dist/features/onboarding-flow/utils/depositStorage.js +8 -3
  90. package/dist/features/onboarding-flow/utils/depositStorage.js.map +1 -1
  91. package/dist/features/onboarding-flow/utils/imageUtils.js +9 -3
  92. package/dist/features/onboarding-flow/utils/imageUtils.js.map +1 -1
  93. package/dist/features/onboarding-flow/utils/nordUser.js +38 -2
  94. package/dist/features/onboarding-flow/utils/nordUser.js.map +1 -1
  95. package/dist/features/onboarding-flow/utils/nordUtils.js +12 -5
  96. package/dist/features/onboarding-flow/utils/nordUtils.js.map +1 -1
  97. package/dist/features/onboarding-flow/utils/session.js +17 -14
  98. package/dist/features/onboarding-flow/utils/session.js.map +1 -1
  99. package/dist/features/onboarding-flow/utils/transaction.js +4 -1
  100. package/dist/features/onboarding-flow/utils/transaction.js.map +1 -1
  101. package/dist/features/onboarding-flow/utils/utils.js +16 -8
  102. package/dist/features/onboarding-flow/utils/utils.js.map +1 -1
  103. package/dist/features/onboarding-flow/utils/withImageFallback.js +15 -9
  104. package/dist/features/onboarding-flow/utils/withImageFallback.js.map +1 -1
  105. package/dist/hooks/index.js +18 -2
  106. package/dist/hooks/index.js.map +1 -1
  107. package/dist/hooks/useN1Wallet.js +10 -6
  108. package/dist/hooks/useN1Wallet.js.map +1 -1
  109. package/dist/hooks/useNordUserInitialization.js +34 -31
  110. package/dist/hooks/useNordUserInitialization.js.map +1 -1
  111. package/dist/index.js +21 -7
  112. package/dist/index.js.map +1 -1
  113. package/dist/polyfills/windowEthereumGuard.js +2 -1
  114. package/dist/polyfills/windowEthereumGuard.js.map +1 -1
  115. package/dist/providers/LazyWalletProvider.js +74 -38
  116. package/dist/providers/LazyWalletProvider.js.map +1 -1
  117. package/dist/providers/N1WalletProvider.js +109 -70
  118. package/dist/providers/N1WalletProvider.js.map +1 -1
  119. package/dist/providers/ShadowRootWrapper.js +10 -4
  120. package/dist/providers/ShadowRootWrapper.js.map +1 -1
  121. package/dist/providers/WalletErrorBoundary.js +11 -6
  122. package/dist/providers/WalletErrorBoundary.js.map +1 -1
  123. package/dist/styles/embedded-main-css.js +3 -1
  124. package/dist/styles/embedded-main-css.js.map +1 -1
  125. package/dist/types/wallet.js +7 -4
  126. package/dist/types/wallet.js.map +1 -1
  127. package/dist/utils/ed25519.js +20 -14
  128. package/dist/utils/ed25519.js.map +1 -1
  129. package/dist/utils/getPseudoName.js +10 -7
  130. package/dist/utils/getPseudoName.js.map +1 -1
  131. package/dist/utils/logger.js +5 -3
  132. package/dist/utils/logger.js.map +1 -1
  133. package/dist/utils/shortenString.js +6 -2
  134. package/dist/utils/shortenString.js.map +1 -1
  135. package/dist/utils/words.js +4 -1
  136. package/dist/utils/words.js.map +1 -1
  137. package/package.json +1 -2
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -34,36 +35,38 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
34
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
36
  }
36
37
  };
37
- import { jsx as _jsx } from "react/jsx-runtime";
38
- import { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
39
- import { useN1WalletContext, useN1WalletInternalContext } from '../../../hooks';
40
- import { logger } from '../../../utils/logger';
41
- import { OnboardingStep, initialOnboardingContext } from '../types';
42
- import { useOnboardingState } from './OnboardingStateProvider';
43
- import { clearLastDepositRecord, readLastDepositRecord } from '../utils/depositStorage';
44
- import { N1ModalViewMode } from '../../../types/wallet';
45
- import { removeKeysFromLocalStorage } from '../utils/utils';
46
- export var FLOW_STATE_STORAGE_KEY = 'n1_wallet_connection_flow_state';
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.useWalletConnection = exports.WalletConnectionProvider = exports.FLOW_STATE_STORAGE_KEY = void 0;
40
+ var jsx_runtime_1 = require("react/jsx-runtime");
41
+ var react_1 = require("react");
42
+ var hooks_1 = require("../../../hooks");
43
+ var logger_1 = require("../../../utils/logger");
44
+ var types_1 = require("../types");
45
+ var OnboardingStateProvider_1 = require("./OnboardingStateProvider");
46
+ var depositStorage_1 = require("../utils/depositStorage");
47
+ var wallet_1 = require("../../../types/wallet");
48
+ var utils_1 = require("../utils/utils");
49
+ exports.FLOW_STATE_STORAGE_KEY = 'n1_wallet_connection_flow_state';
47
50
  // Create the context with a default value
48
- var WalletConnectionContext = createContext(undefined);
51
+ var WalletConnectionContext = (0, react_1.createContext)(undefined);
49
52
  /**
50
53
  * Provider component for the wallet connection context
51
54
  */
52
- export var WalletConnectionProvider = function (_a) {
55
+ var WalletConnectionProvider = function (_a) {
53
56
  var children = _a.children;
54
- var _b = useN1WalletContext(), nord = _b.nord, nordUser = _b.nordUser, address = _b.address, setShowLogin = _b.setShowLogin, showLogin = _b.showLogin;
55
- var _c = useN1WalletInternalContext(), showDynamicWidget = _c.showDynamicWidget, dynamicWallet = _c.dynamicWallet, setIsConnected = _c.setIsConnected, dynamicSdkHasLoaded = _c.dynamicSdkHasLoaded, dynamicHandleLogOut = _c.dynamicHandleLogOut, setAddress = _c.setAddress, setBalances = _c.setBalances, setChain = _c.setChain, setDynamicWallet = _c.setDynamicWallet, setSessionPubKey = _c.setSessionPubKey, setSignMessageWithSessionKey = _c.setSignMessageWithSessionKey, setSignMessageWithWalletKey = _c.setSignMessageWithWalletKey, setSignTransactionWithWalletKey = _c.setSignTransactionWithWalletKey, setNordUser = _c.setNordUser, setViewMode = _c.setViewMode, setWalletPubKey = _c.setWalletPubKey, setUsername = _c.setUsername, setUserChain = _c.setUserChain, setStartClosingLogin = _c.setStartClosingLogin, setDisconnectWalletHandler = _c.setDisconnectWalletHandler;
57
+ var _b = (0, hooks_1.useN1WalletContext)(), nord = _b.nord, nordUser = _b.nordUser, address = _b.address, setShowLogin = _b.setShowLogin, showLogin = _b.showLogin;
58
+ var _c = (0, hooks_1.useN1WalletInternalContext)(), showDynamicWidget = _c.showDynamicWidget, dynamicWallet = _c.dynamicWallet, setIsConnected = _c.setIsConnected, dynamicSdkHasLoaded = _c.dynamicSdkHasLoaded, dynamicHandleLogOut = _c.dynamicHandleLogOut, setAddress = _c.setAddress, setBalances = _c.setBalances, setChain = _c.setChain, setDynamicWallet = _c.setDynamicWallet, setSessionPubKey = _c.setSessionPubKey, setSignMessageWithSessionKey = _c.setSignMessageWithSessionKey, setSignMessageWithWalletKey = _c.setSignMessageWithWalletKey, setSignTransactionWithWalletKey = _c.setSignTransactionWithWalletKey, setNordUser = _c.setNordUser, setViewMode = _c.setViewMode, setWalletPubKey = _c.setWalletPubKey, setUsername = _c.setUsername, setUserChain = _c.setUserChain, setStartClosingLogin = _c.setStartClosingLogin, setDisconnectWalletHandler = _c.setDisconnectWalletHandler;
56
59
  // Get flow context
57
- var _d = useOnboardingState(), state = _d.state, context = _d.context, flowActions = _d.actions, updateContext = _d.updateContext;
58
- var _e = useState(false), isConnecting = _e[0], setIsConnecting = _e[1];
59
- var dynamicWidgetRequestedRef = useRef(false);
60
+ var _d = (0, OnboardingStateProvider_1.useOnboardingState)(), state = _d.state, context = _d.context, flowActions = _d.actions, updateContext = _d.updateContext;
61
+ var _e = (0, react_1.useState)(false), isConnecting = _e[0], setIsConnecting = _e[1];
62
+ var dynamicWidgetRequestedRef = (0, react_1.useRef)(false);
60
63
  // Use refs to track previous values
61
- var processedWalletAddressRef = useRef(null);
62
- var prevNordUserRef = useRef(nordUser);
63
- var prevSessionIdRef = useRef((nordUser === null || nordUser === void 0 ? void 0 : nordUser.sessionId) ? nordUser.sessionId.toString() : null);
64
- var prevStateRef = useRef(state);
65
- var reportedNordClientErrorRef = useRef(false);
66
- var clearWalletCache = useCallback(function () {
64
+ var processedWalletAddressRef = (0, react_1.useRef)(null);
65
+ var prevNordUserRef = (0, react_1.useRef)(nordUser);
66
+ var prevSessionIdRef = (0, react_1.useRef)((nordUser === null || nordUser === void 0 ? void 0 : nordUser.sessionId) ? nordUser.sessionId.toString() : null);
67
+ var prevStateRef = (0, react_1.useRef)(state);
68
+ var reportedNordClientErrorRef = (0, react_1.useRef)(false);
69
+ var clearWalletCache = (0, react_1.useCallback)(function () {
67
70
  if (typeof window === 'undefined') {
68
71
  return;
69
72
  }
@@ -71,18 +74,18 @@ export var WalletConnectionProvider = function (_a) {
71
74
  if (address) {
72
75
  var sessionIdKey = "n1_sessionId_".concat(address);
73
76
  window.localStorage.removeItem(sessionIdKey);
74
- removeKeysFromLocalStorage(address);
77
+ (0, utils_1.removeKeysFromLocalStorage)(address);
75
78
  }
76
- window.localStorage.removeItem(FLOW_STATE_STORAGE_KEY);
77
- clearLastDepositRecord(address);
78
- updateContext(initialOnboardingContext);
79
- logger.debug('Cleared wallet cache for address', { address: address });
79
+ window.localStorage.removeItem(exports.FLOW_STATE_STORAGE_KEY);
80
+ (0, depositStorage_1.clearLastDepositRecord)(address);
81
+ updateContext(types_1.initialOnboardingContext);
82
+ logger_1.logger.debug('Cleared wallet cache for address', { address: address });
80
83
  }
81
84
  catch (error) {
82
- logger.warn('Failed to clear wallet cache', error);
85
+ logger_1.logger.warn('Failed to clear wallet cache', error);
83
86
  }
84
87
  }, [address, updateContext]);
85
- var closeDynamicWidget = useCallback(function () {
88
+ var closeDynamicWidget = (0, react_1.useCallback)(function () {
86
89
  if (!dynamicWidgetRequestedRef.current) {
87
90
  return;
88
91
  }
@@ -91,7 +94,7 @@ export var WalletConnectionProvider = function (_a) {
91
94
  showDynamicWidget(false);
92
95
  }
93
96
  catch (error) {
94
- logger.warn('Failed to close Dynamic widget', error);
97
+ logger_1.logger.warn('Failed to close Dynamic widget', error);
95
98
  }
96
99
  }
97
100
  dynamicWidgetRequestedRef.current = false;
@@ -99,15 +102,15 @@ export var WalletConnectionProvider = function (_a) {
99
102
  /**
100
103
  * Disconnect wallet
101
104
  */
102
- var disconnectWallet = useCallback(function () {
103
- logger.debug('Disconnecting wallet');
105
+ var disconnectWallet = (0, react_1.useCallback)(function () {
106
+ logger_1.logger.debug('Disconnecting wallet');
104
107
  try {
105
108
  clearWalletCache();
106
109
  dynamicHandleLogOut === null || dynamicHandleLogOut === void 0 ? void 0 : dynamicHandleLogOut();
107
110
  closeDynamicWidget();
108
111
  }
109
112
  catch (error) {
110
- logger.warn('Error during wallet disconnect', error);
113
+ logger_1.logger.warn('Error during wallet disconnect', error);
111
114
  }
112
115
  processedWalletAddressRef.current = null;
113
116
  setIsConnected(false);
@@ -123,7 +126,7 @@ export var WalletConnectionProvider = function (_a) {
123
126
  setUserChain(null);
124
127
  setUsername('');
125
128
  setNordUser(null);
126
- setViewMode(N1ModalViewMode.Automatic);
129
+ setViewMode(wallet_1.N1ModalViewMode.Automatic);
127
130
  setShowLogin(false);
128
131
  setStartClosingLogin(false);
129
132
  flowActions.resetFlow();
@@ -149,18 +152,18 @@ export var WalletConnectionProvider = function (_a) {
149
152
  setWalletPubKey,
150
153
  flowActions,
151
154
  ]);
152
- useEffect(function () {
155
+ (0, react_1.useEffect)(function () {
153
156
  setDisconnectWalletHandler(function () { return disconnectWallet; });
154
157
  }, [disconnectWallet, setDisconnectWalletHandler]);
155
- useEffect(function () {
156
- if (state === OnboardingStep.CONNECTING_WALLET) {
158
+ (0, react_1.useEffect)(function () {
159
+ if (state === types_1.OnboardingStep.CONNECTING_WALLET) {
157
160
  processedWalletAddressRef.current = null;
158
161
  }
159
162
  }, [state]);
160
163
  /**
161
164
  * Connect wallet using Dynamic widget
162
165
  */
163
- var connectWallet = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
166
+ var connectWallet = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
164
167
  var error_1;
165
168
  return __generator(this, function (_a) {
166
169
  switch (_a.label) {
@@ -168,11 +171,11 @@ export var WalletConnectionProvider = function (_a) {
168
171
  if (isConnecting || !showDynamicWidget || !dynamicSdkHasLoaded)
169
172
  return [2 /*return*/];
170
173
  if (dynamicWallet) {
171
- logger.debug('Dynamic wallet already available; skipping widget open');
174
+ logger_1.logger.debug('Dynamic wallet already available; skipping widget open');
172
175
  return [2 /*return*/];
173
176
  }
174
177
  setIsConnecting(true);
175
- logger.debug('Starting wallet connection process');
178
+ logger_1.logger.debug('Starting wallet connection process');
176
179
  _a.label = 1;
177
180
  case 1:
178
181
  _a.trys.push([1, 3, , 4]);
@@ -180,19 +183,19 @@ export var WalletConnectionProvider = function (_a) {
180
183
  return [4 /*yield*/, showDynamicWidget(true)];
181
184
  case 2:
182
185
  _a.sent();
183
- logger.debug('Dynamic widget shown');
186
+ logger_1.logger.debug('Dynamic widget shown');
184
187
  return [3 /*break*/, 4];
185
188
  case 3:
186
189
  error_1 = _a.sent();
187
190
  dynamicWidgetRequestedRef.current = false;
188
191
  setIsConnecting(false);
189
- logger.error('Error showing Dynamic widget:', error_1);
192
+ logger_1.logger.error('Error showing Dynamic widget:', error_1);
190
193
  return [3 /*break*/, 4];
191
194
  case 4: return [2 /*return*/];
192
195
  }
193
196
  });
194
197
  }); }, [isConnecting, showDynamicWidget, dynamicSdkHasLoaded, dynamicWallet]);
195
- useEffect(function () {
198
+ (0, react_1.useEffect)(function () {
196
199
  if (!dynamicSdkHasLoaded) {
197
200
  return;
198
201
  }
@@ -213,7 +216,7 @@ export var WalletConnectionProvider = function (_a) {
213
216
  flowActions.setErrorState(new Error('The client could not be initialized. Verify your Nord environment variables and try again.'));
214
217
  }, [dynamicSdkHasLoaded, nord, flowActions]);
215
218
  // Process nordUser changes
216
- useEffect(function () {
219
+ (0, react_1.useEffect)(function () {
217
220
  var _a;
218
221
  if (!dynamicSdkHasLoaded || !nordUser || !dynamicWallet)
219
222
  return;
@@ -237,7 +240,7 @@ export var WalletConnectionProvider = function (_a) {
237
240
  }
238
241
  // Only run if we have processed a wallet
239
242
  if (dynamicWallet) {
240
- logger.debug('NordUser changed, checking account status');
243
+ logger_1.logger.debug('NordUser changed, checking account status');
241
244
  (function () { return __awaiter(void 0, void 0, void 0, function () {
242
245
  var nordAccount, hasNordAccount, sessionId, sessionIdString, serverSessions, sessionMatchesServer, sessionIdKey, hasActiveSession, lastDepositRecord, transitionDestination, error_2;
243
246
  var _a;
@@ -257,25 +260,25 @@ export var WalletConnectionProvider = function (_a) {
257
260
  serverSessions = (_a = nordAccount === null || nordAccount === void 0 ? void 0 : nordAccount.sessions) !== null && _a !== void 0 ? _a : {};
258
261
  sessionMatchesServer = sessionIdString != null && Boolean(serverSessions === null || serverSessions === void 0 ? void 0 : serverSessions[sessionIdString]);
259
262
  if (sessionIdString && !sessionMatchesServer) {
260
- logger.debug('Stored session is missing on Nord; clearing cached session ID');
263
+ logger_1.logger.debug('Stored session is missing on Nord; clearing cached session ID');
261
264
  if (typeof window !== 'undefined') {
262
265
  try {
263
266
  sessionIdKey = "n1_sessionId_".concat(dynamicWallet.address);
264
267
  window.localStorage.removeItem(sessionIdKey);
265
268
  }
266
269
  catch (storageError) {
267
- logger.warn('Failed to clear stale sessionId from localStorage', storageError);
270
+ logger_1.logger.warn('Failed to clear stale sessionId from localStorage', storageError);
268
271
  }
269
272
  }
270
273
  }
271
274
  hasActiveSession = sessionMatchesServer;
272
275
  updateContext({ hasNordAccount: hasNordAccount, hasActiveSession: hasActiveSession });
273
- if (state === OnboardingStep.CONNECTING_WALLET &&
276
+ if (state === types_1.OnboardingStep.CONNECTING_WALLET &&
274
277
  !context.isDepositOnlyFlow) {
275
278
  try {
276
- lastDepositRecord = readLastDepositRecord(dynamicWallet.address);
279
+ lastDepositRecord = (0, depositStorage_1.readLastDepositRecord)(dynamicWallet.address);
277
280
  if (lastDepositRecord) {
278
- logger.debug('Resuming last deposit from local storage');
281
+ logger_1.logger.debug('Resuming last deposit from local storage');
279
282
  flowActions.markDepositSuccess({
280
283
  transactionId: lastDepositRecord.transactionId,
281
284
  record: lastDepositRecord,
@@ -286,37 +289,37 @@ export var WalletConnectionProvider = function (_a) {
286
289
  }
287
290
  }
288
291
  catch (error) {
289
- logger.error('Error restoring last deposit record:', error);
292
+ logger_1.logger.error('Error restoring last deposit record:', error);
290
293
  }
291
294
  }
292
295
  transitionDestination = hasNordAccount
293
296
  ? hasActiveSession
294
- ? OnboardingStep.FINAL_SUCCESS
295
- : OnboardingStep.AUTH_LOADING
296
- : OnboardingStep.CHAIN_SELECTION;
297
+ ? types_1.OnboardingStep.FINAL_SUCCESS
298
+ : types_1.OnboardingStep.AUTH_LOADING
299
+ : types_1.OnboardingStep.CHAIN_SELECTION;
297
300
  if (hasNordAccount && hasActiveSession) {
298
301
  setIsConnected(true);
299
302
  }
300
303
  closeDynamicWidget();
301
304
  // Transition immediately without setTimeout
302
305
  try {
303
- logger.debug('Attempting transition to ' + transitionDestination);
304
- if (transitionDestination === OnboardingStep.FINAL_SUCCESS) {
306
+ logger_1.logger.debug('Attempting transition to ' + transitionDestination);
307
+ if (transitionDestination === types_1.OnboardingStep.FINAL_SUCCESS) {
305
308
  flowActions.completeFlow({
306
309
  hasNordAccount: hasNordAccount,
307
310
  hasActiveSession: hasActiveSession,
308
311
  });
309
312
  }
310
- else if (transitionDestination === OnboardingStep.AUTH_LOADING) {
313
+ else if (transitionDestination === types_1.OnboardingStep.AUTH_LOADING) {
311
314
  flowActions.requireAuth({ hasNordAccount: hasNordAccount });
312
315
  }
313
316
  else {
314
317
  flowActions.goToChainSelection();
315
318
  }
316
- logger.debug('Transition to ' + transitionDestination + ' completed');
319
+ logger_1.logger.debug('Transition to ' + transitionDestination + ' completed');
317
320
  }
318
321
  catch (error) {
319
- logger.error('Error during transition:', error);
322
+ logger_1.logger.error('Error during transition:', error);
320
323
  }
321
324
  finally {
322
325
  setIsConnecting(false);
@@ -324,7 +327,7 @@ export var WalletConnectionProvider = function (_a) {
324
327
  return [3 /*break*/, 3];
325
328
  case 2:
326
329
  error_2 = _b.sent();
327
- logger.error('Error checking account status:', error_2);
330
+ logger_1.logger.error('Error checking account status:', error_2);
328
331
  closeDynamicWidget();
329
332
  setIsConnecting(false);
330
333
  return [3 /*break*/, 3];
@@ -347,23 +350,23 @@ export var WalletConnectionProvider = function (_a) {
347
350
  closeDynamicWidget,
348
351
  ]);
349
352
  // Handle Dynamic widget closing while still connecting
350
- useEffect(function () {
351
- if (!isConnecting || state !== OnboardingStep.CONNECTING_WALLET) {
353
+ (0, react_1.useEffect)(function () {
354
+ if (!isConnecting || state !== types_1.OnboardingStep.CONNECTING_WALLET) {
352
355
  return;
353
356
  }
354
357
  if (!showLogin) {
355
- logger.debug('Wallet modal closed before connection completed; resetting state');
358
+ logger_1.logger.debug('Wallet modal closed before connection completed; resetting state');
356
359
  closeDynamicWidget();
357
360
  setIsConnecting(false);
358
361
  }
359
362
  }, [isConnecting, showLogin, state, closeDynamicWidget]);
360
363
  // Handle connecting state changes in a separate effect
361
- useEffect(function () {
364
+ (0, react_1.useEffect)(function () {
362
365
  var currentState = state;
363
366
  var prevState = prevStateRef.current;
364
367
  // Only run if state has changed
365
368
  if (currentState !== prevState) {
366
- if (currentState !== OnboardingStep.CONNECTING_WALLET && isConnecting) {
369
+ if (currentState !== types_1.OnboardingStep.CONNECTING_WALLET && isConnecting) {
367
370
  // If we're no longer in the connecting state, reset the connecting flag
368
371
  setIsConnecting(false);
369
372
  }
@@ -377,18 +380,20 @@ export var WalletConnectionProvider = function (_a) {
377
380
  connectWallet: connectWallet,
378
381
  disconnectWallet: disconnectWallet,
379
382
  };
380
- return (_jsx(WalletConnectionContext.Provider, { value: contextValue, children: children }));
383
+ return ((0, jsx_runtime_1.jsx)(WalletConnectionContext.Provider, { value: contextValue, children: children }));
381
384
  };
385
+ exports.WalletConnectionProvider = WalletConnectionProvider;
382
386
  /**
383
387
  * Custom hook to use the wallet connection context
384
388
  * @returns The wallet connection context value
385
389
  * @throws Error if used outside of a WalletConnectionProvider
386
390
  */
387
- export var useWalletConnection = function () {
388
- var context = useContext(WalletConnectionContext);
391
+ var useWalletConnection = function () {
392
+ var context = (0, react_1.useContext)(WalletConnectionContext);
389
393
  if (context === undefined) {
390
394
  throw new Error('useWalletConnection must be used within a WalletConnectionProvider');
391
395
  }
392
396
  return context;
393
397
  };
398
+ exports.useWalletConnection = useWalletConnection;
394
399
  //# sourceMappingURL=WalletConnectionProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletConnectionProvider.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/WalletConnectionProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { useN1WalletContext, useN1WalletInternalContext } from '../../../hooks';\nimport { logger } from '../../../utils/logger';\nimport { OnboardingStep, initialOnboardingContext } from '../types';\nimport { useOnboardingState } from './OnboardingStateProvider';\nimport { clearLastDepositRecord, readLastDepositRecord } from '../utils/depositStorage';\nimport { N1ModalViewMode } from '../../../types/wallet';\nimport { removeKeysFromLocalStorage } from '../utils/utils';\n\nexport const FLOW_STATE_STORAGE_KEY = 'n1_wallet_connection_flow_state';\n// Define the shape of the context value\nexport interface WalletConnectionContextValue {\n isConnecting: boolean;\n connectWallet: () => Promise<void>;\n disconnectWallet: () => void;\n}\n\n// Create the context with a default value\nconst WalletConnectionContext = createContext<WalletConnectionContextValue | undefined>(undefined);\n\n// Props for the provider component\ninterface WalletConnectionProviderProps {\n children: React.ReactNode;\n}\n\n/**\n * Provider component for the wallet connection context\n */\nexport const WalletConnectionProvider: React.FC<WalletConnectionProviderProps> = ({\n children,\n}) => {\n const { nord, nordUser, address, setShowLogin, showLogin } = useN1WalletContext();\n const {\n showDynamicWidget,\n dynamicWallet,\n setIsConnected,\n dynamicSdkHasLoaded,\n dynamicHandleLogOut,\n setAddress,\n setBalances,\n setChain,\n setDynamicWallet,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setNordUser,\n setViewMode,\n setWalletPubKey,\n setUsername,\n setUserChain,\n setStartClosingLogin,\n setDisconnectWalletHandler,\n } = useN1WalletInternalContext();\n\n // Get flow context\n const {\n state,\n context,\n actions: flowActions,\n updateContext,\n } = useOnboardingState();\n\n const [isConnecting, setIsConnecting] = useState(false);\n const dynamicWidgetRequestedRef = useRef(false);\n\n // Use refs to track previous values\n const processedWalletAddressRef = useRef<string | null>(null);\n const prevNordUserRef = useRef(nordUser);\n const prevSessionIdRef = useRef<string | null>(\n nordUser?.sessionId ? nordUser.sessionId.toString() : null\n );\n const prevStateRef = useRef(state);\n const reportedNordClientErrorRef = useRef(false);\n\n\n const clearWalletCache = useCallback(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n if (address) {\n const sessionIdKey = `n1_sessionId_${address}`;\n window.localStorage.removeItem(sessionIdKey);\n removeKeysFromLocalStorage(address);\n }\n\n window.localStorage.removeItem(FLOW_STATE_STORAGE_KEY);\n clearLastDepositRecord(address);\n updateContext(initialOnboardingContext);\n logger.debug('Cleared wallet cache for address', { address });\n } catch (error) {\n logger.warn('Failed to clear wallet cache', error);\n }\n }, [address, updateContext]);\n\n const closeDynamicWidget = useCallback(() => {\n if (!dynamicWidgetRequestedRef.current) {\n return;\n }\n\n if (showDynamicWidget) {\n try {\n showDynamicWidget(false);\n } catch (error) {\n logger.warn('Failed to close Dynamic widget', error);\n }\n }\n\n dynamicWidgetRequestedRef.current = false;\n }, [showDynamicWidget]);\n\n /**\n * Disconnect wallet\n */\n const disconnectWallet = useCallback(() => {\n logger.debug('Disconnecting wallet');\n try {\n clearWalletCache();\n dynamicHandleLogOut?.();\n closeDynamicWidget();\n } catch (error) {\n logger.warn('Error during wallet disconnect', error);\n }\n\n processedWalletAddressRef.current = null;\n setIsConnected(false);\n setAddress('');\n setBalances([]);\n setChain('');\n setDynamicWallet(null);\n setSessionPubKey(null);\n setWalletPubKey(null);\n setSignMessageWithSessionKey(null);\n setSignMessageWithWalletKey(null);\n setSignTransactionWithWalletKey(null);\n setUserChain(null);\n setUsername('');\n setNordUser(null);\n setViewMode(N1ModalViewMode.Automatic);\n setShowLogin(false);\n setStartClosingLogin(false);\n flowActions.resetFlow();\n }, [\n clearWalletCache,\n closeDynamicWidget,\n dynamicHandleLogOut,\n setAddress,\n setBalances,\n setChain,\n setDynamicWallet,\n setIsConnected,\n setNordUser,\n setSessionPubKey,\n setShowLogin,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setStartClosingLogin,\n setUserChain,\n setUsername,\n setViewMode,\n setWalletPubKey,\n flowActions,\n ]);\n\n useEffect(() => {\n setDisconnectWalletHandler(() => disconnectWallet);\n }, [disconnectWallet, setDisconnectWalletHandler]);\n\n useEffect(() => {\n if (state === OnboardingStep.CONNECTING_WALLET) {\n processedWalletAddressRef.current = null;\n }\n }, [state]);\n\n /**\n * Connect wallet using Dynamic widget\n */\n const connectWallet = useCallback(async () => {\n if (isConnecting || !showDynamicWidget || !dynamicSdkHasLoaded) return;\n if (dynamicWallet) {\n logger.debug('Dynamic wallet already available; skipping widget open');\n return;\n }\n\n setIsConnecting(true);\n logger.debug('Starting wallet connection process');\n\n try {\n dynamicWidgetRequestedRef.current = true;\n await showDynamicWidget(true);\n logger.debug('Dynamic widget shown');\n } catch (error) {\n dynamicWidgetRequestedRef.current = false;\n setIsConnecting(false);\n logger.error('Error showing Dynamic widget:', error);\n }\n }, [isConnecting, showDynamicWidget, dynamicSdkHasLoaded, dynamicWallet]);\n\n useEffect(() => {\n if (!dynamicSdkHasLoaded) {\n return;\n }\n\n if (nord) {\n reportedNordClientErrorRef.current = false;\n return;\n }\n\n if (typeof nord === 'undefined') {\n // Nord client is still initializing; wait before reporting an error\n return;\n }\n\n if (reportedNordClientErrorRef.current) {\n setIsConnecting(false);\n return;\n }\n\n reportedNordClientErrorRef.current = true;\n setIsConnecting(false);\n flowActions.setErrorState(\n new Error(\n 'The client could not be initialized. Verify your Nord environment variables and try again.'\n )\n );\n }, [dynamicSdkHasLoaded, nord, flowActions]);\n\n // Process nordUser changes\n useEffect(() => {\n if (!dynamicSdkHasLoaded || !nordUser || !dynamicWallet) return;\n\n const currentNordUser = nordUser;\n const prevNordUser = prevNordUserRef.current;\n const currentSessionId = currentNordUser.sessionId\n ? currentNordUser.sessionId.toString()\n : null;\n const prevSessionId = prevSessionIdRef.current;\n const walletAddress = dynamicWallet.address ?? null;\n const hasProcessedWallet =\n walletAddress != null && processedWalletAddressRef.current === walletAddress;\n\n if (\n currentNordUser === prevNordUser &&\n currentSessionId === prevSessionId &&\n hasProcessedWallet\n ) {\n return;\n }\n\n prevNordUserRef.current = currentNordUser;\n prevSessionIdRef.current = currentSessionId;\n if (walletAddress) {\n processedWalletAddressRef.current = walletAddress;\n }\n\n // Only run if we have processed a wallet\n if (dynamicWallet) {\n logger.debug('NordUser changed, checking account status');\n\n (async () => {\n try {\n if (!nord) {\n throw new Error('Nord client is not available.');\n }\n const nordAccount = await nord.getUser({ pubkey: dynamicWallet.address });\n const hasNordAccount = nordAccount != null;\n const sessionId = currentNordUser.sessionId;\n const sessionIdString = sessionId ? sessionId.toString() : null;\n const serverSessions = nordAccount?.sessions ?? {};\n const sessionMatchesServer =\n sessionIdString != null && Boolean(serverSessions?.[sessionIdString]);\n\n if (sessionIdString && !sessionMatchesServer) {\n logger.debug('Stored session is missing on Nord; clearing cached session ID');\n if (typeof window !== 'undefined') {\n try {\n const sessionIdKey = `n1_sessionId_${dynamicWallet.address}`;\n window.localStorage.removeItem(sessionIdKey);\n } catch (storageError) {\n logger.warn('Failed to clear stale sessionId from localStorage', storageError);\n }\n }\n }\n\n const hasActiveSession = sessionMatchesServer;\n\n updateContext({ hasNordAccount, hasActiveSession });\n\n if (\n state === OnboardingStep.CONNECTING_WALLET &&\n !context.isDepositOnlyFlow\n ) {\n try {\n const lastDepositRecord = readLastDepositRecord(dynamicWallet.address);\n if (lastDepositRecord) {\n logger.debug('Resuming last deposit from local storage');\n flowActions.markDepositSuccess({\n transactionId: lastDepositRecord.transactionId,\n record: lastDepositRecord,\n });\n closeDynamicWidget();\n setIsConnecting(false);\n return;\n }\n } catch (error) {\n logger.error('Error restoring last deposit record:', error);\n }\n }\n\n const transitionDestination = hasNordAccount\n ? hasActiveSession\n ? OnboardingStep.FINAL_SUCCESS\n : OnboardingStep.AUTH_LOADING\n : OnboardingStep.CHAIN_SELECTION;\n\n if (hasNordAccount && hasActiveSession) {\n setIsConnected(true);\n }\n closeDynamicWidget();\n\n // Transition immediately without setTimeout\n try {\n logger.debug('Attempting transition to ' + transitionDestination);\n if (transitionDestination === OnboardingStep.FINAL_SUCCESS) {\n flowActions.completeFlow({\n hasNordAccount,\n hasActiveSession,\n });\n } else if (transitionDestination === OnboardingStep.AUTH_LOADING) {\n flowActions.requireAuth({ hasNordAccount });\n } else {\n flowActions.goToChainSelection();\n }\n logger.debug(\n 'Transition to ' + transitionDestination + ' completed'\n );\n } catch (error) {\n logger.error('Error during transition:', error);\n } finally {\n setIsConnecting(false);\n }\n } catch (error) {\n logger.error('Error checking account status:', error);\n closeDynamicWidget();\n setIsConnecting(false);\n }\n })();\n }\n }, [\n nord,\n nordUser,\n dynamicWallet,\n updateContext,\n flowActions,\n setIsConnected,\n state,\n dynamicSdkHasLoaded,\n context.isDepositOnlyFlow,\n nordUser?.sessionId,\n closeDynamicWidget,\n ]);\n\n\n\n\n // Handle Dynamic widget closing while still connecting\n useEffect(() => {\n if (!isConnecting || state !== OnboardingStep.CONNECTING_WALLET) {\n return;\n }\n\n if (!showLogin) {\n logger.debug('Wallet modal closed before connection completed; resetting state');\n closeDynamicWidget();\n setIsConnecting(false);\n }\n }, [isConnecting, showLogin, state, closeDynamicWidget]);\n\n // Handle connecting state changes in a separate effect\n useEffect(() => {\n const currentState = state;\n const prevState = prevStateRef.current;\n\n // Only run if state has changed\n if (currentState !== prevState) {\n if (currentState !== OnboardingStep.CONNECTING_WALLET && isConnecting) {\n // If we're no longer in the connecting state, reset the connecting flag\n setIsConnecting(false);\n }\n\n // Update ref\n prevStateRef.current = currentState;\n }\n }, [state, isConnecting]);\n\n // Create the context value\n const contextValue: WalletConnectionContextValue = {\n isConnecting,\n connectWallet,\n disconnectWallet,\n };\n\n return (\n <WalletConnectionContext.Provider value={contextValue}>\n {children}\n </WalletConnectionContext.Provider>\n );\n};\n\n/**\n * Custom hook to use the wallet connection context\n * @returns The wallet connection context value\n * @throws Error if used outside of a WalletConnectionProvider\n */\nexport const useWalletConnection = (): WalletConnectionContextValue => {\n const context = useContext(WalletConnectionContext);\n\n if (context === undefined) {\n throw new Error('useWalletConnection must be used within a WalletConnectionProvider');\n }\n\n return context;\n};\n"]}
1
+ {"version":3,"file":"WalletConnectionProvider.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/WalletConnectionProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { useN1WalletContext, useN1WalletInternalContext } from '../../../hooks';\nimport { logger } from '../../../utils/logger';\nimport { OnboardingStep, initialOnboardingContext } from '../types';\nimport { useOnboardingState } from './OnboardingStateProvider';\nimport { clearLastDepositRecord, readLastDepositRecord } from '../utils/depositStorage';\nimport { N1ModalViewMode } from '../../../types/wallet';\nimport { removeKeysFromLocalStorage } from '../utils/utils';\n\nexport const FLOW_STATE_STORAGE_KEY = 'n1_wallet_connection_flow_state';\n// Define the shape of the context value\nexport interface WalletConnectionContextValue {\n isConnecting: boolean;\n connectWallet: () => Promise<void>;\n disconnectWallet: () => void;\n}\n\n// Create the context with a default value\nconst WalletConnectionContext = createContext<WalletConnectionContextValue | undefined>(undefined);\n\n// Props for the provider component\ninterface WalletConnectionProviderProps {\n children: React.ReactNode;\n}\n\n/**\n * Provider component for the wallet connection context\n */\nexport const WalletConnectionProvider: React.FC<WalletConnectionProviderProps> = ({\n children,\n}) => {\n const { nord, nordUser, address, setShowLogin, showLogin } = useN1WalletContext();\n const {\n showDynamicWidget,\n dynamicWallet,\n setIsConnected,\n dynamicSdkHasLoaded,\n dynamicHandleLogOut,\n setAddress,\n setBalances,\n setChain,\n setDynamicWallet,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setNordUser,\n setViewMode,\n setWalletPubKey,\n setUsername,\n setUserChain,\n setStartClosingLogin,\n setDisconnectWalletHandler,\n } = useN1WalletInternalContext();\n\n // Get flow context\n const {\n state,\n context,\n actions: flowActions,\n updateContext,\n } = useOnboardingState();\n\n const [isConnecting, setIsConnecting] = useState(false);\n const dynamicWidgetRequestedRef = useRef(false);\n\n // Use refs to track previous values\n const processedWalletAddressRef = useRef<string | null>(null);\n const prevNordUserRef = useRef(nordUser);\n const prevSessionIdRef = useRef<string | null>(\n nordUser?.sessionId ? nordUser.sessionId.toString() : null\n );\n const prevStateRef = useRef(state);\n const reportedNordClientErrorRef = useRef(false);\n\n\n const clearWalletCache = useCallback(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n if (address) {\n const sessionIdKey = `n1_sessionId_${address}`;\n window.localStorage.removeItem(sessionIdKey);\n removeKeysFromLocalStorage(address);\n }\n\n window.localStorage.removeItem(FLOW_STATE_STORAGE_KEY);\n clearLastDepositRecord(address);\n updateContext(initialOnboardingContext);\n logger.debug('Cleared wallet cache for address', { address });\n } catch (error) {\n logger.warn('Failed to clear wallet cache', error);\n }\n }, [address, updateContext]);\n\n const closeDynamicWidget = useCallback(() => {\n if (!dynamicWidgetRequestedRef.current) {\n return;\n }\n\n if (showDynamicWidget) {\n try {\n showDynamicWidget(false);\n } catch (error) {\n logger.warn('Failed to close Dynamic widget', error);\n }\n }\n\n dynamicWidgetRequestedRef.current = false;\n }, [showDynamicWidget]);\n\n /**\n * Disconnect wallet\n */\n const disconnectWallet = useCallback(() => {\n logger.debug('Disconnecting wallet');\n try {\n clearWalletCache();\n dynamicHandleLogOut?.();\n closeDynamicWidget();\n } catch (error) {\n logger.warn('Error during wallet disconnect', error);\n }\n\n processedWalletAddressRef.current = null;\n setIsConnected(false);\n setAddress('');\n setBalances([]);\n setChain('');\n setDynamicWallet(null);\n setSessionPubKey(null);\n setWalletPubKey(null);\n setSignMessageWithSessionKey(null);\n setSignMessageWithWalletKey(null);\n setSignTransactionWithWalletKey(null);\n setUserChain(null);\n setUsername('');\n setNordUser(null);\n setViewMode(N1ModalViewMode.Automatic);\n setShowLogin(false);\n setStartClosingLogin(false);\n flowActions.resetFlow();\n }, [\n clearWalletCache,\n closeDynamicWidget,\n dynamicHandleLogOut,\n setAddress,\n setBalances,\n setChain,\n setDynamicWallet,\n setIsConnected,\n setNordUser,\n setSessionPubKey,\n setShowLogin,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setStartClosingLogin,\n setUserChain,\n setUsername,\n setViewMode,\n setWalletPubKey,\n flowActions,\n ]);\n\n useEffect(() => {\n setDisconnectWalletHandler(() => disconnectWallet);\n }, [disconnectWallet, setDisconnectWalletHandler]);\n\n useEffect(() => {\n if (state === OnboardingStep.CONNECTING_WALLET) {\n processedWalletAddressRef.current = null;\n }\n }, [state]);\n\n /**\n * Connect wallet using Dynamic widget\n */\n const connectWallet = useCallback(async () => {\n if (isConnecting || !showDynamicWidget || !dynamicSdkHasLoaded) return;\n if (dynamicWallet) {\n logger.debug('Dynamic wallet already available; skipping widget open');\n return;\n }\n\n setIsConnecting(true);\n logger.debug('Starting wallet connection process');\n\n try {\n dynamicWidgetRequestedRef.current = true;\n await showDynamicWidget(true);\n logger.debug('Dynamic widget shown');\n } catch (error) {\n dynamicWidgetRequestedRef.current = false;\n setIsConnecting(false);\n logger.error('Error showing Dynamic widget:', error);\n }\n }, [isConnecting, showDynamicWidget, dynamicSdkHasLoaded, dynamicWallet]);\n\n useEffect(() => {\n if (!dynamicSdkHasLoaded) {\n return;\n }\n\n if (nord) {\n reportedNordClientErrorRef.current = false;\n return;\n }\n\n if (typeof nord === 'undefined') {\n // Nord client is still initializing; wait before reporting an error\n return;\n }\n\n if (reportedNordClientErrorRef.current) {\n setIsConnecting(false);\n return;\n }\n\n reportedNordClientErrorRef.current = true;\n setIsConnecting(false);\n flowActions.setErrorState(\n new Error(\n 'The client could not be initialized. Verify your Nord environment variables and try again.'\n )\n );\n }, [dynamicSdkHasLoaded, nord, flowActions]);\n\n // Process nordUser changes\n useEffect(() => {\n if (!dynamicSdkHasLoaded || !nordUser || !dynamicWallet) return;\n\n const currentNordUser = nordUser;\n const prevNordUser = prevNordUserRef.current;\n const currentSessionId = currentNordUser.sessionId\n ? currentNordUser.sessionId.toString()\n : null;\n const prevSessionId = prevSessionIdRef.current;\n const walletAddress = dynamicWallet.address ?? null;\n const hasProcessedWallet =\n walletAddress != null && processedWalletAddressRef.current === walletAddress;\n\n if (\n currentNordUser === prevNordUser &&\n currentSessionId === prevSessionId &&\n hasProcessedWallet\n ) {\n return;\n }\n\n prevNordUserRef.current = currentNordUser;\n prevSessionIdRef.current = currentSessionId;\n if (walletAddress) {\n processedWalletAddressRef.current = walletAddress;\n }\n\n // Only run if we have processed a wallet\n if (dynamicWallet) {\n logger.debug('NordUser changed, checking account status');\n\n (async () => {\n try {\n if (!nord) {\n throw new Error('Nord client is not available.');\n }\n const nordAccount = await nord.getUser({ pubkey: dynamicWallet.address });\n const hasNordAccount = nordAccount != null;\n const sessionId = currentNordUser.sessionId;\n const sessionIdString = sessionId ? sessionId.toString() : null;\n const serverSessions = nordAccount?.sessions ?? {};\n const sessionMatchesServer =\n sessionIdString != null && Boolean(serverSessions?.[sessionIdString]);\n\n if (sessionIdString && !sessionMatchesServer) {\n logger.debug('Stored session is missing on Nord; clearing cached session ID');\n if (typeof window !== 'undefined') {\n try {\n const sessionIdKey = `n1_sessionId_${dynamicWallet.address}`;\n window.localStorage.removeItem(sessionIdKey);\n } catch (storageError) {\n logger.warn('Failed to clear stale sessionId from localStorage', storageError);\n }\n }\n }\n\n const hasActiveSession = sessionMatchesServer;\n\n updateContext({ hasNordAccount, hasActiveSession });\n\n if (\n state === OnboardingStep.CONNECTING_WALLET &&\n !context.isDepositOnlyFlow\n ) {\n try {\n const lastDepositRecord = readLastDepositRecord(dynamicWallet.address);\n if (lastDepositRecord) {\n logger.debug('Resuming last deposit from local storage');\n flowActions.markDepositSuccess({\n transactionId: lastDepositRecord.transactionId,\n record: lastDepositRecord,\n });\n closeDynamicWidget();\n setIsConnecting(false);\n return;\n }\n } catch (error) {\n logger.error('Error restoring last deposit record:', error);\n }\n }\n\n const transitionDestination = hasNordAccount\n ? hasActiveSession\n ? OnboardingStep.FINAL_SUCCESS\n : OnboardingStep.AUTH_LOADING\n : OnboardingStep.CHAIN_SELECTION;\n\n if (hasNordAccount && hasActiveSession) {\n setIsConnected(true);\n }\n closeDynamicWidget();\n\n // Transition immediately without setTimeout\n try {\n logger.debug('Attempting transition to ' + transitionDestination);\n if (transitionDestination === OnboardingStep.FINAL_SUCCESS) {\n flowActions.completeFlow({\n hasNordAccount,\n hasActiveSession,\n });\n } else if (transitionDestination === OnboardingStep.AUTH_LOADING) {\n flowActions.requireAuth({ hasNordAccount });\n } else {\n flowActions.goToChainSelection();\n }\n logger.debug(\n 'Transition to ' + transitionDestination + ' completed'\n );\n } catch (error) {\n logger.error('Error during transition:', error);\n } finally {\n setIsConnecting(false);\n }\n } catch (error) {\n logger.error('Error checking account status:', error);\n closeDynamicWidget();\n setIsConnecting(false);\n }\n })();\n }\n }, [\n nord,\n nordUser,\n dynamicWallet,\n updateContext,\n flowActions,\n setIsConnected,\n state,\n dynamicSdkHasLoaded,\n context.isDepositOnlyFlow,\n nordUser?.sessionId,\n closeDynamicWidget,\n ]);\n\n\n\n\n // Handle Dynamic widget closing while still connecting\n useEffect(() => {\n if (!isConnecting || state !== OnboardingStep.CONNECTING_WALLET) {\n return;\n }\n\n if (!showLogin) {\n logger.debug('Wallet modal closed before connection completed; resetting state');\n closeDynamicWidget();\n setIsConnecting(false);\n }\n }, [isConnecting, showLogin, state, closeDynamicWidget]);\n\n // Handle connecting state changes in a separate effect\n useEffect(() => {\n const currentState = state;\n const prevState = prevStateRef.current;\n\n // Only run if state has changed\n if (currentState !== prevState) {\n if (currentState !== OnboardingStep.CONNECTING_WALLET && isConnecting) {\n // If we're no longer in the connecting state, reset the connecting flag\n setIsConnecting(false);\n }\n\n // Update ref\n prevStateRef.current = currentState;\n }\n }, [state, isConnecting]);\n\n // Create the context value\n const contextValue: WalletConnectionContextValue = {\n isConnecting,\n connectWallet,\n disconnectWallet,\n };\n\n return (\n <WalletConnectionContext.Provider value={contextValue}>\n {children}\n </WalletConnectionContext.Provider>\n );\n};\n\n/**\n * Custom hook to use the wallet connection context\n * @returns The wallet connection context value\n * @throws Error if used outside of a WalletConnectionProvider\n */\nexport const useWalletConnection = (): WalletConnectionContextValue => {\n const context = useContext(WalletConnectionContext);\n\n if (context === undefined) {\n throw new Error('useWalletConnection must be used within a WalletConnectionProvider');\n }\n\n return context;\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __assign = (this && this.__assign) || function () {
2
3
  __assign = Object.assign || function(t) {
3
4
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -10,51 +11,53 @@ var __assign = (this && this.__assign) || function () {
10
11
  return __assign.apply(this, arguments);
11
12
  };
12
13
  var _a;
13
- import { SolanaNetwork } from "../../../config/solana";
14
- import { N1ModalViewMode } from "../../../types/wallet";
15
- import { OnboardingStep, initialOnboardingContext, } from "../types";
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DEBUG_VIEW_TO_FLOW = void 0;
16
+ var solana_1 = require("../../../config/solana");
17
+ var wallet_1 = require("../../../types/wallet");
18
+ var types_1 = require("../types");
16
19
  var buildDebugContext = function (overrides) {
17
20
  if (overrides === void 0) { overrides = {}; }
18
- return (__assign(__assign({}, initialOnboardingContext), overrides));
21
+ return (__assign(__assign({}, types_1.initialOnboardingContext), overrides));
19
22
  };
20
- export var DEBUG_VIEW_TO_FLOW = (_a = {},
21
- _a[N1ModalViewMode.Connect] = {
22
- state: OnboardingStep.CONNECTING_WALLET,
23
+ exports.DEBUG_VIEW_TO_FLOW = (_a = {},
24
+ _a[wallet_1.N1ModalViewMode.Connect] = {
25
+ state: types_1.OnboardingStep.CONNECTING_WALLET,
23
26
  context: buildDebugContext(),
24
27
  },
25
- _a[N1ModalViewMode.ChainSelection] = {
26
- state: OnboardingStep.CHAIN_SELECTION,
28
+ _a[wallet_1.N1ModalViewMode.ChainSelection] = {
29
+ state: types_1.OnboardingStep.CHAIN_SELECTION,
27
30
  context: buildDebugContext({ selectedChain: null }),
28
31
  },
29
- _a[N1ModalViewMode.CreateSession] = {
30
- state: OnboardingStep.AUTH_LOADING,
32
+ _a[wallet_1.N1ModalViewMode.CreateSession] = {
33
+ state: types_1.OnboardingStep.AUTH_LOADING,
31
34
  context: buildDebugContext({
32
35
  hasNordAccount: true,
33
36
  hasActiveSession: false,
34
37
  }),
35
38
  },
36
- _a[N1ModalViewMode.Signing] = {
37
- state: OnboardingStep.DEPOSIT_PROGRESS,
39
+ _a[wallet_1.N1ModalViewMode.Signing] = {
40
+ state: types_1.OnboardingStep.DEPOSIT_PROGRESS,
38
41
  context: buildDebugContext({
39
42
  hasNordAccount: false,
40
43
  hasActiveSession: false,
41
44
  }),
42
45
  },
43
- _a[N1ModalViewMode.CreatingUser] = {
44
- state: OnboardingStep.AMOUNT_INPUT,
46
+ _a[wallet_1.N1ModalViewMode.CreatingUser] = {
47
+ state: types_1.OnboardingStep.AMOUNT_INPUT,
45
48
  context: buildDebugContext({
46
49
  hasNordAccount: false,
47
50
  hasActiveSession: false,
48
51
  }),
49
52
  },
50
- _a[N1ModalViewMode.DepositSuccess] = {
51
- state: OnboardingStep.DEPOSIT_SUCCESS,
53
+ _a[wallet_1.N1ModalViewMode.DepositSuccess] = {
54
+ state: types_1.OnboardingStep.DEPOSIT_SUCCESS,
52
55
  context: buildDebugContext({
53
56
  hasNordAccount: true,
54
57
  hasActiveSession: true,
55
58
  selectedChain: "solana-mainnet",
56
59
  selectedChainId: "solana",
57
- selectedChainNetwork: SolanaNetwork.MAINNET,
60
+ selectedChainNetwork: solana_1.SolanaNetwork.MAINNET,
58
61
  amount: "1,250",
59
62
  transactionId: "debug-tx-12345",
60
63
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/debug.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAEL,cAAc,EAEd,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAElB,IAAM,iBAAiB,GAAG,UAAC,SAA0C;IAA1C,0BAAA,EAAA,cAA0C;IAAK,OAAA,uBACrE,wBAAwB,GACxB,SAAS,EACZ;AAHwE,CAGxE,CAAC;AAIH,MAAM,CAAC,IAAM,kBAAkB;IAG7B,GAAC,eAAe,CAAC,OAAO,IAAG;QACzB,KAAK,EAAE,cAAc,CAAC,iBAAiB;QACvC,OAAO,EAAE,iBAAiB,EAAE;KAC7B;IACD,GAAC,eAAe,CAAC,cAAc,IAAG;QAChC,KAAK,EAAE,cAAc,CAAC,eAAe;QACrC,OAAO,EAAE,iBAAiB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;KACpD;IACD,GAAC,eAAe,CAAC,aAAa,IAAG;QAC/B,KAAK,EAAE,cAAc,CAAC,YAAY;QAClC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,eAAe,CAAC,OAAO,IAAG;QACzB,KAAK,EAAE,cAAc,CAAC,gBAAgB;QACtC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,eAAe,CAAC,YAAY,IAAG;QAC9B,KAAK,EAAE,cAAc,CAAC,YAAY;QAClC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,eAAe,CAAC,cAAc,IAAG;QAChC,KAAK,EAAE,cAAc,CAAC,eAAe;QACrC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,aAAa,EAAE,gBAAgB;YAC/B,eAAe,EAAE,QAAQ;YACzB,oBAAoB,EAAE,aAAa,CAAC,OAAO;YAC3C,MAAM,EAAE,OAAO;YACf,aAAa,EAAE,gBAAgB;SAChC,CAAC;KACH;OACF,CAAC","sourcesContent":["import { SolanaNetwork } from \"../../../config/solana\";\nimport { N1ModalViewMode } from \"../../../types/wallet\";\nimport {\n OnboardingContext,\n OnboardingStep,\n WaitingMessageState,\n initialOnboardingContext,\n} from \"../types\";\n\nconst buildDebugContext = (overrides: Partial<OnboardingContext> = {}) => ({\n ...initialOnboardingContext,\n ...overrides,\n});\n\n\n\nexport const DEBUG_VIEW_TO_FLOW: Partial<\n Record<N1ModalViewMode, { state: OnboardingStep; context: OnboardingContext }>\n> = {\n [N1ModalViewMode.Connect]: {\n state: OnboardingStep.CONNECTING_WALLET,\n context: buildDebugContext(),\n },\n [N1ModalViewMode.ChainSelection]: {\n state: OnboardingStep.CHAIN_SELECTION,\n context: buildDebugContext({ selectedChain: null }),\n },\n [N1ModalViewMode.CreateSession]: {\n state: OnboardingStep.AUTH_LOADING,\n context: buildDebugContext({\n hasNordAccount: true,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.Signing]: {\n state: OnboardingStep.DEPOSIT_PROGRESS,\n context: buildDebugContext({\n hasNordAccount: false,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.CreatingUser]: {\n state: OnboardingStep.AMOUNT_INPUT,\n context: buildDebugContext({\n hasNordAccount: false,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.DepositSuccess]: {\n state: OnboardingStep.DEPOSIT_SUCCESS,\n context: buildDebugContext({\n hasNordAccount: true,\n hasActiveSession: true,\n selectedChain: \"solana-mainnet\",\n selectedChainId: \"solana\",\n selectedChainNetwork: SolanaNetwork.MAINNET,\n amount: \"1,250\",\n transactionId: \"debug-tx-12345\",\n }),\n },\n};\n"]}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/debug.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iDAAuD;AACvD,gDAAwD;AACxD,kCAKkB;AAElB,IAAM,iBAAiB,GAAG,UAAC,SAA0C;IAA1C,0BAAA,EAAA,cAA0C;IAAK,OAAA,uBACrE,gCAAwB,GACxB,SAAS,EACZ;AAHwE,CAGxE,CAAC;AAIU,QAAA,kBAAkB;IAG7B,GAAC,wBAAe,CAAC,OAAO,IAAG;QACzB,KAAK,EAAE,sBAAc,CAAC,iBAAiB;QACvC,OAAO,EAAE,iBAAiB,EAAE;KAC7B;IACD,GAAC,wBAAe,CAAC,cAAc,IAAG;QAChC,KAAK,EAAE,sBAAc,CAAC,eAAe;QACrC,OAAO,EAAE,iBAAiB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;KACpD;IACD,GAAC,wBAAe,CAAC,aAAa,IAAG;QAC/B,KAAK,EAAE,sBAAc,CAAC,YAAY;QAClC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,wBAAe,CAAC,OAAO,IAAG;QACzB,KAAK,EAAE,sBAAc,CAAC,gBAAgB;QACtC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,wBAAe,CAAC,YAAY,IAAG;QAC9B,KAAK,EAAE,sBAAc,CAAC,YAAY;QAClC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,wBAAe,CAAC,cAAc,IAAG;QAChC,KAAK,EAAE,sBAAc,CAAC,eAAe;QACrC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,aAAa,EAAE,gBAAgB;YAC/B,eAAe,EAAE,QAAQ;YACzB,oBAAoB,EAAE,sBAAa,CAAC,OAAO;YAC3C,MAAM,EAAE,OAAO;YACf,aAAa,EAAE,gBAAgB;SAChC,CAAC;KACH;QACD","sourcesContent":["import { SolanaNetwork } from \"../../../config/solana\";\nimport { N1ModalViewMode } from \"../../../types/wallet\";\nimport {\n OnboardingContext,\n OnboardingStep,\n WaitingMessageState,\n initialOnboardingContext,\n} from \"../types\";\n\nconst buildDebugContext = (overrides: Partial<OnboardingContext> = {}) => ({\n ...initialOnboardingContext,\n ...overrides,\n});\n\n\n\nexport const DEBUG_VIEW_TO_FLOW: Partial<\n Record<N1ModalViewMode, { state: OnboardingStep; context: OnboardingContext }>\n> = {\n [N1ModalViewMode.Connect]: {\n state: OnboardingStep.CONNECTING_WALLET,\n context: buildDebugContext(),\n },\n [N1ModalViewMode.ChainSelection]: {\n state: OnboardingStep.CHAIN_SELECTION,\n context: buildDebugContext({ selectedChain: null }),\n },\n [N1ModalViewMode.CreateSession]: {\n state: OnboardingStep.AUTH_LOADING,\n context: buildDebugContext({\n hasNordAccount: true,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.Signing]: {\n state: OnboardingStep.DEPOSIT_PROGRESS,\n context: buildDebugContext({\n hasNordAccount: false,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.CreatingUser]: {\n state: OnboardingStep.AMOUNT_INPUT,\n context: buildDebugContext({\n hasNordAccount: false,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.DepositSuccess]: {\n state: OnboardingStep.DEPOSIT_SUCCESS,\n context: buildDebugContext({\n hasNordAccount: true,\n hasActiveSession: true,\n selectedChain: \"solana-mainnet\",\n selectedChainId: \"solana\",\n selectedChainNetwork: SolanaNetwork.MAINNET,\n amount: \"1,250\",\n transactionId: \"debug-tx-12345\",\n }),\n },\n};\n"]}
@@ -1,8 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = exports.OnboardingProvider = exports.useDepositFlow = exports.useWalletConnection = exports.useOnboardingState = void 0;
1
7
  // Re-export provider hooks
2
- export { useOnboardingState } from './OnboardingStateProvider';
3
- export { useWalletConnection, } from './WalletConnectionProvider';
4
- export { useDepositFlow, } from './DepositFlowProvider';
5
- export { StateProvider as OnboardingProvider } from './StateProvider';
8
+ var OnboardingStateProvider_1 = require("./OnboardingStateProvider");
9
+ Object.defineProperty(exports, "useOnboardingState", { enumerable: true, get: function () { return OnboardingStateProvider_1.useOnboardingState; } });
10
+ var WalletConnectionProvider_1 = require("./WalletConnectionProvider");
11
+ Object.defineProperty(exports, "useWalletConnection", { enumerable: true, get: function () { return WalletConnectionProvider_1.useWalletConnection; } });
12
+ var DepositFlowProvider_1 = require("./DepositFlowProvider");
13
+ Object.defineProperty(exports, "useDepositFlow", { enumerable: true, get: function () { return DepositFlowProvider_1.useDepositFlow; } });
14
+ var StateProvider_1 = require("./StateProvider");
15
+ Object.defineProperty(exports, "OnboardingProvider", { enumerable: true, get: function () { return StateProvider_1.StateProvider; } });
6
16
  // Default export the combined provider
7
- export { default } from './StateProvider';
17
+ var StateProvider_2 = require("./StateProvider");
18
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(StateProvider_2).default; } });
8
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,uCAAuC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["// Re-export provider hooks\nexport { useOnboardingState } from './OnboardingStateProvider';\nexport {\n useWalletConnection,\n} from './WalletConnectionProvider';\nexport {\n useDepositFlow,\n} from './DepositFlowProvider';\nexport { StateProvider as OnboardingProvider } from './StateProvider';\n\n// Default export the combined provider\nexport { default } from './StateProvider';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/index.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA2B;AAC3B,qEAA+D;AAAtD,6HAAA,kBAAkB,OAAA;AAC3B,uEAEoC;AADlC,+HAAA,mBAAmB,OAAA;AAErB,6DAE+B;AAD7B,qHAAA,cAAc,OAAA;AAEhB,iDAAsE;AAA7D,mHAAA,aAAa,OAAsB;AAE5C,uCAAuC;AACvC,iDAA0C;AAAjC,yHAAA,OAAO,OAAA","sourcesContent":["// Re-export provider hooks\nexport { useOnboardingState } from './OnboardingStateProvider';\nexport {\n useWalletConnection,\n} from './WalletConnectionProvider';\nexport {\n useDepositFlow,\n} from './DepositFlowProvider';\nexport { StateProvider as OnboardingProvider } from './StateProvider';\n\n// Default export the combined provider\nexport { default } from './StateProvider';\n"]}