@teleportdao/bitcoin 1.0.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 (72) hide show
  1. package/dist/bitcoin-base.d.ts +56 -0
  2. package/dist/bitcoin-base.d.ts.map +1 -0
  3. package/dist/bitcoin-base.js +138 -0
  4. package/dist/bitcoin-base.js.map +1 -0
  5. package/dist/bitcoin-interface-utils.d.ts +18 -0
  6. package/dist/bitcoin-interface-utils.d.ts.map +1 -0
  7. package/dist/bitcoin-interface-utils.js +31 -0
  8. package/dist/bitcoin-interface-utils.js.map +1 -0
  9. package/dist/bitcoin-interface.d.ts +154 -0
  10. package/dist/bitcoin-interface.d.ts.map +1 -0
  11. package/dist/bitcoin-interface.js +248 -0
  12. package/dist/bitcoin-interface.js.map +1 -0
  13. package/dist/bitcoin-utils.d.ts +70 -0
  14. package/dist/bitcoin-utils.d.ts.map +1 -0
  15. package/dist/bitcoin-utils.js +388 -0
  16. package/dist/bitcoin-utils.js.map +1 -0
  17. package/dist/helper/burn-request-helper.d.ts +7 -0
  18. package/dist/helper/burn-request-helper.d.ts.map +1 -0
  19. package/dist/helper/burn-request-helper.js +26 -0
  20. package/dist/helper/burn-request-helper.js.map +1 -0
  21. package/dist/helper/teleport-request-helper.d.ts +45 -0
  22. package/dist/helper/teleport-request-helper.d.ts.map +1 -0
  23. package/dist/helper/teleport-request-helper.js +141 -0
  24. package/dist/helper/teleport-request-helper.js.map +1 -0
  25. package/dist/index.d.ts +7 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +15 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/sign/sign-transaction.d.ts +8 -0
  30. package/dist/sign/sign-transaction.d.ts.map +1 -0
  31. package/dist/sign/sign-transaction.js +41 -0
  32. package/dist/sign/sign-transaction.js.map +1 -0
  33. package/dist/teleport-dao-payments.d.ts +92 -0
  34. package/dist/teleport-dao-payments.d.ts.map +1 -0
  35. package/dist/teleport-dao-payments.js +203 -0
  36. package/dist/teleport-dao-payments.js.map +1 -0
  37. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts +12 -0
  38. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts.map +1 -0
  39. package/dist/transaction-builder/bitcoin-transaction-builder.js +50 -0
  40. package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -0
  41. package/dist/transaction-builder/transaction-builder-common.d.ts +80 -0
  42. package/dist/transaction-builder/transaction-builder-common.d.ts.map +1 -0
  43. package/dist/transaction-builder/transaction-builder-common.js +170 -0
  44. package/dist/transaction-builder/transaction-builder-common.js.map +1 -0
  45. package/dist/transaction-builder/transaction-builder.d.ts +19 -0
  46. package/dist/transaction-builder/transaction-builder.d.ts.map +1 -0
  47. package/dist/transaction-builder/transaction-builder.js +130 -0
  48. package/dist/transaction-builder/transaction-builder.js.map +1 -0
  49. package/dist/utils/networks.d.ts +36 -0
  50. package/dist/utils/networks.d.ts.map +1 -0
  51. package/dist/utils/networks.js +30 -0
  52. package/dist/utils/networks.js.map +1 -0
  53. package/dist/utils/tools.d.ts +13 -0
  54. package/dist/utils/tools.d.ts.map +1 -0
  55. package/dist/utils/tools.js +65 -0
  56. package/dist/utils/tools.js.map +1 -0
  57. package/package.json +34 -0
  58. package/src/bitcoin-base.js +174 -0
  59. package/src/bitcoin-interface-utils.js +42 -0
  60. package/src/bitcoin-interface.js +267 -0
  61. package/src/bitcoin-utils.js +443 -0
  62. package/src/helper/burn-request-helper.js +27 -0
  63. package/src/helper/teleport-request-helper.js +162 -0
  64. package/src/index.js +15 -0
  65. package/src/sign/sign-transaction.js +36 -0
  66. package/src/teleport-dao-payments.js +276 -0
  67. package/src/transaction-builder/bitcoin-transaction-builder.js +37 -0
  68. package/src/transaction-builder/transaction-builder-common.js +228 -0
  69. package/src/transaction-builder/transaction-builder.js +135 -0
  70. package/src/utils/networks.js +31 -0
  71. package/src/utils/tools.js +72 -0
  72. package/tsconfig.json +9 -0
@@ -0,0 +1,80 @@
1
+ export = BaseBitcoinLikeTransaction;
2
+ declare class BaseBitcoinLikeTransaction {
3
+ static helperHandleInputsAndOutputs({ targets, extendedUtxo, feeRate, changeAddress, fullAmount, }: {
4
+ targets: any;
5
+ extendedUtxo: any;
6
+ feeRate: any;
7
+ changeAddress: any;
8
+ fullAmount: any;
9
+ }): {
10
+ inputs: any;
11
+ fee: any;
12
+ outputs: any;
13
+ change: {
14
+ address: any;
15
+ value: any;
16
+ } | undefined;
17
+ };
18
+ constructor({ network, testnet, feeMin, dustLimit, maximumNumberOfOutputsInTransaction, }: {
19
+ network: any;
20
+ testnet: any;
21
+ feeMin?: number | undefined;
22
+ dustLimit: any;
23
+ maximumNumberOfOutputsInTransaction?: number | undefined;
24
+ });
25
+ testnet: any;
26
+ network: any;
27
+ maximumNumberOfOutputsInTransaction: number;
28
+ feeMin: number;
29
+ dustLimit: any;
30
+ createAddressObject({ addressType, publicKey }: {
31
+ addressType: any;
32
+ publicKey: any;
33
+ }): bitcoin.payments.Payment;
34
+ validateAddress(address: any): boolean;
35
+ _getUtxo(userAddress: any): Promise<void>;
36
+ _getTransactionHex(transactionId: any): Promise<void>;
37
+ convertBaseInputsToInputs(baseInputs: any): Promise<void>;
38
+ createUnsignedTransaction(baseInputs: any): Promise<void>;
39
+ getExtendedUtxo(signerInfo: {
40
+ address: string;
41
+ addressType: string;
42
+ publicKey: string | null;
43
+ privateKeyId: string | null;
44
+ derivationPath: string | null;
45
+ }): Promise<any>;
46
+ convertUtxoToInput({ extendedUtxo, targets, changeAddress, fullAmount, feeRate }: {
47
+ hash: string;
48
+ index: number;
49
+ value: number;
50
+ signerInfo: {
51
+ address: Object;
52
+ publicKey: Object;
53
+ addressType: string;
54
+ privateKeyId: number;
55
+ };
56
+ }): Promise<{
57
+ inputs: void;
58
+ outputs: any;
59
+ change: {
60
+ address: any;
61
+ value: any;
62
+ } | undefined;
63
+ fee: any;
64
+ feeRate: any;
65
+ }>;
66
+ processUnsignedTransaction({ extendedUtxo, targets, changeAddress, fullAmount, feeRate, selfTransaction, }: {
67
+ extendedUtxo: any;
68
+ targets?: any[] | undefined;
69
+ changeAddress?: undefined;
70
+ fullAmount?: boolean | undefined;
71
+ feeRate: any;
72
+ selfTransaction?: boolean | undefined;
73
+ }): Promise<void>;
74
+ getOpReturnTarget(dataHex: any): {
75
+ script: Buffer | undefined;
76
+ value: number;
77
+ };
78
+ }
79
+ import bitcoin = require("bitcoinjs-lib");
80
+ //# sourceMappingURL=transaction-builder-common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-builder-common.d.ts","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder-common.js"],"names":[],"mappings":";AAyBA;IAqEE;;;;;;;;;;;;;;MA8BC;IAjGD;;;;;;OAYC;IALC,aAAsB;IACtB,aAAsB;IACtB,4CAA8E;IAC9E,eAAoB;IACpB,eAAuE;IAIzE;;;iCAEC;IAED,uCAkBC;IAGD,0CAIC;IAGD,sDAIC;IAGD,0DAIC;IAGD,0DAIC;IA6CD;QAR8B,OAAO;QACP,WAAW;QACV,SAAS;QAET,YAAY;QACZ,cAAc;qBAa5C;IAcD;QATkC,IAAI;QACJ,KAAK;QACL,KAAK;QACL,UAAU;YACC,OAAO,EAAzC,MAAM;YAC4B,SAAS,EAA3C,MAAM;YAC4B,WAAW;YACX,YAAY;;;;;;;;;;;OAyBxD;IAED;;;;;;;sBA0BC;IAED;;;MAUC;CACF"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ const bitcoin = require("bitcoinjs-lib");
12
+ const coinselect = require("coinselect");
13
+ const coinselectSplit = require("coinselect/split");
14
+ const { createAddressObjectByPublicKey } = require("../bitcoin-utils");
15
+ const TX_EMPTY_SIZE = 4 + 1 + 1 + 4;
16
+ const TX_INPUT_BASE = 32 + 4 + 1 + 4;
17
+ const TX_INPUT_P2PKH = 107;
18
+ const TX_INPUT_P2SH_P2PKH = 50;
19
+ const TX_INPUT_P2WPKH = 47;
20
+ const TX_OUTPUT_BASE = 8 + 1;
21
+ const TX_OUTPUT_P2PKH = 25;
22
+ const componentBytes = {
23
+ bytePerInput: {
24
+ p2pkh: TX_INPUT_BASE + TX_INPUT_P2PKH,
25
+ p2wpkh: TX_INPUT_BASE + TX_INPUT_P2WPKH,
26
+ p2shp2wpkh: TX_INPUT_BASE + TX_INPUT_P2SH_P2PKH,
27
+ },
28
+ baseTxBytes: TX_EMPTY_SIZE,
29
+ bytePerOutput: TX_OUTPUT_BASE + TX_OUTPUT_P2PKH,
30
+ };
31
+ class BaseBitcoinLikeTransaction {
32
+ constructor({ network, testnet, feeMin = 0, dustLimit, maximumNumberOfOutputsInTransaction = 50, }) {
33
+ this.testnet = testnet;
34
+ this.network = network;
35
+ this.maximumNumberOfOutputsInTransaction = maximumNumberOfOutputsInTransaction;
36
+ this.feeMin = feeMin;
37
+ this.dustLimit = dustLimit || 1 * 2 * componentBytes.bytePerInput.p2pkh;
38
+ }
39
+ createAddressObject({ addressType, publicKey }) {
40
+ return createAddressObjectByPublicKey({ addressType, publicKey }, this.network);
41
+ }
42
+ validateAddress(address) {
43
+ try {
44
+ let isValid = false;
45
+ let network = this.network;
46
+ let isAddressSegwit = address.startsWith(network.bech32);
47
+ if (isAddressSegwit) {
48
+ bitcoin.address.fromBech32(address);
49
+ isValid = true;
50
+ }
51
+ else {
52
+ let base58Data = bitcoin.address.fromBase58Check(address);
53
+ isValid =
54
+ base58Data.version === Number(network.scriptHash) ||
55
+ base58Data.version === Number(network.pubKeyHash);
56
+ }
57
+ return isValid;
58
+ }
59
+ catch (error) {
60
+ return false;
61
+ }
62
+ }
63
+ _getUtxo(userAddress) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ throw new Error("Do not call abstract method directly");
66
+ });
67
+ }
68
+ _getTransactionHex(transactionId) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ throw new Error("Do not call abstract method directly");
71
+ });
72
+ }
73
+ convertBaseInputsToInputs(baseInputs) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ throw new Error("Do not call abstract method directly");
76
+ });
77
+ }
78
+ createUnsignedTransaction(baseInputs) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ throw new Error("Do not call abstract method directly");
81
+ });
82
+ }
83
+ static helperHandleInputsAndOutputs({ targets, extendedUtxo, feeRate, changeAddress, fullAmount, }) {
84
+ let { inputs, outputs, fee } = fullAmount
85
+ ? coinselectSplit(extendedUtxo, [{ address: targets[0].address }], Math.round(feeRate))
86
+ : coinselect(extendedUtxo, targets, Math.round(feeRate));
87
+ if (!inputs || !outputs) {
88
+ throw new Error("not enough balance");
89
+ }
90
+ let changeIndex = outputs.findIndex((x) => !x.address && !x.script && x.value > 0);
91
+ let change;
92
+ if (changeIndex >= 0) {
93
+ change = {
94
+ address: changeAddress,
95
+ value: outputs[changeIndex].value,
96
+ };
97
+ outputs.splice(changeIndex, 1);
98
+ }
99
+ return {
100
+ inputs,
101
+ fee,
102
+ outputs,
103
+ change,
104
+ };
105
+ }
106
+ getExtendedUtxo(signerInfo) {
107
+ return __awaiter(this, void 0, void 0, function* () {
108
+ let utxo = yield this._getUtxo(signerInfo.address);
109
+ const extendedUtxo = utxo.map((input) => (Object.assign(Object.assign({}, input), { signerInfo })));
110
+ if (!extendedUtxo || extendedUtxo.length === 0) {
111
+ throw new Error("no utxo found");
112
+ }
113
+ return extendedUtxo;
114
+ });
115
+ }
116
+ convertUtxoToInput({ extendedUtxo, targets, changeAddress, fullAmount = false, feeRate }) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ let { inputs: filteredInputs, outputs, change, fee, } = BaseBitcoinLikeTransaction.helperHandleInputsAndOutputs({
119
+ targets,
120
+ extendedUtxo,
121
+ fullAmount,
122
+ feeRate,
123
+ changeAddress,
124
+ });
125
+ let inputs = yield this.convertBaseInputsToInputs(filteredInputs);
126
+ return {
127
+ inputs,
128
+ outputs,
129
+ change,
130
+ fee,
131
+ feeRate,
132
+ };
133
+ });
134
+ }
135
+ processUnsignedTransaction({ extendedUtxo, targets = [], changeAddress = undefined, fullAmount = false, feeRate, selfTransaction = false, }) {
136
+ return __awaiter(this, void 0, void 0, function* () {
137
+ if (!selfTransaction && targets.length === 0)
138
+ throw new Error("no target");
139
+ const { inputs, outputs, change, fee } = yield this.convertUtxoToInput({
140
+ extendedUtxo,
141
+ targets,
142
+ changeAddress,
143
+ fullAmount,
144
+ feeRate,
145
+ });
146
+ let unsignedTransaction = yield this.createUnsignedTransaction({
147
+ inputs,
148
+ outputs,
149
+ change,
150
+ fee,
151
+ feeRate,
152
+ });
153
+ return unsignedTransaction;
154
+ });
155
+ }
156
+ getOpReturnTarget(dataHex) {
157
+ if (!dataHex.length > 0)
158
+ throw new Error("invalid data in hex");
159
+ const embed = bitcoin.payments.embed({
160
+ data: [Buffer.from(dataHex, "hex")],
161
+ network: this.network,
162
+ });
163
+ return {
164
+ script: embed.output,
165
+ value: 0,
166
+ };
167
+ }
168
+ }
169
+ module.exports = BaseBitcoinLikeTransaction;
170
+ //# sourceMappingURL=transaction-builder-common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-builder-common.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder-common.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export = BaseBitcoinLikeTransaction;
2
+ declare class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon {
3
+ convertBaseInputsToInputs(baseInputs?: any[]): Promise<any[]>;
4
+ createUnsignedTransaction({ inputs, outputs, change, fee, feeRate, }: {
5
+ inputs: any;
6
+ outputs: any;
7
+ change: any;
8
+ fee: any;
9
+ feeRate: any;
10
+ }): {
11
+ unsignedTransaction: string;
12
+ outputs: any;
13
+ inputs: any;
14
+ fee: any;
15
+ change: any;
16
+ };
17
+ }
18
+ import BaseBitcoinLikeTransactionBuilderCommon = require("./transaction-builder-common");
19
+ //# sourceMappingURL=transaction-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-builder.d.ts","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.js"],"names":[],"mappings":";AAGA;IACE,8DAqCC;IAED;;;;;;;;;;;;MAwFC;CACF"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ const bitcoin = require("bitcoinjs-lib");
12
+ const BaseBitcoinLikeTransactionBuilderCommon = require("./transaction-builder-common");
13
+ class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon {
14
+ convertBaseInputsToInputs(baseInputs = []) {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ let inputs = baseInputs;
17
+ let transactionId = null;
18
+ let transactionHex = null;
19
+ for (let i in inputs) {
20
+ let { address, publicKey, addressType } = inputs[i].signerInfo;
21
+ let addressObject = this.createAddressObject({
22
+ address,
23
+ publicKey: publicKey ? Buffer.from(publicKey, "hex") : null,
24
+ addressType,
25
+ });
26
+ if (addressType === "p2pkh") {
27
+ if (transactionId === inputs[i].hash) {
28
+ inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
29
+ }
30
+ else {
31
+ transactionHex = yield this._getTransactionHex(inputs[i].hash);
32
+ inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
33
+ transactionId = inputs[i].hash;
34
+ }
35
+ }
36
+ else if (addressType === "p2wpkh") {
37
+ inputs[i].witnessUtxo = {
38
+ script: addressObject.output,
39
+ value: inputs[i].value,
40
+ };
41
+ }
42
+ else if (addressType === "p2sh-p2wpkh") {
43
+ inputs[i].witnessUtxo = {
44
+ script: addressObject.output,
45
+ value: inputs[i].value,
46
+ };
47
+ inputs[i].redeemScript = addressObject.redeem.output;
48
+ }
49
+ }
50
+ return inputs;
51
+ });
52
+ }
53
+ createUnsignedTransaction({ inputs, outputs, change, fee, feeRate, }) {
54
+ const { network } = this;
55
+ const newPsbt = new bitcoin.Psbt({ network });
56
+ newPsbt.setMaximumFeeRate = feeRate + feeRate / 100;
57
+ for (const input of inputs) {
58
+ let { addressType } = input.signerInfo;
59
+ switch (addressType) {
60
+ case "p2pkh":
61
+ newPsbt.addInput({
62
+ hash: input.hash,
63
+ index: Number(input.index),
64
+ nonWitnessUtxo: input.nonWitnessUtxo,
65
+ sequence: 0xffffffff - 1,
66
+ });
67
+ break;
68
+ case "p2wpkh":
69
+ newPsbt.addInput({
70
+ hash: input.hash,
71
+ index: Number(input.index),
72
+ witnessUtxo: input.witnessUtxo,
73
+ sequence: 0xffffffff - 1,
74
+ });
75
+ break;
76
+ case "p2sh-p2wpkh":
77
+ newPsbt.addInput({
78
+ hash: input.hash,
79
+ index: Number(input.index),
80
+ witnessUtxo: input.witnessUtxo,
81
+ redeemScript: input.redeemScript,
82
+ sequence: 0xffffffff - 1,
83
+ });
84
+ break;
85
+ default:
86
+ throw new Error("address type is incorrect");
87
+ }
88
+ }
89
+ for (const target of outputs) {
90
+ newPsbt.addOutput(target);
91
+ }
92
+ if (change && Object.keys(change).length !== 0) {
93
+ newPsbt.addOutput({
94
+ address: change.address,
95
+ value: Number(change.value),
96
+ });
97
+ }
98
+ for (let i in outputs) {
99
+ if (newPsbt.txOutputs[i].address !== outputs[i].address) {
100
+ throw new Error("error address");
101
+ }
102
+ if (newPsbt.txOutputs[i].value !== outputs[i].value) {
103
+ throw new Error("error value");
104
+ }
105
+ }
106
+ if (change && Object.keys(change).length !== 0) {
107
+ if (newPsbt.txOutputs[outputs.length].address !== change.address) {
108
+ throw new Error("error change address");
109
+ }
110
+ if (newPsbt.txOutputs[outputs.length].value !== change.value) {
111
+ throw new Error("error change value");
112
+ }
113
+ }
114
+ const unsignedPsbtBaseText = newPsbt.toBase64();
115
+ return {
116
+ unsignedTransaction: unsignedPsbtBaseText,
117
+ outputs,
118
+ inputs: inputs.map((tx) => ({
119
+ hash: tx.hash,
120
+ value: Number(tx.value),
121
+ index: tx.index,
122
+ signerInfo: tx.signerInfo,
123
+ })),
124
+ fee,
125
+ change,
126
+ };
127
+ }
128
+ }
129
+ module.exports = BaseBitcoinLikeTransaction;
130
+ //# sourceMappingURL=transaction-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import bitcoinLib = require("bitcoinjs-lib");
2
+ export const bitcoin: bitcoinLib.networks.Network;
3
+ export const bitcoin_testnet: bitcoinLib.networks.Network;
4
+ export namespace litecoin {
5
+ const messagePrefix: string;
6
+ const bech32: string;
7
+ namespace bip32 {
8
+ const _public: number;
9
+ export { _public as public };
10
+ const _private: number;
11
+ export { _private as private };
12
+ }
13
+ const pubKeyHash: number;
14
+ const scriptHash: number;
15
+ const wif: number;
16
+ }
17
+ export namespace litecoin_testnet {
18
+ const messagePrefix_1: string;
19
+ export { messagePrefix_1 as messagePrefix };
20
+ const bech32_1: string;
21
+ export { bech32_1 as bech32 };
22
+ export namespace bip32_1 {
23
+ const _public_1: number;
24
+ export { _public_1 as public };
25
+ const _private_1: number;
26
+ export { _private_1 as private };
27
+ }
28
+ export { bip32_1 as bip32 };
29
+ const pubKeyHash_1: number;
30
+ export { pubKeyHash_1 as pubKeyHash };
31
+ const scriptHash_1: number;
32
+ export { scriptHash_1 as scriptHash };
33
+ const wif_1: number;
34
+ export { wif_1 as wif };
35
+ }
36
+ //# sourceMappingURL=networks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../../src/utils/networks.js"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ const bitcoinLib = require("bitcoinjs-lib");
3
+ const networks = {
4
+ bitcoin: bitcoinLib.networks.bitcoin,
5
+ bitcoin_testnet: bitcoinLib.networks.testnet,
6
+ litecoin: {
7
+ messagePrefix: "\x19Litecoin Signed Message:\n",
8
+ bech32: "ltc",
9
+ bip32: {
10
+ public: 0x0488b21e,
11
+ private: 0x0488ade4,
12
+ },
13
+ pubKeyHash: 0x30,
14
+ scriptHash: 0x32,
15
+ wif: 0xb0,
16
+ },
17
+ litecoin_testnet: {
18
+ messagePrefix: "\x18Litecoin Signed Message:\n",
19
+ bech32: "tltc",
20
+ bip32: {
21
+ public: 0x043587cf,
22
+ private: 0x04358394,
23
+ },
24
+ pubKeyHash: 0x6f,
25
+ scriptHash: 0x3a,
26
+ wif: 0xef,
27
+ },
28
+ };
29
+ module.exports = networks;
30
+ //# sourceMappingURL=networks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networks.js","sourceRoot":"","sources":["../../src/utils/networks.js"],"names":[],"mappings":";AAAA,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAE3C,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO;IACpC,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO;IAE5C,QAAQ,EAAE;QACR,aAAa,EAAE,gCAAgC;QAC/C,MAAM,EAAE,KAAK;QACb,KAAK,EAAE;YACL,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,UAAU;SACpB;QACD,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,IAAI;KACV;IACD,gBAAgB,EAAE;QAChB,aAAa,EAAE,gCAAgC;QAC/C,MAAM,EAAE,MAAM;QACd,KAAK,EAAE;YACL,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,UAAU;SACpB;QACD,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,IAAI;KACV;CACF,CAAA;AAED,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA"}
@@ -0,0 +1,13 @@
1
+ export const sleep: typeof setTimeout.__promisify__;
2
+ export function runWithRetries(action: any, config?: {
3
+ maxTries: number;
4
+ retrySleep: number;
5
+ }): Promise<any>;
6
+ export function getRandomInteger(min: any, max: any): any;
7
+ export function getAxiosInstance({ baseUrl, timeout, headers, auth }: {
8
+ baseUrl: any;
9
+ timeout?: number | undefined;
10
+ headers?: {} | undefined;
11
+ auth: any;
12
+ }): any;
13
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/utils/tools.js"],"names":[],"mappings":"AAGA,oDAAwC;AAExC;;;iBAmBC;AAED,0DAEC;AAED;;;;;QAkCC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ const util = require("util");
12
+ const axios = require("axios");
13
+ const sleep = util.promisify(setTimeout);
14
+ function runWithRetries(action, config = {
15
+ maxTries: 2,
16
+ retrySleep: 1000,
17
+ }) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ const maxTries = config.maxTries || 2;
20
+ const retrySleep = config.retrySleep || 1000;
21
+ let lastError;
22
+ for (let count = 0; count < maxTries; count += 1) {
23
+ try {
24
+ return yield action();
25
+ }
26
+ catch (error) {
27
+ lastError = error;
28
+ }
29
+ yield sleep(retrySleep);
30
+ }
31
+ throw lastError || new Error("function failed after retries");
32
+ });
33
+ }
34
+ function getRandomInteger(min, max) {
35
+ return Math.floor(Math.random() * (max - min)) + min;
36
+ }
37
+ function getAxiosInstance({ baseUrl, timeout = 10000, headers = {}, auth }) {
38
+ let host = baseUrl;
39
+ let instance;
40
+ instance = axios.create({
41
+ baseURL: host,
42
+ timeout,
43
+ auth,
44
+ headers: Object.assign({}, headers),
45
+ });
46
+ instance.interceptors.response.use((response) => response, (error) => {
47
+ if (error.response) {
48
+ const serviceError = new Error(JSON.stringify({ data: error.response.data, message: error.message }));
49
+ return Promise.reject(serviceError);
50
+ }
51
+ if (error.request) {
52
+ const serviceError = new Error(error.message);
53
+ return Promise.reject(serviceError);
54
+ }
55
+ return Promise.reject(error);
56
+ });
57
+ return instance;
58
+ }
59
+ module.exports = {
60
+ sleep,
61
+ runWithRetries,
62
+ getRandomInteger,
63
+ getAxiosInstance,
64
+ };
65
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/utils/tools.js"],"names":[],"mappings":";;;;;;;;;;AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;AAExC,SAAe,cAAc,CAC3B,MAAM,EACN,MAAM,GAAG;IACP,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,IAAI;CACjB;;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAA;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAA;QAC5C,IAAI,SAAS,CAAA;QACb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;YAChD,IAAI;gBACF,OAAO,MAAM,MAAM,EAAE,CAAA;aACtB;YAAC,OAAO,KAAK,EAAE;gBACd,SAAS,GAAG,KAAK,CAAA;aAClB;YACD,MAAM,KAAK,CAAC,UAAU,CAAC,CAAA;SACxB;QACD,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAC/D,CAAC;CAAA;AAED,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG;IAChC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;AACtD,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE;IACxE,IAAI,IAAI,GAAG,OAAO,CAAA;IAClB,IAAI,QAAQ,CAAA;IAEZ,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QACtB,OAAO,EAAE,IAAI;QACb,OAAO;QACP,IAAI;QACJ,OAAO,oBACF,OAAO,CACX;KACF,CAAC,CAAA;IAGF,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAChC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,CAAC,KAAK,EAAE,EAAE;QAER,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,MAAM,YAAY,GAAG,IAAI,KAAK,CAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CACtE,CAAA;YACD,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;SACpC;QAED,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;SACpC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC,CACF,CAAA;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACf,KAAK;IACL,cAAc;IACd,gBAAgB;IAChB,gBAAgB;CACjB,CAAA"}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@teleportdao/bitcoin",
3
+ "version": "1.0.0",
4
+ "description": "provider for different networks",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "test": "echo \"Error: no test specified\" && exit 3",
9
+ "build": "tsc",
10
+ "build:watch": "tsc --watch"
11
+ },
12
+ "author": "",
13
+ "license": "ISC",
14
+ "dependencies": {
15
+ "@teleportdao/configs": "^1.0.0",
16
+ "@teleportdao/providers": "^1.0.0",
17
+ "axios": "^0.27.2",
18
+ "bip32": "^2.0.6",
19
+ "bip39": "^3.0.4",
20
+ "bitcoinjs-lib": "^5.2.0",
21
+ "buffer": "^6.0.3",
22
+ "coinselect": "^3.1.13",
23
+ "ecpair": "^2.1.0",
24
+ "merkle-lib": "^2.0.10",
25
+ "merkle-patricia-tree": "^2.3.2",
26
+ "stream": "^0.0.2",
27
+ "tiny-secp256k1": "^2.2.1",
28
+ "varuint-bitcoin": "^1.1.2"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "gitHead": "739b0206e1024364e8f7ee19f9ecaf2f48889553"
34
+ }