@atomicfinance/bitcoin-js-wallet-provider 4.2.8 → 4.3.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.
@@ -0,0 +1,101 @@
1
+ import { Address, bitcoin as bT, Input, Output, Transaction } from '@atomicfinance/types';
2
+ import { BIP32Interface } from 'bip32';
3
+ import { BitcoinNetwork } from 'bitcoin-network';
4
+ import { ECPairInterface } from 'ecpair';
5
+ interface BitcoinSingleKeyWalletProviderOptions {
6
+ network: BitcoinNetwork;
7
+ privateKey: string;
8
+ addressType?: bT.AddressType;
9
+ }
10
+ declare const BaseProvider: any;
11
+ /**
12
+ * A wallet provider for a single private key (no HD derivation).
13
+ * Useful for simple use cases where you have one private key and don't need
14
+ * hierarchical deterministic wallet features.
15
+ */
16
+ export default class BitcoinSingleKeyWalletProvider extends BaseProvider {
17
+ _keyPair: ECPairInterface;
18
+ _address: Address;
19
+ constructor(options: BitcoinSingleKeyWalletProviderOptions);
20
+ private _parsePrivateKey;
21
+ /**
22
+ * Returns the ECPair for signing. Derivation path is ignored since we have a single key.
23
+ */
24
+ keyPair(_derivationPath?: string): Promise<ECPairInterface>;
25
+ /**
26
+ * Required by parent class but not really used for single-key wallet.
27
+ * Returns a BIP32 node created from the private key.
28
+ */
29
+ baseDerivationNode(): Promise<BIP32Interface>;
30
+ /**
31
+ * Returns the single address. Parameters are ignored.
32
+ */
33
+ getAddresses(_startingIndex?: number, // eslint-disable-line @typescript-eslint/no-unused-vars
34
+ _numAddresses?: number, // eslint-disable-line @typescript-eslint/no-unused-vars
35
+ _change?: boolean): Promise<Address[]>;
36
+ /**
37
+ * Returns the single address.
38
+ */
39
+ getUnusedAddress(_change?: boolean): Promise<Address>;
40
+ /**
41
+ * Checks if the requested address matches our single address.
42
+ */
43
+ findAddress(addresses: string[], _change?: boolean | null): Promise<Address | undefined>;
44
+ /**
45
+ * Returns the single address if it's used, empty array otherwise.
46
+ */
47
+ getUsedAddresses(): Promise<Address[]>;
48
+ /**
49
+ * Returns the wallet address if it matches.
50
+ */
51
+ getWalletAddress(address: string): Promise<Address>;
52
+ exportPrivateKey(): Promise<string>;
53
+ signMessage(message: string, from: string): Promise<string>;
54
+ _buildTransaction(targets: bT.OutputTarget[], feePerByte?: number, fixedInputs?: bT.Input[]): Promise<{
55
+ hex: string;
56
+ fee: number;
57
+ }>;
58
+ _buildSweepTransaction(externalChangeAddress: string, feePerByte: number): Promise<{
59
+ hex: string;
60
+ fee: number;
61
+ }>;
62
+ signPSBT(data: string, inputs: bT.PsbtInputTarget[]): Promise<string>;
63
+ signBatchP2SHTransaction(inputs: [
64
+ {
65
+ inputTxHex: string;
66
+ index: number;
67
+ vout: any;
68
+ outputScript: Buffer;
69
+ txInputIndex?: number;
70
+ }
71
+ ], _addresses: string, tx: any, _lockTime?: number, segwit?: boolean): Promise<Buffer[]>;
72
+ sendSweepTransactionWithSetOutputs(externalChangeAddress: string, feePerByte: number, _outputs: Output[], fixedInputs: Input[]): Promise<Transaction<bT.Transaction>>;
73
+ buildSweepTransactionWithSetOutputs(externalChangeAddress: string, feePerByte: number, _outputs: Output[], fixedInputs: Input[]): Promise<{
74
+ hex: string;
75
+ fee: number;
76
+ }>;
77
+ _buildSweepTransactionWithSetOutputs(externalChangeAddress: string, feePerByte: number, _outputs: Output[], fixedInputs: Input[]): Promise<{
78
+ hex: string;
79
+ fee: number;
80
+ }>;
81
+ _getInputForAmountWithoutUtxoCheck(_outputs: Output[], _feePerByte: number, fixedInputs: Input[]): {
82
+ inputs: bT.UTXO[];
83
+ outputs: {
84
+ value: number;
85
+ id?: string;
86
+ }[];
87
+ fee: number;
88
+ change: {
89
+ value: number;
90
+ id?: string;
91
+ };
92
+ };
93
+ _buildTransactionWithoutUtxoCheck(outputs: Output[], feePerByte: number, fixedInputs: Input[]): Promise<{
94
+ hex: string;
95
+ fee: number;
96
+ }>;
97
+ getScriptType(): string;
98
+ getConnectedNetwork(): Promise<BitcoinNetwork>;
99
+ isWalletAvailable(): Promise<boolean>;
100
+ }
101
+ export {};
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const bitcoin_utils_1 = require("@atomicfinance/bitcoin-utils");
40
+ const bitcoin_wallet_provider_1 = __importDefault(require("@atomicfinance/bitcoin-wallet-provider"));
41
+ const provider_1 = __importDefault(require("@atomicfinance/provider"));
42
+ const types_1 = require("@atomicfinance/types");
43
+ const ecc = __importStar(require("@bitcoin-js/tiny-secp256k1-asmjs"));
44
+ const bip32_1 = require("bip32");
45
+ const bitcoinjs_lib_1 = require("bitcoinjs-lib");
46
+ const ecpair_1 = require("ecpair");
47
+ const ECPair = (0, ecpair_1.ECPairFactory)(ecc);
48
+ const bitcoinjs_message_1 = require("bitcoinjs-message");
49
+ const FEE_PER_BYTE_FALLBACK = 5;
50
+ const DERIVATION_PATH = 'm/0';
51
+ // TypeScript has difficulty inferring the complex return type of the mixin pattern
52
+ // Using 'any' here is safe as we know the mixin returns the correct enhanced class
53
+ const BaseProvider = (0, bitcoin_wallet_provider_1.default)(provider_1.default);
54
+ /**
55
+ * A wallet provider for a single private key (no HD derivation).
56
+ * Useful for simple use cases where you have one private key and don't need
57
+ * hierarchical deterministic wallet features.
58
+ */
59
+ class BitcoinSingleKeyWalletProvider extends BaseProvider {
60
+ constructor(options) {
61
+ const { network, privateKey, addressType = types_1.bitcoin.AddressType.BECH32, } = options;
62
+ // Call parent with minimal required options
63
+ super({
64
+ network,
65
+ baseDerivationPath: DERIVATION_PATH,
66
+ addressType,
67
+ addressIndex: 0,
68
+ changeAddressIndex: 0,
69
+ });
70
+ // Parse private key (hex or WIF format)
71
+ this._keyPair = this._parsePrivateKey(privateKey, network);
72
+ // Pre-compute the single address
73
+ const publicKey = this._keyPair.publicKey;
74
+ const addressString = this.getAddressFromPublicKey(publicKey);
75
+ this._address = new types_1.Address({
76
+ address: addressString,
77
+ publicKey: publicKey.toString('hex'),
78
+ derivationPath: DERIVATION_PATH,
79
+ });
80
+ // Cache in derivation cache for compatibility
81
+ this._derivationCache[DERIVATION_PATH] = this._address;
82
+ }
83
+ _parsePrivateKey(privateKey, network) {
84
+ // Check if WIF format (starts with 5, K, L, c, or 9 and is ~52 chars)
85
+ if (privateKey.length >= 51 &&
86
+ privateKey.length <= 52 &&
87
+ /^[5KLc9]/.test(privateKey)) {
88
+ return ECPair.fromWIF(privateKey, network);
89
+ }
90
+ // Otherwise treat as hex (with or without 0x prefix)
91
+ let hexKey = privateKey;
92
+ if (hexKey.startsWith('0x')) {
93
+ hexKey = hexKey.slice(2);
94
+ }
95
+ if (hexKey.length !== 64) {
96
+ throw new Error('Private key must be 64 hex characters or valid WIF format');
97
+ }
98
+ return ECPair.fromPrivateKey(Buffer.from(hexKey, 'hex'), { network });
99
+ }
100
+ /**
101
+ * Returns the ECPair for signing. Derivation path is ignored since we have a single key.
102
+ */
103
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
104
+ async keyPair(_derivationPath) {
105
+ return this._keyPair;
106
+ }
107
+ /**
108
+ * Required by parent class but not really used for single-key wallet.
109
+ * Returns a BIP32 node created from the private key.
110
+ */
111
+ async baseDerivationNode() {
112
+ return (0, bip32_1.fromPrivateKey)(this._keyPair.privateKey, Buffer.alloc(32), // chainCode not used
113
+ this._network);
114
+ }
115
+ /**
116
+ * Returns the single address. Parameters are ignored.
117
+ */
118
+ async getAddresses(_startingIndex = 0, // eslint-disable-line @typescript-eslint/no-unused-vars
119
+ _numAddresses = 1, // eslint-disable-line @typescript-eslint/no-unused-vars
120
+ _change = false) {
121
+ return [this._address];
122
+ }
123
+ /**
124
+ * Returns the single address.
125
+ */
126
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
127
+ async getUnusedAddress(_change = false) {
128
+ return this._address;
129
+ }
130
+ /**
131
+ * Checks if the requested address matches our single address.
132
+ */
133
+ async findAddress(addresses, _change = null) {
134
+ if (addresses.includes(this._address.address)) {
135
+ return this._address;
136
+ }
137
+ return undefined;
138
+ }
139
+ /**
140
+ * Returns the single address if it's used, empty array otherwise.
141
+ */
142
+ async getUsedAddresses() {
143
+ const transactionCounts = await this.getMethod('getAddressTransactionCounts')([this._address]);
144
+ if (transactionCounts[this._address.address] > 0) {
145
+ return [this._address];
146
+ }
147
+ return [];
148
+ }
149
+ /**
150
+ * Returns the wallet address if it matches.
151
+ */
152
+ async getWalletAddress(address) {
153
+ if (address === this._address.address) {
154
+ return this._address;
155
+ }
156
+ throw new Error('Wallet does not contain address');
157
+ }
158
+ async exportPrivateKey() {
159
+ return this._keyPair.toWIF();
160
+ }
161
+ async signMessage(message, from) {
162
+ if (from !== this._address.address) {
163
+ throw new Error('Address does not match wallet address');
164
+ }
165
+ const signature = await (0, bitcoinjs_message_1.signAsync)(message, this._keyPair.privateKey, this._keyPair.compressed);
166
+ return signature.toString('hex');
167
+ }
168
+ async _buildTransaction(targets, feePerByte, fixedInputs) {
169
+ const network = this._network;
170
+ const { inputs, change, fee } = await this.getInputsForAmount(targets, feePerByte, fixedInputs);
171
+ if (change) {
172
+ targets.push({
173
+ address: this._address.address,
174
+ value: change.value,
175
+ });
176
+ }
177
+ const psbt = new bitcoinjs_lib_1.Psbt({ network });
178
+ const needsWitness = [
179
+ types_1.bitcoin.AddressType.BECH32,
180
+ types_1.bitcoin.AddressType.P2SH_SEGWIT,
181
+ ].includes(this._addressType);
182
+ for (let i = 0; i < inputs.length; i++) {
183
+ const paymentVariant = this.getPaymentVariantFromPublicKey(this._keyPair.publicKey);
184
+ const psbtInput = {
185
+ hash: inputs[i].txid,
186
+ index: inputs[i].vout,
187
+ sequence: 0,
188
+ };
189
+ if (needsWitness) {
190
+ psbtInput.witnessUtxo = {
191
+ script: paymentVariant.output,
192
+ value: inputs[i].value,
193
+ };
194
+ }
195
+ else {
196
+ const inputTxRaw = await this.getMethod('getRawTransactionByHash')(inputs[i].txid);
197
+ psbtInput.nonWitnessUtxo = Buffer.from(inputTxRaw, 'hex');
198
+ }
199
+ if (this._addressType === types_1.bitcoin.AddressType.P2SH_SEGWIT) {
200
+ psbtInput.redeemScript = paymentVariant.redeem.output;
201
+ }
202
+ psbt.addInput(psbtInput);
203
+ }
204
+ for (const output of targets) {
205
+ if (output.script) {
206
+ psbt.addOutput({
207
+ value: output.value,
208
+ script: output.script,
209
+ });
210
+ }
211
+ else {
212
+ psbt.addOutput({
213
+ value: output.value,
214
+ address: output.address,
215
+ });
216
+ }
217
+ }
218
+ for (let i = 0; i < inputs.length; i++) {
219
+ psbt.signInput(i, this._keyPair);
220
+ psbt.validateSignaturesOfInput(i, (pubkey, msghash, signature) => ecc.verify(msghash, pubkey, signature));
221
+ }
222
+ psbt.finalizeAllInputs();
223
+ return { hex: psbt.extractTransaction().toHex(), fee };
224
+ }
225
+ async _buildSweepTransaction(externalChangeAddress, feePerByte) {
226
+ let _feePerByte = feePerByte || null;
227
+ if (!_feePerByte)
228
+ _feePerByte = await this.getMethod('getFeePerByte')();
229
+ const { inputs, outputs, change } = await this.getInputsForAmount([], _feePerByte, [], 100, true);
230
+ if (change) {
231
+ throw new Error('There should not be any change for sweeping transaction');
232
+ }
233
+ const _outputs = [
234
+ {
235
+ address: externalChangeAddress,
236
+ value: outputs[0].value,
237
+ },
238
+ ];
239
+ return this._buildTransaction(_outputs, feePerByte, inputs);
240
+ }
241
+ async signPSBT(data, inputs) {
242
+ const psbt = bitcoinjs_lib_1.Psbt.fromBase64(data, { network: this._network });
243
+ for (const input of inputs) {
244
+ // Ignore derivationPath, use our single key
245
+ psbt.signInput(input.index, this._keyPair);
246
+ }
247
+ return psbt.toBase64();
248
+ }
249
+ async signBatchP2SHTransaction(inputs, _addresses, tx, _lockTime, segwit) {
250
+ const sigs = [];
251
+ for (let i = 0; i < inputs.length; i++) {
252
+ const index = inputs[i].txInputIndex
253
+ ? inputs[i].txInputIndex
254
+ : inputs[i].index;
255
+ let sigHash;
256
+ if (segwit) {
257
+ sigHash = tx.hashForWitnessV0(index, inputs[i].outputScript, inputs[i].vout.vSat, bitcoinjs_lib_1.Transaction.SIGHASH_ALL);
258
+ }
259
+ else {
260
+ sigHash = tx.hashForSignature(index, inputs[i].outputScript, bitcoinjs_lib_1.Transaction.SIGHASH_ALL);
261
+ }
262
+ const sig = bitcoinjs_lib_1.script.signature.encode(this._keyPair.sign(sigHash), bitcoinjs_lib_1.Transaction.SIGHASH_ALL);
263
+ sigs.push(sig);
264
+ }
265
+ return sigs;
266
+ }
267
+ async sendSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs) {
268
+ const { hex, fee } = await this._buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs);
269
+ await this.getMethod('sendRawTransaction')(hex);
270
+ return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network), fee);
271
+ }
272
+ async buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs) {
273
+ return this._buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs);
274
+ }
275
+ async _buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs = [], fixedInputs) {
276
+ const _feePerByte = feePerByte ||
277
+ (await this.getMethod('getFeePerByte')()) ||
278
+ FEE_PER_BYTE_FALLBACK;
279
+ const inputs = [];
280
+ const outputs = [];
281
+ try {
282
+ const inputsForAmount = await this.getInputsForAmount(_outputs, _feePerByte, fixedInputs, 100, true);
283
+ if (inputsForAmount.change) {
284
+ throw Error('There should not be any change for sweeping transaction');
285
+ }
286
+ inputs.push(...(inputsForAmount.inputs || []));
287
+ outputs.push(...(inputsForAmount.outputs || []));
288
+ }
289
+ catch {
290
+ if (fixedInputs.length === 0) {
291
+ throw Error(`Inputs for amount doesn't exist and no fixedInputs provided`);
292
+ }
293
+ const inputsForAmount = this._getInputForAmountWithoutUtxoCheck(_outputs, _feePerByte, fixedInputs);
294
+ inputs.push(...(inputsForAmount.inputs.map((utxo) => types_1.Input.fromUTXO(utxo)) || []));
295
+ outputs.push(...(inputsForAmount.outputs || []));
296
+ }
297
+ _outputs.forEach((output) => {
298
+ const spliceIndex = outputs.findIndex((sweepOutput) => output.value === sweepOutput.value);
299
+ outputs.splice(spliceIndex, 1);
300
+ });
301
+ _outputs.push({
302
+ to: externalChangeAddress,
303
+ value: outputs[0].value,
304
+ });
305
+ return this._buildTransactionWithoutUtxoCheck(_outputs, _feePerByte, inputs);
306
+ }
307
+ _getInputForAmountWithoutUtxoCheck(_outputs, _feePerByte, fixedInputs) {
308
+ const utxoBalance = fixedInputs.reduce((a, b) => a + (b['value'] || 0), 0);
309
+ const outputBalance = _outputs.reduce((a, b) => a + (b['value'] || 0), 0);
310
+ const amountToSend = utxoBalance -
311
+ _feePerByte * ((_outputs.length + 1) * 39 + fixedInputs.length * 153);
312
+ const targets = _outputs.map((target) => ({
313
+ id: 'main',
314
+ value: target.value,
315
+ }));
316
+ if (amountToSend - outputBalance > 0) {
317
+ targets.push({ id: 'main', value: amountToSend - outputBalance });
318
+ }
319
+ return (0, bitcoin_utils_1.selectCoins)(fixedInputs, targets, Math.ceil(_feePerByte), fixedInputs);
320
+ }
321
+ async _buildTransactionWithoutUtxoCheck(outputs, feePerByte, fixedInputs) {
322
+ const network = this._network;
323
+ const { fee } = this._getInputForAmountWithoutUtxoCheck(outputs, feePerByte, fixedInputs);
324
+ const inputs = fixedInputs;
325
+ const psbt = new bitcoinjs_lib_1.Psbt({ network });
326
+ const needsWitness = [
327
+ types_1.bitcoin.AddressType.BECH32,
328
+ types_1.bitcoin.AddressType.P2SH_SEGWIT,
329
+ ].includes(this._addressType);
330
+ for (let i = 0; i < inputs.length; i++) {
331
+ const paymentVariant = this.getPaymentVariantFromPublicKey(this._keyPair.publicKey);
332
+ const psbtInput = {
333
+ hash: inputs[i].txid,
334
+ index: inputs[i].vout,
335
+ sequence: 0,
336
+ };
337
+ if (needsWitness) {
338
+ psbtInput.witnessUtxo = {
339
+ script: paymentVariant.output,
340
+ value: inputs[i].value,
341
+ };
342
+ }
343
+ else {
344
+ const inputTxRaw = await this.getMethod('getRawTransactionByHash')(inputs[i].txid);
345
+ psbtInput.nonWitnessUtxo = Buffer.from(inputTxRaw, 'hex');
346
+ }
347
+ if (this._addressType === types_1.bitcoin.AddressType.P2SH_SEGWIT) {
348
+ psbtInput.redeemScript = paymentVariant.redeem.output;
349
+ }
350
+ psbt.addInput(psbtInput);
351
+ }
352
+ for (const output of outputs) {
353
+ psbt.addOutput({
354
+ value: output.value,
355
+ address: output.to,
356
+ });
357
+ }
358
+ for (let i = 0; i < inputs.length; i++) {
359
+ psbt.signInput(i, this._keyPair);
360
+ psbt.validateSignaturesOfInput(i, (pubkey, msghash, signature) => ecc.verify(msghash, pubkey, signature));
361
+ }
362
+ psbt.finalizeAllInputs();
363
+ return { hex: psbt.extractTransaction().toHex(), fee };
364
+ }
365
+ getScriptType() {
366
+ if (this._addressType === types_1.bitcoin.AddressType.LEGACY)
367
+ return 'p2pkh';
368
+ else if (this._addressType === types_1.bitcoin.AddressType.P2SH_SEGWIT)
369
+ return 'p2sh-p2wpkh';
370
+ else if (this._addressType === types_1.bitcoin.AddressType.BECH32)
371
+ return 'p2wpkh';
372
+ }
373
+ async getConnectedNetwork() {
374
+ return this._network;
375
+ }
376
+ async isWalletAvailable() {
377
+ return true;
378
+ }
379
+ }
380
+ exports.default = BitcoinSingleKeyWalletProvider;
381
+ //# sourceMappingURL=BitcoinSingleKeyWalletProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitcoinSingleKeyWalletProvider.js","sourceRoot":"","sources":["../lib/BitcoinSingleKeyWalletProvider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atomicfinance/bitcoin-js-wallet-provider",
3
- "version": "4.2.8",
3
+ "version": "4.3.0",
4
4
  "description": "",
5
5
  "module": "dist/index.js",
6
6
  "main": "dist/index.js",
@@ -18,11 +18,11 @@
18
18
  "node": ">=14"
19
19
  },
20
20
  "dependencies": {
21
- "@atomicfinance/bitcoin-utils": "^4.2.8",
22
- "@atomicfinance/bitcoin-wallet-provider": "^4.2.8",
23
- "@atomicfinance/provider": "^4.2.8",
24
- "@atomicfinance/types": "^4.2.8",
25
- "@atomicfinance/utils": "^4.2.8",
21
+ "@atomicfinance/bitcoin-utils": "^4.3.0",
22
+ "@atomicfinance/bitcoin-wallet-provider": "^4.3.0",
23
+ "@atomicfinance/provider": "^4.3.0",
24
+ "@atomicfinance/types": "^4.3.0",
25
+ "@atomicfinance/utils": "^4.3.0",
26
26
  "@babel/runtime": "^7.12.1",
27
27
  "@node-dlc/core": "1.1.7",
28
28
  "bip32": "^2.0.6",