@atomicfinance/bitcoin-js-wallet-provider 3.6.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,9 @@
1
1
  /// <reference types="node" />
2
- import Provider from '@atomicfinance/provider';
3
- import { Address, bitcoin as bT, CreateMultisigResponse, finalizePSBTResponse, Input, Output, Transaction } from '@atomicfinance/types';
2
+ import { bitcoin as bT, CreateMultisigResponse, finalizePSBTResponse, Input, Output, Transaction } from '@atomicfinance/types';
4
3
  import { BIP32Interface } from 'bip32';
5
4
  import { BitcoinNetwork } from 'bitcoin-networks';
6
5
  import * as bitcoin from 'bitcoinjs-lib';
7
- import { ECPairInterface } from 'bitcoinjs-lib';
8
- type WalletProviderConstructor<T = Provider> = new (...args: any[]) => T;
6
+ import { ECPairInterface } from 'ecpair';
9
7
  interface BitcoinJsWalletProviderOptions {
10
8
  network: BitcoinNetwork;
11
9
  mnemonic: string;
@@ -14,101 +12,8 @@ interface BitcoinJsWalletProviderOptions {
14
12
  addressIndex?: number;
15
13
  changeAddressIndex?: number;
16
14
  }
17
- declare const BitcoinJsWalletProvider_base: (abstract new (...args: any[]) => {
18
- _network: BitcoinNetwork;
19
- _unusedAddressesBlacklist: {
20
- [address: string]: true;
21
- };
22
- _maxAddressesToDerive: number;
23
- _baseDerivationPath: string;
24
- _addressType: bT.AddressType;
25
- _addressIndex: number;
26
- _changeAddressIndex: number;
27
- _derivationCache: {
28
- [index: string]: Address;
29
- };
30
- baseDerivationNode(): Promise<BIP32Interface>;
31
- _buildTransaction(targets: bT.OutputTarget[], feePerByte?: number, fixedInputs?: bT.Input[]): Promise<{
32
- hex: string;
33
- fee: number;
34
- }>;
35
- _buildSweepTransaction(externalChangeAddress: string, feePerByte?: number): Promise<{
36
- hex: string;
37
- fee: number;
38
- }>;
39
- signPSBT(data: string, inputs: bT.PsbtInputTarget[]): Promise<string>;
40
- signBatchP2SHTransaction(inputs: [{
41
- inputTxHex: string;
42
- index: number;
43
- vout: any;
44
- outputScript: Buffer;
45
- }], addresses: string, tx: any, lockTime?: number, segwit?: boolean): Promise<Buffer[]>;
46
- getDerivationCache(): {
47
- [index: string]: Address;
48
- };
49
- setDerivationCache(derivationCache: {
50
- [index: string]: Address;
51
- }): Promise<void>;
52
- sendOptionsToOutputs(transactions: import("@atomicfinance/types").SendOptions[]): bT.OutputTarget[];
53
- buildTransaction(output: bT.OutputTarget, feePerByte: number): Promise<{
54
- hex: string;
55
- fee: number;
56
- }>;
57
- buildBatchTransaction(outputs: bT.OutputTarget[]): Promise<{
58
- hex: string;
59
- fee: number;
60
- }>;
61
- _sendTransaction(transactions: bT.OutputTarget[], feePerByte?: number): Promise<Transaction<bT.Transaction>>;
62
- sendTransaction(options: import("@atomicfinance/types").SendOptions): Promise<Transaction<bT.Transaction>>;
63
- sendBatchTransaction(transactions: import("@atomicfinance/types").SendOptions[]): Promise<Transaction<bT.Transaction>>;
64
- buildSweepTransaction(externalChangeAddress: string, feePerByte: number): Promise<{
65
- hex: string;
66
- fee: number;
67
- }>;
68
- sendSweepTransaction(externalChangeAddress: string | Address, feePerByte: number): Promise<Transaction<bT.Transaction>>;
69
- getUnusedAddressesBlacklist(): {
70
- [address: string]: true;
71
- };
72
- setUnusedAddressesBlacklist(unusedAddressesBlacklist: {
73
- [address: string]: true;
74
- }): void;
75
- setMaxAddressesToDerive(maxAddressesToDerive: number): void;
76
- getMaxAddressesToDerive(): number;
77
- updateTransactionFee(tx: string | Transaction<bitcoin.Transaction>, newFeePerByte: number): Promise<Transaction<bT.Transaction>>;
78
- getUnusedAddress(change?: boolean, numAddressPerCall?: number): Promise<any>;
79
- _getUsedUnusedAddresses(numAddressPerCall: number, addressType: any): Promise<{
80
- usedAddresses: any[];
81
- unusedAddress: {
82
- change: any;
83
- nonChange: any;
84
- };
85
- firstUnusedAddress: any;
86
- }>;
87
- getWalletAddress(address: string): Promise<Address>;
88
- getAddressFromPublicKey(publicKey: Buffer): string;
89
- getPaymentVariantFromPublicKey(publicKey: Buffer): bitcoin.payments.Payment;
90
- getDerivationPathAddress(path: string): Promise<Address>;
91
- getAddresses(startingIndex?: number, numAddresses?: number, change?: boolean): Promise<Address[]>;
92
- findAddress(addresses: string[], change?: boolean): Promise<Address>;
93
- getUsedAddresses(numAddressPerCall?: number): Promise<any[]>;
94
- withCachedUtxos(func: () => any): Promise<any>;
95
- getTotalFee(opts: import("@atomicfinance/types").SendOptions, max: boolean): Promise<number>;
96
- getTotalFees(transactions: import("@atomicfinance/types").SendOptions[], max: boolean): Promise<any>;
97
- getInputsForAmount(_targets: bT.OutputTarget[], feePerByte?: number, fixedInputs?: bT.Input[], numAddressPerCall?: number, sweep?: boolean): Promise<{
98
- inputs: bT.UTXO[];
99
- change: import("@atomicfinance/bitcoin-utils").CoinSelectTarget;
100
- outputs: import("@atomicfinance/bitcoin-utils").CoinSelectTarget[];
101
- fee: number;
102
- }>;
103
- getInputsForDualFunding(collaterals: number[], feePerByte?: number, fixedInputs?: bT.Input[], numAddressPerCall?: number): Promise<{
104
- inputs: import("@node-dlc/core").UTXO[];
105
- fee: bigint;
106
- }>;
107
- client: import("@atomicfinance/types").IClient;
108
- setClient(client?: import("@atomicfinance/types").IClient): void;
109
- getMethod(method: string, requestor?: any): (...args: any[]) => any;
110
- }) & WalletProviderConstructor<Provider>;
111
- export default class BitcoinJsWalletProvider extends BitcoinJsWalletProvider_base {
15
+ declare const BaseProvider: any;
16
+ export default class BitcoinJsWalletProvider extends BaseProvider {
112
17
  _mnemonic: string;
113
18
  _seedNode: BIP32Interface;
114
19
  _baseDerivationNode: BIP32Interface;
@@ -182,11 +87,11 @@ export default class BitcoinJsWalletProvider extends BitcoinJsWalletProvider_bas
182
87
  }>;
183
88
  _buildTransaction(targets: bT.OutputTarget[], feePerByte?: number, fixedInputs?: bT.Input[]): Promise<{
184
89
  hex: string;
185
- fee: number;
90
+ fee: any;
186
91
  }>;
187
92
  _buildSweepTransaction(externalChangeAddress: string, feePerByte: number): Promise<{
188
93
  hex: string;
189
- fee: number;
94
+ fee: any;
190
95
  }>;
191
96
  signPSBT(data: string, inputs: bT.PsbtInputTarget[]): Promise<string>;
192
97
  signBatchP2SHTransaction(inputs: [
@@ -198,8 +103,8 @@ export default class BitcoinJsWalletProvider extends BitcoinJsWalletProvider_bas
198
103
  txInputIndex?: number;
199
104
  }
200
105
  ], addresses: string, tx: any, _lockTime?: number, segwit?: boolean): Promise<Buffer[]>;
201
- getScriptType(): "p2wpkh" | "p2pkh" | "p2sh-p2wpkh";
202
- getConnectedNetwork(): Promise<BitcoinNetwork>;
106
+ getScriptType(): "p2pkh" | "p2sh-p2wpkh" | "p2wpkh";
107
+ getConnectedNetwork(): Promise<any>;
203
108
  isWalletAvailable(): Promise<boolean>;
204
109
  }
205
110
  export {};
@@ -35,10 +35,16 @@ const bip32_1 = require("bip32");
35
35
  const bip39_1 = require("bip39");
36
36
  const bitcoin = __importStar(require("bitcoinjs-lib"));
37
37
  const bitcoinjs_lib_1 = require("bitcoinjs-lib");
38
+ const ecpair_1 = require("ecpair");
39
+ const ecc = __importStar(require("tiny-secp256k1"));
40
+ const ECPair = (0, ecpair_1.ECPairFactory)(ecc);
38
41
  const bitcoinjs_message_1 = require("bitcoinjs-message");
39
42
  const secp256k1_1 = __importDefault(require("secp256k1"));
40
43
  const FEE_PER_BYTE_FALLBACK = 5;
41
- class BitcoinJsWalletProvider extends (0, bitcoin_wallet_provider_1.default)(provider_1.default) {
44
+ // TypeScript has difficulty inferring the complex return type of the mixin pattern
45
+ // Using 'any' here is safe as we know the mixin returns the correct enhanced class
46
+ const BaseProvider = (0, bitcoin_wallet_provider_1.default)(provider_1.default);
47
+ class BitcoinJsWalletProvider extends BaseProvider {
42
48
  constructor(options) {
43
49
  const { network, mnemonic, baseDerivationPath, addressType = types_1.bitcoin.AddressType.BECH32, addressIndex = 0, changeAddressIndex = 0, } = options;
44
50
  super({
@@ -68,7 +74,7 @@ class BitcoinJsWalletProvider extends (0, bitcoin_wallet_provider_1.default)(pro
68
74
  }
69
75
  async keyPair(derivationPath) {
70
76
  const wif = await this._toWIF(derivationPath);
71
- return bitcoinjs_lib_1.ECPair.fromWIF(wif, this._network);
77
+ return ECPair.fromWIF(wif, this._network);
72
78
  }
73
79
  async _toWIF(derivationPath) {
74
80
  const node = await this.seedNode();
@@ -178,7 +184,7 @@ class BitcoinJsWalletProvider extends (0, bitcoin_wallet_provider_1.default)(pro
178
184
  psbt.signInput(i, keyPair);
179
185
  }));
180
186
  }));
181
- psbt.validateSignaturesOfAllInputs(); // ensure all signatures are valid!
187
+ psbt.validateSignaturesOfAllInputs((pubkey, msghash, signature) => ecc.verify(msghash, pubkey, signature)); // ensure all signatures are valid!
182
188
  return psbt.toBase64();
183
189
  }
184
190
  /**
@@ -192,7 +198,7 @@ class BitcoinJsWalletProvider extends (0, bitcoin_wallet_provider_1.default)(pro
192
198
  finalizePSBT(psbtString) {
193
199
  const psbt = bitcoin.Psbt.fromBase64(psbtString);
194
200
  try {
195
- psbt.validateSignaturesOfAllInputs(); // ensure all signatures are valid!
201
+ psbt.validateSignaturesOfAllInputs((pubkey, msghash, signature) => ecc.verify(msghash, pubkey, signature)); // ensure all signatures are valid!
196
202
  psbt.finalizeAllInputs();
197
203
  }
198
204
  catch (error) {
@@ -265,35 +271,49 @@ class BitcoinJsWalletProvider extends (0, bitcoin_wallet_provider_1.default)(pro
265
271
  const network = this._network;
266
272
  const { fee } = this._getInputForAmountWithoutUtxoCheck(outputs, feePerByte, fixedInputs);
267
273
  const inputs = fixedInputs;
268
- const txb = new bitcoin.TransactionBuilder(network);
269
- for (const output of outputs) {
270
- const to = output.to; // Allow for OP_RETURN
271
- txb.addOutput(to, output.value);
272
- }
273
- const prevOutScriptType = 'p2wpkh';
274
+ const psbt = new bitcoinjs_lib_1.Psbt({ network });
275
+ const needsWitness = [
276
+ types_1.bitcoin.AddressType.BECH32,
277
+ types_1.bitcoin.AddressType.P2SH_SEGWIT,
278
+ ].includes(this._addressType);
274
279
  for (let i = 0; i < inputs.length; i++) {
275
280
  const wallet = await this.getWalletAddress(inputs[i].address);
276
281
  const keyPair = await this.keyPair(wallet.derivationPath);
277
282
  const paymentVariant = this.getPaymentVariantFromPublicKey(keyPair.publicKey);
278
- txb.addInput(inputs[i].txid, inputs[i].vout, 0, paymentVariant.output);
283
+ const psbtInput = {
284
+ hash: inputs[i].txid,
285
+ index: inputs[i].vout,
286
+ sequence: 0,
287
+ };
288
+ if (needsWitness) {
289
+ psbtInput.witnessUtxo = {
290
+ script: paymentVariant.output,
291
+ value: inputs[i].value,
292
+ };
293
+ }
294
+ else {
295
+ const inputTxRaw = await this.getMethod('getRawTransactionByHash')(inputs[i].txid);
296
+ psbtInput.nonWitnessUtxo = Buffer.from(inputTxRaw, 'hex');
297
+ }
298
+ if (this._addressType === types_1.bitcoin.AddressType.P2SH_SEGWIT) {
299
+ psbtInput.redeemScript = paymentVariant.redeem.output;
300
+ }
301
+ psbt.addInput(psbtInput);
302
+ }
303
+ for (const output of outputs) {
304
+ psbt.addOutput({
305
+ value: output.value,
306
+ address: output.to,
307
+ });
279
308
  }
280
309
  for (let i = 0; i < inputs.length; i++) {
281
310
  const wallet = await this.getWalletAddress(inputs[i].address);
282
311
  const keyPair = await this.keyPair(wallet.derivationPath);
283
- const paymentVariant = this.getPaymentVariantFromPublicKey(keyPair.publicKey);
284
- const needsWitness = true;
285
- const signParams = {
286
- prevOutScriptType,
287
- vin: i,
288
- keyPair,
289
- witnessValue: 0,
290
- };
291
- if (needsWitness) {
292
- signParams.witnessValue = inputs[i].value;
293
- }
294
- txb.sign(signParams);
312
+ psbt.signInput(i, keyPair);
313
+ psbt.validateSignaturesOfInput(i, (pubkey, msghash, signature) => ecc.verify(msghash, pubkey, signature));
295
314
  }
296
- return { hex: txb.build().toHex(), fee };
315
+ psbt.finalizeAllInputs();
316
+ return { hex: psbt.extractTransaction().toHex(), fee };
297
317
  }
298
318
  async _buildTransaction(targets, feePerByte, fixedInputs) {
299
319
  const network = this._network;
@@ -352,7 +372,7 @@ class BitcoinJsWalletProvider extends (0, bitcoin_wallet_provider_1.default)(pro
352
372
  const wallet = await this.getWalletAddress(inputs[i].address);
353
373
  const keyPair = await this.keyPair(wallet.derivationPath);
354
374
  psbt.signInput(i, keyPair);
355
- psbt.validateSignaturesOfInput(i);
375
+ psbt.validateSignaturesOfInput(i, (pubkey, msghash, signature) => ecc.verify(msghash, pubkey, signature));
356
376
  }
357
377
  psbt.finalizeAllInputs();
358
378
  return { hex: psbt.extractTransaction().toHex(), fee };
@@ -381,7 +401,9 @@ class BitcoinJsWalletProvider extends (0, bitcoin_wallet_provider_1.default)(pro
381
401
  }
382
402
  return psbt.toBase64();
383
403
  }
384
- async signBatchP2SHTransaction(inputs, addresses, tx, _lockTime, segwit) {
404
+ async signBatchP2SHTransaction(inputs, addresses,
405
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
406
+ tx, _lockTime, segwit) {
385
407
  const keyPairs = [];
386
408
  for (const address of addresses) {
387
409
  const wallet = await this.getWalletAddress(address);
@@ -1 +1 @@
1
- {"version":3,"file":"BitcoinJsWalletProvider.js","sourceRoot":"","sources":["../lib/BitcoinJsWalletProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BitcoinJsWalletProvider.js","sourceRoot":"","sources":["../lib/BitcoinJsWalletProvider.ts"],"names":[],"mappings":"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"}
@@ -20,12 +20,14 @@ import { mnemonicToSeed } from 'bip39';
20
20
  import { BitcoinNetwork } from 'bitcoin-networks';
21
21
  import * as bitcoin from 'bitcoinjs-lib';
22
22
  import {
23
- ECPair,
24
- ECPairInterface,
25
23
  Psbt,
26
24
  script,
27
25
  Transaction as BitcoinJsTransaction,
28
26
  } from 'bitcoinjs-lib';
27
+ import { ECPairFactory, ECPairInterface } from 'ecpair';
28
+ import * as ecc from 'tiny-secp256k1';
29
+
30
+ const ECPair = ECPairFactory(ecc);
29
31
  import { signAsync as signBitcoinMessage } from 'bitcoinjs-message';
30
32
  import secp256k1 from 'secp256k1';
31
33
 
@@ -42,9 +44,13 @@ interface BitcoinJsWalletProviderOptions {
42
44
  changeAddressIndex?: number;
43
45
  }
44
46
 
45
- export default class BitcoinJsWalletProvider extends BitcoinWalletProvider(
47
+ // TypeScript has difficulty inferring the complex return type of the mixin pattern
48
+ // Using 'any' here is safe as we know the mixin returns the correct enhanced class
49
+ const BaseProvider: any = BitcoinWalletProvider(
46
50
  Provider as WalletProviderConstructor,
47
- ) {
51
+ );
52
+
53
+ export default class BitcoinJsWalletProvider extends BaseProvider {
48
54
  _mnemonic: string;
49
55
  _seedNode: BIP32Interface;
50
56
  _baseDerivationNode: BIP32Interface;
@@ -248,7 +254,10 @@ export default class BitcoinJsWalletProvider extends BitcoinWalletProvider(
248
254
  }),
249
255
  );
250
256
 
251
- psbt.validateSignaturesOfAllInputs(); // ensure all signatures are valid!
257
+ psbt.validateSignaturesOfAllInputs(
258
+ (pubkey: Buffer, msghash: Buffer, signature: Buffer) =>
259
+ ecc.verify(msghash, pubkey, signature),
260
+ ); // ensure all signatures are valid!
252
261
  return psbt.toBase64();
253
262
  }
254
263
 
@@ -264,7 +273,10 @@ export default class BitcoinJsWalletProvider extends BitcoinWalletProvider(
264
273
  const psbt = bitcoin.Psbt.fromBase64(psbtString);
265
274
 
266
275
  try {
267
- psbt.validateSignaturesOfAllInputs(); // ensure all signatures are valid!
276
+ psbt.validateSignaturesOfAllInputs(
277
+ (pubkey: Buffer, msghash: Buffer, signature: Buffer) =>
278
+ ecc.verify(msghash, pubkey, signature),
279
+ ); // ensure all signatures are valid!
268
280
  psbt.finalizeAllInputs();
269
281
  } catch (error) {
270
282
  return {
@@ -334,7 +346,7 @@ export default class BitcoinJsWalletProvider extends BitcoinWalletProvider(
334
346
  const inputsForAmount = await this.getInputsForAmount(
335
347
  _outputs,
336
348
  _feePerByte,
337
- (fixedInputs as unknown) as bT.Input[],
349
+ fixedInputs as unknown as bT.Input[],
338
350
  100,
339
351
  true,
340
352
  );
@@ -423,14 +435,12 @@ export default class BitcoinJsWalletProvider extends BitcoinWalletProvider(
423
435
  );
424
436
  const inputs = fixedInputs;
425
437
 
426
- const txb = new bitcoin.TransactionBuilder(network);
427
-
428
- for (const output of outputs) {
429
- const to = output.to; // Allow for OP_RETURN
430
- txb.addOutput(to, output.value);
431
- }
438
+ const psbt = new Psbt({ network });
432
439
 
433
- const prevOutScriptType = 'p2wpkh';
440
+ const needsWitness = [
441
+ bT.AddressType.BECH32,
442
+ bT.AddressType.P2SH_SEGWIT,
443
+ ].includes(this._addressType);
434
444
 
435
445
  for (let i = 0; i < inputs.length; i++) {
436
446
  const wallet = await this.getWalletAddress(inputs[i].address);
@@ -439,32 +449,52 @@ export default class BitcoinJsWalletProvider extends BitcoinWalletProvider(
439
449
  keyPair.publicKey,
440
450
  );
441
451
 
442
- txb.addInput(inputs[i].txid, inputs[i].vout, 0, paymentVariant.output);
452
+ const psbtInput: any = {
453
+ hash: inputs[i].txid,
454
+ index: inputs[i].vout,
455
+ sequence: 0,
456
+ };
457
+
458
+ if (needsWitness) {
459
+ psbtInput.witnessUtxo = {
460
+ script: paymentVariant.output,
461
+ value: inputs[i].value,
462
+ };
463
+ } else {
464
+ const inputTxRaw = await this.getMethod('getRawTransactionByHash')(
465
+ inputs[i].txid,
466
+ );
467
+ psbtInput.nonWitnessUtxo = Buffer.from(inputTxRaw, 'hex');
468
+ }
469
+
470
+ if (this._addressType === bT.AddressType.P2SH_SEGWIT) {
471
+ psbtInput.redeemScript = paymentVariant.redeem.output;
472
+ }
473
+
474
+ psbt.addInput(psbtInput);
475
+ }
476
+
477
+ for (const output of outputs) {
478
+ psbt.addOutput({
479
+ value: output.value,
480
+ address: output.to,
481
+ });
443
482
  }
444
483
 
445
484
  for (let i = 0; i < inputs.length; i++) {
446
485
  const wallet = await this.getWalletAddress(inputs[i].address);
447
486
  const keyPair = await this.keyPair(wallet.derivationPath);
448
- const paymentVariant = this.getPaymentVariantFromPublicKey(
449
- keyPair.publicKey,
487
+ psbt.signInput(i, keyPair);
488
+ psbt.validateSignaturesOfInput(
489
+ i,
490
+ (pubkey: Buffer, msghash: Buffer, signature: Buffer) =>
491
+ ecc.verify(msghash, pubkey, signature),
450
492
  );
451
- const needsWitness = true;
452
-
453
- const signParams = {
454
- prevOutScriptType,
455
- vin: i,
456
- keyPair,
457
- witnessValue: 0,
458
- };
459
-
460
- if (needsWitness) {
461
- signParams.witnessValue = inputs[i].value;
462
- }
463
-
464
- txb.sign(signParams);
465
493
  }
466
494
 
467
- return { hex: txb.build().toHex(), fee };
495
+ psbt.finalizeAllInputs();
496
+
497
+ return { hex: psbt.extractTransaction().toHex(), fee };
468
498
  }
469
499
 
470
500
  async _buildTransaction(
@@ -545,7 +575,11 @@ export default class BitcoinJsWalletProvider extends BitcoinWalletProvider(
545
575
  const wallet = await this.getWalletAddress(inputs[i].address);
546
576
  const keyPair = await this.keyPair(wallet.derivationPath);
547
577
  psbt.signInput(i, keyPair);
548
- psbt.validateSignaturesOfInput(i);
578
+ psbt.validateSignaturesOfInput(
579
+ i,
580
+ (pubkey: Buffer, msghash: Buffer, signature: Buffer) =>
581
+ ecc.verify(msghash, pubkey, signature),
582
+ );
549
583
  }
550
584
 
551
585
  psbt.finalizeAllInputs();
@@ -584,7 +618,7 @@ export default class BitcoinJsWalletProvider extends BitcoinWalletProvider(
584
618
  return this._buildTransaction(
585
619
  _outputs,
586
620
  feePerByte,
587
- (inputs as unknown) as bT.Input[],
621
+ inputs as unknown as bT.Input[],
588
622
  );
589
623
  }
590
624
 
@@ -602,12 +636,14 @@ export default class BitcoinJsWalletProvider extends BitcoinWalletProvider(
602
636
  {
603
637
  inputTxHex: string;
604
638
  index: number;
639
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
605
640
  vout: any;
606
641
  outputScript: Buffer;
607
642
  txInputIndex?: number;
608
643
  },
609
644
  ],
610
645
  addresses: string,
646
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
611
647
  tx: any,
612
648
  _lockTime?: number,
613
649
  segwit?: boolean,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atomicfinance/bitcoin-js-wallet-provider",
3
- "version": "3.6.0",
3
+ "version": "4.0.0",
4
4
  "description": "",
5
5
  "module": "dist/index.js",
6
6
  "main": "dist/index.js",
@@ -24,18 +24,20 @@
24
24
  "node": ">=14"
25
25
  },
26
26
  "dependencies": {
27
- "@atomicfinance/bitcoin-utils": "^3.6.0",
28
- "@atomicfinance/bitcoin-wallet-provider": "^3.6.0",
29
- "@atomicfinance/types": "^3.6.0",
30
- "@atomicfinance/utils": "^3.6.0",
27
+ "@atomicfinance/bitcoin-utils": "^4.0.0",
28
+ "@atomicfinance/bitcoin-wallet-provider": "^4.0.0",
29
+ "@atomicfinance/types": "^4.0.0",
30
+ "@atomicfinance/utils": "^4.0.0",
31
31
  "@babel/runtime": "^7.12.1",
32
- "@node-dlc/core": "0.24.0",
32
+ "@node-dlc/core": "^1.0.0",
33
33
  "bip32": "^2.0.6",
34
34
  "bip39": "^3.0.2",
35
35
  "bitcoin-networks": "^1.0.0",
36
- "bitcoinjs-lib": "5.2.0",
36
+ "bitcoinjs-lib": "6.1.7",
37
37
  "bitcoinjs-message": "^2.1.0",
38
- "secp256k1": "^4.0.3"
38
+ "ecpair": "^2.1.0",
39
+ "secp256k1": "^4.0.3",
40
+ "tiny-secp256k1": "^2.2.0"
39
41
  },
40
42
  "publishConfig": {
41
43
  "access": "public"