quantumcoin 7.0.4 → 7.0.6

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.
package/README-SDK.md CHANGED
@@ -306,6 +306,7 @@ Wrapper returned by `provider.sendTransaction(...)` and `provider.getTransaction
306
306
  - `gasPrice: bigint | null`
307
307
  - `chainId: number | null`
308
308
  - `blockNumber: number | null`
309
+ - `txType: number | null` — Transaction type (e.g. `1` for a standard transfer)
309
310
  - `provider: AbstractProvider | null`
310
311
 
311
312
  **Methods**
@@ -388,6 +389,7 @@ User-facing wallet class.
388
389
  - `Wallet.createRandom(provider?: AbstractProvider): Wallet`
389
390
  - `Wallet.fromEncryptedJsonSync(json: string, password: string, provider?: AbstractProvider): Wallet`
390
391
  - `Wallet.fromPhrase(phrase: string | string[], provider?: AbstractProvider): Wallet`
392
+ - `Wallet.fromKeys(privateKey: Uint8Array | string, publicKey: Uint8Array | string, provider?: AbstractProvider): Wallet`
391
393
 
392
394
  **Instance methods**
393
395
  - `getAddress(): string`
@@ -11,11 +11,14 @@
11
11
  "dependencies": {
12
12
  "quantum-coin-js-sdk": "1.0.31",
13
13
  "quantumcoin": "file:.."
14
+ },
15
+ "devDependencies": {
16
+ "tsx": "^4.19.0"
14
17
  }
15
18
  },
16
19
  "..": {
17
20
  "name": "quantumcoin",
18
- "version": "7.0.4",
21
+ "version": "7.0.6",
19
22
  "license": "MIT",
20
23
  "dependencies": {
21
24
  "quantum-coin-js-sdk": "1.0.31",
@@ -23,6 +26,521 @@
23
26
  },
24
27
  "bin": {
25
28
  "sdkgen": "generate-sdk.js"
29
+ },
30
+ "devDependencies": {
31
+ "tsx": "^4.19.0"
32
+ }
33
+ },
34
+ "node_modules/@esbuild/aix-ppc64": {
35
+ "version": "0.27.4",
36
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz",
37
+ "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==",
38
+ "cpu": [
39
+ "ppc64"
40
+ ],
41
+ "dev": true,
42
+ "license": "MIT",
43
+ "optional": true,
44
+ "os": [
45
+ "aix"
46
+ ],
47
+ "engines": {
48
+ "node": ">=18"
49
+ }
50
+ },
51
+ "node_modules/@esbuild/android-arm": {
52
+ "version": "0.27.4",
53
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz",
54
+ "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==",
55
+ "cpu": [
56
+ "arm"
57
+ ],
58
+ "dev": true,
59
+ "license": "MIT",
60
+ "optional": true,
61
+ "os": [
62
+ "android"
63
+ ],
64
+ "engines": {
65
+ "node": ">=18"
66
+ }
67
+ },
68
+ "node_modules/@esbuild/android-arm64": {
69
+ "version": "0.27.4",
70
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz",
71
+ "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==",
72
+ "cpu": [
73
+ "arm64"
74
+ ],
75
+ "dev": true,
76
+ "license": "MIT",
77
+ "optional": true,
78
+ "os": [
79
+ "android"
80
+ ],
81
+ "engines": {
82
+ "node": ">=18"
83
+ }
84
+ },
85
+ "node_modules/@esbuild/android-x64": {
86
+ "version": "0.27.4",
87
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz",
88
+ "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==",
89
+ "cpu": [
90
+ "x64"
91
+ ],
92
+ "dev": true,
93
+ "license": "MIT",
94
+ "optional": true,
95
+ "os": [
96
+ "android"
97
+ ],
98
+ "engines": {
99
+ "node": ">=18"
100
+ }
101
+ },
102
+ "node_modules/@esbuild/darwin-arm64": {
103
+ "version": "0.27.4",
104
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz",
105
+ "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==",
106
+ "cpu": [
107
+ "arm64"
108
+ ],
109
+ "dev": true,
110
+ "license": "MIT",
111
+ "optional": true,
112
+ "os": [
113
+ "darwin"
114
+ ],
115
+ "engines": {
116
+ "node": ">=18"
117
+ }
118
+ },
119
+ "node_modules/@esbuild/darwin-x64": {
120
+ "version": "0.27.4",
121
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz",
122
+ "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==",
123
+ "cpu": [
124
+ "x64"
125
+ ],
126
+ "dev": true,
127
+ "license": "MIT",
128
+ "optional": true,
129
+ "os": [
130
+ "darwin"
131
+ ],
132
+ "engines": {
133
+ "node": ">=18"
134
+ }
135
+ },
136
+ "node_modules/@esbuild/freebsd-arm64": {
137
+ "version": "0.27.4",
138
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz",
139
+ "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==",
140
+ "cpu": [
141
+ "arm64"
142
+ ],
143
+ "dev": true,
144
+ "license": "MIT",
145
+ "optional": true,
146
+ "os": [
147
+ "freebsd"
148
+ ],
149
+ "engines": {
150
+ "node": ">=18"
151
+ }
152
+ },
153
+ "node_modules/@esbuild/freebsd-x64": {
154
+ "version": "0.27.4",
155
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz",
156
+ "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==",
157
+ "cpu": [
158
+ "x64"
159
+ ],
160
+ "dev": true,
161
+ "license": "MIT",
162
+ "optional": true,
163
+ "os": [
164
+ "freebsd"
165
+ ],
166
+ "engines": {
167
+ "node": ">=18"
168
+ }
169
+ },
170
+ "node_modules/@esbuild/linux-arm": {
171
+ "version": "0.27.4",
172
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz",
173
+ "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==",
174
+ "cpu": [
175
+ "arm"
176
+ ],
177
+ "dev": true,
178
+ "license": "MIT",
179
+ "optional": true,
180
+ "os": [
181
+ "linux"
182
+ ],
183
+ "engines": {
184
+ "node": ">=18"
185
+ }
186
+ },
187
+ "node_modules/@esbuild/linux-arm64": {
188
+ "version": "0.27.4",
189
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz",
190
+ "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==",
191
+ "cpu": [
192
+ "arm64"
193
+ ],
194
+ "dev": true,
195
+ "license": "MIT",
196
+ "optional": true,
197
+ "os": [
198
+ "linux"
199
+ ],
200
+ "engines": {
201
+ "node": ">=18"
202
+ }
203
+ },
204
+ "node_modules/@esbuild/linux-ia32": {
205
+ "version": "0.27.4",
206
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz",
207
+ "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==",
208
+ "cpu": [
209
+ "ia32"
210
+ ],
211
+ "dev": true,
212
+ "license": "MIT",
213
+ "optional": true,
214
+ "os": [
215
+ "linux"
216
+ ],
217
+ "engines": {
218
+ "node": ">=18"
219
+ }
220
+ },
221
+ "node_modules/@esbuild/linux-loong64": {
222
+ "version": "0.27.4",
223
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz",
224
+ "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==",
225
+ "cpu": [
226
+ "loong64"
227
+ ],
228
+ "dev": true,
229
+ "license": "MIT",
230
+ "optional": true,
231
+ "os": [
232
+ "linux"
233
+ ],
234
+ "engines": {
235
+ "node": ">=18"
236
+ }
237
+ },
238
+ "node_modules/@esbuild/linux-mips64el": {
239
+ "version": "0.27.4",
240
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz",
241
+ "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==",
242
+ "cpu": [
243
+ "mips64el"
244
+ ],
245
+ "dev": true,
246
+ "license": "MIT",
247
+ "optional": true,
248
+ "os": [
249
+ "linux"
250
+ ],
251
+ "engines": {
252
+ "node": ">=18"
253
+ }
254
+ },
255
+ "node_modules/@esbuild/linux-ppc64": {
256
+ "version": "0.27.4",
257
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz",
258
+ "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==",
259
+ "cpu": [
260
+ "ppc64"
261
+ ],
262
+ "dev": true,
263
+ "license": "MIT",
264
+ "optional": true,
265
+ "os": [
266
+ "linux"
267
+ ],
268
+ "engines": {
269
+ "node": ">=18"
270
+ }
271
+ },
272
+ "node_modules/@esbuild/linux-riscv64": {
273
+ "version": "0.27.4",
274
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz",
275
+ "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==",
276
+ "cpu": [
277
+ "riscv64"
278
+ ],
279
+ "dev": true,
280
+ "license": "MIT",
281
+ "optional": true,
282
+ "os": [
283
+ "linux"
284
+ ],
285
+ "engines": {
286
+ "node": ">=18"
287
+ }
288
+ },
289
+ "node_modules/@esbuild/linux-s390x": {
290
+ "version": "0.27.4",
291
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz",
292
+ "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==",
293
+ "cpu": [
294
+ "s390x"
295
+ ],
296
+ "dev": true,
297
+ "license": "MIT",
298
+ "optional": true,
299
+ "os": [
300
+ "linux"
301
+ ],
302
+ "engines": {
303
+ "node": ">=18"
304
+ }
305
+ },
306
+ "node_modules/@esbuild/linux-x64": {
307
+ "version": "0.27.4",
308
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz",
309
+ "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==",
310
+ "cpu": [
311
+ "x64"
312
+ ],
313
+ "dev": true,
314
+ "license": "MIT",
315
+ "optional": true,
316
+ "os": [
317
+ "linux"
318
+ ],
319
+ "engines": {
320
+ "node": ">=18"
321
+ }
322
+ },
323
+ "node_modules/@esbuild/netbsd-arm64": {
324
+ "version": "0.27.4",
325
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz",
326
+ "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==",
327
+ "cpu": [
328
+ "arm64"
329
+ ],
330
+ "dev": true,
331
+ "license": "MIT",
332
+ "optional": true,
333
+ "os": [
334
+ "netbsd"
335
+ ],
336
+ "engines": {
337
+ "node": ">=18"
338
+ }
339
+ },
340
+ "node_modules/@esbuild/netbsd-x64": {
341
+ "version": "0.27.4",
342
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz",
343
+ "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==",
344
+ "cpu": [
345
+ "x64"
346
+ ],
347
+ "dev": true,
348
+ "license": "MIT",
349
+ "optional": true,
350
+ "os": [
351
+ "netbsd"
352
+ ],
353
+ "engines": {
354
+ "node": ">=18"
355
+ }
356
+ },
357
+ "node_modules/@esbuild/openbsd-arm64": {
358
+ "version": "0.27.4",
359
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz",
360
+ "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==",
361
+ "cpu": [
362
+ "arm64"
363
+ ],
364
+ "dev": true,
365
+ "license": "MIT",
366
+ "optional": true,
367
+ "os": [
368
+ "openbsd"
369
+ ],
370
+ "engines": {
371
+ "node": ">=18"
372
+ }
373
+ },
374
+ "node_modules/@esbuild/openbsd-x64": {
375
+ "version": "0.27.4",
376
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz",
377
+ "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==",
378
+ "cpu": [
379
+ "x64"
380
+ ],
381
+ "dev": true,
382
+ "license": "MIT",
383
+ "optional": true,
384
+ "os": [
385
+ "openbsd"
386
+ ],
387
+ "engines": {
388
+ "node": ">=18"
389
+ }
390
+ },
391
+ "node_modules/@esbuild/openharmony-arm64": {
392
+ "version": "0.27.4",
393
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz",
394
+ "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==",
395
+ "cpu": [
396
+ "arm64"
397
+ ],
398
+ "dev": true,
399
+ "license": "MIT",
400
+ "optional": true,
401
+ "os": [
402
+ "openharmony"
403
+ ],
404
+ "engines": {
405
+ "node": ">=18"
406
+ }
407
+ },
408
+ "node_modules/@esbuild/sunos-x64": {
409
+ "version": "0.27.4",
410
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz",
411
+ "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==",
412
+ "cpu": [
413
+ "x64"
414
+ ],
415
+ "dev": true,
416
+ "license": "MIT",
417
+ "optional": true,
418
+ "os": [
419
+ "sunos"
420
+ ],
421
+ "engines": {
422
+ "node": ">=18"
423
+ }
424
+ },
425
+ "node_modules/@esbuild/win32-arm64": {
426
+ "version": "0.27.4",
427
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz",
428
+ "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==",
429
+ "cpu": [
430
+ "arm64"
431
+ ],
432
+ "dev": true,
433
+ "license": "MIT",
434
+ "optional": true,
435
+ "os": [
436
+ "win32"
437
+ ],
438
+ "engines": {
439
+ "node": ">=18"
440
+ }
441
+ },
442
+ "node_modules/@esbuild/win32-ia32": {
443
+ "version": "0.27.4",
444
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz",
445
+ "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==",
446
+ "cpu": [
447
+ "ia32"
448
+ ],
449
+ "dev": true,
450
+ "license": "MIT",
451
+ "optional": true,
452
+ "os": [
453
+ "win32"
454
+ ],
455
+ "engines": {
456
+ "node": ">=18"
457
+ }
458
+ },
459
+ "node_modules/@esbuild/win32-x64": {
460
+ "version": "0.27.4",
461
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz",
462
+ "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==",
463
+ "cpu": [
464
+ "x64"
465
+ ],
466
+ "dev": true,
467
+ "license": "MIT",
468
+ "optional": true,
469
+ "os": [
470
+ "win32"
471
+ ],
472
+ "engines": {
473
+ "node": ">=18"
474
+ }
475
+ },
476
+ "node_modules/esbuild": {
477
+ "version": "0.27.4",
478
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz",
479
+ "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==",
480
+ "dev": true,
481
+ "hasInstallScript": true,
482
+ "license": "MIT",
483
+ "bin": {
484
+ "esbuild": "bin/esbuild"
485
+ },
486
+ "engines": {
487
+ "node": ">=18"
488
+ },
489
+ "optionalDependencies": {
490
+ "@esbuild/aix-ppc64": "0.27.4",
491
+ "@esbuild/android-arm": "0.27.4",
492
+ "@esbuild/android-arm64": "0.27.4",
493
+ "@esbuild/android-x64": "0.27.4",
494
+ "@esbuild/darwin-arm64": "0.27.4",
495
+ "@esbuild/darwin-x64": "0.27.4",
496
+ "@esbuild/freebsd-arm64": "0.27.4",
497
+ "@esbuild/freebsd-x64": "0.27.4",
498
+ "@esbuild/linux-arm": "0.27.4",
499
+ "@esbuild/linux-arm64": "0.27.4",
500
+ "@esbuild/linux-ia32": "0.27.4",
501
+ "@esbuild/linux-loong64": "0.27.4",
502
+ "@esbuild/linux-mips64el": "0.27.4",
503
+ "@esbuild/linux-ppc64": "0.27.4",
504
+ "@esbuild/linux-riscv64": "0.27.4",
505
+ "@esbuild/linux-s390x": "0.27.4",
506
+ "@esbuild/linux-x64": "0.27.4",
507
+ "@esbuild/netbsd-arm64": "0.27.4",
508
+ "@esbuild/netbsd-x64": "0.27.4",
509
+ "@esbuild/openbsd-arm64": "0.27.4",
510
+ "@esbuild/openbsd-x64": "0.27.4",
511
+ "@esbuild/openharmony-arm64": "0.27.4",
512
+ "@esbuild/sunos-x64": "0.27.4",
513
+ "@esbuild/win32-arm64": "0.27.4",
514
+ "@esbuild/win32-ia32": "0.27.4",
515
+ "@esbuild/win32-x64": "0.27.4"
516
+ }
517
+ },
518
+ "node_modules/fsevents": {
519
+ "version": "2.3.3",
520
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
521
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
522
+ "dev": true,
523
+ "hasInstallScript": true,
524
+ "license": "MIT",
525
+ "optional": true,
526
+ "os": [
527
+ "darwin"
528
+ ],
529
+ "engines": {
530
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
531
+ }
532
+ },
533
+ "node_modules/get-tsconfig": {
534
+ "version": "4.13.6",
535
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz",
536
+ "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==",
537
+ "dev": true,
538
+ "license": "MIT",
539
+ "dependencies": {
540
+ "resolve-pkg-maps": "^1.0.0"
541
+ },
542
+ "funding": {
543
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
26
544
  }
27
545
  },
28
546
  "node_modules/quantum-coin-js-sdk": {
@@ -38,11 +556,41 @@
38
556
  "resolved": "..",
39
557
  "link": true
40
558
  },
559
+ "node_modules/resolve-pkg-maps": {
560
+ "version": "1.0.0",
561
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
562
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
563
+ "dev": true,
564
+ "license": "MIT",
565
+ "funding": {
566
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
567
+ }
568
+ },
41
569
  "node_modules/seed-words": {
42
570
  "version": "1.0.2",
43
571
  "resolved": "https://registry.npmjs.org/seed-words/-/seed-words-1.0.2.tgz",
44
572
  "integrity": "sha512-ia58deuPjcR8DpJ8uIgZ7gqDnIWD8vnjb4jX/sEsIDcuQaH/AJj9J8L3DXkUHfUGqAq9Y6pVMuG90t3XUJH90g==",
45
573
  "license": "MIT"
574
+ },
575
+ "node_modules/tsx": {
576
+ "version": "4.21.0",
577
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz",
578
+ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
579
+ "dev": true,
580
+ "license": "MIT",
581
+ "dependencies": {
582
+ "esbuild": "~0.27.0",
583
+ "get-tsconfig": "^4.7.5"
584
+ },
585
+ "bin": {
586
+ "tsx": "dist/cli.mjs"
587
+ },
588
+ "engines": {
589
+ "node": ">=18.0.0"
590
+ },
591
+ "optionalDependencies": {
592
+ "fsevents": "~2.3.3"
593
+ }
46
594
  }
47
595
  }
48
596
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quantumcoin",
3
- "version": "7.0.4",
3
+ "version": "7.0.6",
4
4
  "description": "QuantumCoin SDK - a complete SDK for dapps",
5
5
  "main": "index.js",
6
6
  "types": "src/index.d.ts",
@@ -152,6 +152,7 @@ export class TransactionResponse {
152
152
  gasPrice: any;
153
153
  chainId: number;
154
154
  blockNumber: number;
155
+ txType: number | null;
155
156
  remarks: string;
156
157
  /**
157
158
  * Wait for confirmations.
@@ -142,6 +142,7 @@ class TransactionResponse {
142
142
  this.gasPrice = tx.gasPrice != null ? _hexToBigInt(tx.gasPrice) : null;
143
143
  this.chainId = tx.chainId != null ? _hexToNumber(tx.chainId) : null;
144
144
  this.blockNumber = tx.blockNumber != null ? _hexToNumber(tx.blockNumber) : null;
145
+ this.txType = tx.type != null ? _hexToNumber(tx.type) : null;
145
146
  this.remarks = tx.remarks != null ? normalizeHex(tx.remarks) : null;
146
147
  }
147
148
 
@@ -84,6 +84,14 @@ export class Wallet extends BaseWallet {
84
84
  * @returns {Wallet}
85
85
  */
86
86
  static fromPhrase(phrase: string | string[], provider?: import("../providers/provider").AbstractProvider | undefined): Wallet;
87
+ /**
88
+ * Creates a wallet from raw private and public key bytes.
89
+ * @param {Uint8Array|string} privateKey Private key bytes or hex string
90
+ * @param {Uint8Array|string} publicKey Public key bytes or hex string
91
+ * @param {import("../providers/provider").AbstractProvider=} provider
92
+ * @returns {Wallet}
93
+ */
94
+ static fromKeys(privateKey: Uint8Array | string, publicKey: Uint8Array | string, provider?: import("../providers/provider").AbstractProvider | undefined): Wallet;
87
95
  /**
88
96
  * Internal helper: build a Wallet from a quantum-coin-js-sdk Wallet object.
89
97
  * @param {any} qcWallet
@@ -374,6 +374,34 @@ class Wallet extends BaseWallet {
374
374
  return Wallet._fromQcWallet(qcWallet, provider || null);
375
375
  }
376
376
 
377
+ /**
378
+ * Creates a wallet from raw private and public key bytes.
379
+ * @param {Uint8Array|string} privateKey Private key bytes or hex string
380
+ * @param {Uint8Array|string} publicKey Public key bytes or hex string
381
+ * @param {import("../providers/provider").AbstractProvider=} provider
382
+ * @returns {Wallet}
383
+ */
384
+ static fromKeys(privateKey, publicKey, provider) {
385
+ _requireInitialized();
386
+ const privBytes = typeof privateKey === "string" ? hexToBytes(privateKey) : arrayify(privateKey);
387
+ const pubBytes = typeof publicKey === "string" ? hexToBytes(publicKey) : arrayify(publicKey);
388
+ assertArgument(privBytes.length > 0, "privateKey must not be empty", "privateKey", privateKey);
389
+ assertArgument(pubBytes.length > 0, "publicKey must not be empty", "publicKey", publicKey);
390
+
391
+ const privArr = _bytesToNumberArray(privBytes);
392
+ const pubArr = _bytesToNumberArray(pubBytes);
393
+ const addr = qcsdk.addressFromPublicKey(pubArr);
394
+ if (typeof addr !== "string") throw makeError("addressFromPublicKey failed", "UNKNOWN_ERROR", {});
395
+
396
+ const qcWallet = new qcsdk.Wallet(addr, privArr, pubArr);
397
+ const verified = qcsdk.verifyWallet(qcWallet);
398
+ if (verified !== true) {
399
+ throw makeError("verifyWallet failed: the provided key pair is invalid", "INVALID_ARGUMENT", { verified });
400
+ }
401
+
402
+ return Wallet._fromQcWallet(qcWallet, provider || null);
403
+ }
404
+
377
405
  /**
378
406
  * Internal helper: build a Wallet from a quantum-coin-js-sdk Wallet object.
379
407
  * @param {any} qcWallet
@@ -126,6 +126,10 @@ describe("SigningContext and fee E2E", () => {
126
126
  const receipt = await sent.wait(1, 600_000);
127
127
  assert.ok(receipt && receipt.blockNumber != null);
128
128
 
129
+ const confirmedTx = await provider.getTransaction(sent.hash);
130
+ assert.ok(confirmedTx, `${label}: getTransaction should return the mined tx`);
131
+ assert.strictEqual(confirmedTx.txType, 1, `${label}: txType should be 1`);
132
+
129
133
  const senderAfter = await provider.getBalance(wallet.address);
130
134
  const feePaid = senderBefore - senderAfter - sendBackValue;
131
135
  assert.ok(feePaid >= 0n, `${label}: fee should be non-negative`);
@@ -154,6 +154,43 @@ describe("Address + Wallet (offline)", () => {
154
154
  assert.throws(() => qc.Wallet.fromPhrase(new Array(12).fill("word")), /32, 36, or 48 words/i);
155
155
  });
156
156
 
157
+ it("fromKeys creates wallet from privateKey + publicKey bytes (roundtrip address)", async () => {
158
+ await Initialize(null);
159
+ const original = qc.Wallet.fromEncryptedJsonSync(TEST_WALLET_ENCRYPTED_JSON, TEST_WALLET_PASSPHRASE);
160
+ const privBytes = original.signingKey.privateKeyBytes;
161
+ const pubBytes = original.signingKey.publicKeyBytes;
162
+
163
+ const fromBytes = qc.Wallet.fromKeys(privBytes, pubBytes);
164
+ assert.equal(fromBytes.address, original.address);
165
+ assert.equal(qc.isAddress(fromBytes.address), true);
166
+
167
+ const fromHex = qc.Wallet.fromKeys(original.privateKey, qc.hexlify(pubBytes));
168
+ assert.equal(fromHex.address, original.address);
169
+ });
170
+
171
+ it("fromKeys rejects empty keys", async () => {
172
+ await Initialize(null);
173
+ assert.throws(() => qc.Wallet.fromKeys(new Uint8Array(0), new Uint8Array(1)), /privateKey must not be empty/);
174
+ assert.throws(() => qc.Wallet.fromKeys(new Uint8Array(1), new Uint8Array(0)), /publicKey must not be empty/);
175
+ });
176
+
177
+ it("fromKeys wallet can sign messages", async () => {
178
+ await Initialize(null);
179
+ const original = qc.Wallet.fromPhrase(TEST_SEED_WORDS);
180
+ const restored = qc.Wallet.fromKeys(
181
+ original.signingKey.privateKeyBytes,
182
+ original.signingKey.publicKeyBytes,
183
+ );
184
+ assert.equal(restored.address, original.address);
185
+
186
+ const msg = "fromKeys signing test";
187
+ const sig = restored.signMessageSync(msg);
188
+ assert.equal(typeof sig, "string");
189
+ assert.ok(sig.startsWith("0x"));
190
+ const recovered = qc.verifyMessage(msg, sig);
191
+ assert.equal(recovered, original.address.toLowerCase());
192
+ });
193
+
157
194
  it("signMessageSync + verifyMessage roundtrip (known wallet)", async () => {
158
195
  await Initialize(null);
159
196
  const wallet = qc.Wallet.fromEncryptedJsonSync(TEST_WALLET_ENCRYPTED_JSON, TEST_WALLET_PASSPHRASE);
@@ -145,6 +145,43 @@ describe("Address + Wallet (offline)", () => {
145
145
  assert.throws(() => qc.Wallet.fromPhrase(new Array(12).fill("word")), /32, 36, or 48 words/i);
146
146
  });
147
147
 
148
+ it("fromKeys creates wallet from privateKey + publicKey bytes (roundtrip address)", async () => {
149
+ await Initialize(null);
150
+ const original = qc.Wallet.fromEncryptedJsonSync(TEST_WALLET_ENCRYPTED_JSON, TEST_WALLET_PASSPHRASE);
151
+ const privBytes = original.signingKey.privateKeyBytes;
152
+ const pubBytes = original.signingKey.publicKeyBytes;
153
+
154
+ const fromBytes = qc.Wallet.fromKeys(privBytes, pubBytes);
155
+ assert.equal(fromBytes.address, original.address);
156
+ assert.equal(qc.isAddress(fromBytes.address), true);
157
+
158
+ const fromHex = qc.Wallet.fromKeys(original.privateKey, qc.hexlify(pubBytes));
159
+ assert.equal(fromHex.address, original.address);
160
+ });
161
+
162
+ it("fromKeys rejects empty keys", async () => {
163
+ await Initialize(null);
164
+ assert.throws(() => qc.Wallet.fromKeys(new Uint8Array(0), new Uint8Array(1)), /privateKey must not be empty/);
165
+ assert.throws(() => qc.Wallet.fromKeys(new Uint8Array(1), new Uint8Array(0)), /publicKey must not be empty/);
166
+ });
167
+
168
+ it("fromKeys wallet can sign messages", async () => {
169
+ await Initialize(null);
170
+ const original = qc.Wallet.fromPhrase(TEST_SEED_WORDS);
171
+ const restored = qc.Wallet.fromKeys(
172
+ original.signingKey.privateKeyBytes,
173
+ original.signingKey.publicKeyBytes,
174
+ );
175
+ assert.equal(restored.address, original.address);
176
+
177
+ const msg = "fromKeys signing test";
178
+ const sig = restored.signMessageSync(msg);
179
+ assert.equal(typeof sig, "string");
180
+ assert.ok(sig.startsWith("0x"));
181
+ const recovered = qc.verifyMessage(msg, sig);
182
+ assert.equal(recovered, original.address.toLowerCase());
183
+ });
184
+
148
185
  it("signMessageSync + verifyMessage roundtrip (known wallet)", async () => {
149
186
  await Initialize(null);
150
187
  const wallet = qc.Wallet.fromEncryptedJsonSync(TEST_WALLET_ENCRYPTED_JSON, TEST_WALLET_PASSPHRASE);