@n1xyz/wallet-widget 0.0.10 → 0.0.12

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 (104) hide show
  1. package/dist/Logic/transactionManager.d.ts +1 -1
  2. package/dist/Logic/transactionManager.js +1 -1
  3. package/dist/Logic/transactionManager.js.map +1 -1
  4. package/dist/Modal/NordFlow/NordFlow.js +22 -228
  5. package/dist/Modal/NordFlow/NordFlow.js.map +1 -1
  6. package/dist/Modal/NordFlow/components/Header.d.ts +10 -0
  7. package/dist/Modal/NordFlow/components/Header.js +11 -0
  8. package/dist/Modal/NordFlow/components/Header.js.map +1 -0
  9. package/dist/Modal/NordFlow/components/TransactionTable.js +4 -7
  10. package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -1
  11. package/dist/Modal/NordFlow/components/index.d.ts +1 -0
  12. package/dist/Modal/NordFlow/components/index.js +1 -0
  13. package/dist/Modal/NordFlow/components/index.js.map +1 -1
  14. package/dist/Modal/NordFlow/constants.js +116 -95
  15. package/dist/Modal/NordFlow/constants.js.map +1 -1
  16. package/dist/Modal/NordFlow/context/DepositContext.d.ts +27 -0
  17. package/dist/Modal/NordFlow/context/DepositContext.js +308 -0
  18. package/dist/Modal/NordFlow/context/DepositContext.js.map +1 -0
  19. package/dist/Modal/NordFlow/context/FlowContext.d.ts +23 -0
  20. package/dist/Modal/NordFlow/context/FlowContext.js +125 -0
  21. package/dist/Modal/NordFlow/context/FlowContext.js.map +1 -0
  22. package/dist/Modal/NordFlow/context/NordProvider.d.ts +10 -0
  23. package/dist/Modal/NordFlow/context/NordProvider.js +14 -0
  24. package/dist/Modal/NordFlow/context/NordProvider.js.map +1 -0
  25. package/dist/Modal/NordFlow/context/WalletConnectContext.d.ts +20 -0
  26. package/dist/Modal/NordFlow/context/WalletConnectContext.js +214 -0
  27. package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +1 -0
  28. package/dist/Modal/NordFlow/context/deposit/types.d.ts +26 -0
  29. package/dist/Modal/NordFlow/context/deposit/types.js +2 -0
  30. package/dist/Modal/NordFlow/context/deposit/types.js.map +1 -0
  31. package/dist/Modal/NordFlow/context/deposit/useDepositAuth.d.ts +7 -0
  32. package/dist/Modal/NordFlow/context/deposit/useDepositAuth.js +113 -0
  33. package/dist/Modal/NordFlow/context/deposit/useDepositAuth.js.map +1 -0
  34. package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.d.ts +20 -0
  35. package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.js +235 -0
  36. package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.js.map +1 -0
  37. package/dist/Modal/NordFlow/context/index.d.ts +5 -0
  38. package/dist/Modal/NordFlow/context/index.js +8 -0
  39. package/dist/Modal/NordFlow/context/index.js.map +1 -0
  40. package/dist/Modal/NordFlow/hooks/index.d.ts +3 -5
  41. package/dist/Modal/NordFlow/hooks/index.js +3 -5
  42. package/dist/Modal/NordFlow/hooks/index.js.map +1 -1
  43. package/dist/Modal/NordFlow/hooks/useDepositFlow.js +2 -4
  44. package/dist/Modal/NordFlow/hooks/useDepositFlow.js.map +1 -1
  45. package/dist/Modal/NordFlow/hooks/useNordInstance.d.ts +0 -6
  46. package/dist/Modal/NordFlow/hooks/useNordInstance.js +2 -358
  47. package/dist/Modal/NordFlow/hooks/useNordInstance.js.map +1 -1
  48. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.d.ts +0 -1
  49. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js +0 -1
  50. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js.map +1 -1
  51. package/dist/Modal/NordFlow/screens/00-IdleScreen.d.ts +6 -0
  52. package/dist/Modal/NordFlow/screens/00-IdleScreen.js +9 -0
  53. package/dist/Modal/NordFlow/screens/00-IdleScreen.js.map +1 -0
  54. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.d.ts +1 -6
  55. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +10 -4
  56. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -1
  57. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +1 -5
  58. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js +9 -12
  59. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js.map +1 -1
  60. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.d.ts +1 -7
  61. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js +9 -7
  62. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js.map +1 -1
  63. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.d.ts +1 -13
  64. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +59 -31
  65. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +1 -1
  66. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.d.ts +1 -6
  67. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js +8 -3
  68. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js.map +1 -1
  69. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.d.ts +1 -8
  70. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js +15 -4
  71. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js.map +1 -1
  72. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.d.ts +1 -6
  73. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js +14 -120
  74. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js.map +1 -1
  75. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.d.ts +1 -1
  76. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js +9 -4
  77. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js.map +1 -1
  78. package/dist/Modal/NordFlow/screens/09-ErrorScreen.d.ts +1 -7
  79. package/dist/Modal/NordFlow/screens/09-ErrorScreen.js +9 -9
  80. package/dist/Modal/NordFlow/screens/09-ErrorScreen.js.map +1 -1
  81. package/dist/Modal/NordFlow/screens/index.d.ts +1 -0
  82. package/dist/Modal/NordFlow/screens/index.js +1 -0
  83. package/dist/Modal/NordFlow/screens/index.js.map +1 -1
  84. package/dist/Modal/NordFlow/types.d.ts +0 -5
  85. package/dist/Modal/NordFlow/types.js +0 -1
  86. package/dist/Modal/NordFlow/types.js.map +1 -1
  87. package/dist/Modal/NordFlow/utils/index.d.ts +0 -1
  88. package/dist/Modal/NordFlow/utils/index.js +0 -1
  89. package/dist/Modal/NordFlow/utils/index.js.map +1 -1
  90. package/dist/Provider/LazyWalletProvider.js +2 -0
  91. package/dist/Provider/LazyWalletProvider.js.map +1 -1
  92. package/dist/Provider/N1WalletProvider.js +48 -63
  93. package/dist/Provider/N1WalletProvider.js.map +1 -1
  94. package/dist/Provider/WalletErrorBoundary.d.ts +10 -0
  95. package/dist/Provider/WalletErrorBoundary.js +39 -0
  96. package/dist/Provider/WalletErrorBoundary.js.map +1 -0
  97. package/dist/Provider/hooks/useNordUserInitialization.d.ts +20 -0
  98. package/dist/Provider/hooks/useNordUserInitialization.js +293 -0
  99. package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -0
  100. package/dist/Provider/useN1WalletProvider.d.ts +37 -0
  101. package/dist/Provider/useN1WalletProvider.js +398 -0
  102. package/dist/Provider/useN1WalletProvider.js.map +1 -0
  103. package/dist/main.css +1 -1
  104. package/package.json +1 -1
@@ -0,0 +1,293 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { useEffect } from 'react';
38
+ import { NordUser } from '@n1xyz/nord-ts';
39
+ import { generateSessionKeyPair, signEd25519 } from '@n1xyz/nts-sdk';
40
+ import { PublicKey, Transaction } from '@solana/web3.js';
41
+ import { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage } from '../../Logic/utils';
42
+ import { WalletError, WalletErrorCode } from '../../errors/types';
43
+ import { logger } from '../../utils/logger';
44
+ import { N1SessionMode } from '../types';
45
+ export function useNordUserInitialization(_a) {
46
+ var _this = this;
47
+ var sessionMode = _a.sessionMode, dynamicWallet = _a.dynamicWallet, address = _a.address, nord = _a.nord, signMessageWithSessionKey = _a.signMessageWithSessionKey, signMessageWithWalletKey = _a.signMessageWithWalletKey, signTransactionWithWalletKey = _a.signTransactionWithWalletKey, sessionPubKey = _a.sessionPubKey, nordUser = _a.nordUser, setNordUser = _a.setNordUser, setSessionPubKey = _a.setSessionPubKey, setSignMessageWithSessionKey = _a.setSignMessageWithSessionKey, setSignMessageWithWalletKey = _a.setSignMessageWithWalletKey, setSignTransactionWithWalletKey = _a.setSignTransactionWithWalletKey;
48
+ // First useEffect: Initialize signing functions
49
+ useEffect(function () {
50
+ console.log(address, nordUser, 'address, nordUser');
51
+ if (sessionMode !== N1SessionMode.Nord) {
52
+ return;
53
+ }
54
+ var createWalletSignFunction = function () {
55
+ if (!dynamicWallet) {
56
+ return null;
57
+ }
58
+ var signWithWallet = function (msg) { return __awaiter(_this, void 0, void 0, function () {
59
+ var hexMsg, signature, binaryString, signatureUint8Array, i, error_1;
60
+ return __generator(this, function (_a) {
61
+ switch (_a.label) {
62
+ case 0:
63
+ _a.trys.push([0, 2, , 3]);
64
+ hexMsg = Buffer.from(msg).toString('hex');
65
+ return [4 /*yield*/, dynamicWallet.signMessage(hexMsg)];
66
+ case 1:
67
+ signature = _a.sent();
68
+ binaryString = atob(signature);
69
+ signatureUint8Array = new Uint8Array(binaryString.length);
70
+ for (i = 0; i < binaryString.length; i++) {
71
+ signatureUint8Array[i] = binaryString.charCodeAt(i);
72
+ }
73
+ return [2 /*return*/, signatureUint8Array];
74
+ case 2:
75
+ error_1 = _a.sent();
76
+ console.error('Error signing with wallet:', error_1);
77
+ throw new WalletError(WalletErrorCode.USER_REJECTED, 'Failed to sign message with wallet', { originalError: error_1 });
78
+ case 3: return [2 /*return*/];
79
+ }
80
+ });
81
+ }); };
82
+ setSignMessageWithWalletKey(function () { return signWithWallet; });
83
+ return signWithWallet;
84
+ };
85
+ var createTransactionSignFunction = function () {
86
+ if (!dynamicWallet) {
87
+ return null;
88
+ }
89
+ var signTransactionWithWallet = function (transaction) { return __awaiter(_this, void 0, void 0, function () {
90
+ var signedTransaction, serializedTx, error_2;
91
+ return __generator(this, function (_a) {
92
+ switch (_a.label) {
93
+ case 0:
94
+ _a.trys.push([0, 4, , 5]);
95
+ if (!(dynamicWallet.chain === 'SOL')) return [3 /*break*/, 3];
96
+ return [4 /*yield*/, dynamicWallet.getSigner()];
97
+ case 1: return [4 /*yield*/, (_a.sent()).signTransaction(transaction)];
98
+ case 2:
99
+ signedTransaction = _a.sent();
100
+ logger.debug('Solana transaction signature received');
101
+ serializedTx = signedTransaction.serialize();
102
+ return [2 /*return*/, Transaction.from(serializedTx)];
103
+ case 3: throw new WalletError(WalletErrorCode.USER_REJECTED, 'Unsupported chain', { originalError: new Error('Unsupported chain') });
104
+ case 4:
105
+ error_2 = _a.sent();
106
+ console.error('Error signing transaction with wallet:', error_2);
107
+ throw new WalletError(WalletErrorCode.USER_REJECTED, 'Failed to sign transaction with wallet', { originalError: error_2 });
108
+ case 5: return [2 /*return*/];
109
+ }
110
+ });
111
+ }); };
112
+ setSignTransactionWithWalletKey(function () { return signTransactionWithWallet; });
113
+ return signTransactionWithWallet;
114
+ };
115
+ var createSession = function () { return __awaiter(_this, void 0, void 0, function () {
116
+ var sessionKeyPair_1, storedKeys, tempKeyPair, error_3, signFn_1, error_4;
117
+ var _this = this;
118
+ return __generator(this, function (_a) {
119
+ switch (_a.label) {
120
+ case 0:
121
+ _a.trys.push([0, 7, , 8]);
122
+ sessionKeyPair_1 = null;
123
+ if (!address) return [3 /*break*/, 4];
124
+ storedKeys = getSessionKeysFromLocalStorage(address);
125
+ if (!storedKeys) return [3 /*break*/, 4];
126
+ _a.label = 1;
127
+ case 1:
128
+ _a.trys.push([1, 3, , 4]);
129
+ return [4 /*yield*/, generateSessionKeyPair()];
130
+ case 2:
131
+ tempKeyPair = _a.sent();
132
+ sessionKeyPair_1 = {
133
+ privateKey: storedKeys.ed25519PrivateKey,
134
+ publicKey: tempKeyPair.publicKey,
135
+ };
136
+ return [3 /*break*/, 4];
137
+ case 3:
138
+ error_3 = _a.sent();
139
+ console.error('Error reconstructing key pair from stored keys:', error_3);
140
+ sessionKeyPair_1 = null;
141
+ return [3 /*break*/, 4];
142
+ case 4:
143
+ if (!!sessionKeyPair_1) return [3 /*break*/, 6];
144
+ return [4 /*yield*/, generateSessionKeyPair()];
145
+ case 5:
146
+ sessionKeyPair_1 = _a.sent();
147
+ _a.label = 6;
148
+ case 6:
149
+ signFn_1 = function (message) { return __awaiter(_this, void 0, void 0, function () {
150
+ var error_5;
151
+ return __generator(this, function (_a) {
152
+ switch (_a.label) {
153
+ case 0:
154
+ _a.trys.push([0, 2, , 3]);
155
+ return [4 /*yield*/, signEd25519(message, sessionKeyPair_1.privateKey)];
156
+ case 1: return [2 /*return*/, _a.sent()];
157
+ case 2:
158
+ error_5 = _a.sent();
159
+ console.error('Error signing with session key:', error_5);
160
+ throw error_5;
161
+ case 3: return [2 /*return*/];
162
+ }
163
+ });
164
+ }); };
165
+ console.log('sessionKeyPair', sessionKeyPair_1, 'address', address, 'dynamicWallet', dynamicWallet);
166
+ storeSessionKeysInLocalStorage({
167
+ privKey: sessionKeyPair_1.privateKey,
168
+ walletPublicKey: address,
169
+ chainName: (dynamicWallet === null || dynamicWallet === void 0 ? void 0 : dynamicWallet.chain) || 'ETH',
170
+ });
171
+ setSessionPubKey(sessionKeyPair_1.publicKey);
172
+ setSignMessageWithSessionKey(function () { return signFn_1; });
173
+ return [2 /*return*/, signFn_1];
174
+ case 7:
175
+ error_4 = _a.sent();
176
+ console.error('Error creating session:', error_4);
177
+ return [2 /*return*/, null];
178
+ case 8: return [2 /*return*/];
179
+ }
180
+ });
181
+ }); };
182
+ // Initialize signing functions if needed
183
+ var initSigningFunctions = function () { return __awaiter(_this, void 0, void 0, function () {
184
+ return __generator(this, function (_a) {
185
+ switch (_a.label) {
186
+ case 0:
187
+ if (!signMessageWithWalletKey && dynamicWallet) {
188
+ createWalletSignFunction();
189
+ }
190
+ if (!signTransactionWithWalletKey && dynamicWallet) {
191
+ createTransactionSignFunction();
192
+ }
193
+ if (!!signMessageWithSessionKey) return [3 /*break*/, 2];
194
+ return [4 /*yield*/, createSession()];
195
+ case 1:
196
+ _a.sent();
197
+ _a.label = 2;
198
+ case 2: return [2 /*return*/];
199
+ }
200
+ });
201
+ }); };
202
+ initSigningFunctions();
203
+ }, [
204
+ dynamicWallet,
205
+ address,
206
+ ]);
207
+ // Second useEffect: Initialize NordUser
208
+ useEffect(function () {
209
+ if (sessionMode !== N1SessionMode.Nord) {
210
+ return;
211
+ }
212
+ var createNordUser = function () { return __awaiter(_this, void 0, void 0, function () {
213
+ var sessionId, sessionKeyData, sessionIdKey, storedSessionId, user, _1, error_6;
214
+ return __generator(this, function (_a) {
215
+ switch (_a.label) {
216
+ case 0:
217
+ _a.trys.push([0, 5, , 6]);
218
+ if (!nord || !address || !sessionPubKey || !signMessageWithWalletKey || !signMessageWithSessionKey || !signTransactionWithWalletKey) {
219
+ return [2 /*return*/, null];
220
+ }
221
+ sessionId = undefined;
222
+ if (address) {
223
+ try {
224
+ sessionKeyData = getSessionKeysFromLocalStorage(address);
225
+ if (sessionKeyData) {
226
+ sessionIdKey = "n1_sessionId_".concat(address);
227
+ storedSessionId = localStorage.getItem(sessionIdKey);
228
+ if (storedSessionId !== null) {
229
+ sessionId = BigInt(storedSessionId);
230
+ logger.debug('Found existing sessionId in localStorage', {
231
+ sessionId: storedSessionId,
232
+ });
233
+ }
234
+ }
235
+ }
236
+ catch (error) {
237
+ console.error('Error retrieving sessionId from localStorage:', error);
238
+ }
239
+ }
240
+ user = new NordUser({
241
+ nord: nord,
242
+ address: address,
243
+ walletSignFn: signMessageWithWalletKey,
244
+ sessionSignFn: signMessageWithSessionKey,
245
+ transactionSignFn: signTransactionWithWalletKey,
246
+ sessionId: sessionId,
247
+ sessionPubKey: sessionPubKey,
248
+ publicKey: new PublicKey(address),
249
+ });
250
+ _a.label = 1;
251
+ case 1:
252
+ _a.trys.push([1, 3, , 4]);
253
+ return [4 /*yield*/, user.updateAccountId()];
254
+ case 2:
255
+ _a.sent();
256
+ return [3 /*break*/, 4];
257
+ case 3:
258
+ _1 = _a.sent();
259
+ return [3 /*break*/, 4];
260
+ case 4:
261
+ setNordUser(user);
262
+ return [2 /*return*/, user];
263
+ case 5:
264
+ error_6 = _a.sent();
265
+ console.error('Error creating NordUser:', error_6);
266
+ setNordUser(null);
267
+ return [2 /*return*/, null];
268
+ case 6: return [2 /*return*/];
269
+ }
270
+ });
271
+ }); };
272
+ // Only create NordUser when all dependencies are available and nordUser is null
273
+ if (signMessageWithWalletKey &&
274
+ signMessageWithSessionKey &&
275
+ signTransactionWithWalletKey &&
276
+ sessionPubKey &&
277
+ nordUser === null) {
278
+ logger.debug('Dependencies available, initializing NordUser');
279
+ createNordUser();
280
+ }
281
+ }, [
282
+ sessionMode,
283
+ nord,
284
+ address,
285
+ signMessageWithSessionKey,
286
+ signMessageWithWalletKey,
287
+ signTransactionWithWalletKey,
288
+ sessionPubKey,
289
+ nordUser,
290
+ setNordUser
291
+ ]);
292
+ }
293
+ //# sourceMappingURL=useNordUserInitialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNordUserInitialization.js","sourceRoot":"","sources":["../../../src/Provider/hooks/useNordUserInitialization.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect } from 'react';\nimport React from 'react';\nimport { NordUser } from '@n1xyz/nord-ts';\nimport { generateSessionKeyPair, signEd25519 } from '@n1xyz/nts-sdk';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage } from '../../Logic/utils';\nimport { WalletError, WalletErrorCode } from '../../errors/types';\nimport { logger } from '../../utils/logger';\nimport { N1SessionMode } from '../types';\n\ninterface UseNordUserInitializationParams {\n sessionMode: N1SessionMode;\n dynamicWallet: any;\n address: string;\n nord: any;\n signMessageWithSessionKey: ((message: any) => Promise<any>) | null;\n signMessageWithWalletKey: ((message: any) => Promise<any>) | null;\n signTransactionWithWalletKey: ((transaction: any) => Promise<any>) | null;\n sessionPubKey: Uint8Array | null;\n nordUser: any;\n setNordUser: (user: any) => void;\n setSessionPubKey: (pubKey: Uint8Array) => void;\n setSignMessageWithSessionKey: React.Dispatch<React.SetStateAction<((message: any) => Promise<any>) | null>>;\n setSignMessageWithWalletKey: React.Dispatch<React.SetStateAction<((message: any) => Promise<any>) | null>>;\n setSignTransactionWithWalletKey: React.Dispatch<React.SetStateAction<((transaction: any) => Promise<any>) | null>>;\n}\n\nexport function useNordUserInitialization({\n sessionMode,\n dynamicWallet,\n address,\n nord,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n nordUser,\n setNordUser,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n}: UseNordUserInitializationParams) {\n // First useEffect: Initialize signing functions\n useEffect(() => {\n console.log(address, nordUser, 'address, nordUser')\n if (sessionMode !== N1SessionMode.Nord) {\n return;\n }\n\n const createWalletSignFunction = () => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signWithWallet = async (msg: Uint8Array): Promise<Uint8Array> => {\n try {\n const hexMsg = Buffer.from(msg).toString('hex');\n const signature = await dynamicWallet.signMessage(hexMsg);\n const binaryString = atob(signature);\n const signatureUint8Array = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n signatureUint8Array[i] = binaryString.charCodeAt(i);\n }\n return signatureUint8Array;\n } catch (error) {\n console.error('Error signing with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign message with wallet',\n { originalError: error }\n );\n }\n };\n\n setSignMessageWithWalletKey(() => signWithWallet);\n return signWithWallet;\n };\n\n const createTransactionSignFunction = () => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signTransactionWithWallet = async (\n transaction: any\n ): Promise<any> => {\n try {\n if (dynamicWallet.chain === 'SOL') {\n const signedTransaction = await (\n await dynamicWallet.getSigner()\n ).signTransaction(transaction);\n logger.debug('Solana transaction signature received');\n\n const serializedTx = signedTransaction.serialize();\n return Transaction.from(serializedTx);\n }\n\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Unsupported chain',\n { originalError: new Error('Unsupported chain') }\n );\n } catch (error) {\n console.error('Error signing transaction with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign transaction with wallet',\n { originalError: error }\n );\n }\n };\n\n setSignTransactionWithWalletKey(() => signTransactionWithWallet);\n return signTransactionWithWallet;\n };\n\n const createSession = async () => {\n try {\n let sessionKeyPair = null;\n if (address) {\n const storedKeys = getSessionKeysFromLocalStorage(address);\n if (storedKeys) {\n try {\n const tempKeyPair = await generateSessionKeyPair();\n sessionKeyPair = {\n privateKey: storedKeys.ed25519PrivateKey,\n publicKey: tempKeyPair.publicKey,\n };\n } catch (error) {\n console.error(\n 'Error reconstructing key pair from stored keys:',\n error\n );\n sessionKeyPair = null;\n }\n }\n }\n\n if (!sessionKeyPair) {\n sessionKeyPair = await generateSessionKeyPair();\n }\n\n const signFn = async (message: any): Promise<any> => {\n try {\n return await signEd25519(message, sessionKeyPair.privateKey);\n } catch (error) {\n console.error('Error signing with session key:', error);\n throw error;\n }\n };\n\n console.log('sessionKeyPair', sessionKeyPair, 'address', address, 'dynamicWallet', dynamicWallet)\n\n storeSessionKeysInLocalStorage({\n privKey: sessionKeyPair.privateKey,\n walletPublicKey: address,\n chainName: dynamicWallet?.chain || 'ETH',\n });\n\n setSessionPubKey(sessionKeyPair.publicKey);\n setSignMessageWithSessionKey(() => signFn);\n return signFn;\n } catch (error) {\n console.error('Error creating session:', error);\n return null;\n }\n };\n\n // Initialize signing functions if needed\n const initSigningFunctions = async () => {\n if (!signMessageWithWalletKey && dynamicWallet) {\n createWalletSignFunction();\n }\n\n if (!signTransactionWithWalletKey && dynamicWallet) {\n createTransactionSignFunction();\n }\n\n if (!signMessageWithSessionKey) {\n await createSession();\n }\n };\n\n initSigningFunctions();\n }, [\n dynamicWallet,\n address,\n ]);\n\n // Second useEffect: Initialize NordUser\n useEffect(() => {\n if (sessionMode !== N1SessionMode.Nord) {\n return;\n }\n\n const createNordUser = async () => {\n try {\n if (!nord || !address || !sessionPubKey || !signMessageWithWalletKey || !signMessageWithSessionKey || !signTransactionWithWalletKey) {\n return null;\n }\n\n let sessionId = undefined;\n if (address) {\n try {\n const sessionKeyData = getSessionKeysFromLocalStorage(address);\n if (sessionKeyData) {\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n if (storedSessionId !== null) {\n sessionId = BigInt(storedSessionId);\n logger.debug('Found existing sessionId in localStorage', {\n sessionId: storedSessionId,\n });\n }\n }\n } catch (error) {\n console.error('Error retrieving sessionId from localStorage:', error);\n }\n }\n\n const user = new NordUser({\n nord: nord,\n address,\n walletSignFn: signMessageWithWalletKey,\n sessionSignFn: signMessageWithSessionKey,\n transactionSignFn: signTransactionWithWalletKey,\n sessionId,\n sessionPubKey: sessionPubKey,\n publicKey: new PublicKey(address),\n });\n\n try {\n await user.updateAccountId();\n } catch (_) { }\n\n setNordUser(user);\n return user;\n } catch (error) {\n console.error('Error creating NordUser:', error);\n setNordUser(null);\n return null;\n }\n };\n\n // Only create NordUser when all dependencies are available and nordUser is null\n if (\n signMessageWithWalletKey &&\n signMessageWithSessionKey &&\n signTransactionWithWalletKey &&\n sessionPubKey &&\n nordUser === null\n ) {\n logger.debug('Dependencies available, initializing NordUser');\n createNordUser();\n }\n }, [\n sessionMode,\n nord,\n address,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n nordUser,\n setNordUser\n ]);\n} "]}
@@ -0,0 +1,37 @@
1
+ import { WalletError } from '../errors/types';
2
+ import { N1SessionMode, Balance, N1ModalViewMode, N1WalletProviderProps } from './types';
3
+ export declare function useN1WalletProvider({ providedSessionMode, onError, nord, address, dynamicWallet, }: N1WalletProviderProps): {
4
+ isConnected: boolean;
5
+ ntsInterface: any;
6
+ sessionPubKey: Uint8Array<ArrayBufferLike> | null;
7
+ walletPubKey: Uint8Array<ArrayBufferLike> | null;
8
+ userChain: string | null;
9
+ username: string;
10
+ signMessageWithSessionKey: ((message: any) => Promise<any>) | null;
11
+ signMessageWithWalletKey: ((message: any) => Promise<any>) | null;
12
+ signTransactionWithWalletKey: ((transaction: any) => Promise<any>) | null;
13
+ loading: boolean;
14
+ viewMode: N1ModalViewMode;
15
+ nordUser: any;
16
+ balances: Balance[];
17
+ chain: string;
18
+ dynamicSdkHasLoaded: any;
19
+ sessionMode: N1SessionMode | null;
20
+ handleError: (error: WalletError) => void;
21
+ setIsConnected: import("react").Dispatch<import("react").SetStateAction<boolean>>;
22
+ setNtsInterface: import("react").Dispatch<any>;
23
+ setSessionPubKey: import("react").Dispatch<import("react").SetStateAction<Uint8Array<ArrayBufferLike> | null>>;
24
+ setWalletPubKey: import("react").Dispatch<import("react").SetStateAction<Uint8Array<ArrayBufferLike> | null>>;
25
+ setUserChain: import("react").Dispatch<import("react").SetStateAction<string | null>>;
26
+ setUsername: import("react").Dispatch<import("react").SetStateAction<string>>;
27
+ setSignMessageWithSessionKey: import("react").Dispatch<import("react").SetStateAction<((message: any) => Promise<any>) | null>>;
28
+ setSignMessageWithWalletKey: import("react").Dispatch<import("react").SetStateAction<((message: any) => Promise<any>) | null>>;
29
+ setSignTransactionWithWalletKey: import("react").Dispatch<import("react").SetStateAction<((transaction: any) => Promise<any>) | null>>;
30
+ setLoading: import("react").Dispatch<import("react").SetStateAction<boolean>>;
31
+ setViewMode: import("react").Dispatch<import("react").SetStateAction<N1ModalViewMode>>;
32
+ setNordUser: import("react").Dispatch<any>;
33
+ setBalances: import("react").Dispatch<import("react").SetStateAction<Balance[]>>;
34
+ setChain: import("react").Dispatch<import("react").SetStateAction<string>>;
35
+ setDynamicSdkHasLoaded: import("react").Dispatch<any>;
36
+ setSessionMode: import("react").Dispatch<import("react").SetStateAction<N1SessionMode | null>>;
37
+ };