@teleportdao/bitcoin 1.9.0 → 2.0.2

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 (70) hide show
  1. package/.tmp/block-parser.ts +58 -0
  2. package/.tmp/ordinal-helper.ts +133 -0
  3. package/.tmp/ordinal.ts +25 -0
  4. package/.tmp/rbf.ts +27 -24
  5. package/dist/bitcoin-interface-ordinal.d.ts +2 -2
  6. package/dist/bitcoin-interface-ordinal.d.ts.map +1 -1
  7. package/dist/bitcoin-interface-ordinal.js +1 -1
  8. package/dist/bitcoin-interface-ordinal.js.map +1 -1
  9. package/dist/bitcoin-interface-teleswap.d.ts +2 -53
  10. package/dist/bitcoin-interface-teleswap.d.ts.map +1 -1
  11. package/dist/bitcoin-interface-teleswap.js +6 -17
  12. package/dist/bitcoin-interface-teleswap.js.map +1 -1
  13. package/dist/bitcoin-interface-wallet.d.ts +29 -0
  14. package/dist/bitcoin-interface-wallet.d.ts.map +1 -0
  15. package/dist/bitcoin-interface-wallet.js +126 -0
  16. package/dist/bitcoin-interface-wallet.js.map +1 -0
  17. package/dist/bitcoin-interface.d.ts +5 -23
  18. package/dist/bitcoin-interface.d.ts.map +1 -1
  19. package/dist/bitcoin-interface.js +13 -92
  20. package/dist/bitcoin-interface.js.map +1 -1
  21. package/dist/bitcoin-wallet-base.d.ts +55 -31
  22. package/dist/bitcoin-wallet-base.d.ts.map +1 -1
  23. package/dist/bitcoin-wallet-base.js +105 -84
  24. package/dist/bitcoin-wallet-base.js.map +1 -1
  25. package/dist/ordinal-wallet.d.ts +29 -71
  26. package/dist/ordinal-wallet.d.ts.map +1 -1
  27. package/dist/ordinal-wallet.js +48 -108
  28. package/dist/ordinal-wallet.js.map +1 -1
  29. package/dist/teleswap-wallet.d.ts +10 -16
  30. package/dist/teleswap-wallet.d.ts.map +1 -1
  31. package/dist/teleswap-wallet.js +10 -30
  32. package/dist/teleswap-wallet.js.map +1 -1
  33. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts +4 -11
  34. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts.map +1 -1
  35. package/dist/transaction-builder/bitcoin-transaction-builder.js +2 -23
  36. package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
  37. package/dist/transaction-builder/ordinal-transaction-builder.d.ts +3 -2
  38. package/dist/transaction-builder/ordinal-transaction-builder.d.ts.map +1 -1
  39. package/dist/transaction-builder/ordinal-transaction-builder.js +1 -6
  40. package/dist/transaction-builder/ordinal-transaction-builder.js.map +1 -1
  41. package/dist/transaction-builder/transaction-builder.d.ts +3 -7
  42. package/dist/transaction-builder/transaction-builder.d.ts.map +1 -1
  43. package/dist/transaction-builder/transaction-builder.js +22 -49
  44. package/dist/transaction-builder/transaction-builder.js.map +1 -1
  45. package/dist/type.d.ts +33 -18
  46. package/dist/type.d.ts.map +1 -1
  47. package/package.json +4 -4
  48. package/src/bitcoin-interface-ordinal.ts +185 -181
  49. package/src/bitcoin-interface-teleswap.ts +237 -252
  50. package/src/bitcoin-interface-utils.ts +60 -60
  51. package/src/bitcoin-interface-wallet.ts +114 -0
  52. package/src/bitcoin-interface.ts +156 -239
  53. package/src/bitcoin-utils.ts +591 -591
  54. package/src/bitcoin-wallet-base.ts +344 -310
  55. package/src/helper/brc20-helper.ts +179 -179
  56. package/src/helper/ordinal-helper.ts +118 -118
  57. package/src/index.ts +15 -15
  58. package/src/ordinal-wallet.ts +659 -748
  59. package/src/sign/index.ts +1 -1
  60. package/src/sign/sign-transaction.ts +108 -108
  61. package/src/teleswap-wallet.ts +133 -155
  62. package/src/transaction-builder/bitcoin-transaction-builder.ts +26 -44
  63. package/src/transaction-builder/index.ts +3 -3
  64. package/src/transaction-builder/ordinal-transaction-builder.ts +139 -147
  65. package/src/transaction-builder/transaction-builder.ts +690 -706
  66. package/src/type.ts +74 -48
  67. package/src/utils/networks.ts +33 -33
  68. package/src/utils/tools.ts +92 -92
  69. package/tsconfig.json +9 -9
  70. package/webpack.config.js +16 -16
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitcoin-interface-wallet.js","sourceRoot":"","sources":["../src/bitcoin-interface-wallet.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,15 @@
1
1
  import { bitcoin as bitcoinProvider } from "@teleportdao/providers";
2
- import { BitcoinInterfaceUtils } from "./bitcoin-interface-utils";
3
- import type { BitcoinConnectionInfo } from "./type";
4
- import type { SignerInfo } from "./transaction-builder/transaction-builder";
5
- export declare class BitcoinInterface extends BitcoinInterfaceUtils {
2
+ import BitcoinInterfaceWallet from "./bitcoin-interface-wallet";
3
+ import type { BitcoinInterfaceConnectionInfo } from "./type";
4
+ export declare class BitcoinInterface extends BitcoinInterfaceWallet {
6
5
  rpcProvider?: bitcoinProvider.BitcoinRPC;
7
- utxoProvider: bitcoinProvider.Types.UtxoProvider;
8
- apiProvider: bitcoinProvider.MempoolSpace;
9
- constructor(connectionInfo: BitcoinConnectionInfo, networkName: string);
10
- getFeeRate(speed?: "normal" | "slow" | "fast"): Promise<number>;
6
+ constructor(networkName: string, connectionInfo?: BitcoinInterfaceConnectionInfo);
11
7
  getLatestBlockNumber(): Promise<number>;
12
8
  getBlockHash(blockNumber: number): Promise<string>;
13
9
  getBlockHeaderHex(blockNumber: number): Promise<string>;
14
10
  getTransaction(txId: string): Promise<bitcoinProvider.Types.ConfirmedTransaction>;
15
11
  getRawTransaction(txId: string): Promise<string>;
12
+ sendRawTransaction(txId: string): Promise<any>;
16
13
  getMerkleProof(txId: string, blockHash: string): Promise<{
17
14
  intermediateNodes: string;
18
15
  transactionIndex: number;
@@ -42,21 +39,6 @@ export declare class BitcoinInterface extends BitcoinInterfaceUtils {
42
39
  blockNumber: number;
43
40
  blockHash: string;
44
41
  }>;
45
- getUtxo(address: string): Promise<bitcoinProvider.Types.Utxo[]>;
46
- getExtendedUtxo(signerInfo: SignerInfo): Promise<{
47
- hash: string;
48
- value: number;
49
- index: number;
50
- signerInfo: SignerInfo;
51
- }[]>;
52
- getAddressesUtxo(allAddresses: string[]): Promise<bitcoinProvider.Types.Utxo[]>;
53
- getAddressesExtendedUtxo(signerInfos: SignerInfo[]): Promise<{
54
- hash: string;
55
- value: number;
56
- index: number;
57
- signerInfo: SignerInfo;
58
- }[]>;
59
- getBalance(address: string): Promise<number>;
60
42
  getBlockTransactions(addresses: string[], blockNumber: number, inputTxIds?: {
61
43
  txId: string;
62
44
  index: number;
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoin-interface.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAOnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAA;AAE3E,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,WAAW,CAAC,EAAE,eAAe,CAAC,UAAU,CAAA;IACxC,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,YAAY,CAAA;IAChD,WAAW,EAAE,eAAe,CAAC,YAAY,CAAA;gBAE7B,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM;IAehE,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM;IAI7C,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlD,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvD,cAAc,CAAC,IAAI,EAAE,MAAM;IAI3B,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAI9B,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,iBAAiB,EAAE,MAAM,CAAA;QACzB,gBAAgB,EAAE,MAAM,CAAA;KACzB,CAAC;IAYI,eAAe,CAAC,WAAW,EAAE;QACjC,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE;YACZ,iBAAiB,EAAE,MAAM,CAAA;YACzB,gBAAgB,EAAE,MAAM,CAAA;SACzB,CAAA;KACF;;;;;;;;;;;;;;;;IAsBK,OAAO,CAAC,OAAO,EAAE,MAAM;IAOvB,eAAe,CAAC,UAAU,EAAE,UAAU;;;;;;IAUtC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE;IAyBvC,wBAAwB,CAAC,WAAW,EAAE,UAAU,EAAE;;;;;;IAyBlD,UAAU,CAAC,OAAO,EAAE,MAAM;IAM1B,oBAAoB,CACxB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3B,EAAO;;;;;;;;;;IAsBJ,6BAA6B,CACjC,SAAS,EAAE,MAAM,EAAE,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,UAAU,GAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3B,EAAO;CAWX;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"bitcoin-interface.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAOnE,OAAO,sBAAsB,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,QAAQ,CAAA;AAE5D,qBAAa,gBAAiB,SAAQ,sBAAsB;IAC1D,WAAW,CAAC,EAAE,eAAe,CAAC,UAAU,CAAA;gBAE5B,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,8BAA8B;IAO1E,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlD,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvD,cAAc,CAAC,IAAI,EAAE,MAAM;IAI3B,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAI9B,kBAAkB,CAAC,IAAI,EAAE,MAAM;IAI/B,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,iBAAiB,EAAE,MAAM,CAAA;QACzB,gBAAgB,EAAE,MAAM,CAAA;KACzB,CAAC;IAYI,eAAe,CAAC,WAAW,EAAE;QACjC,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE;YACZ,iBAAiB,EAAE,MAAM,CAAA;YACzB,gBAAgB,EAAE,MAAM,CAAA;SACzB,CAAA;KACF;;;;;;;;;;;;;;;;IAuBK,oBAAoB,CACxB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3B,EAAO;;;;;;;;;;IAsBJ,6BAA6B,CACjC,SAAS,EAAE,MAAM,EAAE,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,UAAU,GAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3B,EAAO;CAWX;AAED,eAAe,gBAAgB,CAAA"}
@@ -8,32 +8,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.BitcoinInterface = void 0;
13
16
  const providers_1 = require("@teleportdao/providers");
14
17
  const tools_1 = require("./utils/tools");
15
18
  const bitcoin_utils_1 = require("./bitcoin-utils");
16
- const bitcoin_interface_utils_1 = require("./bitcoin-interface-utils");
17
- class BitcoinInterface extends bitcoin_interface_utils_1.BitcoinInterfaceUtils {
18
- constructor(connectionInfo, networkName) {
19
- var _a;
20
- super(networkName);
21
- if (connectionInfo.api.provider === "BlockStream") {
22
- this.apiProvider = new providers_1.bitcoin.BlockStream(this.testnet);
23
- }
24
- else {
25
- this.apiProvider = new providers_1.bitcoin.MempoolSpace(this.testnet);
26
- }
27
- if ((_a = connectionInfo.rpc) === null || _a === void 0 ? void 0 : _a.enabled) {
19
+ const bitcoin_interface_wallet_1 = __importDefault(require("./bitcoin-interface-wallet"));
20
+ class BitcoinInterface extends bitcoin_interface_wallet_1.default {
21
+ constructor(networkName, connectionInfo) {
22
+ super(networkName, connectionInfo);
23
+ if (connectionInfo === null || connectionInfo === void 0 ? void 0 : connectionInfo.rpc) {
28
24
  this.rpcProvider = providers_1.bitcoin.getRpcProvider(connectionInfo.rpc);
29
25
  }
30
- const utxoProvider = connectionInfo.utxo || connectionInfo.api;
31
- this.utxoProvider = providers_1.bitcoin.getUtxoProvider(utxoProvider, networkName);
32
- }
33
- getFeeRate(speed) {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- return new providers_1.bitcoin.MempoolSpace(this.testnet).getRecommendedFeeRate(speed);
36
- });
37
26
  }
38
27
  getLatestBlockNumber() {
39
28
  return __awaiter(this, void 0, void 0, function* () {
@@ -63,6 +52,11 @@ class BitcoinInterface extends bitcoin_interface_utils_1.BitcoinInterfaceUtils {
63
52
  return (this.rpcProvider || this.apiProvider).getRawTransaction(txId);
64
53
  });
65
54
  }
55
+ sendRawTransaction(txId) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ return (this.rpcProvider || this.apiProvider).sendRawTransaction(txId);
58
+ });
59
+ }
66
60
  getMerkleProof(txId, blockHash) {
67
61
  return __awaiter(this, void 0, void 0, function* () {
68
62
  if (!this.rpcProvider) {
@@ -96,79 +90,6 @@ class BitcoinInterface extends bitcoin_interface_utils_1.BitcoinInterfaceUtils {
96
90
  };
97
91
  });
98
92
  }
99
- getUtxo(address) {
100
- return __awaiter(this, void 0, void 0, function* () {
101
- if (!this.utxoProvider) {
102
- throw new Error("utxo provider not set");
103
- }
104
- return this.utxoProvider.getUtxos(address);
105
- });
106
- }
107
- getExtendedUtxo(signerInfo) {
108
- return __awaiter(this, void 0, void 0, function* () {
109
- let utxos = yield this.getUtxo(signerInfo.address);
110
- return utxos.map((tx) => ({
111
- hash: tx.txId,
112
- value: tx.value,
113
- index: tx.index,
114
- signerInfo,
115
- }));
116
- });
117
- }
118
- getAddressesUtxo(allAddresses) {
119
- return __awaiter(this, void 0, void 0, function* () {
120
- const chunkOfAddresses = [];
121
- const chunkLength = 20;
122
- for (let i = 0; i < allAddresses.length; i += chunkLength) {
123
- const tmp = allAddresses.slice(i, i + chunkLength);
124
- chunkOfAddresses.push(tmp);
125
- }
126
- let results = [];
127
- for (let addresses of chunkOfAddresses) {
128
- const allPromises = [];
129
- for (let address of addresses) {
130
- let promise = yield this.getUtxo(address);
131
- allPromises.push(promise);
132
- }
133
- let result = yield Promise.all(allPromises);
134
- if (result.flat(1).length === 0) {
135
- break;
136
- }
137
- results.push(result.flat(1));
138
- }
139
- return results.flat(1);
140
- });
141
- }
142
- getAddressesExtendedUtxo(signerInfos) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- const chunkOfAddresses = [];
145
- const chunkLength = 20;
146
- for (let i = 0; i < signerInfos.length; i += chunkLength) {
147
- const tmp = signerInfos.slice(i, i + chunkLength);
148
- chunkOfAddresses.push(tmp);
149
- }
150
- let results = [];
151
- for (let addresses of chunkOfAddresses) {
152
- const allPromises = [];
153
- for (let signerInfo of addresses) {
154
- let promise = yield this.getExtendedUtxo(signerInfo);
155
- allPromises.push(promise);
156
- }
157
- let result = yield Promise.all(allPromises);
158
- if (result.flat(1).length === 0) {
159
- break;
160
- }
161
- results.push(result.flat(1));
162
- }
163
- return results.flat(1);
164
- });
165
- }
166
- getBalance(address) {
167
- return __awaiter(this, void 0, void 0, function* () {
168
- let utxos = yield this.utxoProvider.getUtxos(address);
169
- return utxos.reduce((a, tx) => a + Number(tx.value), 0);
170
- });
171
- }
172
93
  getBlockTransactions(addresses, blockNumber, inputTxIds = []) {
173
94
  return __awaiter(this, void 0, void 0, function* () {
174
95
  if (!this.rpcProvider) {
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoin-interface.js","sourceRoot":"","sources":["../src/bitcoin-interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bitcoin-interface.js","sourceRoot":"","sources":["../src/bitcoin-interface.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  /// <reference types="node" />
2
2
  import { Network, Payment } from "bitcoinjs-lib";
3
3
  import { BitcoinTransactionBuilder } from "./transaction-builder";
4
- import type { BitcoinConnectionInfo } from "./type";
5
- import type { ExtendedUtxo, SignerInfo, Target } from "./transaction-builder/transaction-builder";
4
+ import type { RPCConnectionInfo, UtxoConnectionInfo } from "./type";
5
+ import type { ExtendedUtxo, SignerInfo, Target, TargetAddress } from "./transaction-builder/transaction-builder";
6
6
  import BitcoinSign from "./sign/sign-transaction";
7
- import { BitcoinInterface } from "./bitcoin-interface";
7
+ import { BitcoinInterfaceWallet } from "./bitcoin-interface-wallet";
8
+ export type FeeRateType = "normal" | "slow" | "fast" | number;
8
9
  export declare class BitcoinBaseWallet {
9
10
  network: Network;
10
11
  hdWalletPath: {
@@ -17,7 +18,7 @@ export declare class BitcoinBaseWallet {
17
18
  p2tr: string;
18
19
  };
19
20
  transactionBuilder: BitcoinTransactionBuilder;
20
- btcInterface: BitcoinInterface;
21
+ btcInterface: BitcoinInterfaceWallet;
21
22
  signer: BitcoinSign;
22
23
  currentAccount?: string;
23
24
  currentAccountType?: string;
@@ -26,51 +27,73 @@ export declare class BitcoinBaseWallet {
26
27
  publicKeys?: Buffer[];
27
28
  addressObj?: Payment;
28
29
  bitcoinAddress: string | undefined;
29
- constructor(networkName: string, connectionInfo?: BitcoinConnectionInfo);
30
+ constructor(networkName: string, connectionInfo?: {
31
+ utxo?: UtxoConnectionInfo;
32
+ rpc?: RPCConnectionInfo;
33
+ });
34
+ static satoshiToBTC(satoshi: number | string): string;
35
+ static btcToSatoshi(btc: number | string): string;
30
36
  get signerInfo(): {
31
37
  address: string;
32
38
  publicKey: string;
33
39
  addressType: string;
34
40
  } | undefined;
35
- createTransactionInputsAndOutputs({ targets, extendedUtxo, changeAddress, feeRate, }: {
36
- targets: Target[];
37
- extendedUtxo: ExtendedUtxo[];
38
- changeAddress: string;
39
- feeRate: number;
40
- fullAmount?: boolean;
41
- }): {
42
- inputs: ExtendedUtxo[];
43
- fee: number;
44
- outputs: Target[];
45
- change: import("./transaction-builder").ChangeTarget | undefined;
46
- };
47
- checkBalanceIsSufficient({ targets, extendedUtxo, changeAddress, feeRate, fullAmount, }: {
48
- targets: Target[];
49
- extendedUtxo: ExtendedUtxo[];
50
- changeAddress: string;
51
- feeRate: number;
52
- fullAmount?: boolean;
53
- }): boolean;
54
- setMultiSigAccount(accountType?: string): void;
55
41
  setAccountPrivateKey(privateKeyHex: string): void;
42
+ setAccountType(accountType?: string): string;
56
43
  setAccountPrivateKeyByMnemonic({ mnemonic, mnemonicPassword, index, walletNumber, addressType, }: {
57
44
  mnemonic: string;
58
45
  mnemonicPassword?: string;
59
46
  index?: number;
60
47
  walletNumber?: number;
61
48
  addressType?: string;
62
- }): string | undefined;
63
- setAccountPublicKey(publicKeyHex: string): void;
64
- setAccount(accountType?: string): string | undefined;
49
+ }): string;
50
+ checkBalanceIsSufficient({ targets, extendedUtxo, changeAddress, feeRate, }: {
51
+ targets: Target[];
52
+ extendedUtxo: ExtendedUtxo[];
53
+ changeAddress: string;
54
+ feeRate: number;
55
+ }): boolean;
65
56
  getExtendedUtxo(input: SignerInfo): Promise<{
66
- signerInfo: SignerInfo;
67
57
  hash: string;
68
58
  value: number;
69
59
  index: number;
60
+ signerInfo: SignerInfo;
70
61
  }[]>;
71
- send(receiverAddress: string, amount: string | number, fullAmount?: boolean, speed?: "normal" | "slow" | "fast"): Promise<string>;
72
- sendSignedPsbt(signedPsbt: string): Promise<string>;
62
+ getFeeRate(feeRate?: FeeRateType): Promise<number>;
63
+ sendBTC(receiverAddress: string, amountInSatoshi: number | "all", fee?: FeeRateType, staticExtendedUtxo?: ExtendedUtxo[]): Promise<string>;
64
+ sendBTCMultipleAddress(receivers: TargetAddress[], fee?: FeeRateType, staticExtendedUtxo?: ExtendedUtxo[]): Promise<string>;
65
+ sendBTCToMultipleAddressUnsignedTx(receivers: TargetAddress[], signerInfo: SignerInfo, fee?: FeeRateType, staticExtendedUtxo?: ExtendedUtxo[], fullAmount?: boolean): Promise<{
66
+ unsignedTransaction: string;
67
+ outputs: Target[];
68
+ inputs: {
69
+ hash: string;
70
+ value: number;
71
+ index: number;
72
+ signerInfo: SignerInfo;
73
+ }[];
74
+ fee: number;
75
+ change: import("./transaction-builder").ChangeTarget | undefined;
76
+ possibleTxId: string | undefined;
77
+ }>;
78
+ sendBTCUnsignedTx(receiver: string, amountInSatoshi: number | "all", signerInfo: SignerInfo, fee?: FeeRateType, staticExtendedUtxo?: ExtendedUtxo[]): Promise<{
79
+ unsignedTransaction: string;
80
+ outputs: Target[];
81
+ inputs: {
82
+ hash: string;
83
+ value: number;
84
+ index: number;
85
+ signerInfo: SignerInfo;
86
+ }[];
87
+ fee: number;
88
+ change: import("./transaction-builder").ChangeTarget | undefined;
89
+ possibleTxId: string | undefined;
90
+ }>;
73
91
  sendSignedTx(signedTx: string): Promise<string>;
92
+ sendSignedPsbt(signedPsbt: string): Promise<string>;
93
+ sendSignedPsbtWithRetry(signedPsbt: string, { maxTries, retrySleep }?: {
94
+ maxTries?: number | undefined;
95
+ retrySleep?: number | undefined;
96
+ }): Promise<string>;
74
97
  sendMultiSignedPsbt(signedPsbts?: string[]): Promise<string>;
75
98
  increaseTransactionFeeUnsignedPsbt(txId: string, signerInfos: SignerInfo[], extraExtendedUtxo: ExtendedUtxo[], changeAddress: string, staticFeeRate?: number): Promise<{
76
99
  unsignedTransaction: string;
@@ -83,6 +106,7 @@ export declare class BitcoinBaseWallet {
83
106
  }[];
84
107
  fee: number;
85
108
  change: import("./transaction-builder").ChangeTarget | undefined;
109
+ possibleTxId: string | undefined;
86
110
  }>;
87
111
  }
88
112
  //# sourceMappingURL=bitcoin-wallet-base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoin-wallet-base.d.ts","sourceRoot":"","sources":["../src/bitcoin-wallet-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bitcoin-wallet-base.d.ts","sourceRoot":"","sources":["../src/bitcoin-wallet-base.ts"],"names":[],"mappings":"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"}
@@ -45,23 +45,25 @@ const transaction_builder_1 = require("./transaction-builder");
45
45
  const sign_transaction_1 = __importDefault(require("./sign/sign-transaction"));
46
46
  const bitcoin_utils_1 = require("./bitcoin-utils");
47
47
  const networks_1 = __importDefault(require("./utils/networks"));
48
+ const tools_1 = require("./utils/tools");
48
49
  const bip32 = (0, bip32_1.default)(secp256k1_1.default);
49
50
  class BitcoinBaseWallet {
50
- constructor(networkName, connectionInfo = {
51
- api: {
52
- provider: "BlockStream",
53
- },
54
- }) {
51
+ constructor(networkName, connectionInfo) {
55
52
  this.network = networks_1.default[networkName];
56
53
  this.hdWalletPath = configs_1.hdWalletPath.bitcoin;
57
- this.transactionBuilder = new transaction_builder_1.BitcoinTransactionBuilder(connectionInfo, networkName, this.network);
54
+ this.transactionBuilder = new transaction_builder_1.BitcoinTransactionBuilder(networkName, this.network, connectionInfo);
58
55
  this.btcInterface = this.transactionBuilder.btcInterface;
59
56
  this.signer = new sign_transaction_1.default(this.network);
60
57
  this.currentAccount = undefined;
61
58
  this.currentAccountType = undefined;
62
59
  this.privateKey = undefined;
63
60
  this.publicKey = undefined;
64
- this.publicKeys = [];
61
+ }
62
+ static satoshiToBTC(satoshi) {
63
+ return new bignumber_js_1.default(satoshi).dividedBy(1e8).toString();
64
+ }
65
+ static btcToSatoshi(btc) {
66
+ return new bignumber_js_1.default(btc).multipliedBy(1e8).toFixed(0);
65
67
  }
66
68
  get signerInfo() {
67
69
  return this.privateKey
@@ -72,44 +74,25 @@ class BitcoinBaseWallet {
72
74
  }
73
75
  : undefined;
74
76
  }
75
- createTransactionInputsAndOutputs({ targets, extendedUtxo, changeAddress, feeRate, }) {
76
- return this.transactionBuilder.helperHandleInputsAndOutputs({
77
- targets,
78
- extendedUtxo,
79
- changeObject: {
80
- address: changeAddress,
81
- },
82
- feeRate,
83
- });
84
- }
85
- checkBalanceIsSufficient({ targets, extendedUtxo, changeAddress, feeRate, fullAmount = false, }) {
86
- try {
87
- this.transactionBuilder.helperHandleInputsAndOutputs({
88
- targets,
89
- extendedUtxo,
90
- changeObject: {
91
- address: changeAddress,
92
- },
93
- feeRate,
94
- });
95
- return true;
96
- }
97
- catch (err) {
98
- return false;
99
- }
100
- }
101
- setMultiSigAccount(accountType = "p2sh") {
102
- throw new Error("not supported yet");
103
- switch (accountType) {
104
- default:
105
- throw new Error("accountType is incorrect");
106
- }
107
- this.currentAccountType = accountType;
108
- }
109
77
  setAccountPrivateKey(privateKeyHex) {
110
78
  this.privateKey = Buffer.from(privateKeyHex, "hex");
111
79
  let publicKey = (0, bitcoin_utils_1.getPubKeyFromPrivateKeyHex)(privateKeyHex, this.network);
112
80
  this.publicKey = publicKey;
81
+ this.setAccountType("p2wpkh");
82
+ }
83
+ setAccountType(accountType = "p2pkh") {
84
+ if (!this.publicKey) {
85
+ throw new Error("account not initialized");
86
+ }
87
+ let addressObj = this.transactionBuilder.createAddressObject({
88
+ addressType: accountType,
89
+ publicKey: this.publicKey,
90
+ });
91
+ this.currentAccount = addressObj.address;
92
+ this.currentAccountType = accountType;
93
+ this.addressObj = addressObj;
94
+ this.bitcoinAddress = addressObj.address;
95
+ return addressObj.address;
113
96
  }
114
97
  setAccountPrivateKeyByMnemonic({ mnemonic, mnemonicPassword = "", index = 0, walletNumber = 0, addressType = "p2sh-p2wpkh", }) {
115
98
  if (!bip39.validateMnemonic(mnemonic))
@@ -124,78 +107,116 @@ class BitcoinBaseWallet {
124
107
  const account = node.derivePath(path);
125
108
  const userKeyPair = account.derive(index);
126
109
  this.setAccountPrivateKey(userKeyPair.privateKey.toString("hex"));
127
- return this.setAccount(addressType);
128
- }
129
- setAccountPublicKey(publicKeyHex) {
130
- this.publicKey = Buffer.from(publicKeyHex, "hex");
110
+ return this.setAccountType(addressType);
131
111
  }
132
- setAccount(accountType = "p2pkh") {
133
- if (!this.publicKey) {
134
- throw new Error("account not initialized");
112
+ checkBalanceIsSufficient({ targets, extendedUtxo, changeAddress, feeRate, }) {
113
+ try {
114
+ this.transactionBuilder.helperHandleInputsAndOutputs({
115
+ targets,
116
+ extendedUtxo,
117
+ changeObject: {
118
+ address: changeAddress,
119
+ },
120
+ feeRate,
121
+ });
122
+ return true;
123
+ }
124
+ catch (err) {
125
+ return false;
135
126
  }
136
- let addressObj = this.transactionBuilder.createAddressObject({
137
- addressType: accountType,
138
- publicKey: this.publicKey,
139
- });
140
- this.currentAccount = addressObj.address;
141
- this.currentAccountType = accountType;
142
- this.addressObj = addressObj;
143
- this.bitcoinAddress = addressObj.address;
144
- return addressObj.address;
145
127
  }
146
128
  getExtendedUtxo(input) {
147
129
  return __awaiter(this, void 0, void 0, function* () {
148
- return this.transactionBuilder.getExtendedUtxo(input);
130
+ return this.btcInterface.getExtendedUtxo(input);
131
+ });
132
+ }
133
+ getFeeRate(feeRate = "normal") {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ if (feeRate === 0)
136
+ throw new Error("feeRate should be greater than 0");
137
+ if (+feeRate > 0)
138
+ return +feeRate;
139
+ if (typeof feeRate === "string")
140
+ return this.btcInterface.getFeeRate(feeRate);
141
+ throw new Error("incorrect feeRate");
149
142
  });
150
143
  }
151
- send(receiverAddress, amount, fullAmount = false, speed = "normal") {
144
+ sendBTC(receiverAddress, amountInSatoshi, fee = "normal", staticExtendedUtxo) {
152
145
  return __awaiter(this, void 0, void 0, function* () {
153
- if (!this.currentAccount || !this.currentAccountType || !this.publicKey || !this.privateKey) {
146
+ if (!this.signerInfo || !this.privateKey) {
154
147
  throw new Error("account not initialized");
155
148
  }
156
- let extendedUtxo = yield this.getExtendedUtxo({
157
- address: this.currentAccount,
158
- addressType: this.currentAccountType,
159
- publicKey: this.publicKey.toString("hex"),
160
- });
161
- if (!fullAmount && (0, bignumber_js_1.default)(amount).isEqualTo(0))
162
- throw new Error("incorrect amount. amount should be in satoshi");
163
- let feeRate = yield this.transactionBuilder._getFeeRate(speed);
149
+ const unsignedTx = yield this.sendBTCUnsignedTx(receiverAddress, amountInSatoshi, this.signerInfo, fee, staticExtendedUtxo);
150
+ let signedPsbt = yield this.signer.signPsbt(unsignedTx, this.privateKey);
151
+ let signedTx = this.signer.finalizePsbts([signedPsbt]);
152
+ let txId = yield this.sendSignedTx(signedTx);
153
+ return txId;
154
+ });
155
+ }
156
+ sendBTCMultipleAddress(receivers, fee = "normal", staticExtendedUtxo) {
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ if (!this.signerInfo || !this.privateKey) {
159
+ throw new Error("account not initialized");
160
+ }
161
+ const unsignedTx = yield this.sendBTCToMultipleAddressUnsignedTx(receivers, this.signerInfo, fee, staticExtendedUtxo);
162
+ let signedPsbt = yield this.signer.signPsbt(unsignedTx, this.privateKey);
163
+ let signedTx = this.signer.finalizePsbts([signedPsbt]);
164
+ let txId = yield this.sendSignedTx(signedTx);
165
+ return txId;
166
+ });
167
+ }
168
+ sendBTCToMultipleAddressUnsignedTx(receivers, signerInfo, fee = "normal", staticExtendedUtxo, fullAmount = false) {
169
+ return __awaiter(this, void 0, void 0, function* () {
170
+ if (!fullAmount) {
171
+ receivers.forEach((r) => {
172
+ if ((0, bignumber_js_1.default)(r.value).isEqualTo(0))
173
+ throw new Error("incorrect amount");
174
+ });
175
+ }
176
+ else if (receivers.length > 1)
177
+ throw new Error("fullAmount only support one receiver");
178
+ let feeRate = yield this.getFeeRate(fee);
179
+ let extendedUtxo = staticExtendedUtxo || (yield this.getExtendedUtxo(signerInfo));
164
180
  let unsignedTx = yield this.transactionBuilder.processUnsignedTransaction({
165
181
  extendedUtxo,
166
- targets: [
167
- {
168
- address: receiverAddress,
169
- value: +amount,
170
- },
171
- ],
172
- changeAddress: this.currentAccount,
182
+ targets: receivers,
183
+ changeAddress: signerInfo.address,
173
184
  feeRate,
174
185
  fullAmount,
175
186
  });
176
- let signedPsbt = yield this.signer.signPsbt(unsignedTx, this.privateKey);
177
- let signedTx = this.signer.finalizePsbts([signedPsbt]);
178
- let txId = yield this.transactionBuilder.sendTx(signedTx);
187
+ return unsignedTx;
188
+ });
189
+ }
190
+ sendBTCUnsignedTx(receiver, amountInSatoshi, signerInfo, fee = "normal", staticExtendedUtxo) {
191
+ return __awaiter(this, void 0, void 0, function* () {
192
+ return this.sendBTCToMultipleAddressUnsignedTx([{ address: receiver, value: amountInSatoshi === "all" ? 0 : amountInSatoshi }], signerInfo, fee, staticExtendedUtxo, amountInSatoshi === "all");
193
+ });
194
+ }
195
+ sendSignedTx(signedTx) {
196
+ return __awaiter(this, void 0, void 0, function* () {
197
+ let txId = yield this.btcInterface.sendRawTransaction(signedTx);
179
198
  return txId;
180
199
  });
181
200
  }
182
201
  sendSignedPsbt(signedPsbt) {
183
202
  return __awaiter(this, void 0, void 0, function* () {
184
203
  let signedTx = this.signer.finalizePsbts([signedPsbt]);
185
- let txId = yield this.transactionBuilder.sendTx(signedTx);
204
+ let txId = yield this.sendSignedTx(signedTx);
186
205
  return txId;
187
206
  });
188
207
  }
189
- sendSignedTx(signedTx) {
208
+ sendSignedPsbtWithRetry(signedPsbt, { maxTries = 5, retrySleep = 5000 } = {}) {
190
209
  return __awaiter(this, void 0, void 0, function* () {
191
- let txId = yield this.transactionBuilder.sendTx(signedTx);
192
- return txId;
210
+ return (0, tools_1.runWithRetries)(() => this.sendSignedPsbt(signedPsbt), {
211
+ retrySleep,
212
+ maxTries,
213
+ });
193
214
  });
194
215
  }
195
216
  sendMultiSignedPsbt(signedPsbts = []) {
196
217
  return __awaiter(this, void 0, void 0, function* () {
197
218
  let signedTx = this.signer.finalizePsbts(signedPsbts);
198
- let txId = yield this.transactionBuilder.sendTx(signedTx);
219
+ let txId = yield this.btcInterface.sendRawTransaction(signedTx);
199
220
  return txId;
200
221
  });
201
222
  }
@@ -212,7 +233,7 @@ class BitcoinBaseWallet {
212
233
  throw new Error("signerInfo not match");
213
234
  }
214
235
  let changeIndex = transaction.vout.findIndex((vo) => transaction.vin.find((vi) => vo.address === vi.address || vo.address === changeAddress));
215
- const feeRate = staticFeeRate || (yield this.transactionBuilder._getFeeRate("fast"));
236
+ const feeRate = staticFeeRate || (yield this.btcInterface.getFeeRate("fast"));
216
237
  let targets = transaction.vout
217
238
  .filter((_, index) => index !== changeIndex)
218
239
  .map((vo) => vo.address