@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.
Files changed (113) hide show
  1. package/dist/cjs/client/http.js +9 -0
  2. package/dist/cjs/client/http.js.map +1 -0
  3. package/dist/cjs/client/rest/address.js +20 -28
  4. package/dist/cjs/client/rest/address.js.map +1 -1
  5. package/dist/cjs/client/rest/block.js +23 -22
  6. package/dist/cjs/client/rest/block.js.map +1 -1
  7. package/dist/cjs/client/rest/index.js +31 -84
  8. package/dist/cjs/client/rest/index.js.map +1 -1
  9. package/dist/cjs/client/rest/protocol.js +129 -0
  10. package/dist/cjs/client/rest/protocol.js.map +1 -0
  11. package/dist/cjs/client/rest/transaction.js +19 -21
  12. package/dist/cjs/client/rest/transaction.js.map +1 -1
  13. package/dist/cjs/client/rpc/index.js +79 -337
  14. package/dist/cjs/client/rpc/index.js.map +1 -1
  15. package/dist/cjs/client/rpc/interface.js +1 -6
  16. package/dist/cjs/client/rpc/interface.js.map +1 -1
  17. package/dist/cjs/client/rpc/json-rpc.js +40 -63
  18. package/dist/cjs/client/rpc/json-rpc.js.map +1 -1
  19. package/dist/cjs/client/rpc/protocol.js +134 -0
  20. package/dist/cjs/client/rpc/protocol.js.map +1 -0
  21. package/dist/cjs/connection.js +104 -0
  22. package/dist/cjs/connection.js.map +1 -0
  23. package/dist/cjs/constants.js +16 -5
  24. package/dist/cjs/constants.js.map +1 -1
  25. package/dist/cjs/errors.js.map +1 -1
  26. package/dist/cjs/index.js +21 -13
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/types.js +5 -55
  29. package/dist/cjs/types.js.map +1 -1
  30. package/dist/esm/client/http.js +9 -0
  31. package/dist/esm/client/http.js.map +1 -0
  32. package/dist/esm/client/rest/address.js +20 -28
  33. package/dist/esm/client/rest/address.js.map +1 -1
  34. package/dist/esm/client/rest/block.js +23 -22
  35. package/dist/esm/client/rest/block.js.map +1 -1
  36. package/dist/esm/client/rest/index.js +31 -84
  37. package/dist/esm/client/rest/index.js.map +1 -1
  38. package/dist/esm/client/rest/protocol.js +129 -0
  39. package/dist/esm/client/rest/protocol.js.map +1 -0
  40. package/dist/esm/client/rest/transaction.js +19 -21
  41. package/dist/esm/client/rest/transaction.js.map +1 -1
  42. package/dist/esm/client/rpc/index.js +79 -337
  43. package/dist/esm/client/rpc/index.js.map +1 -1
  44. package/dist/esm/client/rpc/interface.js +1 -6
  45. package/dist/esm/client/rpc/interface.js.map +1 -1
  46. package/dist/esm/client/rpc/json-rpc.js +40 -63
  47. package/dist/esm/client/rpc/json-rpc.js.map +1 -1
  48. package/dist/esm/client/rpc/protocol.js +134 -0
  49. package/dist/esm/client/rpc/protocol.js.map +1 -0
  50. package/dist/esm/connection.js +104 -0
  51. package/dist/esm/connection.js.map +1 -0
  52. package/dist/esm/constants.js +16 -5
  53. package/dist/esm/constants.js.map +1 -1
  54. package/dist/esm/errors.js.map +1 -1
  55. package/dist/esm/index.js +21 -13
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/types.js +5 -55
  58. package/dist/esm/types.js.map +1 -1
  59. package/dist/types/client/http.d.ts +22 -0
  60. package/dist/types/client/http.d.ts.map +1 -0
  61. package/dist/types/client/rest/address.d.ts +17 -19
  62. package/dist/types/client/rest/address.d.ts.map +1 -1
  63. package/dist/types/client/rest/block.d.ts +25 -16
  64. package/dist/types/client/rest/block.d.ts.map +1 -1
  65. package/dist/types/client/rest/index.d.ts +21 -51
  66. package/dist/types/client/rest/index.d.ts.map +1 -1
  67. package/dist/types/client/rest/protocol.d.ts +59 -0
  68. package/dist/types/client/rest/protocol.d.ts.map +1 -0
  69. package/dist/types/client/rest/transaction.d.ts +17 -17
  70. package/dist/types/client/rest/transaction.d.ts.map +1 -1
  71. package/dist/types/client/rpc/index.d.ts +112 -253
  72. package/dist/types/client/rpc/index.d.ts.map +1 -1
  73. package/dist/types/client/rpc/interface.d.ts +42 -6
  74. package/dist/types/client/rpc/interface.d.ts.map +1 -1
  75. package/dist/types/client/rpc/json-rpc.d.ts +21 -18
  76. package/dist/types/client/rpc/json-rpc.d.ts.map +1 -1
  77. package/dist/types/client/rpc/protocol.d.ts +83 -0
  78. package/dist/types/client/rpc/protocol.d.ts.map +1 -0
  79. package/dist/types/client/utils.d.ts +1 -0
  80. package/dist/types/connection.d.ts +82 -0
  81. package/dist/types/connection.d.ts.map +1 -0
  82. package/dist/types/constants.d.ts +17 -5
  83. package/dist/types/constants.d.ts.map +1 -1
  84. package/dist/types/errors.d.ts +5 -3
  85. package/dist/types/errors.d.ts.map +1 -1
  86. package/dist/types/index.d.ts +21 -13
  87. package/dist/types/index.d.ts.map +1 -1
  88. package/dist/types/network.d.ts +1 -0
  89. package/dist/types/types.d.ts +99 -696
  90. package/dist/types/types.d.ts.map +1 -1
  91. package/package.json +3 -3
  92. package/src/client/http.ts +28 -0
  93. package/src/client/rest/address.ts +24 -30
  94. package/src/client/rest/block.ts +29 -26
  95. package/src/client/rest/index.ts +38 -94
  96. package/src/client/rest/protocol.ts +153 -0
  97. package/src/client/rest/transaction.ts +23 -23
  98. package/src/client/rpc/index.ts +146 -379
  99. package/src/client/rpc/interface.ts +88 -53
  100. package/src/client/rpc/json-rpc.ts +53 -60
  101. package/src/client/rpc/protocol.ts +160 -0
  102. package/src/connection.ts +136 -0
  103. package/src/constants.ts +17 -5
  104. package/src/errors.ts +10 -3
  105. package/src/index.ts +81 -13
  106. package/src/types.ts +332 -972
  107. package/dist/cjs/bitcoin.js +0 -105
  108. package/dist/cjs/bitcoin.js.map +0 -1
  109. package/dist/esm/bitcoin.js +0 -105
  110. package/dist/esm/bitcoin.js.map +0 -1
  111. package/dist/types/bitcoin.d.ts +0 -60
  112. package/dist/types/bitcoin.d.ts.map +0 -1
  113. package/src/bitcoin.ts +0 -149
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../../src/bitcoin.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../../src/bitcoin.ts"],"names":[],"mappings":"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"}
@@ -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();