hiero-sdk-utils 0.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 (137) hide show
  1. package/dist/cjs/client/HieroClient.d.ts +70 -0
  2. package/dist/cjs/client/HieroClient.d.ts.map +1 -0
  3. package/dist/cjs/client/HieroClient.js +165 -0
  4. package/dist/cjs/client/HieroClient.js.map +1 -0
  5. package/dist/cjs/client/rateLimiter.d.ts +33 -0
  6. package/dist/cjs/client/rateLimiter.d.ts.map +1 -0
  7. package/dist/cjs/client/rateLimiter.js +68 -0
  8. package/dist/cjs/client/rateLimiter.js.map +1 -0
  9. package/dist/cjs/client/types.d.ts +26 -0
  10. package/dist/cjs/client/types.d.ts.map +1 -0
  11. package/dist/cjs/client/types.js +11 -0
  12. package/dist/cjs/client/types.js.map +1 -0
  13. package/dist/cjs/errors/index.d.ts +95 -0
  14. package/dist/cjs/errors/index.d.ts.map +1 -0
  15. package/dist/cjs/errors/index.js +115 -0
  16. package/dist/cjs/errors/index.js.map +1 -0
  17. package/dist/cjs/index.d.ts +36 -0
  18. package/dist/cjs/index.d.ts.map +1 -0
  19. package/dist/cjs/index.js +55 -0
  20. package/dist/cjs/index.js.map +1 -0
  21. package/dist/cjs/pagination/paginator.d.ts +21 -0
  22. package/dist/cjs/pagination/paginator.d.ts.map +1 -0
  23. package/dist/cjs/pagination/paginator.js +89 -0
  24. package/dist/cjs/pagination/paginator.js.map +1 -0
  25. package/dist/cjs/resources/accounts.d.ts +43 -0
  26. package/dist/cjs/resources/accounts.d.ts.map +1 -0
  27. package/dist/cjs/resources/accounts.js +60 -0
  28. package/dist/cjs/resources/accounts.js.map +1 -0
  29. package/dist/cjs/resources/balances.d.ts +25 -0
  30. package/dist/cjs/resources/balances.d.ts.map +1 -0
  31. package/dist/cjs/resources/balances.js +33 -0
  32. package/dist/cjs/resources/balances.js.map +1 -0
  33. package/dist/cjs/resources/blocks.d.ts +36 -0
  34. package/dist/cjs/resources/blocks.d.ts.map +1 -0
  35. package/dist/cjs/resources/blocks.js +58 -0
  36. package/dist/cjs/resources/blocks.js.map +1 -0
  37. package/dist/cjs/resources/contracts.d.ts +36 -0
  38. package/dist/cjs/resources/contracts.d.ts.map +1 -0
  39. package/dist/cjs/resources/contracts.js +53 -0
  40. package/dist/cjs/resources/contracts.js.map +1 -0
  41. package/dist/cjs/resources/nfts.d.ts +39 -0
  42. package/dist/cjs/resources/nfts.d.ts.map +1 -0
  43. package/dist/cjs/resources/nfts.js +62 -0
  44. package/dist/cjs/resources/nfts.js.map +1 -0
  45. package/dist/cjs/resources/schedules.d.ts +36 -0
  46. package/dist/cjs/resources/schedules.d.ts.map +1 -0
  47. package/dist/cjs/resources/schedules.js +53 -0
  48. package/dist/cjs/resources/schedules.js.map +1 -0
  49. package/dist/cjs/resources/tokens.d.ts +36 -0
  50. package/dist/cjs/resources/tokens.d.ts.map +1 -0
  51. package/dist/cjs/resources/tokens.js +53 -0
  52. package/dist/cjs/resources/tokens.js.map +1 -0
  53. package/dist/cjs/resources/topics.d.ts +38 -0
  54. package/dist/cjs/resources/topics.d.ts.map +1 -0
  55. package/dist/cjs/resources/topics.js +56 -0
  56. package/dist/cjs/resources/topics.js.map +1 -0
  57. package/dist/cjs/resources/transactions.d.ts +35 -0
  58. package/dist/cjs/resources/transactions.d.ts.map +1 -0
  59. package/dist/cjs/resources/transactions.js +57 -0
  60. package/dist/cjs/resources/transactions.js.map +1 -0
  61. package/dist/cjs/types/api.d.ts +302 -0
  62. package/dist/cjs/types/api.d.ts.map +1 -0
  63. package/dist/cjs/types/api.js +4 -0
  64. package/dist/cjs/types/api.js.map +1 -0
  65. package/dist/cjs/types/common.d.ts +52 -0
  66. package/dist/cjs/types/common.d.ts.map +1 -0
  67. package/dist/cjs/types/common.js +16 -0
  68. package/dist/cjs/types/common.js.map +1 -0
  69. package/dist/esm/client/HieroClient.d.ts +70 -0
  70. package/dist/esm/client/HieroClient.d.ts.map +1 -0
  71. package/dist/esm/client/HieroClient.js +161 -0
  72. package/dist/esm/client/HieroClient.js.map +1 -0
  73. package/dist/esm/client/rateLimiter.d.ts +33 -0
  74. package/dist/esm/client/rateLimiter.d.ts.map +1 -0
  75. package/dist/esm/client/rateLimiter.js +64 -0
  76. package/dist/esm/client/rateLimiter.js.map +1 -0
  77. package/dist/esm/client/types.d.ts +26 -0
  78. package/dist/esm/client/types.d.ts.map +1 -0
  79. package/dist/esm/client/types.js +8 -0
  80. package/dist/esm/client/types.js.map +1 -0
  81. package/dist/esm/errors/index.d.ts +95 -0
  82. package/dist/esm/errors/index.d.ts.map +1 -0
  83. package/dist/esm/errors/index.js +108 -0
  84. package/dist/esm/errors/index.js.map +1 -0
  85. package/dist/esm/index.d.ts +36 -0
  86. package/dist/esm/index.d.ts.map +1 -0
  87. package/dist/esm/index.js +37 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/pagination/paginator.d.ts +21 -0
  90. package/dist/esm/pagination/paginator.d.ts.map +1 -0
  91. package/dist/esm/pagination/paginator.js +86 -0
  92. package/dist/esm/pagination/paginator.js.map +1 -0
  93. package/dist/esm/resources/accounts.d.ts +43 -0
  94. package/dist/esm/resources/accounts.d.ts.map +1 -0
  95. package/dist/esm/resources/accounts.js +56 -0
  96. package/dist/esm/resources/accounts.js.map +1 -0
  97. package/dist/esm/resources/balances.d.ts +25 -0
  98. package/dist/esm/resources/balances.d.ts.map +1 -0
  99. package/dist/esm/resources/balances.js +29 -0
  100. package/dist/esm/resources/balances.js.map +1 -0
  101. package/dist/esm/resources/blocks.d.ts +36 -0
  102. package/dist/esm/resources/blocks.d.ts.map +1 -0
  103. package/dist/esm/resources/blocks.js +54 -0
  104. package/dist/esm/resources/blocks.js.map +1 -0
  105. package/dist/esm/resources/contracts.d.ts +36 -0
  106. package/dist/esm/resources/contracts.d.ts.map +1 -0
  107. package/dist/esm/resources/contracts.js +49 -0
  108. package/dist/esm/resources/contracts.js.map +1 -0
  109. package/dist/esm/resources/nfts.d.ts +39 -0
  110. package/dist/esm/resources/nfts.d.ts.map +1 -0
  111. package/dist/esm/resources/nfts.js +58 -0
  112. package/dist/esm/resources/nfts.js.map +1 -0
  113. package/dist/esm/resources/schedules.d.ts +36 -0
  114. package/dist/esm/resources/schedules.d.ts.map +1 -0
  115. package/dist/esm/resources/schedules.js +49 -0
  116. package/dist/esm/resources/schedules.js.map +1 -0
  117. package/dist/esm/resources/tokens.d.ts +36 -0
  118. package/dist/esm/resources/tokens.d.ts.map +1 -0
  119. package/dist/esm/resources/tokens.js +49 -0
  120. package/dist/esm/resources/tokens.js.map +1 -0
  121. package/dist/esm/resources/topics.d.ts +38 -0
  122. package/dist/esm/resources/topics.d.ts.map +1 -0
  123. package/dist/esm/resources/topics.js +52 -0
  124. package/dist/esm/resources/topics.js.map +1 -0
  125. package/dist/esm/resources/transactions.d.ts +35 -0
  126. package/dist/esm/resources/transactions.d.ts.map +1 -0
  127. package/dist/esm/resources/transactions.js +53 -0
  128. package/dist/esm/resources/transactions.js.map +1 -0
  129. package/dist/esm/types/api.d.ts +302 -0
  130. package/dist/esm/types/api.d.ts.map +1 -0
  131. package/dist/esm/types/api.js +3 -0
  132. package/dist/esm/types/api.js.map +1 -0
  133. package/dist/esm/types/common.d.ts +52 -0
  134. package/dist/esm/types/common.d.ts.map +1 -0
  135. package/dist/esm/types/common.js +13 -0
  136. package/dist/esm/types/common.js.map +1 -0
  137. package/package.json +52 -0
@@ -0,0 +1,302 @@
1
+ import type { BaseQueryParams, TimestampFilter } from './common.js';
2
+ /** Key object as returned by the Mirror Node */
3
+ export interface Key {
4
+ _type: string;
5
+ key: string;
6
+ }
7
+ /** Balance information nested within an account response */
8
+ export interface AccountBalance {
9
+ balance: number;
10
+ timestamp: string;
11
+ tokens: ReadonlyArray<TokenBalance>;
12
+ }
13
+ /** Token balance associated with an account */
14
+ export interface TokenBalance {
15
+ token_id: string;
16
+ balance: number;
17
+ }
18
+ /** Full account info as returned by GET /api/v1/accounts/{id} */
19
+ export interface AccountInfo {
20
+ account: string;
21
+ alias: string | null;
22
+ auto_renew_period: number | null;
23
+ balance: AccountBalance;
24
+ created_timestamp: string | null;
25
+ decline_reward: boolean;
26
+ deleted: boolean;
27
+ ethereum_nonce: number;
28
+ evm_address: string | null;
29
+ expiry_timestamp: string | null;
30
+ key: Key | null;
31
+ max_automatic_token_associations: number;
32
+ memo: string;
33
+ pending_reward: number;
34
+ receiver_sig_required: boolean;
35
+ staked_account_id: string | null;
36
+ staked_node_id: number | null;
37
+ stake_period_start: string | null;
38
+ }
39
+ /** Query parameters for listing accounts */
40
+ export interface AccountsQueryParams extends BaseQueryParams, TimestampFilter {
41
+ 'account.id'?: string;
42
+ 'account.balance'?: string;
43
+ 'account.publickey'?: string;
44
+ }
45
+ /** Transfer within a transaction */
46
+ export interface Transfer {
47
+ account: string;
48
+ amount: number;
49
+ is_approval: boolean;
50
+ }
51
+ /** Token transfer within a transaction */
52
+ export interface TokenTransfer {
53
+ token_id: string;
54
+ account: string;
55
+ amount: number;
56
+ is_approval: boolean;
57
+ }
58
+ /** NFT transfer within a transaction */
59
+ export interface NftTransfer {
60
+ is_approval: boolean;
61
+ receiver_account_id: string;
62
+ sender_account_id: string;
63
+ serial_number: number;
64
+ token_id: string;
65
+ }
66
+ /** Full transaction info as returned by the Mirror Node */
67
+ export interface TransactionInfo {
68
+ bytes: string | null;
69
+ charged_tx_fee: number;
70
+ consensus_timestamp: string;
71
+ entity_id: string | null;
72
+ max_fee: string;
73
+ memo_base64: string;
74
+ name: string;
75
+ nft_transfers: ReadonlyArray<NftTransfer>;
76
+ node: string | null;
77
+ nonce: number;
78
+ parent_consensus_timestamp: string | null;
79
+ result: string;
80
+ scheduled: boolean;
81
+ staking_reward_transfers: ReadonlyArray<Transfer>;
82
+ token_transfers: ReadonlyArray<TokenTransfer>;
83
+ transaction_hash: string;
84
+ transaction_id: string;
85
+ transfers: ReadonlyArray<Transfer>;
86
+ valid_duration_seconds: string;
87
+ valid_start_timestamp: string;
88
+ }
89
+ /** Query parameters for listing transactions */
90
+ export interface TransactionsQueryParams extends BaseQueryParams, TimestampFilter {
91
+ 'account.id'?: string;
92
+ result?: 'success' | 'fail';
93
+ type?: string;
94
+ transactiontype?: string;
95
+ }
96
+ /** Fixed fee charged for a token transfer */
97
+ export interface FixedFee {
98
+ amount: number;
99
+ collector_account_id: string;
100
+ denominating_token_id: string | null;
101
+ }
102
+ /** Fractional amount used in fractional and royalty fees */
103
+ export interface FractionalAmount {
104
+ numerator: number;
105
+ denominator: number;
106
+ }
107
+ /** Fractional fee charged as a fraction of the transfer amount */
108
+ export interface FractionalFee {
109
+ amount: FractionalAmount;
110
+ collector_account_id: string;
111
+ denominating_token_id: string | null;
112
+ maximum: number | null;
113
+ minimum: number;
114
+ net_of_transfers: boolean;
115
+ }
116
+ /** Royalty fee charged on NFT transfers */
117
+ export interface RoyaltyFee {
118
+ amount: FractionalAmount;
119
+ collector_account_id: string;
120
+ fallback_fee: FixedFee | null;
121
+ }
122
+ /** Custom fee schedule for a token */
123
+ export interface CustomFee {
124
+ created_timestamp: string;
125
+ fixed_fees: ReadonlyArray<FixedFee>;
126
+ fractional_fees: ReadonlyArray<FractionalFee>;
127
+ royalty_fees: ReadonlyArray<RoyaltyFee>;
128
+ }
129
+ /** Full token info as returned by GET /api/v1/tokens/{id} */
130
+ export interface TokenInfo {
131
+ admin_key: Key | null;
132
+ auto_renew_account: string | null;
133
+ auto_renew_period: number | null;
134
+ created_timestamp: string;
135
+ custom_fees: CustomFee;
136
+ decimals: string;
137
+ deleted: boolean;
138
+ expiry_timestamp: string | null;
139
+ fee_schedule_key: Key | null;
140
+ freeze_default: boolean;
141
+ freeze_key: Key | null;
142
+ initial_supply: string;
143
+ kyc_key: Key | null;
144
+ max_supply: string;
145
+ memo: string;
146
+ modified_timestamp: string;
147
+ name: string;
148
+ pause_key: Key | null;
149
+ pause_status: string;
150
+ supply_key: Key | null;
151
+ supply_type: string;
152
+ symbol: string;
153
+ token_id: string;
154
+ total_supply: string;
155
+ treasury_account_id: string;
156
+ type: string;
157
+ wipe_key: Key | null;
158
+ }
159
+ /** Query parameters for listing tokens */
160
+ export interface TokensQueryParams extends BaseQueryParams {
161
+ publickey?: string;
162
+ 'token.id'?: string;
163
+ type?: 'ALL' | 'FUNGIBLE_COMMON' | 'NON_FUNGIBLE_UNIQUE';
164
+ name?: string;
165
+ }
166
+ /** Topic info as returned by GET /api/v1/topics/{id} */
167
+ export interface TopicInfo {
168
+ admin_key: Key | null;
169
+ auto_renew_account: string | null;
170
+ auto_renew_period: number | null;
171
+ created_timestamp: string;
172
+ deleted: boolean;
173
+ memo: string;
174
+ submit_key: Key | null;
175
+ timestamp: {
176
+ from: string;
177
+ to: string | null;
178
+ };
179
+ topic_id: string;
180
+ }
181
+ /** Topic message as returned by GET /api/v1/topics/{id}/messages */
182
+ export interface TopicMessage {
183
+ chunk_info: {
184
+ initial_transaction_id: string;
185
+ number: number;
186
+ total: number;
187
+ } | null;
188
+ consensus_timestamp: string;
189
+ message: string;
190
+ payer_account_id: string;
191
+ running_hash: string;
192
+ running_hash_version: number;
193
+ sequence_number: number;
194
+ topic_id: string;
195
+ }
196
+ /** Query parameters for listing topic messages */
197
+ export interface TopicMessagesQueryParams extends BaseQueryParams, TimestampFilter {
198
+ sequencenumber?: number;
199
+ }
200
+ /** Contract info as returned by GET /api/v1/contracts/{id} */
201
+ export interface ContractInfo {
202
+ admin_key: Key | null;
203
+ auto_renew_account: string | null;
204
+ auto_renew_period: number | null;
205
+ contract_id: string;
206
+ created_timestamp: string;
207
+ deleted: boolean;
208
+ evm_address: string;
209
+ expiry_timestamp: string | null;
210
+ file_id: string | null;
211
+ max_automatic_token_associations: number;
212
+ memo: string;
213
+ obtainer_id: string | null;
214
+ permanent_removal: boolean | null;
215
+ proxy_account_id: string | null;
216
+ timestamp: {
217
+ from: string;
218
+ to: string | null;
219
+ };
220
+ }
221
+ /** Query parameters for listing contracts */
222
+ export interface ContractsQueryParams extends BaseQueryParams {
223
+ 'contract.id'?: string;
224
+ }
225
+ /** NFT info as returned by the Mirror Node */
226
+ export interface NftInfo {
227
+ account_id: string;
228
+ created_timestamp: string;
229
+ delegating_spender: string | null;
230
+ deleted: boolean;
231
+ metadata: string;
232
+ modified_timestamp: string;
233
+ serial_number: number;
234
+ spender: string | null;
235
+ token_id: string;
236
+ }
237
+ /** Query parameters for listing NFTs */
238
+ export interface NftsQueryParams extends BaseQueryParams {
239
+ 'account.id'?: string;
240
+ serialnumber?: number;
241
+ }
242
+ /** Balance entry as returned by GET /api/v1/balances */
243
+ export interface BalanceEntry {
244
+ account: string;
245
+ balance: number;
246
+ tokens: ReadonlyArray<TokenBalance>;
247
+ }
248
+ /** Query parameters for listing balances */
249
+ export interface BalancesQueryParams extends BaseQueryParams, TimestampFilter {
250
+ 'account.id'?: string;
251
+ 'account.balance'?: string;
252
+ 'account.publickey'?: string;
253
+ }
254
+ /** Block info as returned by GET /api/v1/blocks/{hashOrNumber} */
255
+ export interface BlockInfo {
256
+ count: number;
257
+ gas_used: number;
258
+ hapi_version: string;
259
+ hash: string;
260
+ logs_bloom: string;
261
+ name: string;
262
+ number: number;
263
+ previous_hash: string;
264
+ size: number | null;
265
+ timestamp: {
266
+ from: string;
267
+ to: string;
268
+ };
269
+ }
270
+ /** Query parameters for listing blocks */
271
+ export interface BlocksQueryParams extends BaseQueryParams {
272
+ 'block.number'?: string;
273
+ }
274
+ /** Signature on a scheduled transaction */
275
+ export interface ScheduleSignature {
276
+ consensus_timestamp: string;
277
+ public_key_prefix: string;
278
+ signature: string;
279
+ type: string;
280
+ }
281
+ /** Schedule info as returned by GET /api/v1/schedules/{id} */
282
+ export interface ScheduleInfo {
283
+ admin_key: Key | null;
284
+ consensus_timestamp: string | null;
285
+ creator_account_id: string;
286
+ deleted: boolean;
287
+ executed_timestamp: string | null;
288
+ expiration_time: string | null;
289
+ memo: string;
290
+ payer_account_id: string;
291
+ schedule_id: string;
292
+ signatures: ReadonlyArray<ScheduleSignature>;
293
+ transaction_body: string;
294
+ wait_for_expiry: boolean;
295
+ }
296
+ /** Query parameters for listing schedules */
297
+ export interface SchedulesQueryParams extends BaseQueryParams {
298
+ 'account.id'?: string;
299
+ 'schedule.id'?: string;
300
+ executed?: boolean;
301
+ }
302
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/types/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/types/api.ts"],"names":[],"mappings":";AAAA,sCAAsC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Regular expression pattern for validating Hedera entity IDs.
3
+ * Format: `shard.realm.num` where each segment is a non-negative integer.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * ENTITY_ID_PATTERN.test('0.0.1234'); // true
8
+ * ENTITY_ID_PATTERN.test('invalid'); // false
9
+ * ```
10
+ */
11
+ export declare const ENTITY_ID_PATTERN: RegExp;
12
+ /**
13
+ * Pagination links returned by the Mirror Node API.
14
+ */
15
+ export interface PaginationLinks {
16
+ /** URL for the next page of results, or null if no more pages */
17
+ next: string | null;
18
+ }
19
+ /**
20
+ * Generic paginated response shape from the Mirror Node API.
21
+ * The data array is keyed by the resource name (e.g., 'accounts', 'transactions').
22
+ */
23
+ export interface PaginatedResponse<T> {
24
+ /** Pagination navigation links */
25
+ links: PaginationLinks;
26
+ /** Dynamic key containing the array of items */
27
+ [key: string]: ReadonlyArray<T> | PaginationLinks | undefined;
28
+ }
29
+ /**
30
+ * Common query parameters supported by most Mirror Node list endpoints.
31
+ */
32
+ export interface BaseQueryParams {
33
+ /** Maximum number of items per page (Mirror Node default is 25, max is 100) */
34
+ limit?: number;
35
+ /** Sort order: 'asc' or 'desc' */
36
+ order?: 'asc' | 'desc';
37
+ }
38
+ /**
39
+ * Timestamp filter used across many Mirror Node endpoints.
40
+ * Values are in `seconds.nanoseconds` format.
41
+ */
42
+ export interface TimestampFilter {
43
+ /** Return results after this timestamp */
44
+ 'timestamp.gt'?: string;
45
+ /** Return results at or after this timestamp */
46
+ 'timestamp.gte'?: string;
47
+ /** Return results before this timestamp */
48
+ 'timestamp.lt'?: string;
49
+ /** Return results at or before this timestamp */
50
+ 'timestamp.lte'?: string;
51
+ }
52
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,QAAoB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,kCAAkC;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,gDAAgD;IAChD,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,GAAG,SAAS,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ENTITY_ID_PATTERN = void 0;
5
+ /**
6
+ * Regular expression pattern for validating Hedera entity IDs.
7
+ * Format: `shard.realm.num` where each segment is a non-negative integer.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * ENTITY_ID_PATTERN.test('0.0.1234'); // true
12
+ * ENTITY_ID_PATTERN.test('invalid'); // false
13
+ * ```
14
+ */
15
+ exports.ENTITY_ID_PATTERN = /^\d+\.\d+\.\d+$/;
16
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":";AAAA,sCAAsC;;;AAEtC;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,iBAAiB,CAAC"}
@@ -0,0 +1,70 @@
1
+ import type { HieroClientConfig } from './types.js';
2
+ import { AccountsResource } from '../resources/accounts.js';
3
+ import { TransactionsResource } from '../resources/transactions.js';
4
+ import { TokensResource } from '../resources/tokens.js';
5
+ import { TopicsResource } from '../resources/topics.js';
6
+ import { ContractsResource } from '../resources/contracts.js';
7
+ import { NftsResource } from '../resources/nfts.js';
8
+ import { BalancesResource } from '../resources/balances.js';
9
+ import { BlocksResource } from '../resources/blocks.js';
10
+ import { SchedulesResource } from '../resources/schedules.js';
11
+ /**
12
+ * Core HTTP client for the Hedera Mirror Node REST API.
13
+ * Provides typed access to all Mirror Node resources with automatic
14
+ * rate limiting, retries, and error handling.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { HieroClient, Networks } from 'hiero-sdk-utils';
19
+ *
20
+ * const client = new HieroClient({ baseUrl: Networks.testnet });
21
+ * const account = await client.accounts.getById('0.0.1234');
22
+ * ```
23
+ */
24
+ export declare class HieroClient {
25
+ /** Base URL for the Mirror Node (no trailing slash) */
26
+ readonly baseUrl: string;
27
+ private readonly fetchFn;
28
+ private readonly rateLimiter;
29
+ private readonly defaultHeaders;
30
+ private readonly timeoutMs;
31
+ private readonly maxRetries;
32
+ /** Account-related Mirror Node queries */
33
+ readonly accounts: AccountsResource;
34
+ /** Transaction-related Mirror Node queries */
35
+ readonly transactions: TransactionsResource;
36
+ /** Token-related Mirror Node queries */
37
+ readonly tokens: TokensResource;
38
+ /** Topic-related Mirror Node queries */
39
+ readonly topics: TopicsResource;
40
+ /** Contract-related Mirror Node queries */
41
+ readonly contracts: ContractsResource;
42
+ /** NFT-related Mirror Node queries */
43
+ readonly nfts: NftsResource;
44
+ /** Balance-related Mirror Node queries */
45
+ readonly balances: BalancesResource;
46
+ /** Block-related Mirror Node queries */
47
+ readonly blocks: BlocksResource;
48
+ /** Schedule-related Mirror Node queries */
49
+ readonly schedules: SchedulesResource;
50
+ /**
51
+ * Creates a new HieroClient.
52
+ *
53
+ * @param config - Client configuration including base URL and optional overrides
54
+ * @throws {Error} If baseUrl is empty
55
+ */
56
+ constructor(config: HieroClientConfig);
57
+ /**
58
+ * Makes a GET request to the Mirror Node and returns typed JSON.
59
+ * Handles rate limiting, retries on 429/503, and timeout.
60
+ *
61
+ * @param path - The API path (e.g., '/api/v1/accounts/0.0.2') or full next-page URL
62
+ * @returns Parsed JSON response typed as T
63
+ * @throws {MirrorNodeError} If the API returns a non-2xx response after retries
64
+ */
65
+ get<T>(path: string): Promise<T>;
66
+ private statusToCode;
67
+ private safeReadBody;
68
+ private sleep;
69
+ }
70
+ //# sourceMappingURL=HieroClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HieroClient.d.ts","sourceRoot":"","sources":["../../../src/client/HieroClient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAY9D;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IACtB,uDAAuD;IACvD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,0CAA0C;IAC1C,SAAgB,QAAQ,EAAE,gBAAgB,CAAC;IAC3C,8CAA8C;IAC9C,SAAgB,YAAY,EAAE,oBAAoB,CAAC;IACnD,wCAAwC;IACxC,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,wCAAwC;IACxC,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,2CAA2C;IAC3C,SAAgB,SAAS,EAAE,iBAAiB,CAAC;IAC7C,sCAAsC;IACtC,SAAgB,IAAI,EAAE,YAAY,CAAC;IACnC,0CAA0C;IAC1C,SAAgB,QAAQ,EAAE,gBAAgB,CAAC;IAC3C,wCAAwC;IACxC,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,2CAA2C;IAC3C,SAAgB,SAAS,EAAE,iBAAiB,CAAC;IAE7C;;;;;OAKG;gBACS,MAAM,EAAE,iBAAiB;IA4BrC;;;;;;;OAOG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAiEtC,OAAO,CAAC,YAAY;YAUN,YAAY;IAS1B,OAAO,CAAC,KAAK;CAKd"}
@@ -0,0 +1,161 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { RateLimiter } from './rateLimiter.js';
3
+ import { MirrorNodeError } from '../errors/index.js';
4
+ import { AccountsResource } from '../resources/accounts.js';
5
+ import { TransactionsResource } from '../resources/transactions.js';
6
+ import { TokensResource } from '../resources/tokens.js';
7
+ import { TopicsResource } from '../resources/topics.js';
8
+ import { ContractsResource } from '../resources/contracts.js';
9
+ import { NftsResource } from '../resources/nfts.js';
10
+ import { BalancesResource } from '../resources/balances.js';
11
+ import { BlocksResource } from '../resources/blocks.js';
12
+ import { SchedulesResource } from '../resources/schedules.js';
13
+ /** Retriable HTTP status codes */
14
+ const RETRIABLE_STATUSES = new Set([429, 503]);
15
+ /** Default configuration values */
16
+ const DEFAULTS = {
17
+ maxRequestsPerSecond: 20,
18
+ timeoutMs: 30_000,
19
+ maxRetries: 3,
20
+ };
21
+ /**
22
+ * Core HTTP client for the Hedera Mirror Node REST API.
23
+ * Provides typed access to all Mirror Node resources with automatic
24
+ * rate limiting, retries, and error handling.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * import { HieroClient, Networks } from 'hiero-sdk-utils';
29
+ *
30
+ * const client = new HieroClient({ baseUrl: Networks.testnet });
31
+ * const account = await client.accounts.getById('0.0.1234');
32
+ * ```
33
+ */
34
+ export class HieroClient {
35
+ /** Base URL for the Mirror Node (no trailing slash) */
36
+ baseUrl;
37
+ fetchFn;
38
+ rateLimiter;
39
+ defaultHeaders;
40
+ timeoutMs;
41
+ maxRetries;
42
+ /** Account-related Mirror Node queries */
43
+ accounts;
44
+ /** Transaction-related Mirror Node queries */
45
+ transactions;
46
+ /** Token-related Mirror Node queries */
47
+ tokens;
48
+ /** Topic-related Mirror Node queries */
49
+ topics;
50
+ /** Contract-related Mirror Node queries */
51
+ contracts;
52
+ /** NFT-related Mirror Node queries */
53
+ nfts;
54
+ /** Balance-related Mirror Node queries */
55
+ balances;
56
+ /** Block-related Mirror Node queries */
57
+ blocks;
58
+ /** Schedule-related Mirror Node queries */
59
+ schedules;
60
+ /**
61
+ * Creates a new HieroClient.
62
+ *
63
+ * @param config - Client configuration including base URL and optional overrides
64
+ * @throws {Error} If baseUrl is empty
65
+ */
66
+ constructor(config) {
67
+ if (!config.baseUrl) {
68
+ throw new Error('baseUrl is required and must not be empty');
69
+ }
70
+ this.baseUrl = config.baseUrl.replace(/\/+$/, '');
71
+ this.fetchFn = config.fetch ?? globalThis.fetch.bind(globalThis);
72
+ this.rateLimiter = new RateLimiter(config.maxRequestsPerSecond ?? DEFAULTS.maxRequestsPerSecond);
73
+ this.defaultHeaders = {
74
+ Accept: 'application/json',
75
+ ...config.headers,
76
+ };
77
+ this.timeoutMs = config.timeoutMs ?? DEFAULTS.timeoutMs;
78
+ this.maxRetries = config.maxRetries ?? DEFAULTS.maxRetries;
79
+ this.accounts = new AccountsResource(this);
80
+ this.transactions = new TransactionsResource(this);
81
+ this.tokens = new TokensResource(this);
82
+ this.topics = new TopicsResource(this);
83
+ this.contracts = new ContractsResource(this);
84
+ this.nfts = new NftsResource(this);
85
+ this.balances = new BalancesResource(this);
86
+ this.blocks = new BlocksResource(this);
87
+ this.schedules = new SchedulesResource(this);
88
+ }
89
+ /**
90
+ * Makes a GET request to the Mirror Node and returns typed JSON.
91
+ * Handles rate limiting, retries on 429/503, and timeout.
92
+ *
93
+ * @param path - The API path (e.g., '/api/v1/accounts/0.0.2') or full next-page URL
94
+ * @returns Parsed JSON response typed as T
95
+ * @throws {MirrorNodeError} If the API returns a non-2xx response after retries
96
+ */
97
+ async get(path) {
98
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
99
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
100
+ await this.rateLimiter.acquire();
101
+ const controller = new AbortController();
102
+ const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
103
+ try {
104
+ const response = await this.fetchFn(url, {
105
+ method: 'GET',
106
+ headers: this.defaultHeaders,
107
+ signal: controller.signal,
108
+ });
109
+ clearTimeout(timeoutId);
110
+ if (response.ok) {
111
+ const json = await response.json();
112
+ return json;
113
+ }
114
+ if (RETRIABLE_STATUSES.has(response.status) && attempt < this.maxRetries) {
115
+ const retryAfter = response.headers.get('Retry-After');
116
+ const waitMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 1000 * (attempt + 1);
117
+ await this.sleep(waitMs);
118
+ continue;
119
+ }
120
+ const errorBody = await this.safeReadBody(response);
121
+ throw new MirrorNodeError(`Mirror Node returned ${response.status} for ${url}: ${errorBody}`, this.statusToCode(response.status), response.status);
122
+ }
123
+ catch (error) {
124
+ clearTimeout(timeoutId);
125
+ if (error instanceof MirrorNodeError) {
126
+ throw error;
127
+ }
128
+ if (error instanceof DOMException && error.name === 'AbortError') {
129
+ throw new MirrorNodeError(`Request timed out after ${this.timeoutMs}ms for ${url}`, 'REQUEST_TIMEOUT', 0, { cause: error });
130
+ }
131
+ throw new MirrorNodeError(`Network error for ${url}: ${error instanceof Error ? error.message : String(error)}`, 'NETWORK_ERROR', 0, { cause: error instanceof Error ? error : new Error(String(error)) });
132
+ }
133
+ }
134
+ /* v8 ignore next -- unreachable: loop always exits via return or throw */
135
+ throw new MirrorNodeError(`Request failed for ${url}`, 'MAX_RETRIES_EXCEEDED', 0);
136
+ }
137
+ statusToCode(status) {
138
+ switch (status) {
139
+ case 400: return 'BAD_REQUEST';
140
+ case 404: return 'NOT_FOUND';
141
+ case 429: return 'RATE_LIMITED';
142
+ case 503: return 'SERVICE_UNAVAILABLE';
143
+ default: return 'MIRROR_NODE_ERROR';
144
+ }
145
+ }
146
+ async safeReadBody(response) {
147
+ try {
148
+ const text = await response.text();
149
+ return text.substring(0, 500);
150
+ }
151
+ catch {
152
+ return '(unable to read response body)';
153
+ }
154
+ }
155
+ sleep(ms) {
156
+ return new Promise((resolve) => {
157
+ setTimeout(resolve, ms);
158
+ });
159
+ }
160
+ }
161
+ //# sourceMappingURL=HieroClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HieroClient.js","sourceRoot":"","sources":["../../../src/client/HieroClient.ts"],"names":[],"mappings":"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"}