@teleportdao/bitcoin 1.4.4 → 1.4.6

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 (58) hide show
  1. package/dist/bitcoin-base.d.ts +62 -50
  2. package/dist/bitcoin-base.d.ts.map +1 -1
  3. package/dist/bitcoin-base.js +35 -31
  4. package/dist/bitcoin-base.js.map +1 -1
  5. package/dist/bitcoin-interface-utils.d.ts +12 -10
  6. package/dist/bitcoin-interface-utils.d.ts.map +1 -1
  7. package/dist/bitcoin-interface-utils.js +16 -10
  8. package/dist/bitcoin-interface-utils.js.map +1 -1
  9. package/dist/bitcoin-interface.d.ts +206 -50
  10. package/dist/bitcoin-interface.d.ts.map +1 -1
  11. package/dist/bitcoin-interface.js +42 -27
  12. package/dist/bitcoin-interface.js.map +1 -1
  13. package/dist/bitcoin-utils.d.ts +111 -41
  14. package/dist/bitcoin-utils.d.ts.map +1 -1
  15. package/dist/bitcoin-utils.js +215 -159
  16. package/dist/bitcoin-utils.js.map +1 -1
  17. package/dist/bundle.js +13 -4
  18. package/dist/index.d.ts +5 -6
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +31 -13
  21. package/dist/index.js.map +1 -1
  22. package/dist/teleport-dao-payments.d.ts +60 -92
  23. package/dist/teleport-dao-payments.d.ts.map +1 -1
  24. package/dist/teleport-dao-payments.js +12 -1
  25. package/dist/teleport-dao-payments.js.map +1 -1
  26. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts +8 -4
  27. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts.map +1 -1
  28. package/dist/transaction-builder/bitcoin-transaction-builder.js +3 -3
  29. package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
  30. package/dist/transaction-builder/transaction-builder.d.ts +63 -13
  31. package/dist/transaction-builder/transaction-builder.d.ts.map +1 -1
  32. package/dist/transaction-builder/transaction-builder.js +72 -19
  33. package/dist/transaction-builder/transaction-builder.js.map +1 -1
  34. package/dist/utils/networks.d.ts +5 -35
  35. package/dist/utils/networks.d.ts.map +1 -1
  36. package/dist/utils/networks.js +26 -2
  37. package/dist/utils/networks.js.map +1 -1
  38. package/dist/utils/tools.d.ts +15 -9
  39. package/dist/utils/tools.d.ts.map +1 -1
  40. package/dist/utils/tools.js +14 -11
  41. package/dist/utils/tools.js.map +1 -1
  42. package/package.json +6 -6
  43. package/src/{bitcoin-base.js → bitcoin-base.ts} +97 -69
  44. package/src/{bitcoin-interface-utils.js → bitcoin-interface-utils.ts} +59 -53
  45. package/src/{bitcoin-interface.js → bitcoin-interface.ts} +115 -45
  46. package/src/{bitcoin-utils.js → bitcoin-utils.ts} +337 -216
  47. package/src/index.ts +5 -8
  48. package/src/{teleport-dao-payments.js → teleport-dao-payments.ts} +67 -6
  49. package/src/transaction-builder/bitcoin-transaction-builder.ts +8 -4
  50. package/src/transaction-builder/transaction-builder.ts +102 -25
  51. package/src/utils/{networks.js → networks.ts} +33 -31
  52. package/src/utils/{tools.js → tools.ts} +80 -72
  53. package/tsconfig.json +10 -9
  54. package/webpack.config.js +16 -0
  55. package/dist/transaction-builder/transaction-builder-common.d.ts +0 -57
  56. package/dist/transaction-builder/transaction-builder-common.d.ts.map +0 -1
  57. package/dist/transaction-builder/transaction-builder-common.js +0 -183
  58. package/dist/transaction-builder/transaction-builder-common.js.map +0 -1
@@ -1,48 +1,43 @@
1
- export function parseRawTransaction(rawTransaction: any): {
2
- version: any;
3
- flag: any;
1
+ /// <reference types="node" />
2
+ import networks from "./utils/networks";
3
+ import * as bitcoin from "bitcoinjs-lib";
4
+ export { networks };
5
+ export declare function generateMnemonic(): string;
6
+ export declare function parseRawTransaction(rawTransaction: string): {
7
+ version: string;
8
+ flag: string;
4
9
  vin: string;
5
10
  vout: string;
6
11
  witness: string;
7
12
  locktime: string;
8
13
  };
9
- export function calculateMerkleProof(blockTransactions: any, txId: any, blockMerkleRoot?: undefined): {
10
- intermediateNodes: any;
11
- transactionIndex: any;
14
+ export declare function reverseBytes(hexInput: string): string;
15
+ export declare function getPublicKeyHexByXpubAndIndex(xpub: string, index?: number, isChange?: boolean, network?: bitcoin.networks.Network): string;
16
+ export declare function getPubKeyFromPrivateKeyWIF(privateKeyWIF: string, network?: bitcoin.networks.Network): Buffer;
17
+ export declare function getPubKeyFromPrivateKeyHex(privateKeyHex: string, network?: bitcoin.networks.Network): Buffer;
18
+ export declare function getPrivateKeyHexFromWIF(privateKeyWIF: string, network?: bitcoin.networks.Network): string;
19
+ export declare function calculateMerkleProof(blockTransactions: string[], txId: string, blockMerkleRoot?: string): {
20
+ intermediateNodes: string;
21
+ transactionIndex: number;
12
22
  };
13
- export function createAddressObjectByHash({ addressType, hash }: {
14
- addressType: any;
15
- hash: any;
16
- }, network?: bitcoin.networks.Network): bitcoin.payments.Payment;
17
- export function createAddressObjectByPublicKey({ addressType, publicKey }: {
18
- addressType: any;
19
- publicKey: any;
20
- }, network?: bitcoin.networks.Network): bitcoin.payments.Payment;
21
- export function createAddressObjectByAddress(address: any, network?: bitcoin.networks.Network): {
22
- addressObject: bitcoin.payments.Payment;
23
- addressType: "p2wpkh" | "p2sh" | "p2pkh";
23
+ export declare function parseBlockHeader(headerHex: string): {
24
+ version: string;
25
+ previousBlockHash: string;
26
+ merkleRoot: string;
27
+ timestamp: string;
28
+ difficulty: string;
29
+ nonce: string;
24
30
  };
25
- export function createAddressObjectByScript({ addressType, script }: {
26
- addressType: any;
27
- script: any;
28
- }, network?: bitcoin.networks.Network): bitcoin.payments.Payment;
29
- export function getAddressType(address: any, network?: bitcoin.networks.Network): "p2tr" | "p2wpkh" | "p2sh" | "p2pkh";
30
- export function getPubKeyFromPrivateKeyWIF(privateKeyWIF: any, network?: bitcoin.networks.Network): Buffer;
31
- export function getPubKeyFromPrivateKeyHex(privateKeyHex: any, network?: bitcoin.networks.Network): Buffer;
32
- export function getPublicKeyHexByXpubAndIndex(xpub: any, index?: number, isChange?: boolean, network?: bitcoin.networks.Network): string;
33
- export function getPrivateKeyHexFromWIF(privateKeyWIF: any, network?: bitcoin.networks.Network): string;
34
- export function reverseBytes(hexInput: any): string;
35
- export function parseBlockHeader(headerHex: any): {};
36
- export function generateMnemonic(): string;
37
- export function parseRawBlock(rawBlockHex: any, blockNumber?: undefined, network?: any): {
38
- blockNumber: undefined;
31
+ export declare function convertBitcoinScriptToAddress(script: Buffer, network?: bitcoin.networks.Network): string | null;
32
+ export declare function parseRawBlock(rawBlockHex: string, blockNumber?: number, network?: bitcoin.networks.Network): {
33
+ blockNumber: number | undefined;
39
34
  merkleRoot: string;
40
35
  prvBlockHash: string;
41
36
  transactions: {
42
37
  txId: string;
43
38
  version: number;
44
39
  locktime: number;
45
- blockNumber: undefined;
40
+ blockNumber: number | undefined;
46
41
  blockHash: string;
47
42
  vout: {
48
43
  address: string | null;
@@ -54,20 +49,95 @@ export function parseRawBlock(rawBlockHex: any, blockNumber?: undefined, network
54
49
  txId: string;
55
50
  index: number;
56
51
  }[];
57
- }[];
52
+ }[] | undefined;
58
53
  };
59
- export function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex: any, blockNumber: any, addresses?: any[], inputTxIds?: any[], network?: bitcoin.networks.Network): {
54
+ export declare function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex: string, blockNumber: number, addresses?: string[], inputTxIds?: {
55
+ txId: string;
56
+ index: number;
57
+ address?: string;
58
+ script?: string;
59
+ value?: number;
60
+ }[], network?: bitcoin.networks.Network): {
60
61
  blockInfo: {
61
- blockNumber: any;
62
+ blockNumber: number;
62
63
  blockHash: string;
63
64
  merkleRoot: string;
64
65
  prvBlockHash: string;
65
66
  };
66
- withdrawTxs: any[];
67
- depositTxs: any[];
67
+ withdrawTxs: {
68
+ txId: string;
69
+ version: number;
70
+ locktime: number;
71
+ blockNumber: number;
72
+ blockHash: string;
73
+ merkleProof: {
74
+ intermediateNodes: string;
75
+ transactionIndex: number;
76
+ };
77
+ vout: {
78
+ address: string | null;
79
+ script: string;
80
+ value: number;
81
+ }[];
82
+ vin: {
83
+ txId: string;
84
+ index: number;
85
+ address?: string | null;
86
+ script?: string | null;
87
+ value?: number | null;
88
+ }[];
89
+ address: string;
90
+ addressScript: string;
91
+ }[];
92
+ depositTxs: {
93
+ txId: string;
94
+ version: number;
95
+ locktime: number;
96
+ blockNumber: number;
97
+ blockHash: string;
98
+ merkleProof: {
99
+ intermediateNodes: string;
100
+ transactionIndex: number;
101
+ };
102
+ vout: {
103
+ address: string | null;
104
+ script: string;
105
+ value: number;
106
+ }[];
107
+ vin: {
108
+ txId: string;
109
+ index: number;
110
+ address?: string | null;
111
+ script?: string | null;
112
+ value?: number | null;
113
+ }[];
114
+ address: string;
115
+ addressScript: string;
116
+ }[];
117
+ };
118
+ export declare function validateAddress(address: string, network?: bitcoin.networks.Network): boolean;
119
+ export declare function getAddressType(address: string, network?: bitcoin.networks.Network): "p2tr" | "p2wpkh" | "p2sh" | "p2pkh";
120
+ export declare function createAddressObjectByScript({ addressType, script }: {
121
+ addressType: string;
122
+ script: Buffer;
123
+ }, network?: bitcoin.Network): bitcoin.payments.Payment;
124
+ export declare function createAddressObjectByHash({ addressType, hash }: {
125
+ addressType: string;
126
+ hash: Buffer;
127
+ }, network?: bitcoin.Network): bitcoin.payments.Payment;
128
+ export declare function createAddressObjectByPublicKey({ addressType, publicKey }: {
129
+ addressType: string;
130
+ publicKey: Buffer;
131
+ }, network?: bitcoin.Network): bitcoin.payments.Payment;
132
+ export declare function createAddressObjectByAddress(address: string, network?: bitcoin.networks.Network): {
133
+ addressObject: bitcoin.payments.Payment;
134
+ addressType: "p2wpkh" | "p2sh" | "p2pkh";
135
+ };
136
+ export declare function publicKeyConvertor(publicKeyHex: string, compressed?: boolean): string;
137
+ export declare const addressTypeHelper: {
138
+ addressTypesNumber: {
139
+ [key: string]: number;
140
+ };
141
+ addressTypes: string[];
68
142
  };
69
- export function validateAddress(address: any, network?: bitcoin.networks.Network): boolean;
70
- import networks = require("./utils/networks");
71
- import bitcoin = require("bitcoinjs-lib");
72
- export { networks };
73
143
  //# sourceMappingURL=bitcoin-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoin-utils.d.ts","sourceRoot":"","sources":["../src/bitcoin-utils.js"],"names":[],"mappings":"AAcA;;;;;;;EAsDC;AAyKD;;;EA2BC;AA1KD;;;iEAyBC;AA6BD;;;iEA+BC;AAED;;;EA0BC;AAtFD;;;iEAyBC;AAxED,uHAkBC;AAkID,2GAGC;AAED,2GAGC;AArBD,yIAWC;AAYD,wGAGC;AArKD,oDAEC;AAkMD,qDAgBC;AAjRD,2CAGC;AAwRD;;;;;;;;;;;;;;;;;;;;;EA2BC;AAED;;;;;;;;;EAsHC;AAED,2FAiBC"}
1
+ {"version":3,"file":"bitcoin-utils.d.ts","sourceRoot":"","sources":["../src/bitcoin-utils.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,47 @@
1
1
  "use strict";
2
- const bip39 = require("bip39");
3
- const bip32 = require("bip32");
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.addressTypeHelper = exports.publicKeyConvertor = exports.createAddressObjectByAddress = exports.createAddressObjectByPublicKey = exports.createAddressObjectByHash = exports.createAddressObjectByScript = exports.getAddressType = exports.validateAddress = exports.extractTransactionsAndBlockInfoFromRawBlock = exports.parseRawBlock = exports.convertBitcoinScriptToAddress = exports.parseBlockHeader = exports.calculateMerkleProof = exports.getPrivateKeyHexFromWIF = exports.getPubKeyFromPrivateKeyHex = exports.getPubKeyFromPrivateKeyWIF = exports.getPublicKeyHexByXpubAndIndex = exports.reverseBytes = exports.parseRawTransaction = exports.generateMnemonic = exports.networks = void 0;
30
+ const bip39 = __importStar(require("bip39"));
31
+ const bip32 = __importStar(require("bip32"));
32
+ const networks_1 = __importDefault(require("./utils/networks"));
33
+ exports.networks = networks_1.default;
34
+ const bitcoin = __importStar(require("bitcoinjs-lib"));
35
+ const ECPair = bitcoin.ECPair;
4
36
  let varUnit = require("varuint-bitcoin");
5
37
  const fastRoot = require("merkle-lib/fastRoot");
6
38
  const merkle = require("merkle-lib");
7
39
  const merkleProof = require("merkle-lib/proof");
8
- const bitcoin = require("bitcoinjs-lib");
9
- const networks = require("./utils/networks");
10
40
  function generateMnemonic() {
11
41
  const mnemonic = bip39.generateMnemonic(256);
12
42
  return mnemonic;
13
43
  }
44
+ exports.generateMnemonic = generateMnemonic;
14
45
  function parseRawTransaction(rawTransaction) {
15
46
  const size = {
16
47
  version: 4,
@@ -59,159 +90,42 @@ function parseRawTransaction(rawTransaction) {
59
90
  let locktime = `0x${rawTransaction.slice(rawTransaction.length - 8, rawTransaction.length)}`;
60
91
  return { version, flag, vin, vout, witness, locktime };
61
92
  }
93
+ exports.parseRawTransaction = parseRawTransaction;
62
94
  function reverseBytes(hexInput) {
63
95
  return Buffer.from(hexInput, "hex").reverse().toString("hex");
64
96
  }
65
- function getAddressType(address, network = bitcoin.networks.bitcoin) {
66
- if (address.startsWith(`${network.bech32}1p`)) {
67
- return "p2tr";
68
- }
69
- if (address.startsWith(network.bech32)) {
70
- return "p2wpkh";
71
- }
72
- let base58Data = bitcoin.address.fromBase58Check(address);
73
- if (base58Data.version === Number(network.scriptHash)) {
74
- return "p2sh";
75
- }
76
- if (base58Data.version === Number(network.pubKeyHash)) {
77
- return "p2pkh";
78
- }
79
- throw new Error("invalid address");
80
- }
81
- function createAddressObjectByHash({ addressType, hash }, network = bitcoin.networks.bitcoin) {
82
- let addressObject;
83
- switch (addressType) {
84
- case "p2pkh":
85
- addressObject = bitcoin.payments.p2pkh({
86
- hash,
87
- network,
88
- });
89
- break;
90
- case "p2wpkh":
91
- addressObject = bitcoin.payments.p2wpkh({
92
- hash,
93
- network,
94
- });
95
- break;
96
- case "p2sh":
97
- addressObject = bitcoin.payments.p2sh({
98
- hash,
99
- network,
100
- });
101
- break;
102
- default:
103
- throw new Error("address type is incorrect");
104
- }
105
- return addressObject;
106
- }
107
- function createAddressObjectByScript({ addressType, script }, network = bitcoin.networks.bitcoin) {
108
- let addressObject;
109
- switch (addressType) {
110
- case "p2pkh":
111
- addressObject = bitcoin.payments.p2pkh({
112
- output: script,
113
- network,
114
- });
115
- break;
116
- case "p2wpkh":
117
- addressObject = bitcoin.payments.p2wpkh({
118
- output: script,
119
- network,
120
- });
121
- break;
122
- case "p2sh":
123
- addressObject = bitcoin.payments.p2sh({
124
- output: script,
125
- network,
126
- });
127
- break;
128
- default:
129
- throw new Error("address type is incorrect");
130
- }
131
- return addressObject;
132
- }
133
- function createAddressObjectByPublicKey({ addressType, publicKey }, network = bitcoin.networks.bitcoin) {
134
- let addressObject;
135
- switch (addressType) {
136
- case "p2pkh":
137
- addressObject = bitcoin.payments.p2pkh({
138
- pubkey: publicKey,
139
- network,
140
- });
141
- break;
142
- case "p2wpkh":
143
- addressObject = bitcoin.payments.p2wpkh({
144
- pubkey: publicKey,
145
- network,
146
- });
147
- break;
148
- case "p2sh-p2wpkh":
149
- addressObject = bitcoin.payments.p2sh({
150
- redeem: bitcoin.payments.p2wpkh({
151
- pubkey: publicKey,
152
- network,
153
- }),
154
- });
155
- break;
156
- default:
157
- throw new Error("address type is incorrect");
158
- }
159
- return addressObject;
160
- }
161
- function createAddressObjectByAddress(address, network = bitcoin.networks.bitcoin) {
162
- let addressType = getAddressType(address, network);
163
- let addressObject;
164
- switch (addressType) {
165
- case "p2pkh":
166
- addressObject = bitcoin.payments.p2pkh({
167
- address,
168
- network,
169
- });
170
- break;
171
- case "p2wpkh":
172
- addressObject = bitcoin.payments.p2wpkh({
173
- address,
174
- network,
175
- });
176
- break;
177
- case "p2sh":
178
- addressObject = bitcoin.payments.p2sh({
179
- address,
180
- network,
181
- });
182
- break;
183
- default:
184
- throw new Error("address type is incorrect");
185
- }
186
- return { addressObject, addressType };
187
- }
188
- function getPublicKeyHexByXpubAndIndex(xpub, index = 0, isChange = false, network = networks.bitcoin) {
97
+ exports.reverseBytes = reverseBytes;
98
+ function getPublicKeyHexByXpubAndIndex(xpub, index = 0, isChange = false, network = networks_1.default.bitcoin) {
189
99
  const node = bip32.fromBase58(xpub, network);
190
100
  return node
191
101
  .derive(isChange ? 1 : 0)
192
102
  .derive(index)
193
103
  .publicKey.toString("hex");
194
104
  }
105
+ exports.getPublicKeyHexByXpubAndIndex = getPublicKeyHexByXpubAndIndex;
195
106
  function getPubKeyFromPrivateKeyWIF(privateKeyWIF, network = bitcoin.networks.bitcoin) {
196
107
  let key = bitcoin.ECPair.fromWIF(privateKeyWIF, network);
197
108
  return key.publicKey;
198
109
  }
110
+ exports.getPubKeyFromPrivateKeyWIF = getPubKeyFromPrivateKeyWIF;
199
111
  function getPubKeyFromPrivateKeyHex(privateKeyHex, network = bitcoin.networks.bitcoin) {
200
- let key = bitcoin.ECPair.fromPrivateKey(Buffer.from(privateKeyHex, "hex"), network);
112
+ let key = bitcoin.ECPair.fromPrivateKey(Buffer.from(privateKeyHex, "hex"), { network });
201
113
  return key.publicKey;
202
114
  }
115
+ exports.getPubKeyFromPrivateKeyHex = getPubKeyFromPrivateKeyHex;
203
116
  function getPrivateKeyHexFromWIF(privateKeyWIF, network = bitcoin.networks.bitcoin) {
204
117
  let key = bitcoin.ECPair.fromWIF(privateKeyWIF, network);
205
118
  return key.privateKey.toString("hex");
206
119
  }
207
- function calculateMerkleProof(blockTransactions, txId, blockMerkleRoot = undefined) {
120
+ exports.getPrivateKeyHexFromWIF = getPrivateKeyHexFromWIF;
121
+ function calculateMerkleProof(blockTransactions, txId, blockMerkleRoot) {
208
122
  let transactionIndex = blockTransactions.findIndex((tx) => tx === txId);
209
123
  if (transactionIndex < 0)
210
124
  throw new Error("txId is not in this tree");
211
125
  let data = blockTransactions.map((a) => Buffer.from(a, "hex").reverse());
212
126
  if (blockMerkleRoot &&
213
127
  blockMerkleRoot !== fastRoot(data, bitcoin.crypto.hash256).toString("hex")) {
214
- throw new Error("calculated anf block merkleRoot not matched");
128
+ throw new Error("calculated merkleRoot and block merkleRoot not matched");
215
129
  }
216
130
  let tree = merkle(data, bitcoin.crypto.hash256);
217
131
  let proof = merkleProof(tree, data[transactionIndex]);
@@ -224,6 +138,7 @@ function calculateMerkleProof(blockTransactions, txId, blockMerkleRoot = undefin
224
138
  transactionIndex,
225
139
  };
226
140
  }
141
+ exports.calculateMerkleProof = calculateMerkleProof;
227
142
  function parseBlockHeader(headerHex) {
228
143
  const size = {
229
144
  version: 4,
@@ -241,16 +156,18 @@ function parseBlockHeader(headerHex) {
241
156
  }
242
157
  return result;
243
158
  }
159
+ exports.parseBlockHeader = parseBlockHeader;
244
160
  function convertBitcoinScriptToAddress(script, network = bitcoin.networks.bitcoin) {
245
- var _a;
246
161
  try {
247
- return (_a = bitcoin.address) === null || _a === void 0 ? void 0 : _a.fromOutputScript(script, network);
162
+ return bitcoin.address.fromOutputScript(script, network);
248
163
  }
249
164
  catch (error) {
250
165
  return null;
251
166
  }
252
167
  }
253
- function parseRawBlock(rawBlockHex, blockNumber = undefined, network = bitcoin.networks.network) {
168
+ exports.convertBitcoinScriptToAddress = convertBitcoinScriptToAddress;
169
+ function parseRawBlock(rawBlockHex, blockNumber, network = bitcoin.networks.bitcoin) {
170
+ var _a;
254
171
  let block = bitcoin.Block.fromBuffer(Buffer.from(rawBlockHex, "hex"));
255
172
  let blockHash = block.getHash().toString("hex");
256
173
  let merkleRoot = block.merkleRoot.toString("hex");
@@ -259,7 +176,7 @@ function parseRawBlock(rawBlockHex, blockNumber = undefined, network = bitcoin.n
259
176
  blockNumber,
260
177
  merkleRoot,
261
178
  prvBlockHash,
262
- transactions: block.transactions.map((tx) => ({
179
+ transactions: (_a = block.transactions) === null || _a === void 0 ? void 0 : _a.map((tx) => ({
263
180
  txId: tx.getId(),
264
181
  version: tx.version,
265
182
  locktime: tx.locktime,
@@ -278,7 +195,9 @@ function parseRawBlock(rawBlockHex, blockNumber = undefined, network = bitcoin.n
278
195
  })),
279
196
  };
280
197
  }
198
+ exports.parseRawBlock = parseRawBlock;
281
199
  function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex, blockNumber, addresses = [], inputTxIds = [], network = bitcoin.networks.bitcoin) {
200
+ var _a;
282
201
  let block = bitcoin.Block.fromBuffer(Buffer.from(rawBlockHex, "hex"));
283
202
  let blockHash = block.getHash().reverse().toString("hex");
284
203
  let merkleRoot = block.merkleRoot.toString("hex");
@@ -293,7 +212,7 @@ function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex, blockNumber, a
293
212
  let blockTxIds = block.transactions.map((tx) => tx.getId());
294
213
  let withdrawTxs = [];
295
214
  let depositTxs = [];
296
- block.transactions.forEach((tx) => {
215
+ (_a = block.transactions) === null || _a === void 0 ? void 0 : _a.forEach((tx) => {
297
216
  let txId = tx.getId();
298
217
  let inputTxAddress;
299
218
  let isWithdraw = tx.ins.find((vi) => {
@@ -322,16 +241,16 @@ function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex, blockNumber, a
322
241
  return {
323
242
  txId: Buffer.from(vi.hash).reverse().toString("hex"),
324
243
  index: vi.index,
325
- address: viInput.address || null,
326
- script: viInput.script || null,
327
- value: viInput.value || null,
244
+ address: (viInput === null || viInput === void 0 ? void 0 : viInput.address) || null,
245
+ script: (viInput === null || viInput === void 0 ? void 0 : viInput.script) || null,
246
+ value: (viInput === null || viInput === void 0 ? void 0 : viInput.value) || null,
328
247
  };
329
248
  }),
330
249
  address: inputTxAddress,
331
250
  addressScript: createAddressObjectByAddress(inputTxAddress, network).addressObject.output.toString("hex"),
332
251
  });
333
252
  }
334
- let addressIndex;
253
+ let addressIndex = -1;
335
254
  let isDeposit = tx.outs.find((blockTxVo) => {
336
255
  let sIndex = addressScript.findIndex((addScript) => addScript === blockTxVo.script.toString("hex"));
337
256
  if (sIndex >= 0) {
@@ -369,6 +288,7 @@ function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex, blockNumber, a
369
288
  depositTxs,
370
289
  };
371
290
  }
291
+ exports.extractTransactionsAndBlockInfoFromRawBlock = extractTransactionsAndBlockInfoFromRawBlock;
372
292
  function validateAddress(address, network = bitcoin.networks.bitcoin) {
373
293
  try {
374
294
  let isValid = false;
@@ -389,24 +309,160 @@ function validateAddress(address, network = bitcoin.networks.bitcoin) {
389
309
  return false;
390
310
  }
391
311
  }
392
- module.exports = {
393
- parseRawTransaction,
394
- calculateMerkleProof,
395
- createAddressObjectByHash,
396
- createAddressObjectByPublicKey,
397
- createAddressObjectByAddress,
398
- createAddressObjectByScript,
399
- getAddressType,
400
- getPubKeyFromPrivateKeyWIF,
401
- getPubKeyFromPrivateKeyHex,
402
- getPublicKeyHexByXpubAndIndex,
403
- getPrivateKeyHexFromWIF,
404
- reverseBytes,
405
- parseBlockHeader,
406
- generateMnemonic,
407
- parseRawBlock,
408
- extractTransactionsAndBlockInfoFromRawBlock,
409
- validateAddress,
410
- networks,
312
+ exports.validateAddress = validateAddress;
313
+ function toXOnlyPublicKey(pubKey) {
314
+ return pubKey.length === 32 ? pubKey : pubKey.slice(1, 33);
315
+ }
316
+ function getAddressType(address, network = bitcoin.networks.bitcoin) {
317
+ if (address.startsWith(`${network.bech32}1p`)) {
318
+ return "p2tr";
319
+ }
320
+ if (address.startsWith(network.bech32)) {
321
+ return "p2wpkh";
322
+ }
323
+ let base58Data = bitcoin.address.fromBase58Check(address);
324
+ if (base58Data.version === Number(network.scriptHash)) {
325
+ return "p2sh";
326
+ }
327
+ if (base58Data.version === Number(network.pubKeyHash)) {
328
+ return "p2pkh";
329
+ }
330
+ throw new Error("invalid address");
331
+ }
332
+ exports.getAddressType = getAddressType;
333
+ function createAddressObjectByScript({ addressType, script }, network = bitcoin.networks.bitcoin) {
334
+ let addressObject;
335
+ switch (addressType) {
336
+ case "p2pkh":
337
+ addressObject = bitcoin.payments.p2pkh({
338
+ output: script,
339
+ network,
340
+ });
341
+ break;
342
+ case "p2wpkh":
343
+ addressObject = bitcoin.payments.p2wpkh({
344
+ output: script,
345
+ network,
346
+ });
347
+ break;
348
+ case "p2sh":
349
+ addressObject = bitcoin.payments.p2sh({
350
+ output: script,
351
+ network,
352
+ });
353
+ break;
354
+ case "p2wsh":
355
+ addressObject = bitcoin.payments.p2wsh({
356
+ output: script,
357
+ network,
358
+ });
359
+ break;
360
+ default:
361
+ throw new Error("address type is incorrect");
362
+ }
363
+ return addressObject;
364
+ }
365
+ exports.createAddressObjectByScript = createAddressObjectByScript;
366
+ function createAddressObjectByHash({ addressType, hash }, network = bitcoin.networks.bitcoin) {
367
+ let addressObject;
368
+ switch (addressType) {
369
+ case "p2pkh":
370
+ addressObject = bitcoin.payments.p2pkh({
371
+ hash,
372
+ network,
373
+ });
374
+ break;
375
+ case "p2wpkh":
376
+ addressObject = bitcoin.payments.p2wpkh({
377
+ hash,
378
+ network,
379
+ });
380
+ break;
381
+ case "p2sh":
382
+ addressObject = bitcoin.payments.p2sh({
383
+ hash,
384
+ network,
385
+ });
386
+ break;
387
+ case "p2wsh":
388
+ addressObject = bitcoin.payments.p2wsh({
389
+ hash,
390
+ network,
391
+ });
392
+ break;
393
+ default:
394
+ throw new Error("address type is incorrect");
395
+ }
396
+ return addressObject;
397
+ }
398
+ exports.createAddressObjectByHash = createAddressObjectByHash;
399
+ function createAddressObjectByPublicKey({ addressType, publicKey }, network = bitcoin.networks.bitcoin) {
400
+ let addressObject;
401
+ switch (addressType) {
402
+ case "p2pkh":
403
+ addressObject = bitcoin.payments.p2pkh({
404
+ pubkey: publicKey,
405
+ network,
406
+ });
407
+ break;
408
+ case "p2wpkh":
409
+ addressObject = bitcoin.payments.p2wpkh({
410
+ pubkey: publicKey,
411
+ network,
412
+ });
413
+ break;
414
+ case "p2sh-p2wpkh":
415
+ addressObject = bitcoin.payments.p2sh({
416
+ redeem: bitcoin.payments.p2wpkh({
417
+ pubkey: publicKey,
418
+ network,
419
+ }),
420
+ });
421
+ break;
422
+ case "p2tr":
423
+ default:
424
+ throw new Error("address type is incorrect");
425
+ }
426
+ return addressObject;
427
+ }
428
+ exports.createAddressObjectByPublicKey = createAddressObjectByPublicKey;
429
+ function createAddressObjectByAddress(address, network = bitcoin.networks.bitcoin) {
430
+ let addressType = getAddressType(address, network);
431
+ let addressObject;
432
+ switch (addressType) {
433
+ case "p2pkh":
434
+ addressObject = bitcoin.payments.p2pkh({
435
+ address,
436
+ network,
437
+ });
438
+ break;
439
+ case "p2wpkh":
440
+ addressObject = bitcoin.payments.p2wpkh({
441
+ address,
442
+ network,
443
+ });
444
+ break;
445
+ case "p2sh":
446
+ addressObject = bitcoin.payments.p2sh({
447
+ address,
448
+ network,
449
+ });
450
+ break;
451
+ default:
452
+ throw new Error("address type is incorrect");
453
+ }
454
+ return { addressObject, addressType };
455
+ }
456
+ exports.createAddressObjectByAddress = createAddressObjectByAddress;
457
+ function publicKeyConvertor(publicKeyHex, compressed = true) {
458
+ let pubkey = ECPair.fromPublicKey(Buffer.from(publicKeyHex, "hex"), {
459
+ compressed,
460
+ });
461
+ return pubkey.publicKey.toString("hex");
462
+ }
463
+ exports.publicKeyConvertor = publicKeyConvertor;
464
+ exports.addressTypeHelper = {
465
+ addressTypesNumber: { p2pk: 0, p2pkh: 1, p2sh: 2, p2wpkh: 3, p2wsh: 4, p2tr: 5 },
466
+ addressTypes: ["p2pk", "p2pkh", "p2sh", "p2wpkh", "p2wsh", "p2tr"],
411
467
  };
412
468
  //# sourceMappingURL=bitcoin-utils.js.map