@btc-vision/bitcoin 7.0.0-alpha.0 → 7.0.0-alpha.2

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 (296) hide show
  1. package/browser/address.d.ts +6 -2
  2. package/browser/address.d.ts.map +1 -1
  3. package/browser/block.d.ts.map +1 -1
  4. package/browser/branded.d.ts +3 -14
  5. package/browser/branded.d.ts.map +1 -1
  6. package/browser/crypto.d.ts +1 -1
  7. package/browser/ecc/context.d.ts +4 -4
  8. package/browser/ecc/context.d.ts.map +1 -1
  9. package/browser/ecc/types.d.ts +1 -1
  10. package/browser/ecc/types.d.ts.map +1 -1
  11. package/browser/index.d.ts +3 -2
  12. package/browser/index.d.ts.map +1 -1
  13. package/browser/index.js +3579 -3539
  14. package/browser/io/BinaryReader.d.ts +15 -15
  15. package/browser/io/BinaryReader.d.ts.map +1 -1
  16. package/browser/io/BinaryWriter.d.ts +17 -17
  17. package/browser/io/BinaryWriter.d.ts.map +1 -1
  18. package/browser/io/MemoryPool.d.ts +20 -20
  19. package/browser/io/MemoryPool.d.ts.map +1 -1
  20. package/browser/opcodes.d.ts +11 -0
  21. package/browser/opcodes.d.ts.map +1 -1
  22. package/browser/payments/bip341.d.ts +1 -1
  23. package/browser/payments/bip341.d.ts.map +1 -1
  24. package/browser/payments/embed.d.ts +1 -1
  25. package/browser/payments/embed.d.ts.map +1 -1
  26. package/browser/payments/p2ms.d.ts.map +1 -1
  27. package/browser/payments/p2op.d.ts +1 -1
  28. package/browser/payments/p2op.d.ts.map +1 -1
  29. package/browser/payments/p2pk.d.ts +1 -1
  30. package/browser/payments/p2pk.d.ts.map +1 -1
  31. package/browser/payments/p2pkh.d.ts +1 -1
  32. package/browser/payments/p2pkh.d.ts.map +1 -1
  33. package/browser/payments/p2sh.d.ts.map +1 -1
  34. package/browser/payments/p2tr.d.ts +2 -2
  35. package/browser/payments/p2tr.d.ts.map +1 -1
  36. package/browser/payments/p2wpkh.d.ts +1 -1
  37. package/browser/payments/p2wpkh.d.ts.map +1 -1
  38. package/browser/payments/p2wsh.d.ts.map +1 -1
  39. package/browser/payments/types.d.ts +1 -1
  40. package/browser/payments/types.d.ts.map +1 -1
  41. package/browser/psbt/PsbtCache.d.ts +54 -0
  42. package/browser/psbt/PsbtCache.d.ts.map +1 -0
  43. package/browser/psbt/PsbtFinalizer.d.ts +21 -0
  44. package/browser/psbt/PsbtFinalizer.d.ts.map +1 -0
  45. package/browser/psbt/PsbtSigner.d.ts +32 -0
  46. package/browser/psbt/PsbtSigner.d.ts.map +1 -0
  47. package/browser/psbt/PsbtTransaction.d.ts +25 -0
  48. package/browser/psbt/PsbtTransaction.d.ts.map +1 -0
  49. package/browser/psbt/bip371.d.ts.map +1 -1
  50. package/browser/psbt/types.d.ts +14 -14
  51. package/browser/psbt/types.d.ts.map +1 -1
  52. package/browser/psbt/validation.d.ts +1 -1
  53. package/browser/psbt/validation.d.ts.map +1 -1
  54. package/browser/psbt.d.ts +27 -39
  55. package/browser/psbt.d.ts.map +1 -1
  56. package/browser/script.d.ts.map +1 -1
  57. package/browser/transaction.d.ts +4 -4
  58. package/browser/transaction.d.ts.map +1 -1
  59. package/browser/types.d.ts +4 -2
  60. package/browser/types.d.ts.map +1 -1
  61. package/browser/workers/WorkerSigningPool.d.ts +17 -17
  62. package/browser/workers/WorkerSigningPool.d.ts.map +1 -1
  63. package/browser/workers/WorkerSigningPool.node.d.ts +12 -12
  64. package/browser/workers/WorkerSigningPool.node.d.ts.map +1 -1
  65. package/browser/workers/index.d.ts +3 -50
  66. package/browser/workers/index.d.ts.map +1 -1
  67. package/browser/workers/index.node.d.ts +24 -0
  68. package/browser/workers/index.node.d.ts.map +1 -0
  69. package/browser/workers/psbt-parallel.d.ts +1 -1
  70. package/browser/workers/psbt-parallel.d.ts.map +1 -1
  71. package/browser/workers/types.d.ts.map +1 -1
  72. package/build/address.d.ts +6 -2
  73. package/build/address.d.ts.map +1 -1
  74. package/build/address.js +32 -19
  75. package/build/address.js.map +1 -1
  76. package/build/block.d.ts.map +1 -1
  77. package/build/block.js +2 -4
  78. package/build/block.js.map +1 -1
  79. package/build/branded.d.ts +3 -14
  80. package/build/branded.d.ts.map +1 -1
  81. package/build/branded.js +0 -5
  82. package/build/branded.js.map +1 -1
  83. package/build/crypto.d.ts +1 -1
  84. package/build/ecc/context.d.ts +4 -4
  85. package/build/ecc/context.d.ts.map +1 -1
  86. package/build/ecc/context.js +75 -52
  87. package/build/ecc/context.js.map +1 -1
  88. package/build/ecc/types.d.ts +1 -1
  89. package/build/ecc/types.d.ts.map +1 -1
  90. package/build/index.d.ts +3 -2
  91. package/build/index.d.ts.map +1 -1
  92. package/build/index.js +3 -3
  93. package/build/index.js.map +1 -1
  94. package/build/io/BinaryReader.d.ts +15 -15
  95. package/build/io/BinaryReader.d.ts.map +1 -1
  96. package/build/io/BinaryReader.js +17 -17
  97. package/build/io/BinaryReader.js.map +1 -1
  98. package/build/io/BinaryWriter.d.ts +17 -17
  99. package/build/io/BinaryWriter.d.ts.map +1 -1
  100. package/build/io/BinaryWriter.js +39 -39
  101. package/build/io/BinaryWriter.js.map +1 -1
  102. package/build/io/MemoryPool.d.ts +20 -20
  103. package/build/io/MemoryPool.d.ts.map +1 -1
  104. package/build/io/MemoryPool.js +28 -28
  105. package/build/io/MemoryPool.js.map +1 -1
  106. package/build/opcodes.d.ts +11 -0
  107. package/build/opcodes.d.ts.map +1 -1
  108. package/build/opcodes.js +19 -4
  109. package/build/opcodes.js.map +1 -1
  110. package/build/payments/bip341.d.ts +1 -2
  111. package/build/payments/bip341.d.ts.map +1 -1
  112. package/build/payments/bip341.js +1 -2
  113. package/build/payments/bip341.js.map +1 -1
  114. package/build/payments/embed.d.ts +1 -1
  115. package/build/payments/embed.d.ts.map +1 -1
  116. package/build/payments/embed.js +14 -14
  117. package/build/payments/embed.js.map +1 -1
  118. package/build/payments/p2ms.d.ts.map +1 -1
  119. package/build/payments/p2ms.js +21 -21
  120. package/build/payments/p2ms.js.map +1 -1
  121. package/build/payments/p2op.d.ts +1 -1
  122. package/build/payments/p2op.d.ts.map +1 -1
  123. package/build/payments/p2op.js +18 -18
  124. package/build/payments/p2op.js.map +1 -1
  125. package/build/payments/p2pk.d.ts +1 -1
  126. package/build/payments/p2pk.d.ts.map +1 -1
  127. package/build/payments/p2pk.js +17 -17
  128. package/build/payments/p2pk.js.map +1 -1
  129. package/build/payments/p2pkh.d.ts +1 -1
  130. package/build/payments/p2pkh.d.ts.map +1 -1
  131. package/build/payments/p2pkh.js +20 -20
  132. package/build/payments/p2pkh.js.map +1 -1
  133. package/build/payments/p2sh.d.ts.map +1 -1
  134. package/build/payments/p2sh.js +22 -20
  135. package/build/payments/p2sh.js.map +1 -1
  136. package/build/payments/p2tr.d.ts +2 -2
  137. package/build/payments/p2tr.d.ts.map +1 -1
  138. package/build/payments/p2tr.js +23 -23
  139. package/build/payments/p2tr.js.map +1 -1
  140. package/build/payments/p2wpkh.d.ts +1 -1
  141. package/build/payments/p2wpkh.d.ts.map +1 -1
  142. package/build/payments/p2wpkh.js +20 -20
  143. package/build/payments/p2wpkh.js.map +1 -1
  144. package/build/payments/p2wsh.d.ts.map +1 -1
  145. package/build/payments/p2wsh.js +22 -22
  146. package/build/payments/p2wsh.js.map +1 -1
  147. package/build/payments/types.d.ts +1 -1
  148. package/build/payments/types.d.ts.map +1 -1
  149. package/build/psbt/PsbtCache.d.ts +54 -0
  150. package/build/psbt/PsbtCache.d.ts.map +1 -0
  151. package/build/psbt/PsbtCache.js +249 -0
  152. package/build/psbt/PsbtCache.js.map +1 -0
  153. package/build/psbt/PsbtFinalizer.d.ts +21 -0
  154. package/build/psbt/PsbtFinalizer.d.ts.map +1 -0
  155. package/build/psbt/PsbtFinalizer.js +157 -0
  156. package/build/psbt/PsbtFinalizer.js.map +1 -0
  157. package/build/psbt/PsbtSigner.d.ts +32 -0
  158. package/build/psbt/PsbtSigner.d.ts.map +1 -0
  159. package/build/psbt/PsbtSigner.js +192 -0
  160. package/build/psbt/PsbtSigner.js.map +1 -0
  161. package/build/psbt/PsbtTransaction.d.ts +25 -0
  162. package/build/psbt/PsbtTransaction.d.ts.map +1 -0
  163. package/build/psbt/PsbtTransaction.js +61 -0
  164. package/build/psbt/PsbtTransaction.js.map +1 -0
  165. package/build/psbt/bip371.d.ts.map +1 -1
  166. package/build/psbt/bip371.js +6 -2
  167. package/build/psbt/bip371.js.map +1 -1
  168. package/build/psbt/psbtutils.js +1 -1
  169. package/build/psbt/psbtutils.js.map +1 -1
  170. package/build/psbt/types.d.ts +14 -14
  171. package/build/psbt/types.d.ts.map +1 -1
  172. package/build/psbt/validation.d.ts +1 -1
  173. package/build/psbt/validation.d.ts.map +1 -1
  174. package/build/psbt/validation.js +1 -1
  175. package/build/psbt/validation.js.map +1 -1
  176. package/build/psbt.d.ts +27 -39
  177. package/build/psbt.d.ts.map +1 -1
  178. package/build/psbt.js +142 -755
  179. package/build/psbt.js.map +1 -1
  180. package/build/script.d.ts.map +1 -1
  181. package/build/script.js +4 -4
  182. package/build/script.js.map +1 -1
  183. package/build/transaction.d.ts +4 -4
  184. package/build/transaction.d.ts.map +1 -1
  185. package/build/transaction.js +6 -5
  186. package/build/transaction.js.map +1 -1
  187. package/build/tsconfig.build.tsbuildinfo +1 -1
  188. package/build/types.d.ts +4 -2
  189. package/build/types.d.ts.map +1 -1
  190. package/build/types.js +12 -9
  191. package/build/types.js.map +1 -1
  192. package/build/workers/WorkerSigningPool.d.ts +17 -17
  193. package/build/workers/WorkerSigningPool.d.ts.map +1 -1
  194. package/build/workers/WorkerSigningPool.js +25 -25
  195. package/build/workers/WorkerSigningPool.js.map +1 -1
  196. package/build/workers/WorkerSigningPool.node.d.ts +12 -12
  197. package/build/workers/WorkerSigningPool.node.d.ts.map +1 -1
  198. package/build/workers/WorkerSigningPool.node.js +23 -23
  199. package/build/workers/WorkerSigningPool.node.js.map +1 -1
  200. package/build/workers/index.d.ts +3 -3
  201. package/build/workers/index.d.ts.map +1 -1
  202. package/build/workers/index.js +0 -3
  203. package/build/workers/index.js.map +1 -1
  204. package/build/workers/index.node.d.ts +24 -0
  205. package/build/workers/index.node.d.ts.map +1 -0
  206. package/build/workers/index.node.js +26 -0
  207. package/build/workers/index.node.js.map +1 -0
  208. package/build/workers/psbt-parallel.d.ts +1 -1
  209. package/build/workers/psbt-parallel.d.ts.map +1 -1
  210. package/build/workers/psbt-parallel.js.map +1 -1
  211. package/build/workers/types.d.ts.map +1 -1
  212. package/build/workers/types.js.map +1 -1
  213. package/package.json +30 -10
  214. package/src/address.ts +53 -21
  215. package/src/block.ts +15 -8
  216. package/src/branded.ts +15 -13
  217. package/src/crypto.ts +1 -1
  218. package/src/ecc/context.ts +85 -64
  219. package/src/ecc/types.ts +1 -8
  220. package/src/index.ts +48 -14
  221. package/src/io/BinaryReader.ts +18 -18
  222. package/src/io/BinaryWriter.ts +43 -43
  223. package/src/io/MemoryPool.ts +32 -32
  224. package/src/opcodes.ts +21 -4
  225. package/src/payments/bip341.ts +2 -4
  226. package/src/payments/embed.ts +18 -18
  227. package/src/payments/p2ms.ts +32 -25
  228. package/src/payments/p2op.ts +22 -22
  229. package/src/payments/p2pk.ts +20 -20
  230. package/src/payments/p2pkh.ts +25 -25
  231. package/src/payments/p2sh.ts +30 -27
  232. package/src/payments/p2tr.ts +31 -31
  233. package/src/payments/p2wpkh.ts +25 -25
  234. package/src/payments/p2wsh.ts +27 -27
  235. package/src/payments/types.ts +1 -1
  236. package/src/psbt/PsbtCache.ts +325 -0
  237. package/src/psbt/PsbtFinalizer.ts +213 -0
  238. package/src/psbt/PsbtSigner.ts +302 -0
  239. package/src/psbt/PsbtTransaction.ts +82 -0
  240. package/src/psbt/bip371.ts +7 -3
  241. package/src/psbt/psbtutils.ts +1 -1
  242. package/src/psbt/types.ts +14 -21
  243. package/src/psbt/validation.ts +5 -12
  244. package/src/psbt.ts +363 -1130
  245. package/src/script.ts +6 -9
  246. package/src/transaction.ts +18 -14
  247. package/src/types.ts +28 -17
  248. package/src/workers/WorkerSigningPool.node.ts +31 -31
  249. package/src/workers/WorkerSigningPool.ts +35 -39
  250. package/src/workers/index.node.ts +27 -0
  251. package/src/workers/index.ts +7 -9
  252. package/src/workers/psbt-parallel.ts +2 -7
  253. package/src/workers/types.ts +5 -1
  254. package/test/address.spec.ts +2 -2
  255. package/test/bitcoin.core.spec.ts +5 -2
  256. package/test/browser/payments.spec.ts +151 -0
  257. package/test/browser/psbt.spec.ts +1510 -0
  258. package/test/browser/script.spec.ts +223 -0
  259. package/test/browser/setup.ts +13 -0
  260. package/test/browser/workers-signing.spec.ts +537 -0
  261. package/test/crypto.spec.ts +2 -2
  262. package/test/fixtures/core/base58_encode_decode.json +12 -48
  263. package/test/fixtures/core/base58_keys_invalid.json +50 -150
  264. package/test/fixtures/core/sighash.json +1 -3
  265. package/test/fixtures/core/tx_valid.json +133 -501
  266. package/test/fixtures/embed.json +3 -11
  267. package/test/fixtures/p2ms.json +21 -91
  268. package/test/fixtures/p2pk.json +5 -24
  269. package/test/fixtures/p2pkh.json +7 -36
  270. package/test/fixtures/p2sh.json +8 -54
  271. package/test/fixtures/p2tr.json +2 -6
  272. package/test/fixtures/p2wpkh.json +7 -36
  273. package/test/fixtures/p2wsh.json +14 -59
  274. package/test/fixtures/psbt.json +2 -6
  275. package/test/fixtures/script.json +12 -48
  276. package/test/integration/addresses.spec.ts +11 -5
  277. package/test/integration/bip32.spec.ts +1 -1
  278. package/test/integration/cltv.spec.ts +10 -6
  279. package/test/integration/csv.spec.ts +10 -9
  280. package/test/integration/payments.spec.ts +8 -4
  281. package/test/integration/taproot.spec.ts +26 -6
  282. package/test/integration/transactions.spec.ts +22 -8
  283. package/test/payments.spec.ts +1 -1
  284. package/test/payments.utils.ts +1 -1
  285. package/test/psbt.spec.ts +250 -64
  286. package/test/script_signature.spec.ts +1 -1
  287. package/test/transaction.spec.ts +18 -5
  288. package/test/tsconfig.json +6 -20
  289. package/test/workers-pool.spec.ts +22 -23
  290. package/test/workers-signing.spec.ts +7 -3
  291. package/test/workers.spec.ts +6 -7
  292. package/typedoc.json +39 -0
  293. package/vitest.config.browser.ts +68 -0
  294. package/browser/ecpair.d.ts +0 -99
  295. package/src/ecpair.d.ts +0 -99
  296. package/test/taproot-cache.spec.ts +0 -694
@@ -1,13 +1,10 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi, type Mock } from 'vitest';
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
2
  import {
3
- SignatureType,
4
- WorkerState,
5
3
  type BatchSigningTaskResult,
6
- type SigningTask,
7
4
  type ParallelSignerKeyPair,
5
+ SignatureType,
6
+ type SigningTask,
8
7
  type WorkerResponse,
9
- type SigningResultMessage,
10
- type WorkerPoolConfig,
11
8
  } from '../src/workers/types.js';
12
9
 
13
10
  // Mock Worker class for browser pool testing
@@ -60,14 +57,16 @@ class MockWorker {
60
57
  }
61
58
 
62
59
  // Generate results for all tasks
63
- const results = batchMsg.tasks.map((task): BatchSigningTaskResult => ({
64
- taskId: task.taskId,
65
- signature: new Uint8Array(64).fill(0xab),
66
- inputIndex: task.inputIndex,
67
- publicKey: task.publicKey,
68
- signatureType: task.signatureType,
69
- ...(task.leafHash ? { leafHash: task.leafHash } : {}),
70
- }));
60
+ const results = batchMsg.tasks.map(
61
+ (task): BatchSigningTaskResult => ({
62
+ taskId: task.taskId,
63
+ signature: new Uint8Array(64).fill(0xab),
64
+ inputIndex: task.inputIndex,
65
+ publicKey: task.publicKey,
66
+ signatureType: task.signatureType,
67
+ ...(task.leafHash ? { leafHash: task.leafHash } : {}),
68
+ }),
69
+ );
71
70
 
72
71
  this.simulateMessage({
73
72
  type: 'batchResult',
@@ -104,6 +103,15 @@ class MockWorker {
104
103
  this.errorHandlers = [];
105
104
  }
106
105
 
106
+ simulateError(error: Error): void {
107
+ if (this.onerror) {
108
+ this.onerror(error);
109
+ }
110
+ for (const handler of this.errorHandlers) {
111
+ handler(error);
112
+ }
113
+ }
114
+
107
115
  private simulateMessage(data: WorkerResponse): void {
108
116
  const event = { data };
109
117
  if (this.onmessage) {
@@ -113,15 +121,6 @@ class MockWorker {
113
121
  handler(event);
114
122
  }
115
123
  }
116
-
117
- simulateError(error: Error): void {
118
- if (this.onerror) {
119
- this.onerror(error);
120
- }
121
- for (const handler of this.errorHandlers) {
122
- handler(error);
123
- }
124
- }
125
124
  }
126
125
 
127
126
  // Mock Worker that fails signing
@@ -5,9 +5,8 @@
5
5
  * infrastructure are cryptographically valid.
6
6
  */
7
7
 
8
- import { describe, it, expect, beforeAll } from 'vitest';
8
+ import { beforeAll, describe, expect, it } from 'vitest';
9
9
  import * as ecc from 'tiny-secp256k1';
10
- import { ECPairFactory } from 'ecpair';
11
10
  import { randomBytes } from 'crypto';
12
11
 
13
12
  import { SignatureType, type WorkerEccLib } from '../src/workers/types.js';
@@ -15,8 +14,13 @@ import { generateWorkerCode } from '../src/workers/signing-worker.js';
15
14
  import { toXOnly } from '../src/pubkey.js';
16
15
  import { initEccLib } from '../src/ecc/context.js';
17
16
  import type { EccLib } from '../src/types.js';
17
+ import { ECPairSigner, createNobleBackend } from '@btc-vision/ecpair';
18
+ import { bitcoin } from '../src/networks.js';
18
19
 
19
- const ECPair = ECPairFactory(ecc);
20
+ const backend = createNobleBackend();
21
+ const ECPair = {
22
+ makeRandom: () => ECPairSigner.makeRandom(backend, bitcoin),
23
+ };
20
24
 
21
25
  describe('Worker Signing - Signature Verification', () => {
22
26
  beforeAll(() => {
@@ -1,16 +1,15 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi, type Mock } from 'vitest';
1
+ import { beforeEach, describe, expect, it } from 'vitest';
2
2
  import {
3
- SignatureType,
4
- WorkerState,
5
3
  isSigningError,
6
4
  isSigningResult,
7
5
  isWorkerReady,
8
- type WorkerResponse,
9
- type SigningResultMessage,
6
+ type ParallelSignerKeyPair,
7
+ SignatureType,
10
8
  type SigningErrorMessage,
11
- type WorkerReadyMessage,
9
+ type SigningResultMessage,
12
10
  type SigningTask,
13
- type ParallelSignerKeyPair,
11
+ type WorkerReadyMessage,
12
+ WorkerState,
14
13
  } from '../src/workers/types.js';
15
14
  import { generateWorkerCode } from '../src/workers/signing-worker.js';
16
15
 
package/typedoc.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": [
4
+ "src/index.ts",
5
+ "src/workers/index.ts"
6
+ ],
7
+ "out": "docs",
8
+ "tsconfig": "tsconfig.build.json",
9
+ "name": "@btc-vision/bitcoin",
10
+ "includeVersion": true,
11
+ "readme": "README.md",
12
+ "entryPointStrategy": "resolve",
13
+ "excludePrivate": true,
14
+ "excludeInternal": true,
15
+ "excludeExternals": false,
16
+ "categorizeByGroup": true,
17
+ "navigation": {
18
+ "includeCategories": true,
19
+ "includeGroups": true
20
+ },
21
+ "sort": [
22
+ "kind",
23
+ "alphabetical"
24
+ ],
25
+ "plugin": [
26
+ "typedoc-material-theme"
27
+ ],
28
+ "themeColor": "#F7931A",
29
+ "intentionallyNotExported": [
30
+ "Brand",
31
+ "HashLeaf",
32
+ "HashBranch",
33
+ "TaggedHashPrefixes",
34
+ "__module",
35
+ "PrevOut",
36
+ "TxInCacheMap",
37
+ "NodeEccLibrary"
38
+ ]
39
+ }
@@ -0,0 +1,68 @@
1
+ import { resolve } from 'path';
2
+ import { defineConfig } from 'vitest/config';
3
+ import { nodePolyfills } from 'vite-plugin-node-polyfills';
4
+ import wasm from 'vite-plugin-wasm';
5
+ import topLevelAwait from 'vite-plugin-top-level-await';
6
+ import { playwright } from '@vitest/browser-playwright';
7
+
8
+ export default defineConfig({
9
+ resolve: {
10
+ alias: {
11
+ crypto: resolve(__dirname, 'src/crypto/crypto-browser.js'),
12
+ stream: 'stream-browserify',
13
+ buffer: 'buffer',
14
+ zlib: 'browserify-zlib',
15
+ },
16
+ },
17
+ plugins: [
18
+ wasm(),
19
+ topLevelAwait(),
20
+ nodePolyfills({
21
+ globals: {
22
+ Buffer: true,
23
+ global: true,
24
+ process: true,
25
+ },
26
+ }),
27
+ ],
28
+ optimizeDeps: {
29
+ exclude: ['tiny-secp256k1'],
30
+ },
31
+ test: {
32
+ globals: true,
33
+ include: [
34
+ // Browser-compatible existing tests (no Node.js deps)
35
+ 'test/address.spec.ts',
36
+ 'test/block.spec.ts',
37
+ 'test/bufferutils.spec.ts',
38
+ 'test/crypto.spec.ts',
39
+ 'test/bitcoin.core.spec.ts',
40
+ 'test/transaction.spec.ts',
41
+ 'test/types.spec.ts',
42
+ 'test/script_number.spec.ts',
43
+ 'test/script_signature.spec.ts',
44
+ 'test/workers.spec.ts',
45
+ 'test/workers-pool.spec.ts',
46
+ // Browser-adapted versions
47
+ 'test/browser/payments.spec.ts',
48
+ 'test/browser/psbt.spec.ts',
49
+ 'test/browser/workers-signing.spec.ts',
50
+ 'test/browser/script.spec.ts',
51
+ ],
52
+ exclude: [
53
+ 'test/integration/**/*.ts',
54
+ // Originals that need Node.js APIs
55
+ 'test/payments.spec.ts',
56
+ 'test/psbt.spec.ts',
57
+ 'test/workers-signing.spec.ts',
58
+ 'test/script.spec.ts',
59
+ ],
60
+ testTimeout: 30000,
61
+ browser: {
62
+ enabled: true,
63
+ provider: playwright(),
64
+ instances: [{ browser: 'chromium' }],
65
+ headless: true,
66
+ },
67
+ },
68
+ });
@@ -1,99 +0,0 @@
1
- /**
2
- * Ambient module declaration for ecpair.
3
- *
4
- * The upstream ecpair@3 .d.ts files depend on valibot@^0.37 type-level APIs.
5
- * When a different valibot major is hoisted (e.g. v1.x required by bip32),
6
- * @typescript-eslint resolves valibot from the project root instead of
7
- * ecpair's nested node_modules, turning every ecpair type into an error type.
8
- *
9
- * This local declaration re-exports the subset of ecpair's public API that
10
- * this project actually uses, without any valibot dependency.
11
- */
12
- declare module 'ecpair' {
13
- interface Network {
14
- messagePrefix: string | Uint8Array;
15
- bech32: string;
16
- bip32: {
17
- public: number;
18
- private: number;
19
- };
20
- pubKeyHash: number;
21
- scriptHash: number;
22
- wif: number;
23
- }
24
-
25
- interface Signer {
26
- publicKey: Uint8Array;
27
- network?: unknown;
28
- sign(hash: Uint8Array, lowR?: boolean): Uint8Array;
29
- }
30
-
31
- interface SignerAsync {
32
- publicKey: Uint8Array;
33
- network?: unknown;
34
- sign(hash: Uint8Array, lowR?: boolean): Promise<Uint8Array>;
35
- }
36
-
37
- interface ECPairInterface extends Signer {
38
- compressed: boolean;
39
- network: Network;
40
- lowR: boolean;
41
- privateKey?: Uint8Array;
42
- toWIF(): string;
43
- tweak(t: Uint8Array): ECPairInterface;
44
- verify(hash: Uint8Array, signature: Uint8Array): boolean;
45
- verifySchnorr(hash: Uint8Array, signature: Uint8Array): boolean;
46
- signSchnorr(hash: Uint8Array): Uint8Array;
47
- }
48
-
49
- interface ECPairOptions {
50
- compressed?: boolean;
51
- network?: Network;
52
- rng?: (arg?: number) => Uint8Array;
53
- }
54
-
55
- interface ECPairAPI {
56
- isPoint(maybePoint: unknown): boolean;
57
- fromPrivateKey(buffer: Uint8Array, options?: ECPairOptions): ECPairInterface;
58
- fromPublicKey(buffer: Uint8Array, options?: ECPairOptions): ECPairInterface;
59
- fromWIF(wifString: string, network?: Network | Network[]): ECPairInterface;
60
- makeRandom(options?: ECPairOptions): ECPairInterface;
61
- }
62
-
63
- interface TinySecp256k1Interface {
64
- isPoint(p: Uint8Array): boolean;
65
- pointCompress(p: Uint8Array, compressed?: boolean): Uint8Array;
66
- isPrivate(d: Uint8Array): boolean;
67
- pointFromScalar(d: Uint8Array, compressed?: boolean): Uint8Array | null;
68
- xOnlyPointAddTweak(
69
- p: Uint8Array,
70
- tweak: Uint8Array,
71
- ): { parity: 1 | 0; xOnlyPubkey: Uint8Array } | null;
72
- privateAdd(d: Uint8Array, tweak: Uint8Array): Uint8Array | null;
73
- privateNegate(d: Uint8Array): Uint8Array;
74
- sign(h: Uint8Array, d: Uint8Array, e?: Uint8Array): Uint8Array;
75
- signSchnorr?(h: Uint8Array, d: Uint8Array, e?: Uint8Array): Uint8Array;
76
- verify(h: Uint8Array, Q: Uint8Array, signature: Uint8Array, strict?: boolean): boolean;
77
- verifySchnorr?(h: Uint8Array, Q: Uint8Array, signature: Uint8Array): boolean;
78
- }
79
-
80
- const networks: {
81
- bitcoin: Network;
82
- testnet: Network;
83
- };
84
-
85
- function ECPairFactory(ecc: TinySecp256k1Interface): ECPairAPI;
86
- export default ECPairFactory;
87
-
88
- export {
89
- ECPairFactory,
90
- Signer,
91
- SignerAsync,
92
- ECPairAPI,
93
- ECPairInterface,
94
- ECPairOptions,
95
- TinySecp256k1Interface,
96
- Network,
97
- networks,
98
- };
99
- }
package/src/ecpair.d.ts DELETED
@@ -1,99 +0,0 @@
1
- /**
2
- * Ambient module declaration for ecpair.
3
- *
4
- * The upstream ecpair@3 .d.ts files depend on valibot@^0.37 type-level APIs.
5
- * When a different valibot major is hoisted (e.g. v1.x required by bip32),
6
- * @typescript-eslint resolves valibot from the project root instead of
7
- * ecpair's nested node_modules, turning every ecpair type into an error type.
8
- *
9
- * This local declaration re-exports the subset of ecpair's public API that
10
- * this project actually uses, without any valibot dependency.
11
- */
12
- declare module 'ecpair' {
13
- interface Network {
14
- messagePrefix: string | Uint8Array;
15
- bech32: string;
16
- bip32: {
17
- public: number;
18
- private: number;
19
- };
20
- pubKeyHash: number;
21
- scriptHash: number;
22
- wif: number;
23
- }
24
-
25
- interface Signer {
26
- publicKey: Uint8Array;
27
- network?: unknown;
28
- sign(hash: Uint8Array, lowR?: boolean): Uint8Array;
29
- }
30
-
31
- interface SignerAsync {
32
- publicKey: Uint8Array;
33
- network?: unknown;
34
- sign(hash: Uint8Array, lowR?: boolean): Promise<Uint8Array>;
35
- }
36
-
37
- interface ECPairInterface extends Signer {
38
- compressed: boolean;
39
- network: Network;
40
- lowR: boolean;
41
- privateKey?: Uint8Array;
42
- toWIF(): string;
43
- tweak(t: Uint8Array): ECPairInterface;
44
- verify(hash: Uint8Array, signature: Uint8Array): boolean;
45
- verifySchnorr(hash: Uint8Array, signature: Uint8Array): boolean;
46
- signSchnorr(hash: Uint8Array): Uint8Array;
47
- }
48
-
49
- interface ECPairOptions {
50
- compressed?: boolean;
51
- network?: Network;
52
- rng?: (arg?: number) => Uint8Array;
53
- }
54
-
55
- interface ECPairAPI {
56
- isPoint(maybePoint: unknown): boolean;
57
- fromPrivateKey(buffer: Uint8Array, options?: ECPairOptions): ECPairInterface;
58
- fromPublicKey(buffer: Uint8Array, options?: ECPairOptions): ECPairInterface;
59
- fromWIF(wifString: string, network?: Network | Network[]): ECPairInterface;
60
- makeRandom(options?: ECPairOptions): ECPairInterface;
61
- }
62
-
63
- interface TinySecp256k1Interface {
64
- isPoint(p: Uint8Array): boolean;
65
- pointCompress(p: Uint8Array, compressed?: boolean): Uint8Array;
66
- isPrivate(d: Uint8Array): boolean;
67
- pointFromScalar(d: Uint8Array, compressed?: boolean): Uint8Array | null;
68
- xOnlyPointAddTweak(
69
- p: Uint8Array,
70
- tweak: Uint8Array,
71
- ): { parity: 1 | 0; xOnlyPubkey: Uint8Array } | null;
72
- privateAdd(d: Uint8Array, tweak: Uint8Array): Uint8Array | null;
73
- privateNegate(d: Uint8Array): Uint8Array;
74
- sign(h: Uint8Array, d: Uint8Array, e?: Uint8Array): Uint8Array;
75
- signSchnorr?(h: Uint8Array, d: Uint8Array, e?: Uint8Array): Uint8Array;
76
- verify(h: Uint8Array, Q: Uint8Array, signature: Uint8Array, strict?: boolean): boolean;
77
- verifySchnorr?(h: Uint8Array, Q: Uint8Array, signature: Uint8Array): boolean;
78
- }
79
-
80
- const networks: {
81
- bitcoin: Network;
82
- testnet: Network;
83
- };
84
-
85
- function ECPairFactory(ecc: TinySecp256k1Interface): ECPairAPI;
86
- export default ECPairFactory;
87
-
88
- export {
89
- ECPairFactory,
90
- Signer,
91
- SignerAsync,
92
- ECPairAPI,
93
- ECPairInterface,
94
- ECPairOptions,
95
- TinySecp256k1Interface,
96
- Network,
97
- networks,
98
- };
99
- }