cashscript 0.7.6 → 0.8.0-next.1

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 (67) hide show
  1. package/README.md +2 -6
  2. package/dist/{main/Argument.d.ts → Argument.d.ts} +1 -1
  3. package/dist/{module/Argument.js → Argument.js} +1 -1
  4. package/dist/{module/Contract.d.ts → Contract.d.ts} +8 -6
  5. package/dist/{module/Contract.js → Contract.js} +15 -25
  6. package/dist/{main/Errors.d.ts → Errors.d.ts} +4 -1
  7. package/dist/{module/Errors.js → Errors.js} +7 -3
  8. package/dist/{main/SignatureTemplate.d.ts → SignatureTemplate.d.ts} +2 -3
  9. package/dist/{module/SignatureTemplate.js → SignatureTemplate.js} +4 -5
  10. package/dist/{module/Transaction.d.ts → Transaction.d.ts} +7 -5
  11. package/dist/Transaction.js +352 -0
  12. package/dist/constants.d.ts +2 -0
  13. package/dist/constants.js +3 -0
  14. package/dist/{main/index.d.ts → index.d.ts} +1 -1
  15. package/dist/{module/index.js → index.js} +2 -3
  16. package/dist/{module/interfaces.d.ts → interfaces.d.ts} +33 -6
  17. package/dist/{module/interfaces.js → interfaces.js} +0 -2
  18. package/dist/{module/network → network}/BitcoinRpcNetworkProvider.d.ts +2 -3
  19. package/dist/network/BitcoinRpcNetworkProvider.js +29 -0
  20. package/dist/{module/network → network}/ElectrumNetworkProvider.js +53 -72
  21. package/dist/network/FullStackNetworkProvider.js +33 -0
  22. package/dist/{main/network → network}/index.d.ts +0 -1
  23. package/dist/{module/network → network}/index.js +0 -1
  24. package/dist/{main/utils.d.ts → utils.d.ts} +10 -6
  25. package/dist/{module/utils.js → utils.js} +90 -46
  26. package/package.json +18 -16
  27. package/dist/main/Argument.js +0 -60
  28. package/dist/main/Contract.d.ts +0 -23
  29. package/dist/main/Contract.js +0 -87
  30. package/dist/main/Errors.js +0 -84
  31. package/dist/main/SignatureTemplate.js +0 -45
  32. package/dist/main/Transaction.d.ts +0 -39
  33. package/dist/main/Transaction.js +0 -258
  34. package/dist/main/constants.d.ts +0 -5
  35. package/dist/main/constants.js +0 -9
  36. package/dist/main/index.js +0 -50
  37. package/dist/main/interfaces.d.ts +0 -43
  38. package/dist/main/interfaces.js +0 -32
  39. package/dist/main/network/BitboxNetworkProvider.d.ts +0 -26
  40. package/dist/main/network/BitboxNetworkProvider.js +0 -40
  41. package/dist/main/network/BitcoinRpcNetworkProvider.d.ts +0 -41
  42. package/dist/main/network/BitcoinRpcNetworkProvider.js +0 -49
  43. package/dist/main/network/ElectrumNetworkProvider.js +0 -162
  44. package/dist/main/network/FullStackNetworkProvider.js +0 -55
  45. package/dist/main/network/NetworkProvider.js +0 -3
  46. package/dist/main/network/index.js +0 -15
  47. package/dist/main/utils.js +0 -205
  48. package/dist/module/Argument.d.ts +0 -3
  49. package/dist/module/Errors.d.ts +0 -66
  50. package/dist/module/SignatureTemplate.d.ts +0 -15
  51. package/dist/module/Transaction.js +0 -251
  52. package/dist/module/constants.d.ts +0 -5
  53. package/dist/module/constants.js +0 -6
  54. package/dist/module/index.d.ts +0 -10
  55. package/dist/module/network/BitboxNetworkProvider.d.ts +0 -26
  56. package/dist/module/network/BitboxNetworkProvider.js +0 -37
  57. package/dist/module/network/BitcoinRpcNetworkProvider.js +0 -46
  58. package/dist/module/network/ElectrumNetworkProvider.d.ts +0 -19
  59. package/dist/module/network/FullStackNetworkProvider.d.ts +0 -40
  60. package/dist/module/network/FullStackNetworkProvider.js +0 -52
  61. package/dist/module/network/NetworkProvider.d.ts +0 -31
  62. package/dist/module/network/index.d.ts +0 -5
  63. package/dist/module/utils.d.ts +0 -26
  64. /package/dist/{main/network → network}/ElectrumNetworkProvider.d.ts +0 -0
  65. /package/dist/{main/network → network}/FullStackNetworkProvider.d.ts +0 -0
  66. /package/dist/{main/network → network}/NetworkProvider.d.ts +0 -0
  67. /package/dist/{module/network → network}/NetworkProvider.js +0 -0
@@ -1,50 +0,0 @@
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
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
- };
28
- var __importDefault = (this && this.__importDefault) || function (mod) {
29
- return (mod && mod.__esModule) ? mod : { "default": mod };
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.FullStackNetworkProvider = exports.ElectrumNetworkProvider = exports.BitcoinRpcNetworkProvider = exports.BitboxNetworkProvider = exports.Network = exports.HashType = exports.SignatureAlgorithm = exports.utils = exports.Transaction = exports.Contract = exports.SignatureTemplate = void 0;
33
- const SignatureTemplate_js_1 = __importDefault(require("./SignatureTemplate.js"));
34
- exports.SignatureTemplate = SignatureTemplate_js_1.default;
35
- var Contract_js_1 = require("./Contract.js");
36
- Object.defineProperty(exports, "Contract", { enumerable: true, get: function () { return Contract_js_1.Contract; } });
37
- var Transaction_js_1 = require("./Transaction.js");
38
- Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return Transaction_js_1.Transaction; } });
39
- exports.utils = __importStar(require("@cashscript/utils"));
40
- var interfaces_js_1 = require("./interfaces.js");
41
- Object.defineProperty(exports, "SignatureAlgorithm", { enumerable: true, get: function () { return interfaces_js_1.SignatureAlgorithm; } });
42
- Object.defineProperty(exports, "HashType", { enumerable: true, get: function () { return interfaces_js_1.HashType; } });
43
- Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return interfaces_js_1.Network; } });
44
- __exportStar(require("./Errors.js"), exports);
45
- var index_js_1 = require("./network/index.js");
46
- Object.defineProperty(exports, "BitboxNetworkProvider", { enumerable: true, get: function () { return index_js_1.BitboxNetworkProvider; } });
47
- Object.defineProperty(exports, "BitcoinRpcNetworkProvider", { enumerable: true, get: function () { return index_js_1.BitcoinRpcNetworkProvider; } });
48
- Object.defineProperty(exports, "ElectrumNetworkProvider", { enumerable: true, get: function () { return index_js_1.ElectrumNetworkProvider; } });
49
- Object.defineProperty(exports, "FullStackNetworkProvider", { enumerable: true, get: function () { return index_js_1.FullStackNetworkProvider; } });
50
- //# sourceMappingURL=index.js.map
@@ -1,43 +0,0 @@
1
- import { Transaction } from '@bitauth/libauth';
2
- import type SignatureTemplate from './SignatureTemplate.js';
3
- export interface Utxo {
4
- txid: string;
5
- vout: number;
6
- satoshis: number;
7
- }
8
- export interface SignableUtxo extends Utxo {
9
- template: SignatureTemplate;
10
- }
11
- export declare function isSignableUtxo(utxo: Utxo): utxo is SignableUtxo;
12
- export interface Recipient {
13
- to: string;
14
- amount: number;
15
- }
16
- export interface Output {
17
- to: string | Uint8Array;
18
- amount: number;
19
- }
20
- export declare enum SignatureAlgorithm {
21
- ECDSA = 0,
22
- SCHNORR = 1
23
- }
24
- export declare enum HashType {
25
- SIGHASH_ALL = 1,
26
- SIGHASH_NONE = 2,
27
- SIGHASH_SINGLE = 3,
28
- SIGHASH_ANYONECANPAY = 128
29
- }
30
- export declare const Network: {
31
- MAINNET: "mainnet";
32
- TESTNET3: "testnet3";
33
- TESTNET4: "testnet4";
34
- CHIPNET: "chipnet";
35
- TESTNET: "testnet";
36
- STAGING: "staging";
37
- REGTEST: "regtest";
38
- };
39
- export declare type Network = (typeof Network)[keyof typeof Network];
40
- export interface TransactionDetails extends Transaction {
41
- txid: string;
42
- hex: string;
43
- }
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Network = exports.HashType = exports.SignatureAlgorithm = exports.isSignableUtxo = void 0;
4
- function isSignableUtxo(utxo) {
5
- return 'template' in utxo;
6
- }
7
- exports.isSignableUtxo = isSignableUtxo;
8
- var SignatureAlgorithm;
9
- (function (SignatureAlgorithm) {
10
- SignatureAlgorithm[SignatureAlgorithm["ECDSA"] = 0] = "ECDSA";
11
- SignatureAlgorithm[SignatureAlgorithm["SCHNORR"] = 1] = "SCHNORR";
12
- })(SignatureAlgorithm = exports.SignatureAlgorithm || (exports.SignatureAlgorithm = {}));
13
- var HashType;
14
- (function (HashType) {
15
- HashType[HashType["SIGHASH_ALL"] = 1] = "SIGHASH_ALL";
16
- HashType[HashType["SIGHASH_NONE"] = 2] = "SIGHASH_NONE";
17
- HashType[HashType["SIGHASH_SINGLE"] = 3] = "SIGHASH_SINGLE";
18
- HashType[HashType["SIGHASH_ANYONECANPAY"] = 128] = "SIGHASH_ANYONECANPAY";
19
- })(HashType = exports.HashType || (exports.HashType = {}));
20
- // Weird setup to allow both Enum parameters, as well as literal strings
21
- // https://stackoverflow.com/questions/51433319/typescript-constructor-accept-string-for-enum
22
- const literal = (l) => l;
23
- exports.Network = {
24
- MAINNET: literal('mainnet'),
25
- TESTNET3: literal('testnet3'),
26
- TESTNET4: literal('testnet4'),
27
- CHIPNET: literal('chipnet'),
28
- TESTNET: literal('testnet'),
29
- STAGING: literal('staging'),
30
- REGTEST: literal('regtest'),
31
- };
32
- //# sourceMappingURL=interfaces.js.map
@@ -1,26 +0,0 @@
1
- import { Utxo, Network } from '../interfaces.js';
2
- import NetworkProvider from './NetworkProvider.js';
3
- export default class BitboxNetworkProvider implements NetworkProvider {
4
- network: Network;
5
- private bitbox;
6
- constructor(network: Network, bitbox: BITBOX);
7
- getUtxos(address: string): Promise<Utxo[]>;
8
- getBlockHeight(): Promise<number>;
9
- getRawTransaction(txid: string): Promise<string>;
10
- sendRawTransaction(txHex: string): Promise<string>;
11
- }
12
- interface BITBOX {
13
- Address: {
14
- utxo(address: string): Promise<{
15
- utxos: Utxo[];
16
- }>;
17
- };
18
- Blockchain: {
19
- getBlockCount(): Promise<number>;
20
- };
21
- RawTransactions: {
22
- getRawTransaction(txid: string): Promise<string>;
23
- sendRawTransaction(txHex: string): Promise<string>;
24
- };
25
- }
26
- export {};
@@ -1,40 +0,0 @@
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
- class BitboxNetworkProvider {
13
- constructor(network, bitbox) {
14
- this.network = network;
15
- this.bitbox = bitbox;
16
- }
17
- getUtxos(address) {
18
- return __awaiter(this, void 0, void 0, function* () {
19
- const { utxos } = yield this.bitbox.Address.utxo(address);
20
- return utxos;
21
- });
22
- }
23
- getBlockHeight() {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- return this.bitbox.Blockchain.getBlockCount();
26
- });
27
- }
28
- getRawTransaction(txid) {
29
- return __awaiter(this, void 0, void 0, function* () {
30
- return this.bitbox.RawTransactions.getRawTransaction(txid);
31
- });
32
- }
33
- sendRawTransaction(txHex) {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- return this.bitbox.RawTransactions.sendRawTransaction(txHex);
36
- });
37
- }
38
- }
39
- exports.default = BitboxNetworkProvider;
40
- //# sourceMappingURL=BitboxNetworkProvider.js.map
@@ -1,41 +0,0 @@
1
- import { Utxo, Network } from '../interfaces.js';
2
- import NetworkProvider from './NetworkProvider.js';
3
- declare const RpcClientRetry: any;
4
- export default class BitcoinRpcNetworkProvider implements NetworkProvider {
5
- network: Network;
6
- private rpcClient;
7
- constructor(network: Network, url: string, opts?: object);
8
- getUtxos(address: string): Promise<Utxo[]>;
9
- getBlockHeight(): Promise<number>;
10
- getRawTransaction(txid: string): Promise<string>;
11
- sendRawTransaction(txHex: string): Promise<string>;
12
- getClient(): RpcClientRetry;
13
- }
14
- interface ListUnspentItem {
15
- txid: string;
16
- vout: number;
17
- address: string;
18
- label: string;
19
- scriptPubKey: string;
20
- amount: number;
21
- confirmations: number;
22
- redeemScript: string;
23
- spendable: boolean;
24
- solvable: boolean;
25
- safe: boolean;
26
- }
27
- interface RpcClientRetry {
28
- constructor(url: string, opts?: object): void;
29
- listUnspent(minConf?: number, maxConf?: number, addresses?: string[], includeUnsafe?: boolean, queryOptions?: object): Promise<ListUnspentItem[]>;
30
- getBlockCount(): Promise<number>;
31
- getRawTransaction(txid: string, verbose?: boolean, blockHash?: string): Promise<string>;
32
- sendRawTransaction(hexString: string, allowHighFees?: boolean): Promise<string>;
33
- generate(nBlocks: number, maxTries?: number): Promise<string[]>;
34
- generateToAddress(nBlocks: number, address: string, maxTries?: number): Promise<string[]>;
35
- getNewAddress(label?: string): Promise<string>;
36
- dumpPrivKey(address: string): Promise<string>;
37
- getBalance(dummy?: string, minConf?: number, includeWatchOnly?: boolean): Promise<number>;
38
- getBlock(blockHash: string, verbosity?: number): Promise<string>;
39
- importAddress(address: string, label?: string, rescan?: boolean, p2sh?: boolean): Promise<void>;
40
- }
41
- export {};
@@ -1,49 +0,0 @@
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
- const RpcClientRetry = require('bitcoin-rpc-promise-retry');
13
- class BitcoinRpcNetworkProvider {
14
- constructor(network, url, opts) {
15
- this.network = network;
16
- this.rpcClient = new RpcClientRetry(url, opts);
17
- }
18
- getUtxos(address) {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- const result = yield this.rpcClient.listUnspent(0, 9999999, [address]);
21
- const utxos = result.map((utxo) => ({
22
- txid: utxo.txid,
23
- vout: utxo.vout,
24
- satoshis: utxo.amount * 1e8,
25
- }));
26
- return utxos;
27
- });
28
- }
29
- getBlockHeight() {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- return this.rpcClient.getBlockCount();
32
- });
33
- }
34
- getRawTransaction(txid) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- return this.rpcClient.getRawTransaction(txid);
37
- });
38
- }
39
- sendRawTransaction(txHex) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- return this.rpcClient.sendRawTransaction(txHex);
42
- });
43
- }
44
- getClient() {
45
- return this.rpcClient;
46
- }
47
- }
48
- exports.default = BitcoinRpcNetworkProvider;
49
- //# sourceMappingURL=BitcoinRpcNetworkProvider.js.map
@@ -1,162 +0,0 @@
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
- const libauth_1 = require("@bitauth/libauth");
13
- const utils_1 = require("@cashscript/utils");
14
- const electrum_cash_1 = require("electrum-cash");
15
- const interfaces_js_1 = require("../interfaces.js");
16
- const utils_js_1 = require("../utils.js");
17
- class ElectrumNetworkProvider {
18
- constructor(network = interfaces_js_1.Network.MAINNET, electrum, manualConnectionManagement) {
19
- this.network = network;
20
- this.manualConnectionManagement = manualConnectionManagement;
21
- this.concurrentRequests = 0;
22
- // If a custom Electrum Cluster is passed, we use it instead of the default.
23
- if (electrum) {
24
- this.electrum = electrum;
25
- return;
26
- }
27
- if (network === interfaces_js_1.Network.MAINNET) {
28
- // Initialise a 2-of-3 Electrum Cluster with 6 reliable hardcoded servers
29
- // using the first three servers as "priority" servers
30
- this.electrum = new electrum_cash_1.ElectrumCluster('CashScript Application', '1.4.1', 2, 3, electrum_cash_1.ClusterOrder.PRIORITY);
31
- this.electrum.addServer('bch.imaginary.cash', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
32
- this.electrum.addServer('blackie.c3-soft.com', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
33
- this.electrum.addServer('electroncash.de', 60002, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
34
- this.electrum.addServer('electroncash.dk', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
35
- this.electrum.addServer('bch.loping.net', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
36
- this.electrum.addServer('electrum.imaginary.cash', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
37
- }
38
- else if (network === interfaces_js_1.Network.TESTNET || network === interfaces_js_1.Network.TESTNET3) {
39
- // Initialise a 1-of-2 Electrum Cluster with 2 hardcoded servers
40
- this.electrum = new electrum_cash_1.ElectrumCluster('CashScript Application', '1.4.1', 1, 2, electrum_cash_1.ClusterOrder.PRIORITY);
41
- this.electrum.addServer('blackie.c3-soft.com', 60004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
42
- this.electrum.addServer('electroncash.de', 60004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
43
- // this.electrum.addServer('bch.loping.net', 60004, ElectrumTransport.WSS.Scheme, false);
44
- // this.electrum.addServer('testnet.imaginary.cash', 50004, ElectrumTransport.WSS.Scheme);
45
- }
46
- else if (network === interfaces_js_1.Network.STAGING || network === interfaces_js_1.Network.TESTNET4) {
47
- this.electrum = new electrum_cash_1.ElectrumCluster('CashScript Application', '1.4.1', 1, 1, electrum_cash_1.ClusterOrder.PRIORITY);
48
- this.electrum.addServer('testnet4.imaginary.cash', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
49
- }
50
- else if (network === interfaces_js_1.Network.CHIPNET) {
51
- this.electrum = new electrum_cash_1.ElectrumCluster('CashScript Application', '1.4.1', 1, 1, electrum_cash_1.ClusterOrder.PRIORITY);
52
- this.electrum.addServer('chipnet.imaginary.cash', 50004, electrum_cash_1.ElectrumTransport.WSS.Scheme, false);
53
- }
54
- else {
55
- throw new Error(`Tried to instantiate an ElectrumNetworkProvider for unsupported network ${network}`);
56
- }
57
- }
58
- getUtxos(address) {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- const scripthash = addressToElectrumScriptHash(address);
61
- const result = yield this.performRequest('blockchain.scripthash.listunspent', scripthash);
62
- const utxos = result.map((utxo) => ({
63
- txid: utxo.tx_hash,
64
- vout: utxo.tx_pos,
65
- satoshis: utxo.value,
66
- height: utxo.height,
67
- }));
68
- return utxos;
69
- });
70
- }
71
- getBlockHeight() {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- const { height } = yield this.performRequest('blockchain.headers.subscribe');
74
- return height;
75
- });
76
- }
77
- getRawTransaction(txid) {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- return yield this.performRequest('blockchain.transaction.get', txid);
80
- });
81
- }
82
- sendRawTransaction(txHex) {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- return yield this.performRequest('blockchain.transaction.broadcast', txHex);
85
- });
86
- }
87
- connectCluster() {
88
- return __awaiter(this, void 0, void 0, function* () {
89
- try {
90
- return yield this.electrum.startup();
91
- }
92
- catch (e) {
93
- return [];
94
- }
95
- });
96
- }
97
- disconnectCluster() {
98
- return __awaiter(this, void 0, void 0, function* () {
99
- return this.electrum.shutdown();
100
- });
101
- }
102
- performRequest(name, ...parameters) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- // Only connect the cluster when no concurrent requests are running
105
- if (this.shouldConnect()) {
106
- this.connectCluster();
107
- }
108
- this.concurrentRequests += 1;
109
- yield this.electrum.ready();
110
- let result;
111
- try {
112
- result = yield this.electrum.request(name, ...parameters);
113
- }
114
- finally {
115
- // Always disconnect the cluster, also if the request fails
116
- // as long as no other concurrent requests are running
117
- if (this.shouldDisconnect()) {
118
- yield this.disconnectCluster();
119
- }
120
- }
121
- this.concurrentRequests -= 1;
122
- if (result instanceof Error)
123
- throw result;
124
- return result;
125
- });
126
- }
127
- shouldConnect() {
128
- if (this.manualConnectionManagement)
129
- return false;
130
- if (this.concurrentRequests !== 0)
131
- return false;
132
- return true;
133
- }
134
- shouldDisconnect() {
135
- if (this.manualConnectionManagement)
136
- return false;
137
- if (this.concurrentRequests !== 1)
138
- return false;
139
- return true;
140
- }
141
- }
142
- exports.default = ElectrumNetworkProvider;
143
- /**
144
- * Helper function to convert an address to an electrum-cash compatible scripthash.
145
- * This is necessary to support electrum versions lower than 1.4.3, which do not
146
- * support addresses, only script hashes.
147
- *
148
- * @param address Address to convert to an electrum scripthash
149
- *
150
- * @returns The corresponding script hash in an electrum-cash compatible format
151
- */
152
- function addressToElectrumScriptHash(address) {
153
- // Retrieve locking script
154
- const lockScript = (0, utils_js_1.addressToLockScript)(address);
155
- // Hash locking script
156
- const scriptHash = (0, utils_1.sha256)(lockScript);
157
- // Reverse scripthash
158
- scriptHash.reverse();
159
- // Return scripthash as a hex string
160
- return (0, libauth_1.binToHex)(scriptHash);
161
- }
162
- //# sourceMappingURL=ElectrumNetworkProvider.js.map
@@ -1,55 +0,0 @@
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
- class FullStackNetworkProvider {
13
- /**
14
- * @example
15
- * const BCHJS = require("@psf/bch-js")
16
- * let bchjs = new BCHJS({
17
- * restURL: 'https://api.fullstack.cash/v3/',
18
- * apiToken: 'eyJhbGciO...' // Your JWT token here.
19
- * })
20
- */
21
- constructor(network, bchjs) {
22
- this.network = network;
23
- this.bchjs = bchjs;
24
- }
25
- getUtxos(address) {
26
- var _a;
27
- return __awaiter(this, void 0, void 0, function* () {
28
- const result = yield this.bchjs.Electrumx.utxo(address);
29
- const utxos = ((_a = result.utxos) !== null && _a !== void 0 ? _a : []).map((utxo) => ({
30
- txid: utxo.tx_hash,
31
- vout: utxo.tx_pos,
32
- satoshis: utxo.value,
33
- height: utxo.height,
34
- }));
35
- return utxos;
36
- });
37
- }
38
- getBlockHeight() {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- return this.bchjs.Blockchain.getBlockCount();
41
- });
42
- }
43
- getRawTransaction(txid) {
44
- return __awaiter(this, void 0, void 0, function* () {
45
- return this.bchjs.RawTransactions.getRawTransaction(txid);
46
- });
47
- }
48
- sendRawTransaction(txHex) {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- return this.bchjs.RawTransactions.sendRawTransaction(txHex);
51
- });
52
- }
53
- }
54
- exports.default = FullStackNetworkProvider;
55
- //# sourceMappingURL=FullStackNetworkProvider.js.map
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=NetworkProvider.js.map
@@ -1,15 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.FullStackNetworkProvider = exports.ElectrumNetworkProvider = exports.BitcoinRpcNetworkProvider = exports.BitboxNetworkProvider = void 0;
7
- var BitboxNetworkProvider_js_1 = require("./BitboxNetworkProvider.js");
8
- Object.defineProperty(exports, "BitboxNetworkProvider", { enumerable: true, get: function () { return __importDefault(BitboxNetworkProvider_js_1).default; } });
9
- var BitcoinRpcNetworkProvider_js_1 = require("./BitcoinRpcNetworkProvider.js");
10
- Object.defineProperty(exports, "BitcoinRpcNetworkProvider", { enumerable: true, get: function () { return __importDefault(BitcoinRpcNetworkProvider_js_1).default; } });
11
- var ElectrumNetworkProvider_js_1 = require("./ElectrumNetworkProvider.js");
12
- Object.defineProperty(exports, "ElectrumNetworkProvider", { enumerable: true, get: function () { return __importDefault(ElectrumNetworkProvider_js_1).default; } });
13
- var FullStackNetworkProvider_js_1 = require("./FullStackNetworkProvider.js");
14
- Object.defineProperty(exports, "FullStackNetworkProvider", { enumerable: true, get: function () { return __importDefault(FullStackNetworkProvider_js_1).default; } });
15
- //# sourceMappingURL=index.js.map