@witnet/sdk 1.0.4 → 1.0.5

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 (211) hide show
  1. package/.env_witnet +6 -6
  2. package/LICENSE +21 -21
  3. package/README.md +103 -103
  4. package/dist/package.json +3 -4
  5. package/dist/src/bin/helpers.js +1 -1
  6. package/dist/src/index.js +1 -1
  7. package/dist/src/lib/crypto/account.d.ts +3 -1
  8. package/dist/src/lib/crypto/account.d.ts.map +1 -1
  9. package/dist/src/lib/crypto/account.js +7 -1
  10. package/dist/src/lib/crypto/coinbase.js +1 -1
  11. package/dist/src/lib/crypto/index.js +1 -1
  12. package/dist/src/lib/crypto/interfaces.d.ts +2 -0
  13. package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
  14. package/dist/src/lib/crypto/interfaces.js +1 -1
  15. package/dist/src/lib/crypto/payloads/DataRequestPayload.js +1 -1
  16. package/dist/src/lib/crypto/payloads/StakePayload.js +1 -1
  17. package/dist/src/lib/crypto/payloads/UnstakePayload.js +1 -1
  18. package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +1 -1
  19. package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
  20. package/dist/src/lib/crypto/payloads.js +12 -1
  21. package/dist/src/lib/crypto/signer.d.ts +1 -0
  22. package/dist/src/lib/crypto/signer.d.ts.map +1 -1
  23. package/dist/src/lib/crypto/signer.js +18 -1
  24. package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -1
  25. package/dist/src/lib/crypto/transmitters/StakeDeposits.js +1 -1
  26. package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +1 -1
  27. package/dist/src/lib/crypto/transmitters/ValueTransfers.js +1 -1
  28. package/dist/src/lib/crypto/transmitters.js +4 -4
  29. package/dist/src/lib/crypto/types.d.ts.map +1 -1
  30. package/dist/src/lib/crypto/types.js +2 -1
  31. package/dist/src/lib/crypto/utils.js +1 -1
  32. package/dist/src/lib/crypto/wallet.d.ts +3 -1
  33. package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
  34. package/dist/src/lib/crypto/wallet.js +10 -1
  35. package/dist/src/lib/index.js +1 -1
  36. package/dist/src/lib/radon/ccdr/eth.js +1 -1
  37. package/dist/src/lib/radon/ccdr/index.js +1 -1
  38. package/dist/src/lib/radon/ccdr/wit.js +1 -1
  39. package/dist/src/lib/radon/filters.js +1 -1
  40. package/dist/src/lib/radon/index.js +1 -1
  41. package/dist/src/lib/radon/reducers.js +1 -1
  42. package/dist/src/lib/radon/types.js +1 -1
  43. package/dist/src/lib/radon/utils.js +1 -1
  44. package/dist/src/lib/rpc/index.js +1 -1
  45. package/dist/src/lib/rpc/nodes.js +1 -1
  46. package/dist/src/lib/rpc/provider.js +1 -1
  47. package/dist/src/lib/rpc/types.d.ts +6 -4
  48. package/dist/src/lib/rpc/types.d.ts.map +1 -1
  49. package/dist/src/lib/rpc/types.js +1 -1
  50. package/dist/src/lib/types.d.ts +0 -1
  51. package/dist/src/lib/types.d.ts.map +1 -1
  52. package/dist/src/lib/types.js +1 -1
  53. package/dist/src/lib/utils.js +1 -1
  54. package/dist/witnet/assets/index.js +1 -1
  55. package/dist/witnet/assets/modals/index.js +1 -1
  56. package/dist/witnet/assets/modals/web3/eth.js +1 -1
  57. package/dist/witnet/assets/modals/web3/ipfs.js +1 -1
  58. package/dist/witnet/assets/modals/web3/wit.js +1 -1
  59. package/dist/witnet/assets/requests.js +1 -1
  60. package/package.json +3 -4
  61. package/src/bin/cli/history.js +31 -31
  62. package/src/bin/cli/inspect.js +405 -405
  63. package/src/bin/cli/network.js +594 -594
  64. package/src/bin/cli/nodes.js +364 -364
  65. package/src/bin/cli/radon.js +817 -815
  66. package/src/bin/cli/wallet.js +1121 -1117
  67. package/src/bin/helpers.js +840 -840
  68. package/src/bin/postinstall.js +9 -9
  69. package/src/bin/toolkit.js +295 -295
  70. package/witnet/assets/_index.js +8 -8
  71. package/witnet/assets/_requests.js +25 -25
  72. package/witnet/assets/_sources.js +36 -36
  73. package/witnet/assets/_templates.js +36 -36
  74. package/witnet/assets/index.js +4 -4
  75. package/witnet/assets/modals/index.js +9 -9
  76. package/witnet/assets/modals/web3/eth.js +29 -29
  77. package/witnet/assets/modals/web3/ipfs.js +19 -19
  78. package/witnet/assets/modals/web3/wit.js +21 -21
  79. package/witnet/assets/requests.js +95 -95
  80. package/dist/bin/helpers.d.ts +0 -88
  81. package/dist/bin/helpers.d.ts.map +0 -1
  82. package/dist/bin/helpers.js +0 -866
  83. package/dist/index.d.ts +0 -4
  84. package/dist/index.d.ts.map +0 -1
  85. package/dist/index.js +0 -42
  86. package/dist/lib/crypto/account.d.ts +0 -18
  87. package/dist/lib/crypto/account.d.ts.map +0 -1
  88. package/dist/lib/crypto/account.js +0 -152
  89. package/dist/lib/crypto/coinbase.d.ts +0 -9
  90. package/dist/lib/crypto/coinbase.d.ts.map +0 -1
  91. package/dist/lib/crypto/coinbase.js +0 -39
  92. package/dist/lib/crypto/index.d.ts +0 -7
  93. package/dist/lib/crypto/index.d.ts.map +0 -1
  94. package/dist/lib/crypto/index.js +0 -28
  95. package/dist/lib/crypto/interfaces.d.ts +0 -80
  96. package/dist/lib/crypto/interfaces.d.ts.map +0 -1
  97. package/dist/lib/crypto/interfaces.js +0 -3
  98. package/dist/lib/crypto/payloads/DataRequestPayload.d.ts +0 -47
  99. package/dist/lib/crypto/payloads/DataRequestPayload.d.ts.map +0 -1
  100. package/dist/lib/crypto/payloads/DataRequestPayload.js +0 -384
  101. package/dist/lib/crypto/payloads/StakePayload.d.ts +0 -27
  102. package/dist/lib/crypto/payloads/StakePayload.d.ts.map +0 -1
  103. package/dist/lib/crypto/payloads/StakePayload.js +0 -184
  104. package/dist/lib/crypto/payloads/UnstakePayload.d.ts +0 -35
  105. package/dist/lib/crypto/payloads/UnstakePayload.d.ts.map +0 -1
  106. package/dist/lib/crypto/payloads/UnstakePayload.js +0 -244
  107. package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts +0 -24
  108. package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts.map +0 -1
  109. package/dist/lib/crypto/payloads/ValueTransferPayload.js +0 -182
  110. package/dist/lib/crypto/payloads.d.ts +0 -54
  111. package/dist/lib/crypto/payloads.d.ts.map +0 -1
  112. package/dist/lib/crypto/payloads.js +0 -224
  113. package/dist/lib/crypto/signer.d.ts +0 -26
  114. package/dist/lib/crypto/signer.d.ts.map +0 -1
  115. package/dist/lib/crypto/signer.js +0 -299
  116. package/dist/lib/crypto/transmitters/DataRequests.d.ts +0 -14
  117. package/dist/lib/crypto/transmitters/DataRequests.d.ts.map +0 -1
  118. package/dist/lib/crypto/transmitters/DataRequests.js +0 -62
  119. package/dist/lib/crypto/transmitters/StakeDeposits.d.ts +0 -11
  120. package/dist/lib/crypto/transmitters/StakeDeposits.d.ts.map +0 -1
  121. package/dist/lib/crypto/transmitters/StakeDeposits.js +0 -48
  122. package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts +0 -17
  123. package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +0 -1
  124. package/dist/lib/crypto/transmitters/StakeWithdrawals.js +0 -115
  125. package/dist/lib/crypto/transmitters/ValueTransfers.d.ts +0 -10
  126. package/dist/lib/crypto/transmitters/ValueTransfers.d.ts.map +0 -1
  127. package/dist/lib/crypto/transmitters/ValueTransfers.js +0 -47
  128. package/dist/lib/crypto/transmitters.d.ts +0 -46
  129. package/dist/lib/crypto/transmitters.d.ts.map +0 -1
  130. package/dist/lib/crypto/transmitters.js +0 -506
  131. package/dist/lib/crypto/types.d.ts +0 -127
  132. package/dist/lib/crypto/types.d.ts.map +0 -1
  133. package/dist/lib/crypto/types.js +0 -261
  134. package/dist/lib/crypto/utils.d.ts +0 -10
  135. package/dist/lib/crypto/utils.d.ts.map +0 -1
  136. package/dist/lib/crypto/utils.js +0 -97
  137. package/dist/lib/crypto/wallet.d.ts +0 -26
  138. package/dist/lib/crypto/wallet.d.ts.map +0 -1
  139. package/dist/lib/crypto/wallet.js +0 -327
  140. package/dist/lib/helpers.d.ts +0 -90
  141. package/dist/lib/helpers.d.ts.map +0 -1
  142. package/dist/lib/helpers.js +0 -1031
  143. package/dist/lib/index.d.ts +0 -5
  144. package/dist/lib/index.d.ts.map +0 -1
  145. package/dist/lib/index.js +0 -21
  146. package/dist/lib/radon/artifacts.d.ts +0 -55
  147. package/dist/lib/radon/artifacts.d.ts.map +0 -1
  148. package/dist/lib/radon/artifacts.js +0 -347
  149. package/dist/lib/radon/ccdr/eth.d.ts +0 -100
  150. package/dist/lib/radon/ccdr/eth.d.ts.map +0 -1
  151. package/dist/lib/radon/ccdr/eth.js +0 -237
  152. package/dist/lib/radon/ccdr/index.d.ts +0 -34
  153. package/dist/lib/radon/ccdr/index.d.ts.map +0 -1
  154. package/dist/lib/radon/ccdr/index.js +0 -63
  155. package/dist/lib/radon/ccdr/wit.d.ts +0 -29
  156. package/dist/lib/radon/ccdr/wit.d.ts.map +0 -1
  157. package/dist/lib/radon/ccdr/wit.js +0 -60
  158. package/dist/lib/radon/filters.d.ts +0 -14
  159. package/dist/lib/radon/filters.d.ts.map +0 -1
  160. package/dist/lib/radon/filters.js +0 -47
  161. package/dist/lib/radon/index.d.ts +0 -36
  162. package/dist/lib/radon/index.d.ts.map +0 -1
  163. package/dist/lib/radon/index.js +0 -154
  164. package/dist/lib/radon/reducers.d.ts +0 -29
  165. package/dist/lib/radon/reducers.d.ts.map +0 -1
  166. package/dist/lib/radon/reducers.js +0 -101
  167. package/dist/lib/radon/retrievals.d.ts +0 -120
  168. package/dist/lib/radon/retrievals.d.ts.map +0 -1
  169. package/dist/lib/radon/retrievals.js +0 -358
  170. package/dist/lib/radon/sources.d.ts +0 -102
  171. package/dist/lib/radon/sources.d.ts.map +0 -1
  172. package/dist/lib/radon/sources.js +0 -294
  173. package/dist/lib/radon/types.d.ts +0 -521
  174. package/dist/lib/radon/types.d.ts.map +0 -1
  175. package/dist/lib/radon/types.js +0 -1066
  176. package/dist/lib/radon/utils.d.ts +0 -55
  177. package/dist/lib/radon/utils.d.ts.map +0 -1
  178. package/dist/lib/radon/utils.js +0 -181
  179. package/dist/lib/rpc/farm.d.ts +0 -66
  180. package/dist/lib/rpc/farm.d.ts.map +0 -1
  181. package/dist/lib/rpc/farm.js +0 -808
  182. package/dist/lib/rpc/index.d.ts +0 -3
  183. package/dist/lib/rpc/index.d.ts.map +0 -1
  184. package/dist/lib/rpc/index.js +0 -19
  185. package/dist/lib/rpc/node.d.ts +0 -38
  186. package/dist/lib/rpc/node.d.ts.map +0 -1
  187. package/dist/lib/rpc/node.js +0 -335
  188. package/dist/lib/rpc/nodes.d.ts +0 -40
  189. package/dist/lib/rpc/nodes.d.ts.map +0 -1
  190. package/dist/lib/rpc/nodes.js +0 -531
  191. package/dist/lib/rpc/provider.d.ts +0 -72
  192. package/dist/lib/rpc/provider.d.ts.map +0 -1
  193. package/dist/lib/rpc/provider.js +0 -402
  194. package/dist/lib/rpc/reporter.d.ts +0 -18
  195. package/dist/lib/rpc/reporter.d.ts.map +0 -1
  196. package/dist/lib/rpc/reporter.js +0 -99
  197. package/dist/lib/rpc/types.d.ts +0 -396
  198. package/dist/lib/rpc/types.d.ts.map +0 -1
  199. package/dist/lib/rpc/types.js +0 -81
  200. package/dist/lib/rpc/wallet.d.ts +0 -72
  201. package/dist/lib/rpc/wallet.d.ts.map +0 -1
  202. package/dist/lib/rpc/wallet.js +0 -41
  203. package/dist/lib/types.d.ts +0 -19
  204. package/dist/lib/types.d.ts.map +0 -1
  205. package/dist/lib/types.js +0 -7
  206. package/dist/lib/utils.d.ts +0 -5
  207. package/dist/lib/utils.d.ts.map +0 -1
  208. package/dist/lib/utils.js +0 -51
  209. package/dist/src/lib/rpc/reporter.d.ts +0 -17
  210. package/dist/src/lib/rpc/reporter.d.ts.map +0 -1
  211. package/dist/src/lib/rpc/reporter.js +0 -27
@@ -1,72 +0,0 @@
1
- import { AxiosHeaders } from "axios";
2
- import { PublicKeyHashString, TransactionReceipt } from "../crypto/types";
3
- import { Epoch, Hash, Network, UtxoMetadata } from "../types";
4
- import { Balance2, Block, ConsensusConstants, DataRequestReport, Mempool, PeerAddr, Priorities, ProtocolInfo, QueryStakes, QueryStakingPowers, TransactionReport, SignalingInfo, StakeEntry, StakingPower, SuperblockReport } from "./types";
5
- export interface IProvider {
6
- network?: Network;
7
- blocks(since: Epoch, limit: number): Promise<Array<[number, Hash]>>;
8
- constants(): Promise<ConsensusConstants>;
9
- holders(limit?: number): Promise<Record<PublicKeyHashString, Balance2>>;
10
- mempool(): Promise<Mempool>;
11
- powers(params?: QueryStakingPowers): Promise<Array<StakingPower>>;
12
- priorities(): Promise<Priorities>;
13
- protocolInfo(): Promise<ProtocolInfo>;
14
- stakes(params: QueryStakes): Promise<Array<StakeEntry>>;
15
- syncStatus(): Promise<any>;
16
- wips(): Promise<SignalingInfo>;
17
- getBalance(pkh: PublicKeyHashString): Promise<Balance2>;
18
- getBlock(blockHash: Hash, showTransactionHashes?: boolean): Promise<Block>;
19
- getDataRequest(drTxHash: Hash): Promise<DataRequestReport>;
20
- getTransaction(txHash: Hash): Promise<TransactionReport>;
21
- getTransactionReceipt(txHash: Hash): Promise<TransactionReceipt>;
22
- getSuperblock(epoch: Epoch): Promise<SuperblockReport>;
23
- getUtxoInfo(pkh: PublicKeyHashString, smallestFirst?: boolean): Promise<Array<UtxoMetadata>>;
24
- sendRawTransaction(tx: any): Promise<boolean>;
25
- }
26
- export declare class ProviderError extends Error {
27
- readonly error?: any;
28
- readonly method: string;
29
- readonly params: any[];
30
- constructor(method: string, params: any[], error?: any);
31
- }
32
- export declare class Provider implements IProvider {
33
- network?: Network;
34
- static receipts: Record<Hash, TransactionReceipt>;
35
- readonly endpoints: string[];
36
- protected _constants?: ConsensusConstants;
37
- protected _headers: AxiosHeaders;
38
- static initialized(url?: string): Promise<Provider>;
39
- constructor(url: string);
40
- protected nextURL(): string;
41
- protected callApiMethod<T>(method: string, params?: Array<any> | any): Promise<Error | any>;
42
- /**
43
- * Get the list of block hashes within given range, as known by the provider.
44
- * @param {number} since - First epoch for which to return block hashes. If negative, return block hashes from the last n epochs.
45
- * @param {number} limit - Number of block hashes to return. If negative, return the last n block hashes from this epoch range.
46
- */
47
- blocks(since?: number, limit?: number): Promise<Array<[number, Hash]>>;
48
- constants(): Promise<ConsensusConstants>;
49
- holders(minBalance?: number, maxBalance?: number): Promise<Record<PublicKeyHashString, Balance2>>;
50
- knownPeers(): Promise<Array<PeerAddr>>;
51
- mempool(): Promise<Mempool>;
52
- priorities(): Promise<Priorities>;
53
- protocolInfo(): Promise<ProtocolInfo>;
54
- powers(query?: QueryStakingPowers): Promise<Array<StakingPower>>;
55
- stakes(query?: QueryStakes): Promise<Array<StakeEntry>>;
56
- syncStatus(): Promise<any>;
57
- wips(): Promise<SignalingInfo>;
58
- getBalance(pkh: PublicKeyHashString): Promise<Balance2>;
59
- /**
60
- * Get block info by hash
61
- * @param {Hash} blockHash - Hash of the block that we are querying.
62
- * @param {boolean} showTransactionHash - Whether to include an extra field containing array of transaction hashes.
63
- */
64
- getBlock(blockHash: Hash, showTransactionHash?: boolean): Promise<Block>;
65
- getDataRequest(drTxHash: Hash): Promise<DataRequestReport>;
66
- getSuperblock(epoch: Epoch): Promise<SuperblockReport>;
67
- getTransaction(txHash: Hash): Promise<TransactionReport>;
68
- getTransactionReceipt(txHash: Hash): Promise<TransactionReceipt>;
69
- getUtxoInfo(pkh: PublicKeyHashString, smallFirst?: boolean): Promise<Array<UtxoMetadata>>;
70
- sendRawTransaction(transaction: any): Promise<boolean>;
71
- }
72
- //# sourceMappingURL=provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/lib/rpc/provider.ts"],"names":[],"mappings":"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"}
@@ -1,402 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
23
- }
24
- return t;
25
- };
26
- return __assign.apply(this, arguments);
27
- };
28
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
29
- if (k2 === undefined) k2 = k;
30
- var desc = Object.getOwnPropertyDescriptor(m, k);
31
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
32
- desc = { enumerable: true, get: function() { return m[k]; } };
33
- }
34
- Object.defineProperty(o, k2, desc);
35
- }) : (function(o, m, k, k2) {
36
- if (k2 === undefined) k2 = k;
37
- o[k2] = m[k];
38
- }));
39
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
40
- Object.defineProperty(o, "default", { enumerable: true, value: v });
41
- }) : function(o, v) {
42
- o["default"] = v;
43
- });
44
- var __importStar = (this && this.__importStar) || (function () {
45
- var ownKeys = function(o) {
46
- ownKeys = Object.getOwnPropertyNames || function (o) {
47
- var ar = [];
48
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
49
- return ar;
50
- };
51
- return ownKeys(o);
52
- };
53
- return function (mod) {
54
- if (mod && mod.__esModule) return mod;
55
- var result = {};
56
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
57
- __setModuleDefault(result, mod);
58
- return result;
59
- };
60
- })();
61
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
62
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
63
- return new (P || (P = Promise))(function (resolve, reject) {
64
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
65
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
66
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
67
- step((generator = generator.apply(thisArg, _arguments || [])).next());
68
- });
69
- };
70
- var __generator = (this && this.__generator) || function (thisArg, body) {
71
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
72
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
73
- function verb(n) { return function (v) { return step([n, v]); }; }
74
- function step(op) {
75
- if (f) throw new TypeError("Generator is already executing.");
76
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
77
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
78
- if (y = 0, t) op = [op[0] & 2, t.value];
79
- switch (op[0]) {
80
- case 0: case 1: t = op; break;
81
- case 4: _.label++; return { value: op[1], done: false };
82
- case 5: _.label++; y = op[1]; op = [0]; continue;
83
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
84
- default:
85
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
86
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
87
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
88
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
89
- if (t[2]) _.ops.pop();
90
- _.trys.pop(); continue;
91
- }
92
- op = body.call(thisArg, _);
93
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
94
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
95
- }
96
- };
97
- var __read = (this && this.__read) || function (o, n) {
98
- var m = typeof Symbol === "function" && o[Symbol.iterator];
99
- if (!m) return o;
100
- var i = m.call(o), r, ar = [], e;
101
- try {
102
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
103
- }
104
- catch (error) { e = { error: error }; }
105
- finally {
106
- try {
107
- if (r && !r.done && (m = i["return"])) m.call(i);
108
- }
109
- finally { if (e) throw e.error; }
110
- }
111
- return ar;
112
- };
113
- Object.defineProperty(exports, "__esModule", { value: true });
114
- exports.Provider = exports.ProviderError = void 0;
115
- var utils = __importStar(require("../utils"));
116
- var axios_1 = __importStar(require("axios"));
117
- var types_1 = require("./types");
118
- var ProviderError = /** @class */ (function (_super) {
119
- __extends(ProviderError, _super);
120
- function ProviderError(method, params, error) {
121
- var _this = _super.call(this, "".concat(method, "(").concat(JSON.stringify(params), "): ").concat(JSON.stringify(error), ")")) || this;
122
- error === null || error === void 0 ? true : delete error.stack;
123
- _this.error = error;
124
- _this.method = method;
125
- _this.params = params;
126
- return _this;
127
- }
128
- return ProviderError;
129
- }(Error));
130
- exports.ProviderError = ProviderError;
131
- var Provider = /** @class */ (function () {
132
- function Provider(url) {
133
- this.endpoints = [];
134
- if (url !== undefined) {
135
- var urls = url.replaceAll(',', ';').split(';');
136
- urls.forEach(function (url) {
137
- var _a = __read(utils.parseURL(url), 1), schema = _a[0];
138
- if (!schema.startsWith("http://") && !schema.startsWith("https://")) {
139
- throw Error("Witnet.Provider: unsupported URL schema ".concat(schema));
140
- }
141
- });
142
- this.endpoints = urls;
143
- }
144
- else {
145
- this.endpoints.push(process.env.WITNET_TOOLKIT_PROVIDER_URL || "https://rpc-01.witnet.io");
146
- }
147
- this._headers = new axios_1.AxiosHeaders({
148
- "Content-Type": "application/json"
149
- });
150
- }
151
- Provider.initialized = function (url) {
152
- return __awaiter(this, void 0, void 0, function () {
153
- var provider;
154
- return __generator(this, function (_a) {
155
- provider = new Provider(url || "https://rpc.witnet.io");
156
- return [2 /*return*/, provider.constants().then(function () { return provider; })];
157
- });
158
- });
159
- };
160
- Provider.prototype.nextURL = function () {
161
- return this.endpoints[Math.floor(Math.random() * this.endpoints.length)];
162
- };
163
- Provider.prototype.callApiMethod = function (method, params) {
164
- return __awaiter(this, void 0, void 0, function () {
165
- var url;
166
- return __generator(this, function (_a) {
167
- url = this.nextURL();
168
- return [2 /*return*/, axios_1.default
169
- .post(url, {
170
- jsonrpc: '2.0',
171
- id: +new Date(),
172
- method: method,
173
- params: params,
174
- }, {
175
- headers: this._headers,
176
- }).then(function (response) {
177
- var _a, _b, _c;
178
- if ((response === null || response === void 0 ? void 0 : response.error) || ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.error)) {
179
- throw new ProviderError(method, params, (response === null || response === void 0 ? void 0 : response.error) || ((_b = response === null || response === void 0 ? void 0 : response.data) === null || _b === void 0 ? void 0 : _b.error));
180
- }
181
- else
182
- return (_c = response === null || response === void 0 ? void 0 : response.data) === null || _c === void 0 ? void 0 : _c.result;
183
- })];
184
- });
185
- });
186
- };
187
- /// ---------------------------------------------------------------------------------------------------------------
188
- /**
189
- * Get the list of block hashes within given range, as known by the provider.
190
- * @param {number} since - First epoch for which to return block hashes. If negative, return block hashes from the last n epochs.
191
- * @param {number} limit - Number of block hashes to return. If negative, return the last n block hashes from this epoch range.
192
- */
193
- Provider.prototype.blocks = function () {
194
- return __awaiter(this, arguments, void 0, function (since, limit) {
195
- if (since === void 0) { since = -1; }
196
- if (limit === void 0) { limit = 1; }
197
- return __generator(this, function (_a) {
198
- return [2 /*return*/, this.callApiMethod(types_1.Methods.GetBlockChain, [since, limit,])];
199
- });
200
- });
201
- };
202
- /// Get consensus constants used by the node
203
- Provider.prototype.constants = function () {
204
- return __awaiter(this, void 0, void 0, function () {
205
- var _this = this;
206
- return __generator(this, function (_a) {
207
- if (!this._constants) {
208
- return [2 /*return*/, this
209
- .callApiMethod(types_1.Methods.GetConsensusConstants)
210
- .then(function (constants) {
211
- _this.network = constants.bootstrapping_committee[0].startsWith('wit') ? "mainnet" : "testnet";
212
- _this._constants = constants;
213
- return constants;
214
- })];
215
- }
216
- else {
217
- return [2 /*return*/, this._constants];
218
- }
219
- return [2 /*return*/];
220
- });
221
- });
222
- };
223
- /// Get limited list of currently top holders, as known by the provider.
224
- Provider.prototype.holders = function () {
225
- return __awaiter(this, arguments, void 0, function (minBalance, maxBalance) {
226
- if (minBalance === void 0) { minBalance = 0; }
227
- return __generator(this, function (_a) {
228
- return [2 /*return*/, this
229
- .callApiMethod(types_1.Methods.GetBalance2, {
230
- all: __assign({ minBalance: minBalance }, maxBalance ? { maxBalance: maxBalance } : {})
231
- }).then(function (balances) {
232
- var reverseCompare = function (a, b) {
233
- var a_tot = a.locked + a.unlocked + a.staked;
234
- var b_tot = b.locked + b.unlocked + b.staked;
235
- if (a_tot < b_tot)
236
- return 1;
237
- else if (a_tot > b_tot)
238
- return -1;
239
- else
240
- return 0;
241
- };
242
- return Object.fromEntries(Object.entries(balances)
243
- .sort(function (a, b) { return reverseCompare(a[1], b[1]); }));
244
- })];
245
- });
246
- });
247
- };
248
- /// Get list of known peers
249
- Provider.prototype.knownPeers = function () {
250
- return __awaiter(this, void 0, void 0, function () {
251
- return __generator(this, function (_a) {
252
- return [2 /*return*/, this.callApiMethod(types_1.Methods.KnownPeers)];
253
- });
254
- });
255
- };
256
- /// Get all the pending transactions
257
- Provider.prototype.mempool = function () {
258
- return __awaiter(this, void 0, void 0, function () {
259
- return __generator(this, function (_a) {
260
- return [2 /*return*/, this.callApiMethod(types_1.Methods.GetMempool)];
261
- });
262
- });
263
- };
264
- /// Get priority and time-to-block estimations for different priority tiers.
265
- Provider.prototype.priorities = function () {
266
- return __awaiter(this, void 0, void 0, function () {
267
- return __generator(this, function (_a) {
268
- return [2 /*return*/, this.callApiMethod(types_1.Methods.Priority)];
269
- });
270
- });
271
- };
272
- /// Get information about protocol versions and which version is currently being enforced.
273
- Provider.prototype.protocolInfo = function () {
274
- return __awaiter(this, void 0, void 0, function () {
275
- return __generator(this, function (_a) {
276
- return [2 /*return*/, this.callApiMethod(types_1.Methods.Protocol)];
277
- });
278
- });
279
- };
280
- /// Get a full list of staking powers ordered by rank
281
- Provider.prototype.powers = function (query) {
282
- return __awaiter(this, void 0, void 0, function () {
283
- return __generator(this, function (_a) {
284
- return [2 /*return*/, this.callApiMethod(types_1.Methods.QueryStakingPowers, query)];
285
- });
286
- });
287
- };
288
- /// Get a full list of current stake entries Query the amount of nanowits staked by an address.
289
- Provider.prototype.stakes = function (query) {
290
- return __awaiter(this, void 0, void 0, function () {
291
- return __generator(this, function (_a) {
292
- return [2 /*return*/, this
293
- .callApiMethod(types_1.Methods.QueryStakes, query)
294
- .catch(function (err) {
295
- var _a;
296
- if (((_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.message) && err.error.message.indexOf("not registered") > -1) {
297
- return [];
298
- }
299
- else {
300
- throw err;
301
- }
302
- })];
303
- });
304
- });
305
- };
306
- /// Get node status
307
- Provider.prototype.syncStatus = function () {
308
- return __awaiter(this, void 0, void 0, function () {
309
- return __generator(this, function (_a) {
310
- return [2 /*return*/, this.callApiMethod(types_1.Methods.SyncStatus)];
311
- });
312
- });
313
- };
314
- Provider.prototype.wips = function () {
315
- return __awaiter(this, void 0, void 0, function () {
316
- return __generator(this, function (_a) {
317
- return [2 /*return*/, this.callApiMethod(types_1.Methods.SignalingInfo)];
318
- });
319
- });
320
- };
321
- /// ---------------------------------------------------------------------------------------------------------------
322
- /// Get balance
323
- Provider.prototype.getBalance = function (pkh) {
324
- return __awaiter(this, void 0, void 0, function () {
325
- return __generator(this, function (_a) {
326
- return [2 /*return*/, this.callApiMethod(types_1.Methods.GetBalance2, { pkh: pkh })];
327
- });
328
- });
329
- };
330
- /**
331
- * Get block info by hash
332
- * @param {Hash} blockHash - Hash of the block that we are querying.
333
- * @param {boolean} showTransactionHash - Whether to include an extra field containing array of transaction hashes.
334
- */
335
- Provider.prototype.getBlock = function (blockHash_1) {
336
- return __awaiter(this, arguments, void 0, function (blockHash, showTransactionHash) {
337
- if (showTransactionHash === void 0) { showTransactionHash = false; }
338
- return __generator(this, function (_a) {
339
- return [2 /*return*/, this.callApiMethod(types_1.Methods.GetBlock, [blockHash, showTransactionHash,])];
340
- });
341
- });
342
- };
343
- Provider.prototype.getDataRequest = function (drTxHash) {
344
- return __awaiter(this, void 0, void 0, function () {
345
- return __generator(this, function (_a) {
346
- return [2 /*return*/, this.callApiMethod(types_1.Methods.DataRequestReport, [drTxHash,])];
347
- });
348
- });
349
- };
350
- /// Get the blocks that pertain to the superblock index
351
- Provider.prototype.getSuperblock = function (epoch) {
352
- return __awaiter(this, void 0, void 0, function () {
353
- return __generator(this, function (_a) {
354
- return [2 /*return*/, this.callApiMethod(types_1.Methods.GetSuperblock, { "block_epoch": epoch })];
355
- });
356
- });
357
- };
358
- Provider.prototype.getTransaction = function (txHash) {
359
- return __awaiter(this, void 0, void 0, function () {
360
- return __generator(this, function (_a) {
361
- return [2 /*return*/, this.callApiMethod(types_1.Methods.GetTransaction, [txHash,])];
362
- });
363
- });
364
- };
365
- Provider.prototype.getTransactionReceipt = function (txHash) {
366
- return __awaiter(this, void 0, void 0, function () {
367
- return __generator(this, function (_a) {
368
- // todo: fetch/update receipt from provider, if not cached
369
- return [2 /*return*/, Provider.receipts[txHash]];
370
- });
371
- });
372
- };
373
- /// Get utxos
374
- Provider.prototype.getUtxoInfo = function (pkh, smallFirst) {
375
- if (smallFirst === void 0) { smallFirst = true; }
376
- return this
377
- .callApiMethod(types_1.Methods.GetUtxoInfo, [pkh,])
378
- .then(function (result) {
379
- var inversor = smallFirst ? 1 : -1;
380
- return result.utxos.sort(function (a, b) {
381
- if (a.value > b.value)
382
- return inversor;
383
- else if (a.value < b.value)
384
- return -inversor;
385
- else
386
- return 0;
387
- });
388
- });
389
- };
390
- /// ---------------------------------------------------------------------------------------------------------------
391
- Provider.prototype.sendRawTransaction = function (transaction) {
392
- return __awaiter(this, void 0, void 0, function () {
393
- return __generator(this, function (_a) {
394
- return [2 /*return*/, this.callApiMethod(types_1.Methods.Inventory, { transaction: transaction })];
395
- });
396
- });
397
- };
398
- Provider.receipts = {};
399
- return Provider;
400
- }());
401
- exports.Provider = Provider;
402
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3JwYy9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBaUM7QUFFakMsNkNBQXNEO0FBS3RELGlDQU1nQjtBQTRCaEI7SUFBbUMsaUNBQUs7SUFJcEMsdUJBQVksTUFBYyxFQUFFLE1BQWEsRUFBRSxLQUFXO1FBQ2xELFlBQUEsTUFBSyxZQUFDLFVBQUcsTUFBTSxjQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQUcsQ0FBQyxTQUFBO1FBQ2pFLEtBQUssYUFBTCxLQUFLLDRCQUFMLEtBQUssQ0FBRSxLQUFLLENBQUE7UUFDbkIsS0FBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsS0FBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsS0FBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7O0lBQ3hCLENBQUM7SUFDTCxvQkFBQztBQUFELENBQUMsQUFYRCxDQUFtQyxLQUFLLEdBV3ZDO0FBWFksc0NBQWE7QUFhMUI7SUFlSSxrQkFBWSxHQUFXO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFBO1FBQ25CLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQUEsR0FBRztnQkFDTixJQUFBLEtB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LENBQUM7SUFFRCxtSEFBbUg7SUFDdEcscUNBQWtCLEdBQS9CLFVBQWdDLFdBQWdCOzs7Z0JBQzVDLHNCQUFPLElBQUksQ0FBQyxhQUFhLENBQVUsZUFBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsYUFBQSxFQUFFLENBQUMsRUFBQTs7O0tBQ3pFO0lBaE5hLGlCQUFRLEdBQXFDLEVBQUUsQ0FBQztJQWlObEUsZUFBQztDQUFBLEFBcE5ELElBb05DO0FBcE5ZLDRCQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4uL3V0aWxzXCJcblxuaW1wb3J0IHsgZGVmYXVsdCBhcyBheGlvcywgQXhpb3NIZWFkZXJzIH0gZnJvbSBcImF4aW9zXCJcblxuaW1wb3J0IHsgUHVibGljS2V5SGFzaFN0cmluZywgVHJhbnNhY3Rpb25SZWNlaXB0IH0gZnJvbSBcIi4uL2NyeXB0by90eXBlc1wiXG5pbXBvcnQgeyBFcG9jaCwgSGFzaCwgTmV0d29yaywgVXR4b01ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCJcblxuaW1wb3J0IHtcbiAgICBCYWxhbmNlLCBCYWxhbmNlMiwgQmxvY2ssIENvbnNlbnN1c0NvbnN0YW50cywgRGF0YVJlcXVlc3RSZXBvcnQsIFxuICAgIE1lbXBvb2wsIE1ldGhvZHMsIFBlZXJBZGRyLCBQcmlvcml0aWVzLCBQcm90b2NvbEluZm8sIFxuICAgIFF1ZXJ5U3Rha2VzLCBRdWVyeVN0YWtpbmdQb3dlcnMsXG4gICAgVHJhbnNhY3Rpb25SZXBvcnQsIFNpZ25hbGluZ0luZm8sIFN0YWtlRW50cnksIFN0YWtpbmdQb3dlciwgXG4gICAgU3VwZXJibG9ja1JlcG9ydCwgU3luY1N0YXR1cywgVXR4b0luZm8sIFxufSBmcm9tIFwiLi90eXBlc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVByb3ZpZGVyIHtcbiAgICBuZXR3b3JrPzogTmV0d29yaztcbiAgICAvLyByZWNlaXB0czogUmVjb3JkPEhhc2gsIGFueT47XG4gICAgXG4gICAgYmxvY2tzKHNpbmNlOiBFcG9jaCwgbGltaXQ6IG51bWJlcik6IFByb21pc2U8QXJyYXk8W251bWJlciwgSGFzaC8qLCBQdWJsaWNLZXlIYXNoU3RyaW5nKi9dPj47XG4gICAgY29uc3RhbnRzKCk6IFByb21pc2U8Q29uc2Vuc3VzQ29uc3RhbnRzPjtcbiAgICBob2xkZXJzKGxpbWl0PzogbnVtYmVyKTogUHJvbWlzZTxSZWNvcmQ8UHVibGljS2V5SGFzaFN0cmluZywgQmFsYW5jZTI+PiBcbiAgICBtZW1wb29sKCk6IFByb21pc2U8TWVtcG9vbD47XG4gICAgcG93ZXJzKHBhcmFtcz86IFF1ZXJ5U3Rha2luZ1Bvd2Vycyk6IFByb21pc2U8QXJyYXk8U3Rha2luZ1Bvd2VyPj47XG4gICAgcHJpb3JpdGllcygpOiBQcm9taXNlPFByaW9yaXRpZXM+O1xuICAgIHByb3RvY29sSW5mbygpOiBQcm9taXNlPFByb3RvY29sSW5mbz47XG4gICAgc3Rha2VzKHBhcmFtczogUXVlcnlTdGFrZXMpOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PjsgXG4gICAgc3luY1N0YXR1cygpOiBQcm9taXNlPGFueT47XG4gICAgd2lwcygpOiBQcm9taXNlPFNpZ25hbGluZ0luZm8+O1xuXG4gICAgZ2V0QmFsYW5jZShwa2g6IFB1YmxpY0tleUhhc2hTdHJpbmcpOiBQcm9taXNlPEJhbGFuY2UyPjtcbiAgICBnZXRCbG9jayhibG9ja0hhc2g6IEhhc2gsIHNob3dUcmFuc2FjdGlvbkhhc2hlcz86IGJvb2xlYW4pOiBQcm9taXNlPEJsb2NrPjtcbiAgICBnZXREYXRhUmVxdWVzdChkclR4SGFzaDogSGFzaCk6IFByb21pc2U8RGF0YVJlcXVlc3RSZXBvcnQ+O1xuICAgIGdldFRyYW5zYWN0aW9uKHR4SGFzaDogSGFzaCk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXBvcnQ+O1xuICAgIGdldFRyYW5zYWN0aW9uUmVjZWlwdCh0eEhhc2g6IEhhc2gpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVjZWlwdD47XG4gICAgZ2V0U3VwZXJibG9jayhlcG9jaDogRXBvY2gpOiBQcm9taXNlPFN1cGVyYmxvY2tSZXBvcnQ+O1xuICAgIGdldFV0eG9JbmZvKHBraDogUHVibGljS2V5SGFzaFN0cmluZywgc21hbGxlc3RGaXJzdD86IGJvb2xlYW4pOiBQcm9taXNlPEFycmF5PFV0eG9NZXRhZGF0YT4+O1xuICAgICAgICBcbiAgICBzZW5kUmF3VHJhbnNhY3Rpb24odHg6IGFueSk6IFByb21pc2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBjbGFzcyBQcm92aWRlckVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIHJlYWRvbmx5IGVycm9yPzogYW55O1xuICAgIHJlYWRvbmx5IG1ldGhvZDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBhcmFtczogYW55W107XG4gICAgY29uc3RydWN0b3IobWV0aG9kOiBzdHJpbmcsIHBhcmFtczogYW55W10sIGVycm9yPzogYW55KSB7XG4gICAgICAgIHN1cGVyKGAke21ldGhvZH0oJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfSk6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfSlgKVxuICAgICAgICBkZWxldGUgZXJyb3I/LnN0YWNrXG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvclxuICAgICAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZFxuICAgICAgICB0aGlzLnBhcmFtcyA9IHBhcmFtc1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb3ZpZGVyIGltcGxlbWVudHMgSVByb3ZpZGVyIHtcbiAgICBcbiAgICBwdWJsaWMgbmV0d29yaz86IE5ldHdvcms7XG4gICAgcHVibGljIHN0YXRpYyByZWNlaXB0czogUmVjb3JkPEhhc2gsIFRyYW5zYWN0aW9uUmVjZWlwdD4gPSB7fTtcblxuICAgIHB1YmxpYyByZWFkb25seSBlbmRwb2ludHM6IHN0cmluZ1tdXG4gICAgXG4gICAgcHJvdGVjdGVkIF9jb25zdGFudHM/OiBDb25zZW5zdXNDb25zdGFudHNcbiAgICBwcm90ZWN0ZWQgX2hlYWRlcnM6IEF4aW9zSGVhZGVycztcbiAgICBcbiAgICBzdGF0aWMgYXN5bmMgaW5pdGlhbGl6ZWQodXJsPzogc3RyaW5nKTogUHJvbWlzZTxQcm92aWRlcj4ge1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IG5ldyBQcm92aWRlcih1cmwgfHwgXCJodHRwczovL3JwYy53aXRuZXQuaW9cIilcbiAgICAgICAgcmV0dXJuIHByb3ZpZGVyLmNvbnN0YW50cygpLnRoZW4oKCkgPT4gcHJvdmlkZXIpXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lbmRwb2ludHMgPSBbXVxuICAgICAgICBpZiAodXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybHMgPSB1cmwucmVwbGFjZUFsbCgnLCcsICc7Jykuc3BsaXQoJzsnKVxuICAgICAgICAgICAgdXJscy5mb3JFYWNoKHVybCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3NjaGVtYSwgXSA9IHV0aWxzLnBhcnNlVVJMKHVybClcbiAgICAgICAgICAgICAgICBpZiAoIXNjaGVtYS5zdGFydHNXaXRoKFwiaHR0cDovL1wiKSAmJiAhc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgV2l0bmV0LlByb3ZpZGVyOiB1bnN1cHBvcnRlZCBVUkwgc2NoZW1hICR7c2NoZW1hfWApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHRoaXMuZW5kcG9pbnRzID0gdXJsc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbmRwb2ludHMucHVzaChwcm9jZXNzLmVudi5XSVRORVRfVE9PTEtJVF9QUk9WSURFUl9VUkwgfHwgXCJodHRwczovL3JwYy0wMS53aXRuZXQuaW9cIilcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oZWFkZXJzID0gbmV3IEF4aW9zSGVhZGVycyh7IFxuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgXG4gICAgICAgIH0pXG4gICAgfVxuICAgIFxuICAgIHByb3RlY3RlZCBuZXh0VVJMKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVuZHBvaW50c1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLmVuZHBvaW50cy5sZW5ndGgpXVxuICAgIH1cbiAgICBcbiAgICBwcm90ZWN0ZWQgYXN5bmMgY2FsbEFwaU1ldGhvZDxUPihtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogQXJyYXk8YW55PiB8IGFueSApOiBQcm9taXNlPEVycm9yIHwgYW55PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMubmV4dFVSTCgpXG4gICAgICAgIHJldHVybiBheGlvc1xuICAgICAgICAgICAgLnBvc3QoXG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICAgICAgICAgIGlkOiArIG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB0aGlzLl9oZWFkZXJzLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5lcnJvciB8fCByZXNwb25zZT8uZGF0YT8uZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFByb3ZpZGVyRXJyb3IobWV0aG9kLCBwYXJhbXMsIHJlc3BvbnNlPy5lcnJvciB8fCByZXNwb25zZT8uZGF0YT8uZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiByZXNwb25zZT8uZGF0YT8ucmVzdWx0IGFzIFQ7XG4gICAgICAgICAgICB9KVxuICAgIH1cbiAgICBcbiAgICAvLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBcbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGxpc3Qgb2YgYmxvY2sgaGFzaGVzIHdpdGhpbiBnaXZlbiByYW5nZSwgYXMga25vd24gYnkgdGhlIHByb3ZpZGVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaW5jZSAtIEZpcnN0IGVwb2NoIGZvciB3aGljaCB0byByZXR1cm4gYmxvY2sgaGFzaGVzLiBJZiBuZWdhdGl2ZSwgcmV0dXJuIGJsb2NrIGhhc2hlcyBmcm9tIHRoZSBsYXN0IG4gZXBvY2hzLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBOdW1iZXIgb2YgYmxvY2sgaGFzaGVzIHRvIHJldHVybi4gSWYgbmVnYXRpdmUsIHJldHVybiB0aGUgbGFzdCBuIGJsb2NrIGhhc2hlcyBmcm9tIHRoaXMgZXBvY2ggcmFuZ2UuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGJsb2NrcyhzaW5jZTogbnVtYmVyID0gLTEsIGxpbWl0OiBudW1iZXIgPSAxLCk6IFByb21pc2U8QXJyYXk8W251bWJlciwgSGFzaF0+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxBcGlNZXRob2Q8W051bWJlciwgSGFzaF0+KE1ldGhvZHMuR2V0QmxvY2tDaGFpbiwgW3NpbmNlLCBsaW1pdCwgXSk7XG4gICAgfVxuICAgIFxuICAgIC8vLyBHZXQgY29uc2Vuc3VzIGNvbnN0YW50cyB1c2VkIGJ5IHRoZSBub2RlXG4gICAgcHVibGljIGFzeW5jIGNvbnN0YW50cygpOiBQcm9taXNlPENvbnNlbnN1c0NvbnN0YW50cz4ge1xuICAgICAgICBpZiAoIXRoaXMuX2NvbnN0YW50cykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgICAgICAgICAgICAuY2FsbEFwaU1ldGhvZDxDb25zZW5zdXNDb25zdGFudHM+KE1ldGhvZHMuR2V0Q29uc2Vuc3VzQ29uc3RhbnRzKVxuICAgICAgICAgICAgICAgIC50aGVuKChjb25zdGFudHM6IENvbnNlbnN1c0NvbnN0YW50cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ldHdvcmsgPSBjb25zdGFudHMuYm9vdHN0cmFwcGluZ19jb21taXR0ZWVbMF0uc3RhcnRzV2l0aCgnd2l0JykgPyBcIm1haW5uZXRcIjogXCJ0ZXN0bmV0XCJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uc3RhbnRzID0gY29uc3RhbnRzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25zdGFudHNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0YW50c1xuICAgICAgICB9ICAgIFxuICAgIH1cblxuICAgIC8vLyBHZXQgbGltaXRlZCBsaXN0IG9mIGN1cnJlbnRseSB0b3AgaG9sZGVycywgYXMga25vd24gYnkgdGhlIHByb3ZpZGVyLlxuICAgIHB1YmxpYyBhc3luYyBob2xkZXJzKG1pbkJhbGFuY2UgPSAwLCBtYXhCYWxhbmNlPzogbnVtYmVyKTogUHJvbWlzZTxSZWNvcmQ8UHVibGljS2V5SGFzaFN0cmluZywgQmFsYW5jZTI+PiB7XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICAgICAgICAuY2FsbEFwaU1ldGhvZDxSZWNvcmQ8UHVibGljS2V5SGFzaFN0cmluZywgQmFsYW5jZT4+KE1ldGhvZHMuR2V0QmFsYW5jZTIsIHtcbiAgICAgICAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgICAgICAgICAgbWluQmFsYW5jZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uIG1heEJhbGFuY2UgPyB7IG1heEJhbGFuY2UgfSA6IHt9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkudGhlbigoYmFsYW5jZXM6IFJlY29yZDxQdWJsaWNLZXlIYXNoU3RyaW5nLCBCYWxhbmNlMj4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXZlcnNlQ29tcGFyZSA9IChhOiBCYWxhbmNlMiwgYjogQmFsYW5jZTIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYV90b3QgPSBhLmxvY2tlZCArIGEudW5sb2NrZWQgKyBhLnN0YWtlZFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBiX3RvdCA9IGIubG9ja2VkICsgYi51bmxvY2tlZCArIGIuc3Rha2VkXG4gICAgICAgICAgICAgICAgICAgIGlmIChhX3RvdCA8IGJfdG90KSByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYV90b3QgPiBiX3RvdCkgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhiYWxhbmNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KChhOiAoc3RyaW5nIHwgQmFsYW5jZTIpW10sIGI6IChzdHJpbmcgfCBCYWxhbmNlMilbXSkgPT4gcmV2ZXJzZUNvbXBhcmUoYVsxXSBhcyBCYWxhbmNlMiwgYlsxXSBhcyBCYWxhbmNlMikpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgfVxuICAgIFxuICAgIC8vLyBHZXQgbGlzdCBvZiBrbm93biBwZWVyc1xuICAgIHB1YmxpYyBhc3luYyBrbm93blBlZXJzKCk6IFByb21pc2U8QXJyYXk8UGVlckFkZHI+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxBcGlNZXRob2Q8QXJyYXk8UGVlckFkZHI+PihNZXRob2RzLktub3duUGVlcnMpO1xuICAgIH1cbiAgICBcbiAgICAvLy8gR2V0IGFsbCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbnNcbiAgICBwdWJsaWMgYXN5bmMgbWVtcG9vbCgpOiBQcm9taXNlPE1lbXBvb2w+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEFwaU1ldGhvZDxNZW1wb29sPihNZXRob2RzLkdldE1lbXBvb2wpO1xuICAgIH0gICAgXG4gICAgXG4gICAgLy8vIEdldCBwcmlvcml0eSBhbmQgdGltZS10by1ibG9jayBlc3RpbWF0aW9ucyBmb3IgZGlmZmVyZW50IHByaW9yaXR5IHRpZXJzLlxuICAgIHB1YmxpYyBhc3luYyBwcmlvcml0aWVzKCk6IFByb21pc2U8UHJpb3JpdGllcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsQXBpTWV0aG9kPFByaW9yaXRpZXM+KE1ldGhvZHMuUHJpb3JpdHkpXG4gICAgfVxuICAgIFxuICAgIC8vLyBHZXQgaW5mb3JtYXRpb24gYWJvdXQgcHJvdG9jb2wgdmVyc2lvbnMgYW5kIHdoaWNoIHZlcnNpb24gaXMgY3VycmVudGx5IGJlaW5nIGVuZm9yY2VkLlxuICAgIHB1YmxpYyBhc3luYyBwcm90b2NvbEluZm8oKTogUHJvbWlzZTxQcm90b2NvbEluZm8+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEFwaU1ldGhvZDxQcm90b2NvbEluZm8+KE1ldGhvZHMuUHJvdG9jb2wpXG4gICAgfVxuICAgIFxuICAgIC8vLyBHZXQgYSBmdWxsIGxpc3Qgb2Ygc3Rha2luZyBwb3dlcnMgb3JkZXJlZCBieSByYW5rXG4gICAgcHVibGljIGFzeW5jIHBvd2VycyhxdWVyeT86IFF1ZXJ5U3Rha2luZ1Bvd2Vycyk6IFByb21pc2U8QXJyYXk8U3Rha2luZ1Bvd2VyPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsQXBpTWV0aG9kPEFycmF5PFN0YWtpbmdQb3dlcj4+KE1ldGhvZHMuUXVlcnlTdGFraW5nUG93ZXJzLCBxdWVyeSlcbiAgICB9XG4gICAgXG4gICAgLy8vIEdldCBhIGZ1bGwgbGlzdCBvZiBjdXJyZW50IHN0YWtlIGVudHJpZXMgIFF1ZXJ5IHRoZSBhbW91bnQgb2YgbmFub3dpdHMgc3Rha2VkIGJ5IGFuIGFkZHJlc3MuXG4gICAgcHVibGljIGFzeW5jIHN0YWtlcyhxdWVyeT86IFF1ZXJ5U3Rha2VzKTogUHJvbWlzZTxBcnJheTxTdGFrZUVudHJ5Pj4ge1xuICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgICAgICAgLmNhbGxBcGlNZXRob2Q8QXJyYXk8U3Rha2VFbnRyeT4+KE1ldGhvZHMuUXVlcnlTdGFrZXMsIHF1ZXJ5KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycj8uZXJyb3I/Lm1lc3NhZ2UgJiYgZXJyLmVycm9yLm1lc3NhZ2UuaW5kZXhPZihcIm5vdCByZWdpc3RlcmVkXCIpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICB9XG4gICAgXG4gICAgLy8vIEdldCBub2RlIHN0YXR1c1xuICAgIHB1YmxpYyBhc3luYyBzeW5jU3RhdHVzKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxBcGlNZXRob2Q8U3luY1N0YXR1cz4oTWV0aG9kcy5TeW5jU3RhdHVzKTtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIGFzeW5jIHdpcHMoKTogUHJvbWlzZTxTaWduYWxpbmdJbmZvPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxBcGlNZXRob2Q8U2lnbmFsaW5nSW5mbz4oTWV0aG9kcy5TaWduYWxpbmdJbmZvKVxuICAgIH1cbiAgICBcbiAgICAvLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8vIEdldCBiYWxhbmNlXG4gICAgcHVibGljIGFzeW5jIGdldEJhbGFuY2UocGtoOiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogUHJvbWlzZTxCYWxhbmNlMj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsQXBpTWV0aG9kPEJhbGFuY2UyPihNZXRob2RzLkdldEJhbGFuY2UyLCB7IHBraCB9KTtcbiAgICB9XG4gICAgXG4gICAgLyoqXG4gICAgICogR2V0IGJsb2NrIGluZm8gYnkgaGFzaFxuICAgICAqIEBwYXJhbSB7SGFzaH0gYmxvY2tIYXNoIC0gSGFzaCBvZiB0aGUgYmxvY2sgdGhhdCB3ZSBhcmUgcXVlcnlpbmcuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBzaG93VHJhbnNhY3Rpb25IYXNoIC0gV2hldGhlciB0byBpbmNsdWRlIGFuIGV4dHJhIGZpZWxkIGNvbnRhaW5pbmcgYXJyYXkgb2YgdHJhbnNhY3Rpb24gaGFzaGVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBnZXRCbG9jayhcbiAgICAgICAgICAgIGJsb2NrSGFzaDogSGFzaCxcbiAgICAgICAgICAgIHNob3dUcmFuc2FjdGlvbkhhc2ggPSBmYWxzZSxcbiAgICAgICAgKTogUHJvbWlzZTxCbG9jaz5cbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxBcGlNZXRob2Q8QmxvY2s+KE1ldGhvZHMuR2V0QmxvY2ssIFtibG9ja0hhc2gsIHNob3dUcmFuc2FjdGlvbkhhc2gsIF0pXG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBhc3luYyBnZXREYXRhUmVxdWVzdChkclR4SGFzaDogSGFzaCk6IFByb21pc2U8RGF0YVJlcXVlc3RSZXBvcnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEFwaU1ldGhvZDxEYXRhUmVxdWVzdFJlcG9ydD4oTWV0aG9kcy5EYXRhUmVxdWVzdFJlcG9ydCwgW2RyVHhIYXNoLCBdKVxuICAgIH1cbiAgICBcbiAgICAvLy8gR2V0IHRoZSBibG9ja3MgdGhhdCBwZXJ0YWluIHRvIHRoZSBzdXBlcmJsb2NrIGluZGV4XG4gICAgcHVibGljIGFzeW5jIGdldFN1cGVyYmxvY2soZXBvY2g6IEVwb2NoKTogUHJvbWlzZTxTdXBlcmJsb2NrUmVwb3J0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxBcGlNZXRob2Q8U3VwZXJibG9ja1JlcG9ydD4oTWV0aG9kcy5HZXRTdXBlcmJsb2NrLCB7IFwiYmxvY2tfZXBvY2hcIjogZXBvY2ggfSk7XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbih0eEhhc2g6IEhhc2gpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVwb3J0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxBcGlNZXRob2Q8VHJhbnNhY3Rpb25SZXBvcnQ+KE1ldGhvZHMuR2V0VHJhbnNhY3Rpb24sIFt0eEhhc2gsIF0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvblJlY2VpcHQodHhIYXNoOiBIYXNoKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlY2VpcHQ+IHtcbiAgICAgICAgLy8gdG9kbzogZmV0Y2gvdXBkYXRlIHJlY2VpcHQgZnJvbSBwcm92aWRlciwgaWYgbm90IGNhY2hlZFxuICAgICAgICByZXR1cm4gUHJvdmlkZXIucmVjZWlwdHNbdHhIYXNoXVxuICAgIH1cbiAgICBcbiAgICAvLy8gR2V0IHV0eG9zXG4gICAgcHVibGljIGdldFV0eG9JbmZvKHBraDogUHVibGljS2V5SGFzaFN0cmluZywgc21hbGxGaXJzdCA9IHRydWUpOiBQcm9taXNlPEFycmF5PFV0eG9NZXRhZGF0YT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgICAgICAgIC5jYWxsQXBpTWV0aG9kPFV0eG9JbmZvPihNZXRob2RzLkdldFV0eG9JbmZvLCBbcGtoLCBdKVxuICAgICAgICAgICAgLnRoZW4oKHJlc3VsdDogVXR4b0luZm8pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnZlcnNvciA9IHNtYWxsRmlyc3QgPyAxIDogLTFcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnV0eG9zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEudmFsdWUgPiBiLnZhbHVlKSByZXR1cm4gaW52ZXJzb3I7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGEudmFsdWUgPCBiLnZhbHVlKSByZXR1cm4gLSBpbnZlcnNvcjtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICB9XG4gICAgXG4gICAgLy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBhc3luYyBzZW5kUmF3VHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsQXBpTWV0aG9kPGJvb2xlYW4+KE1ldGhvZHMuSW52ZW50b3J5LCB7IHRyYW5zYWN0aW9uIH0pXG4gICAgfVxufSJdfQ==
@@ -1,18 +0,0 @@
1
- import { IProvider, Provider } from "./provider";
2
- import { DataRequestReport, PeerAddr, SupplyInfo } from "./types";
3
- import { Hash } from "../types";
4
- export interface IReporter extends IProvider {
5
- providers(): Promise<Array<string>>;
6
- supplyInfo(): Promise<SupplyInfo>;
7
- getDataRequest(drTxHash: Hash, channel?: string): Promise<DataRequestReport>;
8
- searchDataRequests(radHash: Hash): Promise<any>;
9
- }
10
- export declare class Reporter extends Provider implements IReporter {
11
- constructor(url?: string);
12
- peers(): Promise<Array<PeerAddr>>;
13
- providers(): Promise<Array<string>>;
14
- supplyInfo(): Promise<SupplyInfo>;
15
- reportDataRequest(drTxHash: Hash, channel?: string): Promise<DataRequestReport>;
16
- searchDataRequests(radHash: Hash): Promise<any>;
17
- }
18
- //# sourceMappingURL=reporter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../src/lib/rpc/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAW,QAAQ,EAAE,UAAU,EAAG,MAAM,SAAS,CAAA;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B,MAAM,WAAW,SAAU,SAAQ,SAAS;IACxC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IACnC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAElC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC5E,kBAAkB,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACnD;AAED,qBAAa,QAAS,SAAQ,QAAS,YAAW,SAAS;gBAC3C,GAAG,CAAC,EAAE,MAAM;IAKjB,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAI3B,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAKnC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAKjC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI/E,kBAAkB,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;CAG/D"}