@did-btcr2/bitcoin 0.1.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 (88) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/bitcoin.browser.js +82 -0
  4. package/dist/cjs/bitcoin.browser.js.map +1 -0
  5. package/dist/cjs/bitcoin.node.js +85 -0
  6. package/dist/cjs/bitcoin.node.js.map +1 -0
  7. package/dist/cjs/constants.js +20 -0
  8. package/dist/cjs/constants.js.map +1 -0
  9. package/dist/cjs/errors.js +14 -0
  10. package/dist/cjs/errors.js.map +1 -0
  11. package/dist/cjs/index.browser.js +10 -0
  12. package/dist/cjs/index.browser.js.map +1 -0
  13. package/dist/cjs/index.node.js +10 -0
  14. package/dist/cjs/index.node.js.map +1 -0
  15. package/dist/cjs/interface.js +2 -0
  16. package/dist/cjs/interface.js.map +1 -0
  17. package/dist/cjs/network.js +17 -0
  18. package/dist/cjs/network.js.map +1 -0
  19. package/dist/cjs/package.json +1 -0
  20. package/dist/cjs/rest-client.js +294 -0
  21. package/dist/cjs/rest-client.js.map +1 -0
  22. package/dist/cjs/rpc-client.js +722 -0
  23. package/dist/cjs/rpc-client.js.map +1 -0
  24. package/dist/cjs/taproot.js +219 -0
  25. package/dist/cjs/taproot.js.map +1 -0
  26. package/dist/cjs/types.js +62 -0
  27. package/dist/cjs/types.js.map +1 -0
  28. package/dist/esm/bitcoin.browser.js +82 -0
  29. package/dist/esm/bitcoin.browser.js.map +1 -0
  30. package/dist/esm/bitcoin.node.js +85 -0
  31. package/dist/esm/bitcoin.node.js.map +1 -0
  32. package/dist/esm/constants.js +20 -0
  33. package/dist/esm/constants.js.map +1 -0
  34. package/dist/esm/errors.js +14 -0
  35. package/dist/esm/errors.js.map +1 -0
  36. package/dist/esm/index.browser.js +10 -0
  37. package/dist/esm/index.browser.js.map +1 -0
  38. package/dist/esm/index.node.js +10 -0
  39. package/dist/esm/index.node.js.map +1 -0
  40. package/dist/esm/interface.js +2 -0
  41. package/dist/esm/interface.js.map +1 -0
  42. package/dist/esm/network.js +17 -0
  43. package/dist/esm/network.js.map +1 -0
  44. package/dist/esm/rest-client.js +294 -0
  45. package/dist/esm/rest-client.js.map +1 -0
  46. package/dist/esm/rpc-client.js +722 -0
  47. package/dist/esm/rpc-client.js.map +1 -0
  48. package/dist/esm/taproot.js +219 -0
  49. package/dist/esm/taproot.js.map +1 -0
  50. package/dist/esm/types.js +62 -0
  51. package/dist/esm/types.js.map +1 -0
  52. package/dist/types/bitcoin.browser.d.ts +45 -0
  53. package/dist/types/bitcoin.browser.d.ts.map +1 -0
  54. package/dist/types/bitcoin.node.d.ts +47 -0
  55. package/dist/types/bitcoin.node.d.ts.map +1 -0
  56. package/dist/types/constants.d.ts +19 -0
  57. package/dist/types/constants.d.ts.map +1 -0
  58. package/dist/types/errors.d.ts +8 -0
  59. package/dist/types/errors.d.ts.map +1 -0
  60. package/dist/types/index.browser.d.ts +9 -0
  61. package/dist/types/index.browser.d.ts.map +1 -0
  62. package/dist/types/index.node.d.ts +9 -0
  63. package/dist/types/index.node.d.ts.map +1 -0
  64. package/dist/types/interface.d.ts +86 -0
  65. package/dist/types/interface.d.ts.map +1 -0
  66. package/dist/types/network.d.ts +2 -0
  67. package/dist/types/network.d.ts.map +1 -0
  68. package/dist/types/rest-client.d.ts +273 -0
  69. package/dist/types/rest-client.d.ts.map +1 -0
  70. package/dist/types/rpc-client.d.ts +506 -0
  71. package/dist/types/rpc-client.d.ts.map +1 -0
  72. package/dist/types/taproot.d.ts +34 -0
  73. package/dist/types/taproot.d.ts.map +1 -0
  74. package/dist/types/types.d.ts +841 -0
  75. package/dist/types/types.d.ts.map +1 -0
  76. package/package.json +118 -0
  77. package/src/bitcoin.browser.ts +117 -0
  78. package/src/bitcoin.node.ts +121 -0
  79. package/src/constants.ts +19 -0
  80. package/src/errors.ts +13 -0
  81. package/src/index.browser.ts +9 -0
  82. package/src/index.node.ts +9 -0
  83. package/src/interface.ts +160 -0
  84. package/src/network.ts +17 -0
  85. package/src/rest-client.ts +420 -0
  86. package/src/rpc-client.ts +888 -0
  87. package/src/taproot.ts +237 -0
  88. package/src/types.ts +1041 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,118 @@
1
+ {
2
+ "name": "@did-btcr2/bitcoin",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Bitcoin Core RPC and Rest Client Implementations in JS/TS. Used by @did-btcr2/method.",
6
+ "main": "./dist/cjs/index.node.js",
7
+ "module": "./dist/esm/index.node.js",
8
+ "types": "./dist/types/index.node.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/types/index.node.d.ts",
12
+ "import": "./dist/esm/index.node.js",
13
+ "require": "./dist/cjs/index.node.js"
14
+ },
15
+ "./browser": {
16
+ "types": "./dist/types/index.browser.d.ts",
17
+ "default": "./dist/esm/index.browser.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "src"
23
+ ],
24
+ "license": "MPL-2.0",
25
+ "contributors": [
26
+ {
27
+ "name": "dcdpr",
28
+ "url": "https://github.com/dcdpr"
29
+ },
30
+ {
31
+ "name": "jintekc",
32
+ "url": "https://github.com/jintekc",
33
+ "email": "github@jintek.consulting"
34
+ }
35
+ ],
36
+ "homepage": "https://github.com/dcdpr/did-btcr2-js/tree/main/packages/bitcoin",
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "git+ssh://git@github.com:dcdpr/did-btcr2-js.git",
40
+ "directory": "packages/bitcoin"
41
+ },
42
+ "bugs": "https://github.com/dcdpr/did-btcr2-js/issues",
43
+ "publishConfig": {
44
+ "access": "public"
45
+ },
46
+ "engines": {
47
+ "node": ">=22.0.0"
48
+ },
49
+ "keywords": [
50
+ "did",
51
+ "dids",
52
+ "decentralized identity",
53
+ "decentralized identifiers",
54
+ "did method",
55
+ "did:btcr2",
56
+ "bitcoin",
57
+ "bitcoin core",
58
+ "bitcoin rpc",
59
+ "bitcoin rest",
60
+ "btc"
61
+ ],
62
+ "dependencies": {
63
+ "bitcoin-core": "^5.0.0",
64
+ "bitcoinjs-lib": "7.0.0-rc.0",
65
+ "tiny-secp256k1": "^2.2.3",
66
+ "@did-btcr2/common": "2.1.0",
67
+ "@did-btcr2/keypair": "0.5.1"
68
+ },
69
+ "devDependencies": {
70
+ "@eslint/js": "^9.22.0",
71
+ "@types/chai": "^5.0.1",
72
+ "@types/chai-as-promised": "^8.0.1",
73
+ "@types/eslint": "^9.6.1",
74
+ "@types/mocha": "^10.0.9",
75
+ "@types/node": "^22.5.4",
76
+ "@typescript-eslint/eslint-plugin": "^8.5.0",
77
+ "@typescript-eslint/parser": "^8.5.0",
78
+ "c8": "^10.1.2",
79
+ "chai": "^5.1.2",
80
+ "chai-as-promised": "^8.0.0",
81
+ "esbuild": "^0.24.2",
82
+ "eslint": "^9.14.0",
83
+ "eslint-plugin-mocha": "^10.5.0",
84
+ "globals": "^15.11.0",
85
+ "mocha": "^10.8.2",
86
+ "mocha-junit-reporter": "^2.2.1",
87
+ "node-stdlib-browser": "^1.3.1",
88
+ "rimraf": "^6.0.1",
89
+ "typedoc-plugin-markdown": "^4.7.0",
90
+ "typescript": "^5.6.2",
91
+ "typescript-eslint": "^8.19.1"
92
+ },
93
+ "scripts": {
94
+ "clean": "rimraf dist coverage tests/compiled",
95
+ "clean:build": "rimraf dist",
96
+ "clean:tests": "rimraf coverage tests/compiled",
97
+ "wipe": "rimraf node_modules pnpm-lock.json",
98
+ "wipe:clean": "pnpm wipe && pnpm clean",
99
+ "wipe:install": "pnpm wipe && pnpm install",
100
+ "clean:install": "pnpm clean && pnpm install",
101
+ "wipe:clean:install": "pnpm wipe:clean && pnpm install",
102
+ "reinstall": "pnpm install --force",
103
+ "build": "pnpm clean:build && pnpm build:esm && pnpm build:cjs",
104
+ "build:esm": "rimraf dist/esm dist/types && pnpm tsc -p tsconfig.json",
105
+ "build:cjs": "rimraf dist/cjs && tsc -p tsconfig.cjs.json && echo '{\"type\": \"commonjs\"}' > ./dist/cjs/package.json",
106
+ "build:tests": "pnpm clean:tests && pnpm tsc -p tests/tsconfig.json",
107
+ "build:docs": "typedoc --options typedoc.json",
108
+ "build:all": "pnpm build && pnpm build:tests",
109
+ "release": "pnpm build && pnpm pack",
110
+ "lint": "eslint . --max-warnings 0",
111
+ "lint:fix": "eslint . --fix",
112
+ "test": "pnpm c8 mocha",
113
+ "build:test": "pnpm build && pnpm build:tests && pnpm c8 mocha",
114
+ "build:lint:test": "pnpm build && pnpm build:tests && pnpm lint:fix",
115
+ "prepublish": "pnpm build",
116
+ "do": "pnpm tsx"
117
+ }
118
+ }
@@ -0,0 +1,117 @@
1
+ import { MethodError } from '@did-btcr2/common';
2
+ import { networks } from 'bitcoinjs-lib';
3
+ import { DEFAULT_REST_CLIENT_CONFIG } from './constants.js';
4
+ import { getNetwork } from './network.js';
5
+ import { BitcoinRest } from './rest-client.js';
6
+ import { AvailableNetworks, BitcoinClientConfig } from './types.js';
7
+
8
+ export type BitcoinNetworkConfig = {
9
+ name: keyof AvailableNetworks;
10
+ rest: BitcoinRest;
11
+ config: BitcoinClientConfig;
12
+ data: networks.Network;
13
+ };
14
+
15
+ export type BitcoinNetworkConfigMap = {
16
+ [key in keyof AvailableNetworks]?: BitcoinNetworkConfig;
17
+ };
18
+
19
+ /**
20
+ * General class to house the Bitcoin client connections, client config and various utility methods.
21
+ * @name Bitcoin
22
+ * @type {Bitcoin}
23
+ */
24
+ export class Bitcoin {
25
+ public network: BitcoinNetworkConfig;
26
+ public mainnet?: BitcoinNetworkConfig;
27
+ public testnet?: BitcoinNetworkConfig;
28
+ public signet?: BitcoinNetworkConfig;
29
+ public mutinynet?: BitcoinNetworkConfig;
30
+ public regtest?: BitcoinNetworkConfig;
31
+
32
+ /**
33
+ * Creates an instance of the Bitcoin class.
34
+ * @param {BitcoinNetworkConfigMap} configs Optional configuration object for the Bitcoin client. If not provided, it will
35
+ * be loaded from the BITCOIN_CLIENT_CONFIG environment variables.
36
+ * @throws {MethodError} If no configs is passed and BITCOIN_NETWORK_CONFIG is missing or invalid.
37
+ */
38
+ constructor(configs?: BitcoinNetworkConfigMap) {
39
+ const BITCOIN_NETWORK_CONFIG = process.env.BITCOIN_NETWORK_CONFIG ?? JSON.stringify(configs ?? {
40
+ regtest : {
41
+ rest : DEFAULT_REST_CLIENT_CONFIG
42
+ }
43
+ });
44
+
45
+ if(!BITCOIN_NETWORK_CONFIG) {
46
+ throw new MethodError(
47
+ 'No BITCOIN_NETWORK_CONFIG available: must pass `configs` to constructor or set `BITCOIN_NETWORK_CONFIG` in env',
48
+ 'MISSING_BITCOIN_NETWORK_CONFIG',
49
+ { BITCOIN_NETWORK_CONFIG }
50
+ );
51
+ }
52
+
53
+ // Check if BITCOIN_NETWORK_CONFIG is parsable JSON string
54
+ if (!JSON.parsable(BITCOIN_NETWORK_CONFIG)) {
55
+ throw new MethodError(
56
+ 'Parsing failed: malformed BITCOIN_NETWORK_CONFIG',
57
+ 'MISSING_MALFORMED_BITCOIN_NETWORK_CONFIG',
58
+ { BITCOIN_NETWORK_CONFIG }
59
+ );
60
+ }
61
+
62
+ // Parse the BITCOIN_NETWORK_CONFIG
63
+ const networkConfigs: Record<string, BitcoinClientConfig> = JSON.parse(BITCOIN_NETWORK_CONFIG);
64
+
65
+ // Set a list of available networks
66
+ const networks: (keyof AvailableNetworks)[] = ['mainnet', 'testnet', 'signet', 'mutinynet', 'regtest'];
67
+
68
+ // Iterate over the networks and create the client connections
69
+ for (const network of networks) {
70
+ const networkConfig: BitcoinClientConfig = (configs?.[network] ?? networkConfigs[network]) as BitcoinClientConfig;
71
+ if (networkConfig) {
72
+ this[network] = {
73
+ name : network,
74
+ config : networkConfig,
75
+ rest : new BitcoinRest(networkConfig.rest ?? DEFAULT_REST_CLIENT_CONFIG) ,
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
+ * Converts Bitcoin (BTC) to satoshis (SAT).
100
+ * @param {number} btc - The amount in BTC.
101
+ * @returns {number} The amount in SAT.
102
+ */
103
+ public static btcToSats (btc: number): number {
104
+ return Math.round(btc * 1e8);
105
+ };
106
+
107
+ /**
108
+ * Converts satoshis (SAT) to Bitcoin (BTC).
109
+ * @param {number} sats - The amount in SAT.
110
+ * @returns {number} The amount in BTC.
111
+ */
112
+ public static satsToBtc (sats: number): number {
113
+ return sats / 1e8;
114
+ };
115
+ }
116
+
117
+ export const bitcoin = new Bitcoin();
@@ -0,0 +1,121 @@
1
+ import { MethodError } from '@did-btcr2/common';
2
+ import { networks } from 'bitcoinjs-lib';
3
+ import { DEFAULT_REST_CLIENT_CONFIG, DEFAULT_RPC_CLIENT_CONFIG } from './constants.js';
4
+ import { getNetwork } from './network.js';
5
+ import { BitcoinRest } from './rest-client.js';
6
+ import { BitcoinRpc } from './rpc-client.js';
7
+ import { AvailableNetworks, BitcoinClientConfig } from './types.js';
8
+
9
+ export type BitcoinNetworkConfig = {
10
+ name: keyof AvailableNetworks;
11
+ rpc: BitcoinRpc;
12
+ rest: BitcoinRest;
13
+ config: BitcoinClientConfig;
14
+ data: networks.Network;
15
+ };
16
+
17
+ export type BitcoinNetworkConfigMap = {
18
+ [key in keyof AvailableNetworks]?: BitcoinNetworkConfig;
19
+ };
20
+
21
+ /**
22
+ * General class to house the Bitcoin client connections, client config and various utility methods.
23
+ * @name Bitcoin
24
+ * @type {Bitcoin}
25
+ */
26
+ export class Bitcoin {
27
+ public network: BitcoinNetworkConfig;
28
+ public mainnet?: BitcoinNetworkConfig;
29
+ public testnet?: BitcoinNetworkConfig;
30
+ public signet?: BitcoinNetworkConfig;
31
+ public mutinynet?: BitcoinNetworkConfig;
32
+ public regtest?: BitcoinNetworkConfig;
33
+
34
+ /**
35
+ * Creates an instance of the Bitcoin class.
36
+ * @param {BitcoinNetworkConfigMap} configs Optional configuration object for the Bitcoin client. If not provided, it will
37
+ * be loaded from the BITCOIN_CLIENT_CONFIG environment variables.
38
+ * @throws {MethodError} If no configs is passed and BITCOIN_NETWORK_CONFIG is missing or invalid.
39
+ */
40
+ constructor(configs?: BitcoinNetworkConfigMap) {
41
+ const BITCOIN_NETWORK_CONFIG = process.env.BITCOIN_NETWORK_CONFIG ?? JSON.stringify(configs ?? {
42
+ regtest : {
43
+ rpc : DEFAULT_RPC_CLIENT_CONFIG,
44
+ rest : DEFAULT_REST_CLIENT_CONFIG
45
+ }
46
+ });
47
+
48
+ if(!BITCOIN_NETWORK_CONFIG) {
49
+ throw new MethodError(
50
+ 'No BITCOIN_NETWORK_CONFIG available: must pass `configs` to constructor or set `BITCOIN_NETWORK_CONFIG` in env',
51
+ 'MISSING_BITCOIN_NETWORK_CONFIG',
52
+ { BITCOIN_NETWORK_CONFIG }
53
+ );
54
+ }
55
+
56
+ // Check if BITCOIN_NETWORK_CONFIG is parsable JSON string
57
+ if (!JSON.parsable(BITCOIN_NETWORK_CONFIG)) {
58
+ throw new MethodError(
59
+ 'Parsing failed: malformed BITCOIN_NETWORK_CONFIG',
60
+ 'MISSING_MALFORMED_BITCOIN_NETWORK_CONFIG',
61
+ { BITCOIN_NETWORK_CONFIG }
62
+ );
63
+ }
64
+
65
+ // Parse the BITCOIN_NETWORK_CONFIG
66
+ const networkConfigs: Record<string, BitcoinClientConfig> = JSON.parse(BITCOIN_NETWORK_CONFIG);
67
+
68
+ // Set a list of available networks
69
+ const networks: (keyof AvailableNetworks)[] = ['mainnet', 'testnet', 'signet', 'mutinynet', 'regtest'];
70
+
71
+ // Iterate over the networks and create the client connections
72
+ for (const network of networks) {
73
+ const networkConfig: BitcoinClientConfig = (configs?.[network] ?? networkConfigs[network]) as BitcoinClientConfig;
74
+ if (networkConfig) {
75
+ this[network] = {
76
+ name : network,
77
+ config : networkConfig,
78
+ rpc : new BitcoinRpc(networkConfig.rpc ?? DEFAULT_RPC_CLIENT_CONFIG),
79
+ rest : new BitcoinRest(networkConfig.rest ?? DEFAULT_REST_CLIENT_CONFIG) ,
80
+ data : getNetwork(network),
81
+ };
82
+ }
83
+ }
84
+
85
+ // Load and check the ACTIVE_NETWORK variable
86
+ const ACTIVE_NETWORK = (process.env.ACTIVE_NETWORK?.toLowerCase() ?? 'regtest') as keyof AvailableNetworks;
87
+ if (!ACTIVE_NETWORK) {
88
+ throw new MethodError('Missing ACTIVE_NETWORK environment variable', 'MISSING_ACTIVE_NETWORK', { ACTIVE_NETWORK });
89
+ }
90
+
91
+
92
+ if (!this[ACTIVE_NETWORK]) {
93
+ throw new MethodError(
94
+ `No configuration found for ACTIVE_NETWORK='${ACTIVE_NETWORK}'`,
95
+ 'MISSING_CONFIG_FOR_NETWORK'
96
+ );
97
+ }
98
+
99
+ this.network = this[ACTIVE_NETWORK];
100
+ }
101
+
102
+ /**
103
+ * Converts Bitcoin (BTC) to satoshis (SAT).
104
+ * @param {number} btc - The amount in BTC.
105
+ * @returns {number} The amount in SAT.
106
+ */
107
+ public static btcToSats (btc: number): number {
108
+ return Math.round(btc * 1e8);
109
+ };
110
+
111
+ /**
112
+ * Converts satoshis (SAT) to Bitcoin (BTC).
113
+ * @param {number} sats - The amount in SAT.
114
+ * @returns {number} The amount in BTC.
115
+ */
116
+ public static satsToBtc (sats: number): number {
117
+ return sats / 1e8;
118
+ };
119
+ }
120
+
121
+ export const bitcoin = new Bitcoin();
@@ -0,0 +1,19 @@
1
+ export const INITIAL_BLOCK_REWARD = 50;
2
+ export const HALVING_INTERVAL = 150;
3
+ export const COINBASE_MATURITY_DELAY = 100;
4
+ export const DEFAULT_RPC_CLIENT_CONFIG = {
5
+ network : 'regtest',
6
+ host : 'http://localhost:18443',
7
+ port : 18443,
8
+ username : 'polaruser',
9
+ password : 'polarpass',
10
+ allowDefaultWallet : true,
11
+ version : '28.1.0',
12
+ };
13
+ export const DEFAULT_REST_CLIENT_CONFIG = {
14
+ network : 'regtest',
15
+ host : 'http://localhost:3000'
16
+ };
17
+ export const DEFAULT_BLOCK_CONFIRMATIONS = 7;
18
+ export const TXIN_WITNESS_COINBASE = '0000000000000000000000000000000000000000000000000000000000000000';
19
+ export const GENESIS_TX_ID = '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b';
package/src/errors.ts ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Custom Error class for handling Bitcoin RPC errors.
3
+ */
4
+ export class BitcoinRpcError extends Error {
5
+ public readonly code: number | string;
6
+ public readonly data?: any;
7
+ constructor(code: number | string, message: string, data?: any) {
8
+ super(message);
9
+ this.code = code;
10
+ this.data = data;
11
+ this.name = 'BitcoinRpcError';
12
+ }
13
+ }
@@ -0,0 +1,9 @@
1
+ export * from './bitcoin.browser.js';
2
+ export * from './constants.js';
3
+ export * from './errors.js';
4
+ export * from './interface.js';
5
+ export * from './network.js';
6
+ export * from './rest-client.js';
7
+ export * from './rpc-client.js';
8
+ export * from './taproot.js';
9
+ export * from './types.js';
@@ -0,0 +1,9 @@
1
+ export * from './bitcoin.node.js';
2
+ export * from './constants.js';
3
+ export * from './errors.js';
4
+ export * from './interface.js';
5
+ export * from './network.js';
6
+ export * from './rest-client.js';
7
+ export * from './rpc-client.js';
8
+ export * from './taproot.js';
9
+ export * from './types.js';
@@ -0,0 +1,160 @@
1
+ import {
2
+ AddMultiSigAddressParams,
3
+ BatchOption,
4
+ BlockResponse,
5
+ BumpFeeOption,
6
+ BumpFeeResult,
7
+ ChainInfo,
8
+ CreateMultiSigResult,
9
+ CreateRawTxInputs,
10
+ CreateRawTxOutputs,
11
+ CreateWalletParams,
12
+ CreateWalletResult,
13
+ DecodedRawTransaction,
14
+ FeeEstimateMode,
15
+ FundRawTxOptions,
16
+ GetBlockParams,
17
+ MempoolInfo,
18
+ MiningInfo,
19
+ PeerInfo,
20
+ RawTransactionResponse,
21
+ ScriptDecoded,
22
+ ValidateAddressResult
23
+ } from './types.js';
24
+
25
+ /**
26
+ * Interface for the Bitcoin Core RPC client.
27
+ */
28
+ export interface IBitcoinRpc {
29
+ /** Executes multiple commands in a batch request. */
30
+ command?<R extends ReturnType<any>>(methods: BatchOption[]): Promise<ReadonlyArray<R>>;
31
+
32
+ /** Marks a transaction and its in-wallet descendants as abandoned, allowing their inputs to be respent. */
33
+ abandonTransaction(txid: string): Promise<void>;
34
+
35
+ /** Stops the current wallet rescan triggered by an RPC call, such as by an importprivkey call. */
36
+ abortRescan(): Promise<void>;
37
+
38
+ /** Adds a multi-signature address with n required signatures and a set of keys. */
39
+ addMultiSigAddress({ nrequired, keys, account }: AddMultiSigAddressParams): Promise<string>;
40
+
41
+ /** Adds a witness address for SegWit compatibility. */
42
+ addWitnessAddress(address: string): Promise<void>;
43
+
44
+ /** Backs up the wallet file to a specified destination. */
45
+ backupWallet(destination: string): Promise<void>;
46
+
47
+ /** Increases the fee of an unconfirmed transaction to improve its confirmation time. */
48
+ bumpFee(txid: string, options?: BumpFeeOption): Promise<BumpFeeResult>;
49
+
50
+ /** Removes all banned nodes from the ban list. */
51
+ clearBanned(): Promise<void>;
52
+
53
+ /** Combines multiple raw transactions into a single transaction. */
54
+ combineRawTransaction(txs: string[]): Promise<string>;
55
+
56
+ /** Creates a multi-signature address with n required signatures and a set of keys. */
57
+ createMultiSig(nrequired: number, keys: string[]): Promise<CreateMultiSigResult>;
58
+
59
+ /** Creates a raw transaction spending specified inputs to specified outputs. */
60
+ createRawTransaction(inputs: CreateRawTxInputs[], outputs: CreateRawTxOutputs[], locktime?: number, replacable?: boolean): Promise<string>;
61
+
62
+ /** Creates a new wallet with various optional parameters. */
63
+ createWallet({
64
+ wallet_name,
65
+ disable_private_keys,
66
+ blank,
67
+ passphrase,
68
+ avoid_reuse,
69
+ descriptors,
70
+ load_on_startup,
71
+ }: CreateWalletParams): Promise<CreateWalletResult>;
72
+
73
+ /** Decodes a raw transaction hex string. */
74
+ decodeRawTransaction(hexstring: string): Promise<DecodedRawTransaction>;
75
+
76
+ /** Decodes a hex-encoded script. */
77
+ decodeScript(hexstring: string): Promise<ScriptDecoded>;
78
+
79
+ /** Disconnects a node by address or node ID. */
80
+ disconnectNode(address?: string, nodeid?: number): Promise<void>;
81
+
82
+ /** Reveals the private key corresponding to an address. */
83
+ dumpPrivKey(address: string): Promise<string>;
84
+
85
+ /** Dumps all wallet keys and metadata to a file. */
86
+ dumpWallet(filename: string): Promise<{ filename: string }>;
87
+
88
+ /** Encrypts the wallet with a passphrase. */
89
+ encryptWallet(passphrase: string): Promise<void>;
90
+
91
+ /** Estimates the fee rate for a given confirmation target. */
92
+ estimateSmartFee(
93
+ conf_target: number,
94
+ estimate_mode?: FeeEstimateMode,
95
+ ): Promise<{ feerate?: number; errors?: string[]; blocks?: number }>;
96
+
97
+ /** Funds a raw transaction by adding necessary inputs and change. */
98
+ fundRawTransaction(
99
+ hexstring: string,
100
+ options: FundRawTxOptions,
101
+ ): Promise<{ hex: string; fee: number; changepos: number }>;
102
+
103
+ /** Returns the number of blocks in the longest blockchain. */
104
+ getBlockCount(): Promise<number>;
105
+
106
+ /** Gets the hash of a block at a given height. */
107
+ getBlockHash(height: number): Promise<string>;
108
+
109
+ /** Gets detailed information about a specific block. */
110
+ getBlock({ blockhash, height, verbosity }: GetBlockParams): Promise<BlockResponse | undefined>
111
+
112
+ /** Retrieves general blockchain state info. */
113
+ getBlockchainInfo(): Promise<ChainInfo>;
114
+
115
+ /** Gets the number of active connections to other nodes. */
116
+ getConnectionCount(): Promise<number>;
117
+
118
+ /** Gets the estimated network difficulty. */
119
+ getDifficulty(): Promise<number>;
120
+
121
+ /** Retrieves memory pool statistics. */
122
+ getMempoolInfo(): Promise<MempoolInfo>;
123
+
124
+ /** Retrieves mining statistics. */
125
+ getMiningInfo(): Promise<MiningInfo>;
126
+
127
+ /** Gets a new Bitcoin address for receiving payments. */
128
+ getNewAddress(account?: string): Promise<string>;
129
+
130
+ /** Gets detailed peer connection information. */
131
+ getPeerInfo(): Promise<PeerInfo[]>;
132
+
133
+ /** Sends raw transaction hex to the Bitcoin network. */
134
+ sendRawTransaction(
135
+ hexstring: string,
136
+ maxfeerate?: number | string,
137
+ maxBurnAmount?: number | string
138
+ ): Promise<string>;
139
+
140
+ /** Sends bitcoins to a specified address. */
141
+ sendToAddress(
142
+ address: string,
143
+ amount: number,
144
+ comment?: string,
145
+ comment_to?: string,
146
+ subtreactfeefromamount?: boolean,
147
+ replaceable?: boolean,
148
+ conf_target?: number,
149
+ estimate_mode?: FeeEstimateMode,
150
+ ): Promise<RawTransactionResponse>;
151
+
152
+ /** Validates a Bitcoin address. */
153
+ validateAddress(address: string): Promise<ValidateAddressResult>;
154
+
155
+ /** Verifies a signed message. */
156
+ verifyMessage(address: string, signature: string, message: string): Promise<boolean>;
157
+
158
+ /** Locks the wallet, requiring a passphrase to unlock. */
159
+ walletLock(passphrase: string, timeout: number): Promise<void>;
160
+ }
package/src/network.ts ADDED
@@ -0,0 +1,17 @@
1
+ import { networks } from 'bitcoinjs-lib';
2
+
3
+ export function getNetwork(network: string): networks.Network {
4
+ switch (network) {
5
+ case 'bitcoin':
6
+ return networks.bitcoin;
7
+ case 'testnet3':
8
+ case 'testnet4':
9
+ case 'signet':
10
+ case 'mutinynet':
11
+ return networks.testnet;
12
+ case 'regtest':
13
+ return networks.regtest;
14
+ default:
15
+ throw new Error(`Unknown network "${network}"`);
16
+ }
17
+ }