@did-btcr2/bitcoin 0.3.4 → 0.5.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.
- package/dist/cjs/client/http.js +9 -0
- package/dist/cjs/client/http.js.map +1 -0
- package/dist/cjs/client/rest/address.js +20 -28
- package/dist/cjs/client/rest/address.js.map +1 -1
- package/dist/cjs/client/rest/block.js +23 -22
- package/dist/cjs/client/rest/block.js.map +1 -1
- package/dist/cjs/client/rest/index.js +31 -84
- package/dist/cjs/client/rest/index.js.map +1 -1
- package/dist/cjs/client/rest/protocol.js +129 -0
- package/dist/cjs/client/rest/protocol.js.map +1 -0
- package/dist/cjs/client/rest/transaction.js +19 -21
- package/dist/cjs/client/rest/transaction.js.map +1 -1
- package/dist/cjs/client/rpc/index.js +79 -337
- package/dist/cjs/client/rpc/index.js.map +1 -1
- package/dist/cjs/client/rpc/interface.js +1 -6
- package/dist/cjs/client/rpc/interface.js.map +1 -1
- package/dist/cjs/client/rpc/json-rpc.js +40 -63
- package/dist/cjs/client/rpc/json-rpc.js.map +1 -1
- package/dist/cjs/client/rpc/protocol.js +134 -0
- package/dist/cjs/client/rpc/protocol.js.map +1 -0
- package/dist/cjs/connection.js +104 -0
- package/dist/cjs/connection.js.map +1 -0
- package/dist/cjs/constants.js +16 -5
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.js +21 -13
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.js +5 -55
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/client/http.js +9 -0
- package/dist/esm/client/http.js.map +1 -0
- package/dist/esm/client/rest/address.js +20 -28
- package/dist/esm/client/rest/address.js.map +1 -1
- package/dist/esm/client/rest/block.js +23 -22
- package/dist/esm/client/rest/block.js.map +1 -1
- package/dist/esm/client/rest/index.js +31 -84
- package/dist/esm/client/rest/index.js.map +1 -1
- package/dist/esm/client/rest/protocol.js +129 -0
- package/dist/esm/client/rest/protocol.js.map +1 -0
- package/dist/esm/client/rest/transaction.js +19 -21
- package/dist/esm/client/rest/transaction.js.map +1 -1
- package/dist/esm/client/rpc/index.js +79 -337
- package/dist/esm/client/rpc/index.js.map +1 -1
- package/dist/esm/client/rpc/interface.js +1 -6
- package/dist/esm/client/rpc/interface.js.map +1 -1
- package/dist/esm/client/rpc/json-rpc.js +40 -63
- package/dist/esm/client/rpc/json-rpc.js.map +1 -1
- package/dist/esm/client/rpc/protocol.js +134 -0
- package/dist/esm/client/rpc/protocol.js.map +1 -0
- package/dist/esm/connection.js +104 -0
- package/dist/esm/connection.js.map +1 -0
- package/dist/esm/constants.js +16 -5
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.js +21 -13
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.js +5 -55
- package/dist/esm/types.js.map +1 -1
- package/dist/types/client/http.d.ts +22 -0
- package/dist/types/client/http.d.ts.map +1 -0
- package/dist/types/client/rest/address.d.ts +17 -19
- package/dist/types/client/rest/address.d.ts.map +1 -1
- package/dist/types/client/rest/block.d.ts +25 -16
- package/dist/types/client/rest/block.d.ts.map +1 -1
- package/dist/types/client/rest/index.d.ts +21 -51
- package/dist/types/client/rest/index.d.ts.map +1 -1
- package/dist/types/client/rest/protocol.d.ts +59 -0
- package/dist/types/client/rest/protocol.d.ts.map +1 -0
- package/dist/types/client/rest/transaction.d.ts +17 -17
- package/dist/types/client/rest/transaction.d.ts.map +1 -1
- package/dist/types/client/rpc/index.d.ts +112 -253
- package/dist/types/client/rpc/index.d.ts.map +1 -1
- package/dist/types/client/rpc/interface.d.ts +42 -6
- package/dist/types/client/rpc/interface.d.ts.map +1 -1
- package/dist/types/client/rpc/json-rpc.d.ts +21 -18
- package/dist/types/client/rpc/json-rpc.d.ts.map +1 -1
- package/dist/types/client/rpc/protocol.d.ts +83 -0
- package/dist/types/client/rpc/protocol.d.ts.map +1 -0
- package/dist/types/client/utils.d.ts +1 -0
- package/dist/types/connection.d.ts +82 -0
- package/dist/types/connection.d.ts.map +1 -0
- package/dist/types/constants.d.ts +17 -5
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/errors.d.ts +5 -3
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/index.d.ts +21 -13
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/network.d.ts +1 -0
- package/dist/types/types.d.ts +99 -696
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/client/http.ts +28 -0
- package/src/client/rest/address.ts +24 -30
- package/src/client/rest/block.ts +29 -26
- package/src/client/rest/index.ts +38 -94
- package/src/client/rest/protocol.ts +153 -0
- package/src/client/rest/transaction.ts +23 -23
- package/src/client/rpc/index.ts +146 -379
- package/src/client/rpc/interface.ts +88 -53
- package/src/client/rpc/json-rpc.ts +53 -60
- package/src/client/rpc/protocol.ts +160 -0
- package/src/connection.ts +136 -0
- package/src/constants.ts +17 -5
- package/src/errors.ts +10 -3
- package/src/index.ts +81 -13
- package/src/types.ts +332 -972
- package/dist/cjs/bitcoin.js +0 -105
- package/dist/cjs/bitcoin.js.map +0 -1
- package/dist/esm/bitcoin.js +0 -105
- package/dist/esm/bitcoin.js.map +0 -1
- package/dist/types/bitcoin.d.ts +0 -60
- package/dist/types/bitcoin.d.ts.map +0 -1
- package/src/bitcoin.ts +0 -149
package/dist/cjs/bitcoin.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { JSONUtils, MethodError } from '@did-btcr2/common';
|
|
2
|
-
import { BitcoinRestClient } from './client/rest/index.js';
|
|
3
|
-
import { BitcoinCoreRpcClient } from './client/rpc/index.js';
|
|
4
|
-
import { getNetwork } from './network.js';
|
|
5
|
-
import { DEFAULT_BITCOIN_NETWORK_CONFIG } from './constants.js';
|
|
6
|
-
/**
|
|
7
|
-
* The BitcoinNetworkConnection class contains relevant data and methods for interacting with different Bitcoin network.
|
|
8
|
-
* @name BitcoinNetworkConnection
|
|
9
|
-
* @type {BitcoinNetworkConnection}
|
|
10
|
-
*/
|
|
11
|
-
export class BitcoinNetworkConnection {
|
|
12
|
-
network;
|
|
13
|
-
bitcoin;
|
|
14
|
-
testnet3;
|
|
15
|
-
testnet4;
|
|
16
|
-
signet;
|
|
17
|
-
mutinynet;
|
|
18
|
-
regtest;
|
|
19
|
-
/**
|
|
20
|
-
* Creates an instance of the Bitcoin class.
|
|
21
|
-
* @param {BitcoinNetworkConfigMap} configs Optional configuration object for the Bitcoin client. If not provided, it will
|
|
22
|
-
* be loaded from the BITCOIN_CLIENT_CONFIG environment variables.
|
|
23
|
-
* @throws {MethodError} If no configs is passed and BITCOIN_NETWORK_CONFIG is missing or invalid.
|
|
24
|
-
*/
|
|
25
|
-
constructor(configs) {
|
|
26
|
-
const BITCOIN_NETWORK_CONFIG = process.env.BITCOIN_NETWORK_CONFIG ?? JSON.stringify(configs ?? DEFAULT_BITCOIN_NETWORK_CONFIG);
|
|
27
|
-
if (!BITCOIN_NETWORK_CONFIG) {
|
|
28
|
-
throw new MethodError('No BITCOIN_NETWORK_CONFIG available: must pass `configs` to constructor or set `BITCOIN_NETWORK_CONFIG` in env', 'MISSING_BITCOIN_NETWORK_CONFIG', { BITCOIN_NETWORK_CONFIG });
|
|
29
|
-
}
|
|
30
|
-
// Check if BITCOIN_NETWORK_CONFIG is parsable JSON string
|
|
31
|
-
if (!JSONUtils.isParsable(BITCOIN_NETWORK_CONFIG)) {
|
|
32
|
-
throw new MethodError('Parsing failed: malformed BITCOIN_NETWORK_CONFIG', 'MISSING_MALFORMED_BITCOIN_NETWORK_CONFIG', { BITCOIN_NETWORK_CONFIG });
|
|
33
|
-
}
|
|
34
|
-
// Parse the BITCOIN_NETWORK_CONFIG
|
|
35
|
-
const networkConfigs = JSON.parse(BITCOIN_NETWORK_CONFIG);
|
|
36
|
-
// Set a list of available networks
|
|
37
|
-
const networks = ['bitcoin', 'testnet3', 'testnet4', 'signet', 'mutinynet', 'regtest'];
|
|
38
|
-
// Iterate over the networks and create the client connections
|
|
39
|
-
for (const network of networks) {
|
|
40
|
-
const networkConfig = (configs?.[network] ?? networkConfigs[network]);
|
|
41
|
-
if (networkConfig) {
|
|
42
|
-
this[network] = {
|
|
43
|
-
name: network,
|
|
44
|
-
config: networkConfig,
|
|
45
|
-
rpc: new BitcoinCoreRpcClient(networkConfig.rpc),
|
|
46
|
-
rest: new BitcoinRestClient(networkConfig.rest),
|
|
47
|
-
data: getNetwork(network),
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// Load and check the ACTIVE_NETWORK variable
|
|
52
|
-
const ACTIVE_NETWORK = (process.env.ACTIVE_NETWORK?.toLowerCase() ?? 'regtest');
|
|
53
|
-
if (!ACTIVE_NETWORK) {
|
|
54
|
-
throw new MethodError('Missing ACTIVE_NETWORK environment variable', 'MISSING_ACTIVE_NETWORK', { ACTIVE_NETWORK });
|
|
55
|
-
}
|
|
56
|
-
if (!this[ACTIVE_NETWORK]) {
|
|
57
|
-
throw new MethodError(`No configuration found for ACTIVE_NETWORK='${ACTIVE_NETWORK}'`, 'MISSING_CONFIG_FOR_NETWORK');
|
|
58
|
-
}
|
|
59
|
-
this.network = this[ACTIVE_NETWORK];
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Get the Bitcoin network configuration for a specific network.
|
|
63
|
-
* @param {keyof AvailableNetworks} network - The Bitcoin network (e.g., 'bitcoin', 'testnet3', 'signet', 'regtest').
|
|
64
|
-
* @returns {Bitcoin} The Bitcoin object.
|
|
65
|
-
*/
|
|
66
|
-
getNetworkConnection(network) {
|
|
67
|
-
const availableNetwork = network;
|
|
68
|
-
if (!this[availableNetwork]) {
|
|
69
|
-
throw new MethodError(`No configuration found for network='${availableNetwork}'`, 'MISSING_CONFIG_FOR_NETWORK');
|
|
70
|
-
}
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Sets the active Bitcoin network.
|
|
75
|
-
* @param {keyof AvailableNetworks} active - The Bitcoin network to set as active (e.g., 'bitcoin', 'testnet3', 'signet', 'regtest').
|
|
76
|
-
* @throws {MethodError} If no configuration is found for the specified network.
|
|
77
|
-
*/
|
|
78
|
-
setActiveNetwork(active) {
|
|
79
|
-
const availableNetwork = active;
|
|
80
|
-
if (!this[availableNetwork]) {
|
|
81
|
-
throw new MethodError(`No configuration found for network='${availableNetwork}'`, 'MISSING_CONFIG_FOR_NETWORK');
|
|
82
|
-
}
|
|
83
|
-
this.network = this[availableNetwork];
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Converts Bitcoin (BTC) to satoshis (SAT).
|
|
87
|
-
* @param {number} btc - The amount in BTC.
|
|
88
|
-
* @returns {number} The amount in SAT.
|
|
89
|
-
*/
|
|
90
|
-
static btcToSats(btc) {
|
|
91
|
-
return Math.round(btc * 1e8);
|
|
92
|
-
}
|
|
93
|
-
;
|
|
94
|
-
/**
|
|
95
|
-
* Converts satoshis (SAT) to Bitcoin (BTC).
|
|
96
|
-
* @param {number} sats - The amount in SAT.
|
|
97
|
-
* @returns {number} The amount in BTC.
|
|
98
|
-
*/
|
|
99
|
-
static satsToBtc(sats) {
|
|
100
|
-
return sats / 1e8;
|
|
101
|
-
}
|
|
102
|
-
;
|
|
103
|
-
}
|
|
104
|
-
export const bitcoin = new BitcoinNetworkConnection();
|
|
105
|
-
//# sourceMappingURL=bitcoin.js.map
|
package/dist/cjs/bitcoin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../../src/bitcoin.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/bitcoin.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { JSONUtils, MethodError } from '@did-btcr2/common';
|
|
2
|
-
import { BitcoinRestClient } from './client/rest/index.js';
|
|
3
|
-
import { BitcoinCoreRpcClient } from './client/rpc/index.js';
|
|
4
|
-
import { getNetwork } from './network.js';
|
|
5
|
-
import { DEFAULT_BITCOIN_NETWORK_CONFIG } from './constants.js';
|
|
6
|
-
/**
|
|
7
|
-
* The BitcoinNetworkConnection class contains relevant data and methods for interacting with different Bitcoin network.
|
|
8
|
-
* @name BitcoinNetworkConnection
|
|
9
|
-
* @type {BitcoinNetworkConnection}
|
|
10
|
-
*/
|
|
11
|
-
export class BitcoinNetworkConnection {
|
|
12
|
-
network;
|
|
13
|
-
bitcoin;
|
|
14
|
-
testnet3;
|
|
15
|
-
testnet4;
|
|
16
|
-
signet;
|
|
17
|
-
mutinynet;
|
|
18
|
-
regtest;
|
|
19
|
-
/**
|
|
20
|
-
* Creates an instance of the Bitcoin class.
|
|
21
|
-
* @param {BitcoinNetworkConfigMap} configs Optional configuration object for the Bitcoin client. If not provided, it will
|
|
22
|
-
* be loaded from the BITCOIN_CLIENT_CONFIG environment variables.
|
|
23
|
-
* @throws {MethodError} If no configs is passed and BITCOIN_NETWORK_CONFIG is missing or invalid.
|
|
24
|
-
*/
|
|
25
|
-
constructor(configs) {
|
|
26
|
-
const BITCOIN_NETWORK_CONFIG = process.env.BITCOIN_NETWORK_CONFIG ?? JSON.stringify(configs ?? DEFAULT_BITCOIN_NETWORK_CONFIG);
|
|
27
|
-
if (!BITCOIN_NETWORK_CONFIG) {
|
|
28
|
-
throw new MethodError('No BITCOIN_NETWORK_CONFIG available: must pass `configs` to constructor or set `BITCOIN_NETWORK_CONFIG` in env', 'MISSING_BITCOIN_NETWORK_CONFIG', { BITCOIN_NETWORK_CONFIG });
|
|
29
|
-
}
|
|
30
|
-
// Check if BITCOIN_NETWORK_CONFIG is parsable JSON string
|
|
31
|
-
if (!JSONUtils.isParsable(BITCOIN_NETWORK_CONFIG)) {
|
|
32
|
-
throw new MethodError('Parsing failed: malformed BITCOIN_NETWORK_CONFIG', 'MISSING_MALFORMED_BITCOIN_NETWORK_CONFIG', { BITCOIN_NETWORK_CONFIG });
|
|
33
|
-
}
|
|
34
|
-
// Parse the BITCOIN_NETWORK_CONFIG
|
|
35
|
-
const networkConfigs = JSON.parse(BITCOIN_NETWORK_CONFIG);
|
|
36
|
-
// Set a list of available networks
|
|
37
|
-
const networks = ['bitcoin', 'testnet3', 'testnet4', 'signet', 'mutinynet', 'regtest'];
|
|
38
|
-
// Iterate over the networks and create the client connections
|
|
39
|
-
for (const network of networks) {
|
|
40
|
-
const networkConfig = (configs?.[network] ?? networkConfigs[network]);
|
|
41
|
-
if (networkConfig) {
|
|
42
|
-
this[network] = {
|
|
43
|
-
name: network,
|
|
44
|
-
config: networkConfig,
|
|
45
|
-
rpc: new BitcoinCoreRpcClient(networkConfig.rpc),
|
|
46
|
-
rest: new BitcoinRestClient(networkConfig.rest),
|
|
47
|
-
data: getNetwork(network),
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// Load and check the ACTIVE_NETWORK variable
|
|
52
|
-
const ACTIVE_NETWORK = (process.env.ACTIVE_NETWORK?.toLowerCase() ?? 'regtest');
|
|
53
|
-
if (!ACTIVE_NETWORK) {
|
|
54
|
-
throw new MethodError('Missing ACTIVE_NETWORK environment variable', 'MISSING_ACTIVE_NETWORK', { ACTIVE_NETWORK });
|
|
55
|
-
}
|
|
56
|
-
if (!this[ACTIVE_NETWORK]) {
|
|
57
|
-
throw new MethodError(`No configuration found for ACTIVE_NETWORK='${ACTIVE_NETWORK}'`, 'MISSING_CONFIG_FOR_NETWORK');
|
|
58
|
-
}
|
|
59
|
-
this.network = this[ACTIVE_NETWORK];
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Get the Bitcoin network configuration for a specific network.
|
|
63
|
-
* @param {keyof AvailableNetworks} network - The Bitcoin network (e.g., 'bitcoin', 'testnet3', 'signet', 'regtest').
|
|
64
|
-
* @returns {Bitcoin} The Bitcoin object.
|
|
65
|
-
*/
|
|
66
|
-
getNetworkConnection(network) {
|
|
67
|
-
const availableNetwork = network;
|
|
68
|
-
if (!this[availableNetwork]) {
|
|
69
|
-
throw new MethodError(`No configuration found for network='${availableNetwork}'`, 'MISSING_CONFIG_FOR_NETWORK');
|
|
70
|
-
}
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Sets the active Bitcoin network.
|
|
75
|
-
* @param {keyof AvailableNetworks} active - The Bitcoin network to set as active (e.g., 'bitcoin', 'testnet3', 'signet', 'regtest').
|
|
76
|
-
* @throws {MethodError} If no configuration is found for the specified network.
|
|
77
|
-
*/
|
|
78
|
-
setActiveNetwork(active) {
|
|
79
|
-
const availableNetwork = active;
|
|
80
|
-
if (!this[availableNetwork]) {
|
|
81
|
-
throw new MethodError(`No configuration found for network='${availableNetwork}'`, 'MISSING_CONFIG_FOR_NETWORK');
|
|
82
|
-
}
|
|
83
|
-
this.network = this[availableNetwork];
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Converts Bitcoin (BTC) to satoshis (SAT).
|
|
87
|
-
* @param {number} btc - The amount in BTC.
|
|
88
|
-
* @returns {number} The amount in SAT.
|
|
89
|
-
*/
|
|
90
|
-
static btcToSats(btc) {
|
|
91
|
-
return Math.round(btc * 1e8);
|
|
92
|
-
}
|
|
93
|
-
;
|
|
94
|
-
/**
|
|
95
|
-
* Converts satoshis (SAT) to Bitcoin (BTC).
|
|
96
|
-
* @param {number} sats - The amount in SAT.
|
|
97
|
-
* @returns {number} The amount in BTC.
|
|
98
|
-
*/
|
|
99
|
-
static satsToBtc(sats) {
|
|
100
|
-
return sats / 1e8;
|
|
101
|
-
}
|
|
102
|
-
;
|
|
103
|
-
}
|
|
104
|
-
export const bitcoin = new BitcoinNetworkConnection();
|
|
105
|
-
//# sourceMappingURL=bitcoin.js.map
|
package/dist/esm/bitcoin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../../src/bitcoin.ts"],"names":[],"mappings":"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"}
|
package/dist/types/bitcoin.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { networks } from 'bitcoinjs-lib';
|
|
2
|
-
import { BitcoinRestClient } from './client/rest/index.js';
|
|
3
|
-
import { BitcoinCoreRpcClient } from './client/rpc/index.js';
|
|
4
|
-
import { AvailableNetworks, BitcoinClientConfig } from './types.js';
|
|
5
|
-
export type BitcoinNetworkConfig = {
|
|
6
|
-
name: keyof AvailableNetworks;
|
|
7
|
-
rpc?: BitcoinCoreRpcClient;
|
|
8
|
-
rest: BitcoinRestClient;
|
|
9
|
-
config: BitcoinClientConfig;
|
|
10
|
-
data: networks.Network;
|
|
11
|
-
};
|
|
12
|
-
export type BitcoinNetworkConfigMap = {
|
|
13
|
-
[key in keyof AvailableNetworks]?: BitcoinNetworkConfig;
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* The BitcoinNetworkConnection class contains relevant data and methods for interacting with different Bitcoin network.
|
|
17
|
-
* @name BitcoinNetworkConnection
|
|
18
|
-
* @type {BitcoinNetworkConnection}
|
|
19
|
-
*/
|
|
20
|
-
export declare class BitcoinNetworkConnection {
|
|
21
|
-
network: BitcoinNetworkConfig;
|
|
22
|
-
bitcoin?: BitcoinNetworkConfig;
|
|
23
|
-
testnet3?: BitcoinNetworkConfig;
|
|
24
|
-
testnet4?: BitcoinNetworkConfig;
|
|
25
|
-
signet?: BitcoinNetworkConfig;
|
|
26
|
-
mutinynet?: BitcoinNetworkConfig;
|
|
27
|
-
regtest?: BitcoinNetworkConfig;
|
|
28
|
-
/**
|
|
29
|
-
* Creates an instance of the Bitcoin class.
|
|
30
|
-
* @param {BitcoinNetworkConfigMap} configs Optional configuration object for the Bitcoin client. If not provided, it will
|
|
31
|
-
* be loaded from the BITCOIN_CLIENT_CONFIG environment variables.
|
|
32
|
-
* @throws {MethodError} If no configs is passed and BITCOIN_NETWORK_CONFIG is missing or invalid.
|
|
33
|
-
*/
|
|
34
|
-
constructor(configs?: BitcoinNetworkConfigMap);
|
|
35
|
-
/**
|
|
36
|
-
* Get the Bitcoin network configuration for a specific network.
|
|
37
|
-
* @param {keyof AvailableNetworks} network - The Bitcoin network (e.g., 'bitcoin', 'testnet3', 'signet', 'regtest').
|
|
38
|
-
* @returns {Bitcoin} The Bitcoin object.
|
|
39
|
-
*/
|
|
40
|
-
getNetworkConnection(network: string): BitcoinNetworkConnection;
|
|
41
|
-
/**
|
|
42
|
-
* Sets the active Bitcoin network.
|
|
43
|
-
* @param {keyof AvailableNetworks} active - The Bitcoin network to set as active (e.g., 'bitcoin', 'testnet3', 'signet', 'regtest').
|
|
44
|
-
* @throws {MethodError} If no configuration is found for the specified network.
|
|
45
|
-
*/
|
|
46
|
-
setActiveNetwork(active: string): void;
|
|
47
|
-
/**
|
|
48
|
-
* Converts Bitcoin (BTC) to satoshis (SAT).
|
|
49
|
-
* @param {number} btc - The amount in BTC.
|
|
50
|
-
* @returns {number} The amount in SAT.
|
|
51
|
-
*/
|
|
52
|
-
static btcToSats(btc: number): number;
|
|
53
|
-
/**
|
|
54
|
-
* Converts satoshis (SAT) to Bitcoin (BTC).
|
|
55
|
-
* @param {number} sats - The amount in SAT.
|
|
56
|
-
* @returns {number} The amount in BTC.
|
|
57
|
-
*/
|
|
58
|
-
static satsToBtc(sats: number): number;
|
|
59
|
-
}
|
|
60
|
-
export declare const bitcoin: BitcoinNetworkConnection;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin.d.ts","sourceRoot":"","sources":["../../src/bitcoin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGpE,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,iBAAiB,CAAC;IAC9B,GAAG,CAAC,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;KACnC,GAAG,IAAI,MAAM,iBAAiB,CAAC,CAAC,EAAE,oBAAoB;CACxD,CAAC;AAEF;;;;GAIG;AACH,qBAAa,wBAAwB;IAC5B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAEtC;;;;;OAKG;gBACS,OAAO,CAAC,EAAE,uBAAuB;IAyD7C;;;;OAIG;IACI,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB;IAWtE;;;;OAIG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAW7C;;;;OAIG;WACW,SAAS,CAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7C;;;;OAIG;WACW,SAAS,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM;CAG/C;AAED,eAAO,MAAM,OAAO,0BAAiC,CAAC"}
|
package/src/bitcoin.ts
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { JSONUtils, MethodError } from '@did-btcr2/common';
|
|
2
|
-
import { networks } from 'bitcoinjs-lib';
|
|
3
|
-
import { BitcoinRestClient } from './client/rest/index.js';
|
|
4
|
-
import { BitcoinCoreRpcClient } from './client/rpc/index.js';
|
|
5
|
-
import { getNetwork } from './network.js';
|
|
6
|
-
import { AvailableNetworks, BitcoinClientConfig } from './types.js';
|
|
7
|
-
import { DEFAULT_BITCOIN_NETWORK_CONFIG } from './constants.js';
|
|
8
|
-
|
|
9
|
-
export type BitcoinNetworkConfig = {
|
|
10
|
-
name: keyof AvailableNetworks;
|
|
11
|
-
rpc?: BitcoinCoreRpcClient;
|
|
12
|
-
rest: BitcoinRestClient;
|
|
13
|
-
config: BitcoinClientConfig;
|
|
14
|
-
data: networks.Network;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export type BitcoinNetworkConfigMap = {
|
|
18
|
-
[key in keyof AvailableNetworks]?: BitcoinNetworkConfig;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* The BitcoinNetworkConnection class contains relevant data and methods for interacting with different Bitcoin network.
|
|
23
|
-
* @name BitcoinNetworkConnection
|
|
24
|
-
* @type {BitcoinNetworkConnection}
|
|
25
|
-
*/
|
|
26
|
-
export class BitcoinNetworkConnection {
|
|
27
|
-
public network: BitcoinNetworkConfig;
|
|
28
|
-
public bitcoin?: BitcoinNetworkConfig;
|
|
29
|
-
public testnet3?: BitcoinNetworkConfig;
|
|
30
|
-
public testnet4?: BitcoinNetworkConfig;
|
|
31
|
-
public signet?: BitcoinNetworkConfig;
|
|
32
|
-
public mutinynet?: BitcoinNetworkConfig;
|
|
33
|
-
public regtest?: BitcoinNetworkConfig;
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Creates an instance of the Bitcoin class.
|
|
37
|
-
* @param {BitcoinNetworkConfigMap} configs Optional configuration object for the Bitcoin client. If not provided, it will
|
|
38
|
-
* be loaded from the BITCOIN_CLIENT_CONFIG environment variables.
|
|
39
|
-
* @throws {MethodError} If no configs is passed and BITCOIN_NETWORK_CONFIG is missing or invalid.
|
|
40
|
-
*/
|
|
41
|
-
constructor(configs?: BitcoinNetworkConfigMap) {
|
|
42
|
-
const BITCOIN_NETWORK_CONFIG = process.env.BITCOIN_NETWORK_CONFIG ?? JSON.stringify(configs ?? DEFAULT_BITCOIN_NETWORK_CONFIG);
|
|
43
|
-
|
|
44
|
-
if(!BITCOIN_NETWORK_CONFIG) {
|
|
45
|
-
throw new MethodError(
|
|
46
|
-
'No BITCOIN_NETWORK_CONFIG available: must pass `configs` to constructor or set `BITCOIN_NETWORK_CONFIG` in env',
|
|
47
|
-
'MISSING_BITCOIN_NETWORK_CONFIG',
|
|
48
|
-
{ BITCOIN_NETWORK_CONFIG }
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Check if BITCOIN_NETWORK_CONFIG is parsable JSON string
|
|
53
|
-
if (!JSONUtils.isParsable(BITCOIN_NETWORK_CONFIG)) {
|
|
54
|
-
throw new MethodError(
|
|
55
|
-
'Parsing failed: malformed BITCOIN_NETWORK_CONFIG',
|
|
56
|
-
'MISSING_MALFORMED_BITCOIN_NETWORK_CONFIG',
|
|
57
|
-
{ BITCOIN_NETWORK_CONFIG }
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Parse the BITCOIN_NETWORK_CONFIG
|
|
62
|
-
const networkConfigs: Record<string, BitcoinClientConfig> = JSON.parse(BITCOIN_NETWORK_CONFIG);
|
|
63
|
-
|
|
64
|
-
// Set a list of available networks
|
|
65
|
-
const networks: (keyof AvailableNetworks)[] = ['bitcoin', 'testnet3', 'testnet4', 'signet', 'mutinynet', 'regtest'];
|
|
66
|
-
|
|
67
|
-
// Iterate over the networks and create the client connections
|
|
68
|
-
for (const network of networks) {
|
|
69
|
-
const networkConfig: BitcoinClientConfig = (configs?.[network] ?? networkConfigs[network]) as BitcoinClientConfig;
|
|
70
|
-
if (networkConfig) {
|
|
71
|
-
this[network] = {
|
|
72
|
-
name : network,
|
|
73
|
-
config : networkConfig,
|
|
74
|
-
rpc : new BitcoinCoreRpcClient(networkConfig.rpc),
|
|
75
|
-
rest : new BitcoinRestClient(networkConfig.rest) ,
|
|
76
|
-
data : getNetwork(network),
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// Load and check the ACTIVE_NETWORK variable
|
|
82
|
-
const ACTIVE_NETWORK = (process.env.ACTIVE_NETWORK?.toLowerCase() ?? 'regtest') as keyof AvailableNetworks;
|
|
83
|
-
if (!ACTIVE_NETWORK) {
|
|
84
|
-
throw new MethodError('Missing ACTIVE_NETWORK environment variable', 'MISSING_ACTIVE_NETWORK', { ACTIVE_NETWORK });
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (!this[ACTIVE_NETWORK]) {
|
|
89
|
-
throw new MethodError(
|
|
90
|
-
`No configuration found for ACTIVE_NETWORK='${ACTIVE_NETWORK}'`,
|
|
91
|
-
'MISSING_CONFIG_FOR_NETWORK'
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
this.network = this[ACTIVE_NETWORK];
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Get the Bitcoin network configuration for a specific network.
|
|
100
|
-
* @param {keyof AvailableNetworks} network - The Bitcoin network (e.g., 'bitcoin', 'testnet3', 'signet', 'regtest').
|
|
101
|
-
* @returns {Bitcoin} The Bitcoin object.
|
|
102
|
-
*/
|
|
103
|
-
public getNetworkConnection(network: string): BitcoinNetworkConnection {
|
|
104
|
-
const availableNetwork = network as keyof AvailableNetworks;
|
|
105
|
-
if (!this[availableNetwork]) {
|
|
106
|
-
throw new MethodError(
|
|
107
|
-
`No configuration found for network='${availableNetwork}'`,
|
|
108
|
-
'MISSING_CONFIG_FOR_NETWORK'
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
return this;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Sets the active Bitcoin network.
|
|
116
|
-
* @param {keyof AvailableNetworks} active - The Bitcoin network to set as active (e.g., 'bitcoin', 'testnet3', 'signet', 'regtest').
|
|
117
|
-
* @throws {MethodError} If no configuration is found for the specified network.
|
|
118
|
-
*/
|
|
119
|
-
public setActiveNetwork(active: string): void {
|
|
120
|
-
const availableNetwork = active as keyof AvailableNetworks;
|
|
121
|
-
if (!this[availableNetwork]) {
|
|
122
|
-
throw new MethodError(
|
|
123
|
-
`No configuration found for network='${availableNetwork}'`,
|
|
124
|
-
'MISSING_CONFIG_FOR_NETWORK'
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
this.network = this[availableNetwork] as BitcoinNetworkConfig;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Converts Bitcoin (BTC) to satoshis (SAT).
|
|
132
|
-
* @param {number} btc - The amount in BTC.
|
|
133
|
-
* @returns {number} The amount in SAT.
|
|
134
|
-
*/
|
|
135
|
-
public static btcToSats (btc: number): number {
|
|
136
|
-
return Math.round(btc * 1e8);
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Converts satoshis (SAT) to Bitcoin (BTC).
|
|
141
|
-
* @param {number} sats - The amount in SAT.
|
|
142
|
-
* @returns {number} The amount in BTC.
|
|
143
|
-
*/
|
|
144
|
-
public static satsToBtc (sats: number): number {
|
|
145
|
-
return sats / 1e8;
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export const bitcoin = new BitcoinNetworkConnection();
|