@ecency/hive-tx 7.1.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 (214) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +206 -0
  3. package/dist/browser/hive-tx.min.js +3 -0
  4. package/dist/browser/hive-tx.min.js.LICENSE.txt +5 -0
  5. package/dist/browser/hive-tx.min.js.map +1 -0
  6. package/dist/cjs/Transaction.d.ts +71 -0
  7. package/dist/cjs/Transaction.d.ts.map +1 -0
  8. package/dist/cjs/Transaction.js +199 -0
  9. package/dist/cjs/Transaction.js.map +1 -0
  10. package/dist/cjs/config.d.ts +37 -0
  11. package/dist/cjs/config.d.ts.map +1 -0
  12. package/dist/cjs/config.js +54 -0
  13. package/dist/cjs/config.js.map +1 -0
  14. package/dist/cjs/helpers/Asset.d.ts +21 -0
  15. package/dist/cjs/helpers/Asset.d.ts.map +1 -0
  16. package/dist/cjs/helpers/Asset.js +74 -0
  17. package/dist/cjs/helpers/Asset.js.map +1 -0
  18. package/dist/cjs/helpers/ByteBuffer.d.ts +75 -0
  19. package/dist/cjs/helpers/ByteBuffer.d.ts.map +1 -0
  20. package/dist/cjs/helpers/ByteBuffer.js +555 -0
  21. package/dist/cjs/helpers/ByteBuffer.js.map +1 -0
  22. package/dist/cjs/helpers/HexBuffer.d.ts +10 -0
  23. package/dist/cjs/helpers/HexBuffer.d.ts.map +1 -0
  24. package/dist/cjs/helpers/HexBuffer.js +33 -0
  25. package/dist/cjs/helpers/HexBuffer.js.map +1 -0
  26. package/dist/cjs/helpers/PrivateKey.d.ts +114 -0
  27. package/dist/cjs/helpers/PrivateKey.d.ts.map +1 -0
  28. package/dist/cjs/helpers/PrivateKey.js +212 -0
  29. package/dist/cjs/helpers/PrivateKey.js.map +1 -0
  30. package/dist/cjs/helpers/PublicKey.d.ts +47 -0
  31. package/dist/cjs/helpers/PublicKey.d.ts.map +1 -0
  32. package/dist/cjs/helpers/PublicKey.js +97 -0
  33. package/dist/cjs/helpers/PublicKey.js.map +1 -0
  34. package/dist/cjs/helpers/Signature.d.ts +38 -0
  35. package/dist/cjs/helpers/Signature.d.ts.map +1 -0
  36. package/dist/cjs/helpers/Signature.js +85 -0
  37. package/dist/cjs/helpers/Signature.js.map +1 -0
  38. package/dist/cjs/helpers/aes.d.ts +15 -0
  39. package/dist/cjs/helpers/aes.d.ts.map +1 -0
  40. package/dist/cjs/helpers/aes.js +87 -0
  41. package/dist/cjs/helpers/aes.js.map +1 -0
  42. package/dist/cjs/helpers/call.d.ts +119 -0
  43. package/dist/cjs/helpers/call.d.ts.map +1 -0
  44. package/dist/cjs/helpers/call.js +498 -0
  45. package/dist/cjs/helpers/call.js.map +1 -0
  46. package/dist/cjs/helpers/deserializer.d.ts +4 -0
  47. package/dist/cjs/helpers/deserializer.d.ts.map +1 -0
  48. package/dist/cjs/helpers/deserializer.js +58 -0
  49. package/dist/cjs/helpers/deserializer.js.map +1 -0
  50. package/dist/cjs/helpers/memo.d.ts +36 -0
  51. package/dist/cjs/helpers/memo.d.ts.map +1 -0
  52. package/dist/cjs/helpers/memo.js +167 -0
  53. package/dist/cjs/helpers/memo.js.map +1 -0
  54. package/dist/cjs/helpers/serializer.d.ts +14 -0
  55. package/dist/cjs/helpers/serializer.d.ts.map +1 -0
  56. package/dist/cjs/helpers/serializer.js +639 -0
  57. package/dist/cjs/helpers/serializer.js.map +1 -0
  58. package/dist/cjs/helpers/sleep.d.ts +2 -0
  59. package/dist/cjs/helpers/sleep.d.ts.map +1 -0
  60. package/dist/cjs/helpers/sleep.js +8 -0
  61. package/dist/cjs/helpers/sleep.js.map +1 -0
  62. package/dist/cjs/helpers/utils.d.ts +122 -0
  63. package/dist/cjs/helpers/utils.d.ts.map +1 -0
  64. package/dist/cjs/helpers/utils.js +202 -0
  65. package/dist/cjs/helpers/utils.js.map +1 -0
  66. package/dist/cjs/index.d.ts +10 -0
  67. package/dist/cjs/index.d.ts.map +1 -0
  68. package/dist/cjs/index.js +60 -0
  69. package/dist/cjs/index.js.map +1 -0
  70. package/dist/cjs/type_generators/types/balance.d.ts +1096 -0
  71. package/dist/cjs/type_generators/types/balance.d.ts.map +1 -0
  72. package/dist/cjs/type_generators/types/balance.js +3 -0
  73. package/dist/cjs/type_generators/types/balance.js.map +1 -0
  74. package/dist/cjs/type_generators/types/hafah.d.ts +2154 -0
  75. package/dist/cjs/type_generators/types/hafah.d.ts.map +1 -0
  76. package/dist/cjs/type_generators/types/hafah.js +3 -0
  77. package/dist/cjs/type_generators/types/hafah.js.map +1 -0
  78. package/dist/cjs/type_generators/types/hafbe.d.ts +2121 -0
  79. package/dist/cjs/type_generators/types/hafbe.d.ts.map +1 -0
  80. package/dist/cjs/type_generators/types/hafbe.js +3 -0
  81. package/dist/cjs/type_generators/types/hafbe.js.map +1 -0
  82. package/dist/cjs/type_generators/types/hafsql.d.ts +2439 -0
  83. package/dist/cjs/type_generators/types/hafsql.d.ts.map +1 -0
  84. package/dist/cjs/type_generators/types/hafsql.js +3 -0
  85. package/dist/cjs/type_generators/types/hafsql.js.map +1 -0
  86. package/dist/cjs/type_generators/types/hivemind.d.ts +202 -0
  87. package/dist/cjs/type_generators/types/hivemind.d.ts.map +1 -0
  88. package/dist/cjs/type_generators/types/hivemind.js +3 -0
  89. package/dist/cjs/type_generators/types/hivemind.js.map +1 -0
  90. package/dist/cjs/type_generators/types/hivesense.d.ts +448 -0
  91. package/dist/cjs/type_generators/types/hivesense.d.ts.map +1 -0
  92. package/dist/cjs/type_generators/types/hivesense.js +3 -0
  93. package/dist/cjs/type_generators/types/hivesense.js.map +1 -0
  94. package/dist/cjs/type_generators/types/nft-tracker.d.ts +348 -0
  95. package/dist/cjs/type_generators/types/nft-tracker.d.ts.map +1 -0
  96. package/dist/cjs/type_generators/types/nft-tracker.js +3 -0
  97. package/dist/cjs/type_generators/types/nft-tracker.js.map +1 -0
  98. package/dist/cjs/type_generators/types/reputation.d.ts +182 -0
  99. package/dist/cjs/type_generators/types/reputation.d.ts.map +1 -0
  100. package/dist/cjs/type_generators/types/reputation.js +3 -0
  101. package/dist/cjs/type_generators/types/reputation.js.map +1 -0
  102. package/dist/cjs/type_generators/types/status.d.ts +139 -0
  103. package/dist/cjs/type_generators/types/status.d.ts.map +1 -0
  104. package/dist/cjs/type_generators/types/status.js +3 -0
  105. package/dist/cjs/type_generators/types/status.js.map +1 -0
  106. package/dist/cjs/types.d.ts +415 -0
  107. package/dist/cjs/types.d.ts.map +1 -0
  108. package/dist/cjs/types.js +3 -0
  109. package/dist/cjs/types.js.map +1 -0
  110. package/dist/esm/Transaction.d.ts +71 -0
  111. package/dist/esm/Transaction.d.ts.map +1 -0
  112. package/dist/esm/Transaction.js +195 -0
  113. package/dist/esm/Transaction.js.map +1 -0
  114. package/dist/esm/config.d.ts +37 -0
  115. package/dist/esm/config.d.ts.map +1 -0
  116. package/dist/esm/config.js +51 -0
  117. package/dist/esm/config.js.map +1 -0
  118. package/dist/esm/helpers/Asset.d.ts +21 -0
  119. package/dist/esm/helpers/Asset.d.ts.map +1 -0
  120. package/dist/esm/helpers/Asset.js +70 -0
  121. package/dist/esm/helpers/Asset.js.map +1 -0
  122. package/dist/esm/helpers/ByteBuffer.d.ts +75 -0
  123. package/dist/esm/helpers/ByteBuffer.d.ts.map +1 -0
  124. package/dist/esm/helpers/ByteBuffer.js +551 -0
  125. package/dist/esm/helpers/ByteBuffer.js.map +1 -0
  126. package/dist/esm/helpers/HexBuffer.d.ts +10 -0
  127. package/dist/esm/helpers/HexBuffer.d.ts.map +1 -0
  128. package/dist/esm/helpers/HexBuffer.js +29 -0
  129. package/dist/esm/helpers/HexBuffer.js.map +1 -0
  130. package/dist/esm/helpers/PrivateKey.d.ts +114 -0
  131. package/dist/esm/helpers/PrivateKey.d.ts.map +1 -0
  132. package/dist/esm/helpers/PrivateKey.js +205 -0
  133. package/dist/esm/helpers/PrivateKey.js.map +1 -0
  134. package/dist/esm/helpers/PublicKey.d.ts +47 -0
  135. package/dist/esm/helpers/PublicKey.d.ts.map +1 -0
  136. package/dist/esm/helpers/PublicKey.js +90 -0
  137. package/dist/esm/helpers/PublicKey.js.map +1 -0
  138. package/dist/esm/helpers/Signature.d.ts +38 -0
  139. package/dist/esm/helpers/Signature.d.ts.map +1 -0
  140. package/dist/esm/helpers/Signature.js +81 -0
  141. package/dist/esm/helpers/Signature.js.map +1 -0
  142. package/dist/esm/helpers/aes.d.ts +15 -0
  143. package/dist/esm/helpers/aes.d.ts.map +1 -0
  144. package/dist/esm/helpers/aes.js +81 -0
  145. package/dist/esm/helpers/aes.js.map +1 -0
  146. package/dist/esm/helpers/call.d.ts +119 -0
  147. package/dist/esm/helpers/call.d.ts.map +1 -0
  148. package/dist/esm/helpers/call.js +490 -0
  149. package/dist/esm/helpers/call.js.map +1 -0
  150. package/dist/esm/helpers/deserializer.d.ts +4 -0
  151. package/dist/esm/helpers/deserializer.d.ts.map +1 -0
  152. package/dist/esm/helpers/deserializer.js +55 -0
  153. package/dist/esm/helpers/deserializer.js.map +1 -0
  154. package/dist/esm/helpers/memo.d.ts +36 -0
  155. package/dist/esm/helpers/memo.d.ts.map +1 -0
  156. package/dist/esm/helpers/memo.js +128 -0
  157. package/dist/esm/helpers/memo.js.map +1 -0
  158. package/dist/esm/helpers/serializer.d.ts +14 -0
  159. package/dist/esm/helpers/serializer.d.ts.map +1 -0
  160. package/dist/esm/helpers/serializer.js +636 -0
  161. package/dist/esm/helpers/serializer.js.map +1 -0
  162. package/dist/esm/helpers/sleep.d.ts +2 -0
  163. package/dist/esm/helpers/sleep.d.ts.map +1 -0
  164. package/dist/esm/helpers/sleep.js +4 -0
  165. package/dist/esm/helpers/sleep.js.map +1 -0
  166. package/dist/esm/helpers/utils.d.ts +122 -0
  167. package/dist/esm/helpers/utils.d.ts.map +1 -0
  168. package/dist/esm/helpers/utils.js +196 -0
  169. package/dist/esm/helpers/utils.js.map +1 -0
  170. package/dist/esm/index.d.ts +10 -0
  171. package/dist/esm/index.d.ts.map +1 -0
  172. package/dist/esm/index.js +11 -0
  173. package/dist/esm/index.js.map +1 -0
  174. package/dist/esm/type_generators/types/balance.d.ts +1096 -0
  175. package/dist/esm/type_generators/types/balance.d.ts.map +1 -0
  176. package/dist/esm/type_generators/types/balance.js +2 -0
  177. package/dist/esm/type_generators/types/balance.js.map +1 -0
  178. package/dist/esm/type_generators/types/hafah.d.ts +2154 -0
  179. package/dist/esm/type_generators/types/hafah.d.ts.map +1 -0
  180. package/dist/esm/type_generators/types/hafah.js +2 -0
  181. package/dist/esm/type_generators/types/hafah.js.map +1 -0
  182. package/dist/esm/type_generators/types/hafbe.d.ts +2121 -0
  183. package/dist/esm/type_generators/types/hafbe.d.ts.map +1 -0
  184. package/dist/esm/type_generators/types/hafbe.js +2 -0
  185. package/dist/esm/type_generators/types/hafbe.js.map +1 -0
  186. package/dist/esm/type_generators/types/hafsql.d.ts +2439 -0
  187. package/dist/esm/type_generators/types/hafsql.d.ts.map +1 -0
  188. package/dist/esm/type_generators/types/hafsql.js +2 -0
  189. package/dist/esm/type_generators/types/hafsql.js.map +1 -0
  190. package/dist/esm/type_generators/types/hivemind.d.ts +202 -0
  191. package/dist/esm/type_generators/types/hivemind.d.ts.map +1 -0
  192. package/dist/esm/type_generators/types/hivemind.js +2 -0
  193. package/dist/esm/type_generators/types/hivemind.js.map +1 -0
  194. package/dist/esm/type_generators/types/hivesense.d.ts +448 -0
  195. package/dist/esm/type_generators/types/hivesense.d.ts.map +1 -0
  196. package/dist/esm/type_generators/types/hivesense.js +2 -0
  197. package/dist/esm/type_generators/types/hivesense.js.map +1 -0
  198. package/dist/esm/type_generators/types/nft-tracker.d.ts +348 -0
  199. package/dist/esm/type_generators/types/nft-tracker.d.ts.map +1 -0
  200. package/dist/esm/type_generators/types/nft-tracker.js +2 -0
  201. package/dist/esm/type_generators/types/nft-tracker.js.map +1 -0
  202. package/dist/esm/type_generators/types/reputation.d.ts +182 -0
  203. package/dist/esm/type_generators/types/reputation.d.ts.map +1 -0
  204. package/dist/esm/type_generators/types/reputation.js +2 -0
  205. package/dist/esm/type_generators/types/reputation.js.map +1 -0
  206. package/dist/esm/type_generators/types/status.d.ts +139 -0
  207. package/dist/esm/type_generators/types/status.d.ts.map +1 -0
  208. package/dist/esm/type_generators/types/status.js +2 -0
  209. package/dist/esm/type_generators/types/status.js.map +1 -0
  210. package/dist/esm/types.d.ts +415 -0
  211. package/dist/esm/types.d.ts.map +1 -0
  212. package/dist/esm/types.js +2 -0
  213. package/dist/esm/types.js.map +1 -0
  214. package/package.json +83 -0
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cryptoJsEncrypt = exports.decrypt = exports.encrypt = void 0;
4
+ const ByteBuffer_1 = require("./ByteBuffer");
5
+ const aes_js_1 = require("@noble/ciphers/aes.js");
6
+ const secp256k1_js_1 = require("@noble/curves/secp256k1.js");
7
+ const sha2_js_1 = require("@noble/hashes/sha2.js");
8
+ const encrypt = (privateKey, publicKey, message, nonce = uniqueNonce()) => crypt(privateKey, publicKey, nonce, message);
9
+ exports.encrypt = encrypt;
10
+ const decrypt = (privateKey, publicKey, nonce, message, checksum) => {
11
+ const d = crypt(privateKey, publicKey, nonce, message, checksum);
12
+ return d.message;
13
+ };
14
+ exports.decrypt = decrypt;
15
+ /**
16
+ * @arg message - Encrypted or plain text message (see checksum)
17
+ * @arg checksum - shared secret checksum (null to encrypt, non-null to decrypt)
18
+ */
19
+ const crypt = (privateKey, publicKey, nonce, message, checksum) => {
20
+ const nonceL = typeof nonce === 'bigint' ? nonce : BigInt(nonce);
21
+ const S = privateKey.getSharedSecret(publicKey);
22
+ let ebuf = new ByteBuffer_1.ByteBuffer(ByteBuffer_1.ByteBuffer.DEFAULT_CAPACITY, ByteBuffer_1.ByteBuffer.LITTLE_ENDIAN);
23
+ ebuf.writeUint64(nonceL);
24
+ ebuf.append(S);
25
+ ebuf.flip();
26
+ const encryptionKey = (0, sha2_js_1.sha512)(new Uint8Array(ebuf.toBuffer()));
27
+ const iv = encryptionKey.subarray(32, 48);
28
+ const tag = encryptionKey.subarray(0, 32);
29
+ // check if first 64 bit of sha256 hash treated as uint64_t truncated to 32 bits.
30
+ const check = (0, sha2_js_1.sha256)(encryptionKey).subarray(0, 4);
31
+ const cbuf = new ByteBuffer_1.ByteBuffer(ByteBuffer_1.ByteBuffer.DEFAULT_CAPACITY, ByteBuffer_1.ByteBuffer.LITTLE_ENDIAN);
32
+ cbuf.append(check);
33
+ cbuf.flip();
34
+ const check32 = cbuf.readUint32();
35
+ if (checksum) {
36
+ if (check32 !== checksum) {
37
+ throw new Error('Invalid key');
38
+ }
39
+ message = cryptoJsDecrypt(message, tag, iv);
40
+ }
41
+ else {
42
+ message = (0, exports.cryptoJsEncrypt)(message, tag, iv);
43
+ }
44
+ return { nonce: nonceL, message, checksum: check32 };
45
+ };
46
+ /**
47
+ * This method does not use a checksum, the returned data must be validated some other way.
48
+ * @arg {string|Uint8Array} ciphertext - binary format
49
+ * @return {Uint8Array} the decrypted message
50
+ */
51
+ const cryptoJsDecrypt = (message, tag, iv) => {
52
+ let messageBuffer = message;
53
+ const decipher = (0, aes_js_1.cbc)(tag, iv);
54
+ messageBuffer = decipher.decrypt(messageBuffer);
55
+ // return Uint8Array.from(messageBuffer)
56
+ return messageBuffer;
57
+ };
58
+ /**
59
+ * This method does not use a checksum, the returned data must be validated some other way.
60
+ * @arg {string|Uint8Array} plaintext - binary format
61
+ * @return {Uint8Array} binary
62
+ */
63
+ const cryptoJsEncrypt = (message, tag, iv) => {
64
+ let messageBuffer = message;
65
+ const cipher = (0, aes_js_1.cbc)(tag, iv);
66
+ messageBuffer = cipher.encrypt(messageBuffer);
67
+ // return Uint8Array.from(messageBuffer)
68
+ return messageBuffer;
69
+ };
70
+ exports.cryptoJsEncrypt = cryptoJsEncrypt;
71
+ /** @return {string} unique 64 bit unsigned number string. Being time based,
72
+ * this is careful to never choose the same nonce twice. This value could
73
+ * clsbe recorded in the blockchain for a long time.
74
+ */
75
+ let uniqueNonceEntropy = null;
76
+ const uniqueNonce = () => {
77
+ if (uniqueNonceEntropy === null) {
78
+ const randomPrivateKey = secp256k1_js_1.secp256k1.utils.randomSecretKey();
79
+ uniqueNonceEntropy = Math.round((randomPrivateKey[0] << 8) | randomPrivateKey[1]);
80
+ }
81
+ let long = BigInt(Date.now());
82
+ const entropy = ++uniqueNonceEntropy % 0xffff;
83
+ long = (long << BigInt(16)) | BigInt(entropy);
84
+ return long;
85
+ };
86
+ // const toLongObj = (o) => (o ? (Long.isLong(o) ? o : Long.fromString(o)) : o)
87
+ //# sourceMappingURL=aes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aes.js","sourceRoot":"","sources":["../../../src/helpers/aes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ import { APIMethods, APIPaths } from '../types';
2
+ export declare class RPCError extends Error {
3
+ name: string;
4
+ data?: any;
5
+ code: number;
6
+ stack: undefined;
7
+ constructor(rpcError: {
8
+ message: string;
9
+ code: number;
10
+ data?: any;
11
+ });
12
+ }
13
+ /**
14
+ * Makes API calls to Hive blockchain nodes with automatic retry and failover support.
15
+ * Uses per-request retry counters, node health tracking, jitter between retries,
16
+ * and HTTP status awareness (429 rate limiting, 503).
17
+ *
18
+ * If the current node fails, it will automatically try the next healthy node.
19
+ * When all nodes have been tried, wraps around to give earlier nodes another chance
20
+ * until the full retry budget (config.retry) is exhausted.
21
+ * RPCErrors (valid blockchain rejections) are never retried.
22
+ *
23
+ * @param method - The API method name (e.g., 'condenser_api.get_accounts')
24
+ * @param params - Parameters for the API method as array or object
25
+ * @param timeout - Request timeout in milliseconds (default: config.timeout)
26
+ * @param retry - Maximum number of retry attempts (default: config.retry)
27
+ * @returns Promise resolving to the API response
28
+ * @throws {RPCError} On blockchain-level errors (bad params, missing authority, etc.)
29
+ * @throws {Error} If all retry attempts fail
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * import { callRPC } from 'hive-tx'
34
+ *
35
+ * // Get account information
36
+ * const accounts = await callRPC('condenser_api.get_accounts', [['alice']])
37
+ *
38
+ * // Custom timeout and retry settings
39
+ * const data = await callRPC('condenser_api.get_content', ['alice', 'test-post'], 10_000, 5)
40
+ * ```
41
+ */
42
+ export declare const callRPC: <T = any>(method: string, params?: any[] | object, timeout?: number, retry?: number) => Promise<T>;
43
+ /**
44
+ * Broadcast-safe RPC call. Only retries on pre-connection errors where the
45
+ * request definitively never reached the server (ECONNREFUSED, ENOTFOUND, etc.).
46
+ * On timeouts, HTTP errors, or any ambiguous failure, throws immediately to
47
+ * prevent double-broadcasting transactions.
48
+ *
49
+ * Tries each node once (no wrap-around) since broadcast retries are dangerous.
50
+ *
51
+ * @internal Used by Transaction.broadcast()
52
+ */
53
+ export declare const callRPCBroadcast: <T = any>(method: string, params?: any[] | object, timeout?: number) => Promise<T>;
54
+ type GetResponse<T> = T extends {
55
+ responses: {
56
+ '200'?: {
57
+ content: {
58
+ 'application/json': infer R;
59
+ };
60
+ };
61
+ };
62
+ } ? R : undefined;
63
+ type SafeGet<T> = T extends {
64
+ get: infer G;
65
+ } ? G : undefined;
66
+ type SafePathParams<T> = SafeGet<T> extends {
67
+ parameters: {
68
+ path: infer P;
69
+ };
70
+ } ? P : undefined;
71
+ type SafeQueryParams<T> = SafeGet<T> extends {
72
+ parameters: {
73
+ query: infer Q;
74
+ };
75
+ } ? Q : SafeGet<T> extends {
76
+ parameters: {
77
+ query?: infer Q;
78
+ };
79
+ } ? Q : undefined;
80
+ type ParamsForEndpoint<T> = SafePathParams<T> & SafeQueryParams<T> extends undefined ? SafePathParams<T> : SafePathParams<T> & SafeQueryParams<T>;
81
+ /**
82
+ * Makes REST API calls to Hive blockchain REST endpoints with automatic retry and failover support.
83
+ * Uses per-request retry counters, node health tracking, and timeout support.
84
+ * Wraps around the node list to honor the full retry budget.
85
+ *
86
+ * @template Api - The REST API method type (e.g., 'balance', 'hafah', 'hivemind', etc.)
87
+ * @template P - The endpoint path type for the specified API
88
+ *
89
+ * @param api - The REST API method name to call
90
+ * @param endpoint - The specific endpoint path within the API
91
+ * @param params - Optional parameters for path and query string replacement
92
+ * @param timeout - Request timeout in milliseconds (default: config.timeout)
93
+ * @param retry - Number of retry attempts before throwing an error (default: config.retry)
94
+ *
95
+ * @returns Promise resolving to the API response data with proper typing
96
+ * @throws Error if all retry attempts fail
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * import { callREST } from 'hive-tx'
101
+ *
102
+ * // Get account balance
103
+ * const balance = await callREST('balance', '/accounts/{account-name}/balances', { "account-name": 'alice' })
104
+ *
105
+ * // Custom timeout and retry settings
106
+ * const data = await callREST('status', '/status', undefined, 10_000, 3)
107
+ * ```
108
+ */
109
+ export declare function callREST<Api extends APIMethods, P extends keyof APIPaths[Api]>(api: Api, endpoint: P, params?: ParamsForEndpoint<APIPaths[Api][P]>, timeout?: number, retry?: number): Promise<GetResponse<SafeGet<APIPaths[Api][P]>>>;
110
+ /**
111
+ * Make a JSONRPC call with quorum. The method will cross-check the result
112
+ * with `quorum` number of nodes before returning the result.
113
+ * @param method - The API method name (e.g., 'condenser_api.get_accounts')
114
+ * @param params - Parameters for the API method as array or object
115
+ * @param quorum - Default: 2 (recommended)
116
+ */
117
+ export declare const callWithQuorum: <T = any>(method: string, params?: any[] | object, quorum?: number) => Promise<T>;
118
+ export {};
119
+ //# sourceMappingURL=call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../src/helpers/call.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAgB,MAAM,UAAU,CAAA;AAK7D,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,SAAa;IACjB,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,SAAS,CAAY;gBAChB,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE;CAOpE;AA6MD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,OAAO,GAAU,CAAC,GAAG,GAAG,EACnC,QAAQ,MAAM,EACd,SAAQ,GAAG,EAAE,GAAG,MAAW,EAC3B,gBAAwB,EACxB,cAAoB,KACnB,OAAO,CAAC,CAAC,CA0CX,CAAA;AAID;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAAU,CAAC,GAAG,GAAG,EAC5C,QAAQ,MAAM,EACd,SAAQ,GAAG,EAAE,GAAG,MAAW,EAC3B,gBAAwB,KACvB,OAAO,CAAC,CAAC,CAuCX,CAAA;AAgBD,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IAC9B,SAAS,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,OAAO,EAAE;gBAAE,kBAAkB,EAAE,MAAM,CAAC,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CACpE,GACG,CAAC,GACD,SAAS,CAAA;AACb,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,SAAS,CAAA;AAC5D,KAAK,cAAc,CAAC,CAAC,IACnB,OAAO,CAAC,CAAC,CAAC,SAAS;IACjB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;CAC9B,GACG,CAAC,GACD,SAAS,CAAA;AACf,KAAK,eAAe,CAAC,CAAC,IACpB,OAAO,CAAC,CAAC,CAAC,SAAS;IACjB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;CAC/B,GACG,CAAC,GACD,OAAO,CAAC,CAAC,CAAC,SAAS;IACf,UAAU,EAAE;QACV,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;KAChB,CAAA;CACF,GACD,CAAC,GACD,SAAS,CAAA;AACjB,KAAK,iBAAiB,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,SAAS,SAAS,GAChF,cAAc,CAAC,CAAC,CAAC,GACjB,cAAc,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,QAAQ,CAAC,GAAG,SAAS,UAAU,EAAE,CAAC,SAAS,MAAM,QAAQ,CAAC,GAAG,CAAC,EAClF,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,CAAC,EACX,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5C,OAAO,SAAiB,EACxB,KAAK,SAAe,GACnB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAqFjD;AAID;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,GAAG,GAAG,EAC1C,QAAQ,MAAM,EACd,SAAQ,GAAG,EAAE,GAAG,MAAW,EAC3B,eAAU,KACT,OAAO,CAAC,CAAC,CAuCX,CAAA"}