@atomicfinance/bitcoin-rpc-provider 3.4.7 → 3.5.1

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.
@@ -37,7 +37,7 @@ class BitcoinRpcProvider extends jsonrpc_provider_1.JsonRpcProvider {
37
37
  async getBalance(_addresses) {
38
38
  const addresses = _addresses.map(utils_1.addressToString);
39
39
  const _utxos = await this.getUnspentTransactions(addresses);
40
- const utxos = lodash_1.flatten(_utxos);
40
+ const utxos = (0, lodash_1.flatten)(_utxos);
41
41
  return utxos.reduce((acc, utxo) => acc.plus(utxo.value), new types_1.BigNumber(0));
42
42
  }
43
43
  async getUnspentTransactions(_addresses) {
@@ -167,7 +167,7 @@ class BitcoinRpcProvider extends jsonrpc_provider_1.JsonRpcProvider {
167
167
  }
168
168
  async getParsedTransactionByHash(transactionHash, addFees = false) {
169
169
  const tx = await this.jsonrpc('getrawtransaction', transactionHash, 1);
170
- return bitcoin_utils_1.normalizeTransactionObject(tx, addFees ? await this.getTransactionFee(tx) : undefined, tx.confirmations > 0
170
+ return (0, bitcoin_utils_1.normalizeTransactionObject)(tx, addFees ? await this.getTransactionFee(tx) : undefined, tx.confirmations > 0
171
171
  ? await this.getBlockByHash(tx.blockhash)
172
172
  : undefined);
173
173
  }
@@ -181,7 +181,7 @@ class BitcoinRpcProvider extends jsonrpc_provider_1.JsonRpcProvider {
181
181
  async sendBatchTransaction(transactions) {
182
182
  const outputs = {};
183
183
  for (const tx of transactions) {
184
- outputs[utils_1.addressToString(tx.to)] = new types_1.BigNumber(tx.value)
184
+ outputs[(0, utils_1.addressToString)(tx.to)] = new types_1.BigNumber(tx.value)
185
185
  .dividedBy(1e8)
186
186
  .toNumber();
187
187
  }
@@ -190,7 +190,7 @@ class BitcoinRpcProvider extends jsonrpc_provider_1.JsonRpcProvider {
190
190
  const rawTxSigned = await this.signRawTransaction(rawTxFunded.hex);
191
191
  const fee = new types_1.BigNumber(rawTxFunded.fee).times(1e8).toNumber();
192
192
  await this.sendRawTransaction(rawTxSigned.hex);
193
- return bitcoin_utils_1.normalizeTransactionObject(bitcoin_utils_1.decodeRawTransaction(rawTxSigned.hex, this._network), fee);
193
+ return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(rawTxSigned.hex, this._network), fee);
194
194
  }
195
195
  async signRawTransaction(hexstring) {
196
196
  return this.jsonrpc('signrawtransactionwithwallet', hexstring);
@@ -1 +1 @@
1
- {"version":3,"file":"BitcoinRpcProvider.js","sourceRoot":"","sources":["../lib/BitcoinRpcProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BitcoinRpcProvider.js","sourceRoot":"","sources":["../lib/BitcoinRpcProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bitcoin_utils_1 = require("@atomicfinance/bitcoin-utils");
4
+ const errors_1 = require("@atomicfinance/errors");
5
+ const jsonrpc_provider_1 = require("@atomicfinance/jsonrpc-provider");
6
+ const types_1 = require("@atomicfinance/types");
7
+ const utils_1 = require("@atomicfinance/utils");
8
+ const lodash_1 = require("lodash");
9
+ class BitcoinRpcProvider extends jsonrpc_provider_1.JsonRpcProvider {
10
+ constructor(options) {
11
+ const { uri, username, password, network, feeBlockConfirmations = 1, defaultFeePerByte = 3, } = options;
12
+ super(uri, username, password);
13
+ this._network = network;
14
+ this._feeBlockConfirmations = feeBlockConfirmations;
15
+ this._defaultFeePerByte = defaultFeePerByte;
16
+ this._usedAddressCache = {};
17
+ }
18
+ async decodeRawTransaction(rawTransaction) {
19
+ return this.jsonrpc('decoderawtransaction', rawTransaction);
20
+ }
21
+ async getFeePerByte(numberOfBlocks = this._feeBlockConfirmations) {
22
+ try {
23
+ const { feerate } = await this.jsonrpc('estimatesmartfee', numberOfBlocks);
24
+ if (feerate && feerate > 0) {
25
+ return Math.ceil((feerate * 1e8) / 1000);
26
+ }
27
+ throw new Error('Invalid estimated fee');
28
+ }
29
+ catch (e) {
30
+ return this._defaultFeePerByte;
31
+ }
32
+ }
33
+ async getMinRelayFee() {
34
+ const { relayfee } = await this.jsonrpc('getnetworkinfo');
35
+ return (relayfee * 1e8) / 1000;
36
+ }
37
+ async getBalance(_addresses) {
38
+ const addresses = _addresses.map(utils_1.addressToString);
39
+ const _utxos = await this.getUnspentTransactions(addresses);
40
+ const utxos = (0, lodash_1.flatten)(_utxos);
41
+ return utxos.reduce((acc, utxo) => acc.plus(utxo.value), new types_1.BigNumber(0));
42
+ }
43
+ async getUnspentTransactions(_addresses) {
44
+ const addresses = _addresses.map(utils_1.addressToString);
45
+ const utxos = await this.jsonrpc('listunspent', 0, 9999999, addresses);
46
+ return utxos.map((utxo) => ({
47
+ ...utxo,
48
+ value: new types_1.BigNumber(utxo.amount).times(1e8).toNumber(),
49
+ }));
50
+ }
51
+ async getAddressTransactionCounts(_addresses) {
52
+ const addresses = _addresses.map(utils_1.addressToString);
53
+ const receivedAddresses = await this.jsonrpc('listreceivedbyaddress', 0, false, true);
54
+ return addresses.reduce((acc, addr) => {
55
+ const receivedAddress = receivedAddresses.find((receivedAddress) => receivedAddress.address === addr);
56
+ const transactionCount = receivedAddress
57
+ ? receivedAddress.txids.length
58
+ : 0;
59
+ acc[addr] = transactionCount;
60
+ return acc;
61
+ }, {});
62
+ }
63
+ async getReceivedByAddress(address) {
64
+ return this.jsonrpc('getreceivedbyaddress', address);
65
+ }
66
+ async importAddresses(addresses) {
67
+ const request = addresses.map((address) => ({
68
+ scriptPubKey: { address },
69
+ timestamp: 0,
70
+ }));
71
+ return this.jsonrpc('importmulti', request);
72
+ }
73
+ async getTransactionHex(transactionHash) {
74
+ return this.jsonrpc('getrawtransaction', transactionHash);
75
+ }
76
+ async generateBlock(numberOfBlocks) {
77
+ const miningAddressLabel = 'miningAddress';
78
+ let address;
79
+ try {
80
+ // Avoid creating 100s of addresses for mining
81
+ const labelAddresses = await this.jsonrpc('getaddressesbylabel', miningAddressLabel);
82
+ address = Object.keys(labelAddresses)[0];
83
+ }
84
+ catch (e) {
85
+ // Label does not exist
86
+ address = await this.jsonrpc('getnewaddress', miningAddressLabel);
87
+ }
88
+ return this.jsonrpc('generatetoaddress', numberOfBlocks, address);
89
+ }
90
+ async getBlockByHash(blockHash, includeTx = false) {
91
+ let data;
92
+ try {
93
+ data = await this.jsonrpc('getblock', blockHash); // TODO: This doesn't fit the interface?: https://chainquery.com/bitcoin-cli/getblock
94
+ }
95
+ catch (e) {
96
+ if (e.name === 'NodeError' && e.message.includes('Block not found')) {
97
+ const { name, message, ...attrs } = e;
98
+ throw new errors_1.BlockNotFoundError(`Block not found: ${blockHash}`, attrs);
99
+ }
100
+ throw e;
101
+ }
102
+ const { hash, height: number, mediantime: timestamp, difficulty, size, previousblockhash: parentHash, nonce, tx: transactionHashes, } = data;
103
+ let transactions = transactionHashes;
104
+ // TODO: Why transactions need to be retrieved individually? getblock has verbose 2 https://chainquery.com/bitcoin-cli/getblock
105
+ if (includeTx) {
106
+ const txs = transactionHashes.map((hash) => this.getTransactionByHash(hash));
107
+ transactions = await Promise.all(txs);
108
+ }
109
+ return {
110
+ hash,
111
+ number,
112
+ timestamp,
113
+ difficulty: parseFloat(new types_1.BigNumber(difficulty).toFixed()),
114
+ size,
115
+ parentHash,
116
+ nonce,
117
+ transactions,
118
+ };
119
+ }
120
+ async getBlockByNumber(blockNumber, includeTx = false) {
121
+ let blockHash;
122
+ try {
123
+ blockHash = await this.jsonrpc('getblockhash', blockNumber);
124
+ }
125
+ catch (e) {
126
+ if (e.name === 'NodeError' &&
127
+ e.message.includes('Block height out of range')) {
128
+ const { name, message, ...attrs } = e;
129
+ throw new errors_1.BlockNotFoundError(`Block not found: ${blockNumber}`, attrs);
130
+ }
131
+ throw e;
132
+ }
133
+ return this.getBlockByHash(blockHash, includeTx);
134
+ }
135
+ async getBlockHeight() {
136
+ return this.jsonrpc('getblockcount');
137
+ }
138
+ async getTransactionByHash(transactionHash) {
139
+ try {
140
+ const tx = await this.getParsedTransactionByHash(transactionHash, true);
141
+ return tx;
142
+ }
143
+ catch (e) {
144
+ if (e.name === 'NodeError' &&
145
+ e.message.includes('No such mempool transaction')) {
146
+ const { name, message, ...attrs } = e;
147
+ throw new errors_1.TxNotFoundError(`Transaction not found: ${transactionHash}`, attrs);
148
+ }
149
+ throw e;
150
+ }
151
+ }
152
+ async getTransactionFee(tx) {
153
+ const isCoinbaseTx = tx.vin.find((vin) => vin.coinbase);
154
+ if (isCoinbaseTx)
155
+ return; // Coinbase transactions do not have a fee
156
+ const inputs = tx.vin.map((vin) => ({ txid: vin.txid, vout: vin.vout }));
157
+ const inputTransactions = await Promise.all(inputs.map((input) => this.jsonrpc('getrawtransaction', input.txid, 1)));
158
+ const inputValues = inputTransactions.map((inputTx, index) => {
159
+ const vout = inputs[index].vout;
160
+ const output = inputTx.vout[vout];
161
+ return output.value * 1e8;
162
+ });
163
+ const inputValue = inputValues.reduce((a, b) => a.plus(new types_1.BigNumber(b)), new types_1.BigNumber(0));
164
+ const outputValue = tx.vout.reduce((a, b) => a.plus(new types_1.BigNumber(b.value).times(new types_1.BigNumber(1e8))), new types_1.BigNumber(0));
165
+ const feeValue = inputValue.minus(outputValue);
166
+ return feeValue.toNumber();
167
+ }
168
+ async getParsedTransactionByHash(transactionHash, addFees = false) {
169
+ const tx = await this.jsonrpc('getrawtransaction', transactionHash, 1);
170
+ return (0, bitcoin_utils_1.normalizeTransactionObject)(tx, addFees ? await this.getTransactionFee(tx) : undefined, tx.confirmations > 0
171
+ ? await this.getBlockByHash(tx.blockhash)
172
+ : undefined);
173
+ }
174
+ async getRawTransactionByHash(transactionHash) {
175
+ const tx = await this.jsonrpc('getrawtransaction', transactionHash, 0);
176
+ return tx;
177
+ }
178
+ async sendRawTransaction(rawTransaction) {
179
+ return this.jsonrpc('sendrawtransaction', rawTransaction);
180
+ }
181
+ async sendBatchTransaction(transactions) {
182
+ const outputs = {};
183
+ for (const tx of transactions) {
184
+ outputs[(0, utils_1.addressToString)(tx.to)] = new types_1.BigNumber(tx.value)
185
+ .dividedBy(1e8)
186
+ .toNumber();
187
+ }
188
+ const rawTxOutputs = await this.createRawTransaction([], outputs);
189
+ const rawTxFunded = await this.fundRawTransaction(rawTxOutputs);
190
+ const rawTxSigned = await this.signRawTransaction(rawTxFunded.hex);
191
+ const fee = new types_1.BigNumber(rawTxFunded.fee).times(1e8).toNumber();
192
+ await this.sendRawTransaction(rawTxSigned.hex);
193
+ return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(rawTxSigned.hex, this._network), fee);
194
+ }
195
+ async signRawTransaction(hexstring) {
196
+ return this.jsonrpc('signrawtransactionwithwallet', hexstring);
197
+ }
198
+ async createRawTransaction(transactions, outputs) {
199
+ return this.jsonrpc('createrawtransaction', transactions, outputs);
200
+ }
201
+ async fundRawTransaction(hexstring) {
202
+ return this.jsonrpc('fundrawtransaction', hexstring);
203
+ }
204
+ }
205
+ exports.default = BitcoinRpcProvider;
206
+ //# sourceMappingURL=BitcoinRpcProvider.js.map
package/lib/index.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BitcoinRpcProvider = void 0;
7
+ const BitcoinRpcProvider_1 = __importDefault(require("./BitcoinRpcProvider"));
8
+ exports.BitcoinRpcProvider = BitcoinRpcProvider_1.default;
9
+ //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "@atomicfinance/bitcoin-rpc-provider",
3
- "version": "3.4.7",
3
+ "version": "3.5.1",
4
4
  "description": "",
5
5
  "module": "dist/index.js",
6
6
  "main": "dist/index.js",
7
- "types": "dist/lib/index.d.ts",
8
7
  "directories": {
9
8
  "dist": "dist",
10
9
  "src": "lib"
@@ -25,11 +24,11 @@
25
24
  "node": ">=14"
26
25
  },
27
26
  "dependencies": {
28
- "@atomicfinance/bitcoin-utils": "^3.4.7",
29
- "@atomicfinance/errors": "^3.4.7",
30
- "@atomicfinance/jsonrpc-provider": "^3.4.7",
31
- "@atomicfinance/types": "^3.4.7",
32
- "@atomicfinance/utils": "^3.4.7",
27
+ "@atomicfinance/bitcoin-utils": "^3.5.1",
28
+ "@atomicfinance/errors": "^3.5.1",
29
+ "@atomicfinance/jsonrpc-provider": "^3.5.1",
30
+ "@atomicfinance/types": "^3.5.1",
31
+ "@atomicfinance/utils": "^3.5.1",
33
32
  "@babel/runtime": "^7.12.1",
34
33
  "bignumber.js": "^9.0.0",
35
34
  "bitcoin-networks": "^1.0.0",
package/CHANGELOG.md DELETED
@@ -1,239 +0,0 @@
1
- # @atomicfinance/bitcoin-rpc-provider
2
-
3
- ## 3.4.7
4
-
5
- ### Patch Changes
6
-
7
- - 0ba01ef: Bump @node-dlc to 0.23.6
8
- - Updated dependencies [0ba01ef]
9
- - @atomicfinance/types@3.4.7
10
- - @atomicfinance/bitcoin-utils@3.4.7
11
- - @atomicfinance/errors@3.4.7
12
- - @atomicfinance/jsonrpc-provider@3.4.7
13
- - @atomicfinance/utils@3.4.7
14
-
15
- ## 3.4.6
16
-
17
- ### Patch Changes
18
-
19
- - b765b9c: Bump nodep-dlc to 0.23.5
20
- - Updated dependencies [b765b9c]
21
- - @atomicfinance/types@3.4.6
22
- - @atomicfinance/bitcoin-utils@3.4.6
23
- - @atomicfinance/errors@3.4.6
24
- - @atomicfinance/jsonrpc-provider@3.4.6
25
- - @atomicfinance/utils@3.4.6
26
-
27
- ## 3.4.5
28
-
29
- ### Patch Changes
30
-
31
- - 74b7a4f: Bump node-dlc to 0.23.4
32
- - Updated dependencies [74b7a4f]
33
- - @atomicfinance/types@3.4.5
34
- - @atomicfinance/bitcoin-utils@3.4.5
35
- - @atomicfinance/errors@3.4.5
36
- - @atomicfinance/jsonrpc-provider@3.4.5
37
- - @atomicfinance/utils@3.4.5
38
-
39
- ## 3.4.4
40
-
41
- ### Patch Changes
42
-
43
- - cc8f06a: Bump node-dlc to 0.23.3
44
- - Updated dependencies [cc8f06a]
45
- - @atomicfinance/types@3.4.4
46
- - @atomicfinance/bitcoin-utils@3.4.4
47
- - @atomicfinance/errors@3.4.4
48
- - @atomicfinance/jsonrpc-provider@3.4.4
49
- - @atomicfinance/utils@3.4.4
50
-
51
- ## 3.4.3
52
-
53
- ### Patch Changes
54
-
55
- - db49017: Bump node-dlc to 0.23.2 for all packages
56
- - Updated dependencies [db49017]
57
- - @atomicfinance/types@3.4.3
58
- - @atomicfinance/bitcoin-utils@3.4.3
59
- - @atomicfinance/errors@3.4.3
60
- - @atomicfinance/jsonrpc-provider@3.4.3
61
- - @atomicfinance/utils@3.4.3
62
-
63
- ## 3.4.2
64
-
65
- ### Patch Changes
66
-
67
- - e701ba6: Bump node-dlc- to 0.23.1 and add node-dlc batch tx builder validation tests
68
- - Updated dependencies [e701ba6]
69
- - @atomicfinance/types@3.4.2
70
- - @atomicfinance/bitcoin-utils@3.4.2
71
- - @atomicfinance/errors@3.4.2
72
- - @atomicfinance/jsonrpc-provider@3.4.2
73
- - @atomicfinance/utils@3.4.2
74
-
75
- ## 3.4.1
76
-
77
- ### Patch Changes
78
-
79
- - 9781efe: Add getInputsForDualFunding functionality and bump @node-dlc
80
- - Updated dependencies [9781efe]
81
- - @atomicfinance/bitcoin-utils@3.4.1
82
- - @atomicfinance/types@3.4.1
83
- - @atomicfinance/errors@3.4.1
84
- - @atomicfinance/jsonrpc-provider@3.4.1
85
- - @atomicfinance/utils@3.4.1
86
-
87
- ## 3.4.0
88
-
89
- ### Minor Changes
90
-
91
- - 314d7d7: Add batch dlc funding transactions
92
-
93
- ### Patch Changes
94
-
95
- - Updated dependencies [314d7d7]
96
- - @atomicfinance/types@3.4.0
97
- - @atomicfinance/bitcoin-utils@3.4.0
98
- - @atomicfinance/errors@3.4.0
99
- - @atomicfinance/jsonrpc-provider@3.4.0
100
- - @atomicfinance/utils@3.4.0
101
-
102
- ## 3.3.1
103
-
104
- ### Patch Changes
105
-
106
- - 7f6f4a8: Fix rounding error with find payout
107
- - Updated dependencies [7f6f4a8]
108
- - @atomicfinance/bitcoin-utils@3.3.1
109
- - @atomicfinance/errors@3.3.1
110
- - @atomicfinance/jsonrpc-provider@3.3.1
111
- - @atomicfinance/types@3.3.1
112
- - @atomicfinance/utils@3.3.1
113
-
114
- ## 3.3.0
115
-
116
- ### Minor Changes
117
-
118
- - 4a512ee: Fix find outcome index for hyperbola payout curve edge case
119
-
120
- ### Patch Changes
121
-
122
- - Updated dependencies [4a512ee]
123
- - @atomicfinance/bitcoin-utils@3.3.0
124
- - @atomicfinance/errors@3.3.0
125
- - @atomicfinance/jsonrpc-provider@3.3.0
126
- - @atomicfinance/types@3.3.0
127
- - @atomicfinance/utils@3.3.0
128
-
129
- ## 3.2.5
130
-
131
- ### Patch Changes
132
-
133
- - Updated dependencies [a72c7b9]
134
- - @atomicfinance/types@3.2.5
135
- - @atomicfinance/bitcoin-utils@3.2.5
136
- - @atomicfinance/errors@3.2.5
137
- - @atomicfinance/jsonrpc-provider@3.2.5
138
- - @atomicfinance/utils@3.2.5
139
-
140
- ## 3.2.4
141
-
142
- ### Patch Changes
143
-
144
- - 177b76a: Upgrade node-dlc to 0.22.4
145
- - Updated dependencies [177b76a]
146
- - @atomicfinance/bitcoin-utils@3.2.4
147
- - @atomicfinance/errors@3.2.4
148
- - @atomicfinance/jsonrpc-provider@3.2.4
149
- - @atomicfinance/types@3.2.4
150
- - @atomicfinance/utils@3.2.4
151
-
152
- ## 3.2.3
153
-
154
- ### Patch Changes
155
-
156
- - @atomicfinance/bitcoin-utils@3.2.3
157
- - @atomicfinance/errors@3.2.3
158
- - @atomicfinance/jsonrpc-provider@3.2.3
159
- - @atomicfinance/types@3.2.3
160
- - @atomicfinance/utils@3.2.3
161
-
162
- ## 3.2.2
163
-
164
- ### Patch Changes
165
-
166
- - @atomicfinance/bitcoin-utils@3.2.2
167
- - @atomicfinance/errors@3.2.2
168
- - @atomicfinance/jsonrpc-provider@3.2.2
169
- - @atomicfinance/types@3.2.2
170
- - @atomicfinance/utils@3.2.2
171
-
172
- ## 3.2.1
173
-
174
- ### Patch Changes
175
-
176
- - Updated dependencies [f69141e]
177
- - @atomicfinance/types@3.2.1
178
- - @atomicfinance/bitcoin-utils@3.2.1
179
- - @atomicfinance/errors@3.2.1
180
- - @atomicfinance/jsonrpc-provider@3.2.1
181
- - @atomicfinance/utils@3.2.1
182
-
183
- ## 3.2.0
184
-
185
- ### Patch Changes
186
-
187
- - Updated dependencies [dc9ac8a]
188
- - @atomicfinance/types@3.2.0
189
- - @atomicfinance/bitcoin-utils@3.2.0
190
- - @atomicfinance/errors@3.2.0
191
- - @atomicfinance/jsonrpc-provider@3.2.0
192
- - @atomicfinance/utils@3.2.0
193
-
194
- ## 3.1.1
195
-
196
- ### Patch Changes
197
-
198
- - @atomicfinance/bitcoin-utils@3.1.1
199
- - @atomicfinance/errors@3.1.1
200
- - @atomicfinance/jsonrpc-provider@3.1.1
201
- - @atomicfinance/types@3.1.1
202
- - @atomicfinance/utils@3.1.1
203
-
204
- ## 3.1.0
205
-
206
- ### Patch Changes
207
-
208
- - Updated dependencies [c60033b]
209
- - @atomicfinance/types@3.1.0
210
- - @atomicfinance/bitcoin-utils@3.1.0
211
- - @atomicfinance/errors@3.1.0
212
- - @atomicfinance/jsonrpc-provider@3.1.0
213
- - @atomicfinance/utils@3.1.0
214
-
215
- ## 3.0.1
216
-
217
- ### Patch Changes
218
-
219
- - @atomicfinance/bitcoin-utils@3.0.1
220
- - @atomicfinance/errors@3.0.1
221
- - @atomicfinance/jsonrpc-provider@3.0.1
222
- - @atomicfinance/types@3.0.1
223
- - @atomicfinance/utils@3.0.1
224
-
225
- ## 3.0.0
226
-
227
- ### Major Changes
228
-
229
- - 2edf70f: Port over bitcoin RPC related providers
230
-
231
- ### Patch Changes
232
-
233
- - Updated dependencies [2edf70f]
234
- - Updated dependencies [a06082e]
235
- - @atomicfinance/jsonrpc-provider@3.0.0
236
- - @atomicfinance/types@3.0.0
237
- - @atomicfinance/bitcoin-utils@3.0.0
238
- - @atomicfinance/errors@3.0.0
239
- - @atomicfinance/utils@3.0.0