@yaswap/bitcoin 2.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 (65) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/lib/chain/BitcoinBaseChainProvider.d.ts +11 -0
  3. package/dist/lib/chain/BitcoinBaseChainProvider.js +7 -0
  4. package/dist/lib/chain/BitcoinBaseChainProvider.js.map +1 -0
  5. package/dist/lib/chain/esplora/BitcoinEsploraApiProvider.d.ts +20 -0
  6. package/dist/lib/chain/esplora/BitcoinEsploraApiProvider.js +151 -0
  7. package/dist/lib/chain/esplora/BitcoinEsploraApiProvider.js.map +1 -0
  8. package/dist/lib/chain/esplora/BitcoinEsploraBaseProvider.d.ts +19 -0
  9. package/dist/lib/chain/esplora/BitcoinEsploraBaseProvider.js +96 -0
  10. package/dist/lib/chain/esplora/BitcoinEsploraBaseProvider.js.map +1 -0
  11. package/dist/lib/chain/esplora/BitcoinEsploraBatchBaseProvider.d.ts +12 -0
  12. package/dist/lib/chain/esplora/BitcoinEsploraBatchBaseProvider.js +48 -0
  13. package/dist/lib/chain/esplora/BitcoinEsploraBatchBaseProvider.js.map +1 -0
  14. package/dist/lib/chain/esplora/types.d.ts +93 -0
  15. package/dist/lib/chain/esplora/types.js +3 -0
  16. package/dist/lib/chain/esplora/types.js.map +1 -0
  17. package/dist/lib/chain/jsonRpc/BitcoinJsonRpcBaseProvider.d.ts +17 -0
  18. package/dist/lib/chain/jsonRpc/BitcoinJsonRpcBaseProvider.js +83 -0
  19. package/dist/lib/chain/jsonRpc/BitcoinJsonRpcBaseProvider.js.map +1 -0
  20. package/dist/lib/chain/jsonRpc/BitcoinJsonRpcProvider.d.ts +20 -0
  21. package/dist/lib/chain/jsonRpc/BitcoinJsonRpcProvider.js +181 -0
  22. package/dist/lib/chain/jsonRpc/BitcoinJsonRpcProvider.js.map +1 -0
  23. package/dist/lib/chain/jsonRpc/types.d.ts +85 -0
  24. package/dist/lib/chain/jsonRpc/types.js +3 -0
  25. package/dist/lib/chain/jsonRpc/types.js.map +1 -0
  26. package/dist/lib/fee/BitcoinFeeApiProvider.d.ts +7 -0
  27. package/dist/lib/fee/BitcoinFeeApiProvider.js +40 -0
  28. package/dist/lib/fee/BitcoinFeeApiProvider.js.map +1 -0
  29. package/dist/lib/index.d.ts +16 -0
  30. package/dist/lib/index.js +57 -0
  31. package/dist/lib/index.js.map +1 -0
  32. package/dist/lib/networks.d.ts +7 -0
  33. package/dist/lib/networks.js +14 -0
  34. package/dist/lib/networks.js.map +1 -0
  35. package/dist/lib/swap/BitcoinSwapBaseProvider.d.ts +50 -0
  36. package/dist/lib/swap/BitcoinSwapBaseProvider.js +365 -0
  37. package/dist/lib/swap/BitcoinSwapBaseProvider.js.map +1 -0
  38. package/dist/lib/swap/BitcoinSwapEsploraProvider.d.ts +11 -0
  39. package/dist/lib/swap/BitcoinSwapEsploraProvider.js +50 -0
  40. package/dist/lib/swap/BitcoinSwapEsploraProvider.js.map +1 -0
  41. package/dist/lib/swap/BitcoinSwapRpcProvider.d.ts +10 -0
  42. package/dist/lib/swap/BitcoinSwapRpcProvider.js +28 -0
  43. package/dist/lib/swap/BitcoinSwapRpcProvider.js.map +1 -0
  44. package/dist/lib/swap/types.d.ts +14 -0
  45. package/dist/lib/swap/types.js +4 -0
  46. package/dist/lib/swap/types.js.map +1 -0
  47. package/dist/lib/types.d.ts +89 -0
  48. package/dist/lib/types.js +45 -0
  49. package/dist/lib/types.js.map +1 -0
  50. package/dist/lib/utils.d.ts +31 -0
  51. package/dist/lib/utils.js +214 -0
  52. package/dist/lib/utils.js.map +1 -0
  53. package/dist/lib/wallet/BitcoinBaseWallet.d.ts +67 -0
  54. package/dist/lib/wallet/BitcoinBaseWallet.js +408 -0
  55. package/dist/lib/wallet/BitcoinBaseWallet.js.map +1 -0
  56. package/dist/lib/wallet/BitcoinHDWallet.d.ts +42 -0
  57. package/dist/lib/wallet/BitcoinHDWallet.js +215 -0
  58. package/dist/lib/wallet/BitcoinHDWallet.js.map +1 -0
  59. package/dist/lib/wallet/BitcoinNodeWallet.d.ts +41 -0
  60. package/dist/lib/wallet/BitcoinNodeWallet.js +237 -0
  61. package/dist/lib/wallet/BitcoinNodeWallet.js.map +1 -0
  62. package/dist/lib/wallet/IBitcoinWallet.d.ts +10 -0
  63. package/dist/lib/wallet/IBitcoinWallet.js +3 -0
  64. package/dist/lib/wallet/IBitcoinWallet.js.map +1 -0
  65. package/package.json +36 -0
@@ -0,0 +1,181 @@
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
+ var __rest = (this && this.__rest) || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
+ t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
+ t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.BitcoinJsonRpcProvider = void 0;
24
+ const client_1 = require("@yaswap/client");
25
+ const errors_1 = require("@yaswap/errors");
26
+ const types_1 = require("@yaswap/types");
27
+ const lodash_1 = require("lodash");
28
+ const utils_1 = require("../../utils");
29
+ const BitcoinJsonRpcBaseProvider_1 = require("./BitcoinJsonRpcBaseProvider");
30
+ class BitcoinJsonRpcProvider extends client_1.Chain {
31
+ constructor(options, feeProvider, feeOptions) {
32
+ super(options.network, new BitcoinJsonRpcBaseProvider_1.BitcoinJsonRpcBaseProvider(options), feeProvider);
33
+ this.jsonRpc = this.provider.jsonRpc;
34
+ this._feeOptions = Object.assign({ slowTargetBlocks: 6, averageTargetBlocks: 3, fastTargetBlocks: 1 }, feeOptions);
35
+ }
36
+ getBlockByHash(blockHash, includeTx = false) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ let data;
39
+ try {
40
+ data = yield this.jsonRpc.send('getblock', [blockHash]); // TODO: This doesn't fit the interface?: https://chainquery.com/bitcoin-cli/getblock
41
+ }
42
+ catch (e) {
43
+ if (e.name === 'NodeError' && e.message.includes('Block not found')) {
44
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
45
+ const { name, message } = e, attrs = __rest(e, ["name", "message"]);
46
+ throw new errors_1.BlockNotFoundError(`Block not found: ${blockHash}`, attrs);
47
+ }
48
+ throw e;
49
+ }
50
+ const { hash, height: number, mediantime: timestamp, difficulty, size, previousblockhash: parentHash, nonce, tx: transactionHashes, } = data;
51
+ let transactions = transactionHashes;
52
+ // TODO: Why transactions need to be retrieved individually? getblock has verbose 2 https://chainquery.com/bitcoin-cli/getblock
53
+ if (includeTx) {
54
+ const txs = transactionHashes.map((hash) => this.getTransactionByHash(hash));
55
+ transactions = yield Promise.all(txs);
56
+ }
57
+ return {
58
+ hash,
59
+ number,
60
+ timestamp,
61
+ difficulty: parseFloat(new types_1.BigNumber(difficulty).toFixed()),
62
+ size,
63
+ parentHash,
64
+ nonce,
65
+ transactions,
66
+ _raw: data,
67
+ };
68
+ });
69
+ }
70
+ getBlockByNumber(blockNumber, includeTx) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ if (!blockNumber) {
73
+ blockNumber = yield this.getBlockHeight();
74
+ }
75
+ let blockHash;
76
+ try {
77
+ blockHash = yield this.jsonRpc.send('getblockhash', [blockNumber]);
78
+ }
79
+ catch (e) {
80
+ if (e.name === 'NodeError' && e.message.includes('Block height out of range')) {
81
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
82
+ const { name, message } = e, attrs = __rest(e, ["name", "message"]);
83
+ throw new errors_1.BlockNotFoundError(`Block not found: ${blockNumber}`, attrs);
84
+ }
85
+ throw e;
86
+ }
87
+ return this.getBlockByHash(blockHash, includeTx);
88
+ });
89
+ }
90
+ getBlockHeight() {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ return this.jsonRpc.send('getblockcount', []);
93
+ });
94
+ }
95
+ getTransactionByHash(txHash) {
96
+ return __awaiter(this, void 0, void 0, function* () {
97
+ try {
98
+ const tx = yield this.getParsedTransactionByHash(txHash, true);
99
+ return tx;
100
+ }
101
+ catch (e) {
102
+ if (e.name === 'NodeError' && e.message.includes('No such mempool transaction')) {
103
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
104
+ const { name, message } = e, attrs = __rest(e, ["name", "message"]);
105
+ throw new errors_1.TxNotFoundError(`Transaction not found: ${txHash}`, attrs);
106
+ }
107
+ throw e;
108
+ }
109
+ });
110
+ }
111
+ getBalance(_addresses, _assets) {
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ const addresses = _addresses.map((a) => a.toString());
114
+ const _utxos = yield this.provider.getUnspentTransactions(addresses);
115
+ const utxos = (0, lodash_1.flatten)(_utxos);
116
+ return [utxos.reduce((acc, utxo) => acc.plus(utxo.value), new types_1.BigNumber(0))];
117
+ });
118
+ }
119
+ getFees() {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ if (this.feeProvider) {
122
+ return this.feeProvider.getFees();
123
+ }
124
+ else {
125
+ const [slow, average, fast] = yield Promise.all([
126
+ this._getFee(this._feeOptions.slowTargetBlocks),
127
+ this._getFee(this._feeOptions.averageTargetBlocks),
128
+ this._getFee(this._feeOptions.fastTargetBlocks),
129
+ ]);
130
+ return {
131
+ slow,
132
+ average,
133
+ fast,
134
+ };
135
+ }
136
+ });
137
+ }
138
+ sendRawTransaction(rawTransaction) {
139
+ return __awaiter(this, void 0, void 0, function* () {
140
+ return this.jsonRpc.send('sendrawtransaction', [rawTransaction]);
141
+ });
142
+ }
143
+ sendRpcRequest(method, params) {
144
+ return __awaiter(this, void 0, void 0, function* () {
145
+ return this.jsonRpc.send(method, params);
146
+ });
147
+ }
148
+ getParsedTransactionByHash(transactionHash, addFees = false) {
149
+ return __awaiter(this, void 0, void 0, function* () {
150
+ const tx = yield this.jsonRpc.send('getrawtransaction', [transactionHash, 1]);
151
+ return (0, utils_1.normalizeTransactionObject)(tx, addFees ? yield this.getTransactionFee(tx) : undefined, tx.confirmations > 0 ? yield this.getBlockByHash(tx.blockhash) : undefined);
152
+ });
153
+ }
154
+ getTransactionFee(tx) {
155
+ return __awaiter(this, void 0, void 0, function* () {
156
+ const isCoinbaseTx = tx.vin.find((vin) => vin.coinbase);
157
+ if (isCoinbaseTx)
158
+ return; // Coinbase transactions do not have a fee
159
+ const inputs = tx.vin.map((vin) => ({ txid: vin.txid, vout: vin.vout }));
160
+ const inputTransactions = yield Promise.all(inputs.map((input) => this.jsonRpc.send('getrawtransaction', [input.txid, 1])));
161
+ const inputValues = inputTransactions.map((inputTx, index) => {
162
+ const vout = inputs[index].vout;
163
+ const output = inputTx.vout[vout];
164
+ return output.value * 1e8;
165
+ });
166
+ const inputValue = inputValues.reduce((a, b) => a.plus(new types_1.BigNumber(b)), new types_1.BigNumber(0));
167
+ const outputValue = tx.vout.reduce((a, b) => a.plus(new types_1.BigNumber(b.value).times(new types_1.BigNumber(1e8))), new types_1.BigNumber(0));
168
+ const feeValue = inputValue.minus(outputValue);
169
+ return feeValue.toNumber();
170
+ });
171
+ }
172
+ _getFee(targetBlocks) {
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ const value = yield this.provider.getFeePerByte(targetBlocks);
175
+ const wait = targetBlocks * 10 * 60; // 10 minute blocks in seconds
176
+ return { fee: value, wait };
177
+ });
178
+ }
179
+ }
180
+ exports.BitcoinJsonRpcProvider = BitcoinJsonRpcProvider;
181
+ //# sourceMappingURL=BitcoinJsonRpcProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitcoinJsonRpcProvider.js","sourceRoot":"","sources":["../../../../lib/chain/jsonRpc/BitcoinJsonRpcProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { BitcoinNetwork, Transaction } from '../../types';
2
+ export interface UTXO {
3
+ txid: string;
4
+ vout: number;
5
+ address: string;
6
+ label: string;
7
+ scriptPubKey: string;
8
+ amount: number;
9
+ confirmations: number;
10
+ redeemScript: string;
11
+ witnessScript: string;
12
+ spendable: boolean;
13
+ solvable: boolean;
14
+ desc: string;
15
+ safe: boolean;
16
+ }
17
+ export interface ReceivedByAddress {
18
+ involvesWatchOnly: boolean;
19
+ address: string;
20
+ account: string;
21
+ amount: number;
22
+ cofirmations: number;
23
+ label: string;
24
+ txids: string[];
25
+ }
26
+ export interface MinedTransaction extends Transaction {
27
+ blockhash: string;
28
+ confirmations: number;
29
+ blocktime: number;
30
+ number: number;
31
+ }
32
+ export interface FundRawResponse {
33
+ hex: string;
34
+ fee: number;
35
+ changepos: number;
36
+ }
37
+ export interface AddressInfo {
38
+ iswatchonly: boolean;
39
+ pubkey: string;
40
+ hdkeypath: string;
41
+ }
42
+ export declare type AddressGrouping = string[][];
43
+ export interface ReceivedByAddress {
44
+ involvesWatchonly: boolean;
45
+ address: string;
46
+ account: string;
47
+ amount: number;
48
+ confirmations: number;
49
+ label: string;
50
+ txids: string[];
51
+ }
52
+ export interface Block {
53
+ hash: string;
54
+ confirmations: number;
55
+ size: number;
56
+ strippedSize: number;
57
+ weight: number;
58
+ height: number;
59
+ version: number;
60
+ versionHex: string;
61
+ merkleroot: string;
62
+ tx: string[];
63
+ time: number;
64
+ mediantime: number;
65
+ nonce: number;
66
+ bits: string;
67
+ difficulty: number;
68
+ chainwork: string;
69
+ nTx: number;
70
+ previousblockhash: string;
71
+ nextblockhash?: string;
72
+ }
73
+ export interface ProviderOptions {
74
+ uri: string;
75
+ network: BitcoinNetwork;
76
+ username?: string;
77
+ password?: string;
78
+ feeBlockConfirmations?: number;
79
+ defaultFeePerByte?: number;
80
+ }
81
+ export declare type FeeOptions = {
82
+ slowTargetBlocks?: number;
83
+ averageTargetBlocks?: number;
84
+ fastTargetBlocks?: number;
85
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/chain/jsonRpc/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { Fee } from '@yaswap/client';
2
+ import { FeeDetails, FeeProvider } from '@yaswap/types';
3
+ export declare class BitcoinFeeApiProvider extends Fee implements FeeProvider {
4
+ private _httpClient;
5
+ constructor(endpoint?: string);
6
+ getFees(): Promise<FeeDetails>;
7
+ }
@@ -0,0 +1,40 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BitcoinFeeApiProvider = void 0;
13
+ const client_1 = require("@yaswap/client");
14
+ class BitcoinFeeApiProvider extends client_1.Fee {
15
+ constructor(endpoint = 'https://mempool.space/api/v1/fees/recommended') {
16
+ super();
17
+ this._httpClient = new client_1.HttpClient({ baseURL: endpoint });
18
+ }
19
+ getFees() {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ const data = yield this._httpClient.nodeGet('/');
22
+ return {
23
+ slow: {
24
+ fee: data.hourFee,
25
+ wait: 60 * 60,
26
+ },
27
+ average: {
28
+ fee: data.halfHourFee,
29
+ wait: 30 * 60,
30
+ },
31
+ fast: {
32
+ fee: data.fastestFee,
33
+ wait: 10 * 60,
34
+ },
35
+ };
36
+ });
37
+ }
38
+ }
39
+ exports.BitcoinFeeApiProvider = BitcoinFeeApiProvider;
40
+ //# sourceMappingURL=BitcoinFeeApiProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitcoinFeeApiProvider.js","sourceRoot":"","sources":["../../../lib/fee/BitcoinFeeApiProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAiD;AAGjD,MAAa,qBAAsB,SAAQ,YAAG;IAG1C,YAAY,QAAQ,GAAG,+CAA+C;QAClE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,mBAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEK,OAAO;;YACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEjD,OAAO;gBACH,IAAI,EAAE;oBACF,GAAG,EAAE,IAAI,CAAC,OAAO;oBACjB,IAAI,EAAE,EAAE,GAAG,EAAE;iBAChB;gBACD,OAAO,EAAE;oBACL,GAAG,EAAE,IAAI,CAAC,WAAW;oBACrB,IAAI,EAAE,EAAE,GAAG,EAAE;iBAChB;gBACD,IAAI,EAAE;oBACF,GAAG,EAAE,IAAI,CAAC,UAAU;oBACpB,IAAI,EAAE,EAAE,GAAG,EAAE;iBAChB;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AA1BD,sDA0BC"}
@@ -0,0 +1,16 @@
1
+ export { BitcoinBaseChainProvider } from './chain/BitcoinBaseChainProvider';
2
+ export { BitcoinEsploraApiProvider } from './chain/esplora/BitcoinEsploraApiProvider';
3
+ export { BitcoinEsploraBaseProvider } from './chain/esplora/BitcoinEsploraBaseProvider';
4
+ export { BitcoinEsploraBatchBaseProvider } from './chain/esplora/BitcoinEsploraBatchBaseProvider';
5
+ export { BitcoinJsonRpcBaseProvider } from './chain/jsonRpc/BitcoinJsonRpcBaseProvider';
6
+ export { BitcoinJsonRpcProvider } from './chain/jsonRpc/BitcoinJsonRpcProvider';
7
+ export { BitcoinFeeApiProvider } from './fee/BitcoinFeeApiProvider';
8
+ export { BitcoinNetworks } from './networks';
9
+ export { BitcoinSwapBaseProvider } from './swap/BitcoinSwapBaseProvider';
10
+ export { BitcoinSwapEsploraProvider } from './swap/BitcoinSwapEsploraProvider';
11
+ export { BitcoinSwapRpcProvider } from './swap/BitcoinSwapRpcProvider';
12
+ export * as BitcoinTypes from './types';
13
+ export * as BitcoinUtils from './utils';
14
+ export { BitcoinBaseWalletProvider } from './wallet/BitcoinBaseWallet';
15
+ export { BitcoinHDWalletProvider } from './wallet/BitcoinHDWallet';
16
+ export { BitcoinNodeWalletProvider } from './wallet/BitcoinNodeWallet';
@@ -0,0 +1,57 @@
1
+ "use strict";
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.BitcoinNodeWalletProvider = exports.BitcoinHDWalletProvider = exports.BitcoinBaseWalletProvider = exports.BitcoinUtils = exports.BitcoinTypes = exports.BitcoinSwapRpcProvider = exports.BitcoinSwapEsploraProvider = exports.BitcoinSwapBaseProvider = exports.BitcoinNetworks = exports.BitcoinFeeApiProvider = exports.BitcoinJsonRpcProvider = exports.BitcoinJsonRpcBaseProvider = exports.BitcoinEsploraBatchBaseProvider = exports.BitcoinEsploraBaseProvider = exports.BitcoinEsploraApiProvider = exports.BitcoinBaseChainProvider = void 0;
27
+ var BitcoinBaseChainProvider_1 = require("./chain/BitcoinBaseChainProvider");
28
+ Object.defineProperty(exports, "BitcoinBaseChainProvider", { enumerable: true, get: function () { return BitcoinBaseChainProvider_1.BitcoinBaseChainProvider; } });
29
+ var BitcoinEsploraApiProvider_1 = require("./chain/esplora/BitcoinEsploraApiProvider");
30
+ Object.defineProperty(exports, "BitcoinEsploraApiProvider", { enumerable: true, get: function () { return BitcoinEsploraApiProvider_1.BitcoinEsploraApiProvider; } });
31
+ var BitcoinEsploraBaseProvider_1 = require("./chain/esplora/BitcoinEsploraBaseProvider");
32
+ Object.defineProperty(exports, "BitcoinEsploraBaseProvider", { enumerable: true, get: function () { return BitcoinEsploraBaseProvider_1.BitcoinEsploraBaseProvider; } });
33
+ var BitcoinEsploraBatchBaseProvider_1 = require("./chain/esplora/BitcoinEsploraBatchBaseProvider");
34
+ Object.defineProperty(exports, "BitcoinEsploraBatchBaseProvider", { enumerable: true, get: function () { return BitcoinEsploraBatchBaseProvider_1.BitcoinEsploraBatchBaseProvider; } });
35
+ var BitcoinJsonRpcBaseProvider_1 = require("./chain/jsonRpc/BitcoinJsonRpcBaseProvider");
36
+ Object.defineProperty(exports, "BitcoinJsonRpcBaseProvider", { enumerable: true, get: function () { return BitcoinJsonRpcBaseProvider_1.BitcoinJsonRpcBaseProvider; } });
37
+ var BitcoinJsonRpcProvider_1 = require("./chain/jsonRpc/BitcoinJsonRpcProvider");
38
+ Object.defineProperty(exports, "BitcoinJsonRpcProvider", { enumerable: true, get: function () { return BitcoinJsonRpcProvider_1.BitcoinJsonRpcProvider; } });
39
+ var BitcoinFeeApiProvider_1 = require("./fee/BitcoinFeeApiProvider");
40
+ Object.defineProperty(exports, "BitcoinFeeApiProvider", { enumerable: true, get: function () { return BitcoinFeeApiProvider_1.BitcoinFeeApiProvider; } });
41
+ var networks_1 = require("./networks");
42
+ Object.defineProperty(exports, "BitcoinNetworks", { enumerable: true, get: function () { return networks_1.BitcoinNetworks; } });
43
+ var BitcoinSwapBaseProvider_1 = require("./swap/BitcoinSwapBaseProvider");
44
+ Object.defineProperty(exports, "BitcoinSwapBaseProvider", { enumerable: true, get: function () { return BitcoinSwapBaseProvider_1.BitcoinSwapBaseProvider; } });
45
+ var BitcoinSwapEsploraProvider_1 = require("./swap/BitcoinSwapEsploraProvider");
46
+ Object.defineProperty(exports, "BitcoinSwapEsploraProvider", { enumerable: true, get: function () { return BitcoinSwapEsploraProvider_1.BitcoinSwapEsploraProvider; } });
47
+ var BitcoinSwapRpcProvider_1 = require("./swap/BitcoinSwapRpcProvider");
48
+ Object.defineProperty(exports, "BitcoinSwapRpcProvider", { enumerable: true, get: function () { return BitcoinSwapRpcProvider_1.BitcoinSwapRpcProvider; } });
49
+ exports.BitcoinTypes = __importStar(require("./types"));
50
+ exports.BitcoinUtils = __importStar(require("./utils"));
51
+ var BitcoinBaseWallet_1 = require("./wallet/BitcoinBaseWallet");
52
+ Object.defineProperty(exports, "BitcoinBaseWalletProvider", { enumerable: true, get: function () { return BitcoinBaseWallet_1.BitcoinBaseWalletProvider; } });
53
+ var BitcoinHDWallet_1 = require("./wallet/BitcoinHDWallet");
54
+ Object.defineProperty(exports, "BitcoinHDWalletProvider", { enumerable: true, get: function () { return BitcoinHDWallet_1.BitcoinHDWalletProvider; } });
55
+ var BitcoinNodeWallet_1 = require("./wallet/BitcoinNodeWallet");
56
+ Object.defineProperty(exports, "BitcoinNodeWalletProvider", { enumerable: true, get: function () { return BitcoinNodeWallet_1.BitcoinNodeWalletProvider; } });
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6EAA4E;AAAnE,oIAAA,wBAAwB,OAAA;AACjC,uFAAsF;AAA7E,sIAAA,yBAAyB,OAAA;AAClC,yFAAwF;AAA/E,wIAAA,0BAA0B,OAAA;AACnC,mGAAkG;AAAzF,kJAAA,+BAA+B,OAAA;AACxC,yFAAwF;AAA/E,wIAAA,0BAA0B,OAAA;AACnC,iFAAgF;AAAvE,gIAAA,sBAAsB,OAAA;AAC/B,qEAAoE;AAA3D,8HAAA,qBAAqB,OAAA;AAC9B,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AACxB,0EAAyE;AAAhE,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,wIAAA,0BAA0B,OAAA;AACnC,wEAAuE;AAA9D,gIAAA,sBAAsB,OAAA;AAC/B,wDAAwC;AACxC,wDAAwC;AACxC,gEAAuE;AAA9D,8HAAA,yBAAyB,OAAA;AAClC,4DAAmE;AAA1D,0HAAA,uBAAuB,OAAA;AAChC,gEAAuE;AAA9D,8HAAA,yBAAyB,OAAA"}
@@ -0,0 +1,7 @@
1
+ import { BitcoinNetwork } from './types';
2
+ declare const BitcoinNetworks: {
3
+ bitcoin: BitcoinNetwork;
4
+ bitcoin_testnet: BitcoinNetwork;
5
+ bitcoin_regtest: BitcoinNetwork;
6
+ };
7
+ export { BitcoinNetworks };
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BitcoinNetworks = void 0;
4
+ const bitcoinjs_lib_1 = require("bitcoinjs-lib");
5
+ const bitcoin = Object.assign(Object.assign({ name: 'bitcoin' }, bitcoinjs_lib_1.networks.bitcoin), { coinType: '0', isTestnet: false });
6
+ const bitcoin_testnet = Object.assign(Object.assign({ name: 'bitcoin_testnet' }, bitcoinjs_lib_1.networks.testnet), { coinType: '1', isTestnet: true });
7
+ const bitcoin_regtest = Object.assign(Object.assign({ name: 'bitcoin_regtest' }, bitcoinjs_lib_1.networks.regtest), { coinType: '1', isTestnet: true });
8
+ const BitcoinNetworks = {
9
+ bitcoin,
10
+ bitcoin_testnet,
11
+ bitcoin_regtest,
12
+ };
13
+ exports.BitcoinNetworks = BitcoinNetworks;
14
+ //# sourceMappingURL=networks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networks.js","sourceRoot":"","sources":["../../lib/networks.ts"],"names":[],"mappings":";;;AAAA,iDAAyC;AAGzC,MAAM,OAAO,iCACT,IAAI,EAAE,SAAS,IACZ,wBAAQ,CAAC,OAAO,KACnB,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,KAAK,GACnB,CAAC;AAEF,MAAM,eAAe,iCACjB,IAAI,EAAE,iBAAiB,IACpB,wBAAQ,CAAC,OAAO,KACnB,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,IAAI,GAClB,CAAC;AAEF,MAAM,eAAe,iCACjB,IAAI,EAAE,iBAAiB,IACpB,wBAAQ,CAAC,OAAO,KACnB,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,IAAI,GAClB,CAAC;AAEF,MAAM,eAAe,GAAG;IACpB,OAAO;IACP,eAAe;IACf,eAAe;CAClB,CAAC;AAEO,0CAAe"}
@@ -0,0 +1,50 @@
1
+ /// <reference types="node" />
2
+ import { Swap } from '@yaswap/client';
3
+ import { SwapParams, Transaction } from '@yaswap/types';
4
+ import { payments } from 'bitcoinjs-lib';
5
+ import { BitcoinBaseChainProvider } from '../chain/BitcoinBaseChainProvider';
6
+ import { BitcoinNetwork, Input, SwapMode, Transaction as BitcoinTransaction } from '../types';
7
+ import { IBitcoinWallet } from '../wallet/IBitcoinWallet';
8
+ import { BitcoinSwapProviderOptions, TransactionMatchesFunction } from './types';
9
+ export declare abstract class BitcoinSwapBaseProvider extends Swap<BitcoinBaseChainProvider, null, IBitcoinWallet<BitcoinBaseChainProvider>> {
10
+ protected _network: BitcoinNetwork;
11
+ protected _mode: SwapMode;
12
+ constructor(options: BitcoinSwapProviderOptions, walletProvider?: IBitcoinWallet<BitcoinBaseChainProvider>);
13
+ validateSwapParams(swapParams: SwapParams): void;
14
+ initiateSwap(swapParams: SwapParams, feePerByte: number): Promise<Transaction<any>>;
15
+ fundSwap(): Promise<null>;
16
+ findFundSwapTransaction(): Promise<null>;
17
+ claimSwap(swapParams: SwapParams, initiationTxHash: string, secret: string, feePerByte: number): Promise<Transaction<BitcoinTransaction>>;
18
+ refundSwap(swapParams: SwapParams, initiationTxHash: string, feePerByte: number): Promise<Transaction<BitcoinTransaction>>;
19
+ findInitiateSwapTransaction(swapParams: SwapParams, blockNumber?: number): Promise<Transaction<any>>;
20
+ getSwapSecret(claimTxHash: string, initTxHash: string): Promise<string>;
21
+ findClaimSwapTransaction(swapParams: SwapParams, initTxHash: string, blockNumber?: number): Promise<Transaction<any>>;
22
+ findRefundSwapTransaction(swapParams: SwapParams, initiationTxHash: string, blockNumber?: number): Promise<Transaction<any>>;
23
+ protected onWalletProviderUpdate(_wallet: IBitcoinWallet<BitcoinBaseChainProvider, any>): void;
24
+ protected getSwapOutput(swapParams: SwapParams): Buffer;
25
+ private getSwapInput;
26
+ protected getSwapPaymentVariants(swapOutput: Buffer): {
27
+ p2wsh: payments.Payment;
28
+ p2shSegwit: payments.Payment;
29
+ p2sh: payments.Payment;
30
+ };
31
+ private _redeemSwap;
32
+ private _redeemSwapOutput;
33
+ protected extractSwapParams(outputScript: string): {
34
+ recipientPublicKey: string;
35
+ refundPublicKey: string;
36
+ secretHash: string;
37
+ expiration: number;
38
+ };
39
+ /**
40
+ * Only to be used for situations where transaction is trusted. e.g to bump fee
41
+ * DO NOT USE THIS TO VERIFY THE REDEEM
42
+ */
43
+ private UNSAFE_isSwapRedeemTransaction;
44
+ canUpdateFee(): boolean;
45
+ updateTransactionFee(tx: Transaction<BitcoinTransaction> | string, newFeePerByte: number): Promise<Transaction<any>>;
46
+ protected getInputScript(vin: Input): string[];
47
+ protected doesTransactionMatchRedeem(initiationTxHash: string, tx: Transaction<BitcoinTransaction>, isRefund: boolean): boolean;
48
+ protected doesTransactionMatchInitiation(swapParams: SwapParams, transaction: Transaction<BitcoinTransaction>): boolean;
49
+ protected abstract findSwapTransaction(swapParams: SwapParams, blockNumber: number, predicate: TransactionMatchesFunction): Promise<Transaction<BitcoinTransaction>>;
50
+ }