@secretkeylabs/stacks-tools 0.4.0 → 0.5.0-21a2301

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.
package/dist/index.cjs CHANGED
@@ -32,10 +32,13 @@ var src_exports = {};
32
32
  __export(src_exports, {
33
33
  callRateLimitedApi: () => callRateLimitedApi,
34
34
  error: () => error,
35
+ pox4Api: () => pox4Api,
36
+ queries: () => queries,
35
37
  safeCall: () => safeCall,
36
38
  safeCallRateLimitedApi: () => safeCallRateLimitedApi,
37
39
  safePromise: () => safePromise,
38
40
  stacksApi: () => stacksApi,
41
+ stacksRpcApi: () => stacksRpcApi,
39
42
  success: () => success
40
43
  });
41
44
  module.exports = __toCommonJS(src_exports);
@@ -71,37 +74,6 @@ function safeCall(fn) {
71
74
  }
72
75
 
73
76
  // src/stacks-api/accounts/balances.ts
74
- var v = __toESM(require("valibot"), 1);
75
- var responseSchema = v.object({
76
- stx: v.object({
77
- balance: v.string(),
78
- total_sent: v.string(),
79
- total_received: v.string(),
80
- total_fees_sent: v.string(),
81
- total_miner_rewards_received: v.string(),
82
- lock_tx_id: v.string(),
83
- locked: v.string(),
84
- lock_height: v.number(),
85
- burnchain_lock_height: v.number(),
86
- burnchain_unlock_height: v.number()
87
- }),
88
- fungible_tokens: v.record(
89
- v.string(),
90
- v.object({
91
- balance: v.string(),
92
- total_sent: v.string(),
93
- total_received: v.string()
94
- })
95
- ),
96
- non_fungible_tokens: v.record(
97
- v.string(),
98
- v.object({
99
- count: v.string(),
100
- total_sent: v.string(),
101
- total_received: v.string()
102
- })
103
- )
104
- });
105
77
  async function balances(opts) {
106
78
  const search = new URLSearchParams();
107
79
  if (opts.unanchored) search.append("unanchored", "true");
@@ -133,25 +105,17 @@ async function balances(opts) {
133
105
  data: jsonError
134
106
  });
135
107
  }
136
- const validationResult = v.safeParse(responseSchema, data);
137
- if (!validationResult.success) {
138
- return error({
139
- name: "ValidateDataError",
140
- message: "Failed to validate data.",
141
- data: validationResult
142
- });
143
- }
144
- return success(validationResult.output);
108
+ return success(data);
145
109
  }
146
110
 
147
111
  // src/stacks-api/accounts/latest-nonce.ts
148
- var v2 = __toESM(require("valibot"), 1);
149
- var responseSchema2 = v2.object({
150
- last_mempool_tx_nonce: v2.nullable(v2.number()),
151
- last_executed_tx_nonce: v2.nullable(v2.number()),
152
- possible_next_nonce: v2.number(),
153
- detected_missing_nonces: v2.array(v2.number()),
154
- detected_mempool_nonces: v2.array(v2.number())
112
+ var v = __toESM(require("valibot"), 1);
113
+ var responseSchema = v.object({
114
+ last_mempool_tx_nonce: v.nullable(v.number()),
115
+ last_executed_tx_nonce: v.nullable(v.number()),
116
+ possible_next_nonce: v.number(),
117
+ detected_missing_nonces: v.array(v.number()),
118
+ detected_mempool_nonces: v.array(v.number())
155
119
  });
156
120
  async function latestNonce(opts) {
157
121
  const init = {};
@@ -182,7 +146,7 @@ async function latestNonce(opts) {
182
146
  data: jsonError
183
147
  });
184
148
  }
185
- const validationResult = v2.safeParse(responseSchema2, data);
149
+ const validationResult = v.safeParse(responseSchema, data);
186
150
  if (!validationResult.success) {
187
151
  return error({
188
152
  name: "ValidateDataError",
@@ -193,37 +157,43 @@ async function latestNonce(opts) {
193
157
  return success(validationResult.output);
194
158
  }
195
159
 
160
+ // src/stacks-api/accounts/index.ts
161
+ var accounts = {
162
+ balances,
163
+ latestNonce
164
+ };
165
+
196
166
  // src/stacks-api/types.ts
197
- var v3 = __toESM(require("valibot"), 1);
198
- var baseListResponseSchema = v3.object({
199
- limit: v3.number(),
200
- offset: v3.number(),
201
- total: v3.number(),
202
- results: v3.array(v3.unknown())
167
+ var v2 = __toESM(require("valibot"), 1);
168
+ var baseListResponseSchema = v2.object({
169
+ limit: v2.number(),
170
+ offset: v2.number(),
171
+ total: v2.number(),
172
+ results: v2.array(v2.unknown())
203
173
  });
204
174
 
205
175
  // src/stacks-api/blocks/get-block.ts
206
- var v4 = __toESM(require("valibot"), 1);
207
- var responseSchema3 = v4.object({
208
- canonical: v4.boolean(),
209
- height: v4.number(),
210
- hash: v4.string(),
211
- block_time: v4.number(),
212
- block_time_iso: v4.string(),
213
- index_block_hash: v4.string(),
214
- parent_block_hash: v4.string(),
215
- parent_index_block_hash: v4.string(),
216
- burn_block_time: v4.number(),
217
- burn_block_time_iso: v4.string(),
218
- burn_block_hash: v4.string(),
219
- burn_block_height: v4.number(),
220
- miner_txid: v4.string(),
221
- tx_count: v4.number(),
222
- execution_cost_read_count: v4.number(),
223
- execution_cost_read_length: v4.number(),
224
- execution_cost_runtime: v4.number(),
225
- execution_cost_write_count: v4.number(),
226
- execution_cost_write_length: v4.number()
176
+ var v3 = __toESM(require("valibot"), 1);
177
+ var responseSchema2 = v3.object({
178
+ canonical: v3.boolean(),
179
+ height: v3.number(),
180
+ hash: v3.string(),
181
+ block_time: v3.number(),
182
+ block_time_iso: v3.string(),
183
+ index_block_hash: v3.string(),
184
+ parent_block_hash: v3.string(),
185
+ parent_index_block_hash: v3.string(),
186
+ burn_block_time: v3.number(),
187
+ burn_block_time_iso: v3.string(),
188
+ burn_block_hash: v3.string(),
189
+ burn_block_height: v3.number(),
190
+ miner_txid: v3.string(),
191
+ tx_count: v3.number(),
192
+ execution_cost_read_count: v3.number(),
193
+ execution_cost_read_length: v3.number(),
194
+ execution_cost_runtime: v3.number(),
195
+ execution_cost_write_count: v3.number(),
196
+ execution_cost_write_length: v3.number()
227
197
  });
228
198
  async function getBlock(opts) {
229
199
  const init = {};
@@ -255,7 +225,7 @@ async function getBlock(opts) {
255
225
  data: jsonError
256
226
  });
257
227
  }
258
- const validationResult = v4.safeParse(responseSchema3, data);
228
+ const validationResult = v3.safeParse(responseSchema2, data);
259
229
  if (!validationResult.success) {
260
230
  return error({
261
231
  name: "ValidateDataError",
@@ -266,36 +236,29 @@ async function getBlock(opts) {
266
236
  return success(validationResult.output);
267
237
  }
268
238
 
269
- // src/stacks-api/info/core-api.ts
270
- var v5 = __toESM(require("valibot"), 1);
271
- var CoreApiResponseSchema = v5.object({
272
- peer_version: v5.number(),
273
- pox_consensus: v5.string(),
274
- burn_block_height: v5.number(),
275
- stable_pox_consensus: v5.string(),
276
- stable_burn_block_height: v5.number(),
277
- server_version: v5.string(),
278
- network_id: v5.number(),
279
- parent_network_id: v5.number(),
280
- stacks_tip_height: v5.number(),
281
- stacks_tip: v5.string(),
282
- stacks_tip_consensus_hash: v5.string(),
283
- unanchored_tip: v5.nullable(v5.string()),
284
- unanchored_seq: v5.nullable(v5.string()),
285
- exit_at_block_height: v5.nullable(v5.number())
286
- });
287
- async function coreApi(apiOpts) {
239
+ // src/stacks-api/blocks/index.ts
240
+ var blocks = {
241
+ getBlock
242
+ };
243
+
244
+ // src/stacks-api/faucets/stx.ts
245
+ async function stx(opts) {
246
+ const search = new URLSearchParams();
247
+ search.append("address", opts.address);
248
+ if (opts.stacking) search.append("stacking", "true");
288
249
  const init = {};
289
- if (apiOpts.apiKeyConfig) {
250
+ if (opts.apiKeyConfig) {
290
251
  init.headers = {
291
- [apiOpts.apiKeyConfig.header]: apiOpts.apiKeyConfig.key
252
+ [opts.apiKeyConfig.header]: opts.apiKeyConfig.key
292
253
  };
293
254
  }
294
- const res = await fetch(`${apiOpts.baseUrl}/v2/info`, init);
255
+ init.method = "POST";
256
+ const endpoint = `${opts.baseUrl}/extended/v1/faucets/stx?${search}`;
257
+ const res = await fetch(endpoint, init);
295
258
  if (!res.ok) {
296
259
  return error({
297
- name: "FetchCoreApiError",
298
- message: "Failed to fetch.",
260
+ name: "FetchStxError",
261
+ message: "Failed to fetch STX.",
299
262
  data: {
300
263
  status: res.status,
301
264
  statusText: res.statusText,
@@ -303,95 +266,52 @@ async function coreApi(apiOpts) {
303
266
  }
304
267
  });
305
268
  }
306
- const [parseBodyError, data] = await safePromise(res.json());
307
- if (parseBodyError) {
269
+ const [jsonError, data] = await safePromise(res.json());
270
+ if (jsonError) {
308
271
  return error({
309
272
  name: "ParseBodyError",
310
273
  message: "Failed to parse response body as JSON.",
311
- data: parseBodyError
312
- });
313
- }
314
- const validationResult = v5.safeParse(CoreApiResponseSchema, data);
315
- if (!validationResult.success) {
316
- return error({
317
- name: "ValidateDataError",
318
- message: "Failed to validate data.",
319
- data: validationResult
274
+ data: jsonError
320
275
  });
321
276
  }
322
- return success(validationResult.output);
277
+ return success(data);
323
278
  }
324
279
 
325
- // src/stacks-api/info/pox-details.ts
326
- var v6 = __toESM(require("valibot"), 1);
327
- var poxDetailsResponseSchema = v6.object({
328
- contract_id: v6.string(),
329
- pox_activation_threshold_ustx: v6.number(),
330
- first_burnchain_block_height: v6.number(),
331
- current_burnchain_block_height: v6.number(),
332
- prepare_phase_block_length: v6.number(),
333
- reward_phase_block_length: v6.number(),
334
- reward_slots: v6.number(),
335
- rejection_fraction: v6.null(),
336
- total_liquid_supply_ustx: v6.number(),
337
- current_cycle: v6.object({
338
- id: v6.number(),
339
- min_threshold_ustx: v6.number(),
340
- stacked_ustx: v6.number(),
341
- is_pox_active: v6.boolean()
342
- }),
343
- next_cycle: v6.object({
344
- id: v6.number(),
345
- min_threshold_ustx: v6.number(),
346
- min_increment_ustx: v6.number(),
347
- stacked_ustx: v6.number(),
348
- prepare_phase_start_block_height: v6.number(),
349
- blocks_until_prepare_phase: v6.number(),
350
- reward_phase_start_block_height: v6.number(),
351
- blocks_until_reward_phase: v6.number(),
352
- ustx_until_pox_rejection: v6.null()
353
- }),
354
- epochs: v6.array(
355
- v6.object({
356
- epoch_id: v6.string(),
357
- start_height: v6.number(),
358
- end_height: v6.number(),
359
- block_limit: v6.object({
360
- write_length: v6.number(),
361
- write_count: v6.number(),
362
- read_length: v6.number(),
363
- read_count: v6.number(),
364
- runtime: v6.number()
365
- }),
366
- network_epoch: v6.number()
367
- })
368
- ),
369
- min_amount_ustx: v6.number(),
370
- prepare_cycle_length: v6.number(),
371
- reward_cycle_id: v6.number(),
372
- reward_cycle_length: v6.number(),
373
- rejection_votes_left_required: v6.null(),
374
- next_reward_cycle_in: v6.number(),
375
- contract_versions: v6.array(
376
- v6.object({
377
- contract_id: v6.string(),
378
- activation_burnchain_block_height: v6.number(),
379
- first_reward_cycle_id: v6.number()
380
- })
381
- )
280
+ // src/stacks-api/faucets/index.ts
281
+ var faucets = {
282
+ stx
283
+ };
284
+
285
+ // src/stacks-api/info/core-api.ts
286
+ var v4 = __toESM(require("valibot"), 1);
287
+ var CoreApiResponseSchema = v4.object({
288
+ peer_version: v4.number(),
289
+ pox_consensus: v4.string(),
290
+ burn_block_height: v4.number(),
291
+ stable_pox_consensus: v4.string(),
292
+ stable_burn_block_height: v4.number(),
293
+ server_version: v4.string(),
294
+ network_id: v4.number(),
295
+ parent_network_id: v4.number(),
296
+ stacks_tip_height: v4.number(),
297
+ stacks_tip: v4.string(),
298
+ stacks_tip_consensus_hash: v4.string(),
299
+ unanchored_tip: v4.nullable(v4.string()),
300
+ unanchored_seq: v4.nullable(v4.string()),
301
+ exit_at_block_height: v4.nullable(v4.number())
382
302
  });
383
- async function poxDetails(args) {
303
+ async function coreApi(apiOpts) {
384
304
  const init = {};
385
- if (args.apiKeyConfig) {
305
+ if (apiOpts.apiKeyConfig) {
386
306
  init.headers = {
387
- [args.apiKeyConfig.header]: args.apiKeyConfig.key
307
+ [apiOpts.apiKeyConfig.header]: apiOpts.apiKeyConfig.key
388
308
  };
389
309
  }
390
- const res = await fetch(`${args.baseUrl}/v2/pox`, init);
310
+ const res = await fetch(`${apiOpts.baseUrl}/v2/info`, init);
391
311
  if (!res.ok) {
392
312
  return error({
393
- name: "FetchPoxDetailsError",
394
- message: "Failed to fetch pox details.",
313
+ name: "FetchCoreApiError",
314
+ message: "Failed to fetch.",
395
315
  data: {
396
316
  status: res.status,
397
317
  statusText: res.statusText,
@@ -399,34 +319,39 @@ async function poxDetails(args) {
399
319
  }
400
320
  });
401
321
  }
402
- const [jsonParseError, data] = await safePromise(res.json());
403
- if (jsonParseError) {
322
+ const [parseBodyError, data] = await safePromise(res.json());
323
+ if (parseBodyError) {
404
324
  return error({
405
325
  name: "ParseBodyError",
406
- message: "Failed to parse pox details response.",
407
- data: jsonParseError
326
+ message: "Failed to parse response body as JSON.",
327
+ data: parseBodyError
408
328
  });
409
329
  }
410
- const validationResult = v6.safeParse(poxDetailsResponseSchema, data);
330
+ const validationResult = v4.safeParse(CoreApiResponseSchema, data);
411
331
  if (!validationResult.success) {
412
332
  return error({
413
333
  name: "ValidateDataError",
414
- message: "Failed to parse pox details response.",
334
+ message: "Failed to validate data.",
415
335
  data: validationResult
416
336
  });
417
337
  }
418
338
  return success(validationResult.output);
419
339
  }
420
340
 
341
+ // src/stacks-api/info/index.ts
342
+ var info = {
343
+ coreApi
344
+ };
345
+
421
346
  // src/stacks-api/proof-of-transfer/cycle.ts
422
- var v7 = __toESM(require("valibot"), 1);
423
- var responseSchema4 = v7.object({
424
- block_height: v7.number(),
425
- index_block_hash: v7.string(),
426
- cycle_number: v7.number(),
427
- total_weight: v7.number(),
428
- total_stacked_amount: v7.string(),
429
- total_signers: v7.number()
347
+ var v5 = __toESM(require("valibot"), 1);
348
+ var responseSchema3 = v5.object({
349
+ block_height: v5.number(),
350
+ index_block_hash: v5.string(),
351
+ cycle_number: v5.number(),
352
+ total_weight: v5.number(),
353
+ total_stacked_amount: v5.string(),
354
+ total_signers: v5.number()
430
355
  });
431
356
  async function cycle(opts) {
432
357
  const init = {};
@@ -457,7 +382,7 @@ async function cycle(opts) {
457
382
  data: jsonError
458
383
  });
459
384
  }
460
- const validationResult = v7.safeParse(responseSchema4, data);
385
+ const validationResult = v5.safeParse(responseSchema3, data);
461
386
  if (!validationResult.success) {
462
387
  return error({
463
388
  name: "ValidateDataError",
@@ -469,17 +394,17 @@ async function cycle(opts) {
469
394
  }
470
395
 
471
396
  // src/stacks-api/proof-of-transfer/cycles.ts
472
- var v8 = __toESM(require("valibot"), 1);
473
- var cycleInfoSchema = v8.object({
474
- block_height: v8.number(),
475
- index_block_hash: v8.string(),
476
- cycle_number: v8.number(),
477
- total_weight: v8.number(),
478
- total_stacked_amount: v8.string(),
479
- total_signers: v8.number()
397
+ var v6 = __toESM(require("valibot"), 1);
398
+ var cycleInfoSchema = v6.object({
399
+ block_height: v6.number(),
400
+ index_block_hash: v6.string(),
401
+ cycle_number: v6.number(),
402
+ total_weight: v6.number(),
403
+ total_stacked_amount: v6.string(),
404
+ total_signers: v6.number()
480
405
  });
481
- var resultsSchema = v8.array(cycleInfoSchema);
482
- var cyclesResponseSchema = v8.object({
406
+ var resultsSchema = v6.array(cycleInfoSchema);
407
+ var cyclesResponseSchema = v6.object({
483
408
  ...baseListResponseSchema.entries,
484
409
  results: resultsSchema
485
410
  });
@@ -515,7 +440,7 @@ async function cycles(args) {
515
440
  data: jsonError
516
441
  });
517
442
  }
518
- const validationResult = v8.safeParse(cyclesResponseSchema, data);
443
+ const validationResult = v6.safeParse(cyclesResponseSchema, data);
519
444
  if (!validationResult.success) {
520
445
  return error({
521
446
  name: "ValidateDataError",
@@ -527,16 +452,16 @@ async function cycles(args) {
527
452
  }
528
453
 
529
454
  // src/stacks-api/proof-of-transfer/signer-in-cycle.ts
530
- var v9 = __toESM(require("valibot"), 1);
531
- var signerInCycleResponseSchema = v9.object({
532
- signing_key: v9.string(),
533
- signer_address: v9.string(),
534
- weight: v9.number(),
535
- stacked_amount: v9.string(),
536
- weight_percent: v9.number(),
537
- stacked_amount_percent: v9.number(),
538
- solo_stacker_count: v9.number(),
539
- pooled_stacker_count: v9.number()
455
+ var v7 = __toESM(require("valibot"), 1);
456
+ var signerInCycleResponseSchema = v7.object({
457
+ signing_key: v7.string(),
458
+ signer_address: v7.string(),
459
+ weight: v7.number(),
460
+ stacked_amount: v7.string(),
461
+ weight_percent: v7.number(),
462
+ stacked_amount_percent: v7.number(),
463
+ solo_stacker_count: v7.number(),
464
+ pooled_stacker_count: v7.number()
540
465
  });
541
466
  async function signerInCycle(args) {
542
467
  const init = {};
@@ -572,7 +497,7 @@ async function signerInCycle(args) {
572
497
  }
573
498
  });
574
499
  }
575
- const validationResult = v9.safeParse(signerInCycleResponseSchema, data);
500
+ const validationResult = v7.safeParse(signerInCycleResponseSchema, data);
576
501
  if (!validationResult.success) {
577
502
  return error({
578
503
  name: "ValidateDataError",
@@ -584,19 +509,19 @@ async function signerInCycle(args) {
584
509
  }
585
510
 
586
511
  // src/stacks-api/proof-of-transfer/signers-in-cycle.ts
587
- var v10 = __toESM(require("valibot"), 1);
588
- var signerSchema = v10.object({
589
- signing_key: v10.string(),
590
- signer_address: v10.string(),
591
- weight: v10.number(),
592
- stacked_amount: v10.string(),
593
- weight_percent: v10.number(),
594
- stacked_amount_percent: v10.number(),
595
- pooled_stacker_count: v10.number(),
596
- solo_stacker_count: v10.number()
512
+ var v8 = __toESM(require("valibot"), 1);
513
+ var signerSchema = v8.object({
514
+ signing_key: v8.string(),
515
+ signer_address: v8.string(),
516
+ weight: v8.number(),
517
+ stacked_amount: v8.string(),
518
+ weight_percent: v8.number(),
519
+ stacked_amount_percent: v8.number(),
520
+ pooled_stacker_count: v8.number(),
521
+ solo_stacker_count: v8.number()
597
522
  });
598
- var resultsSchema2 = v10.array(signerSchema);
599
- var signersResponseSchema = v10.object({
523
+ var resultsSchema2 = v8.array(signerSchema);
524
+ var signersResponseSchema = v8.object({
600
525
  ...baseListResponseSchema.entries,
601
526
  results: resultsSchema2
602
527
  });
@@ -635,7 +560,7 @@ async function signersInCycle(args) {
635
560
  }
636
561
  });
637
562
  }
638
- const validationResult = v10.safeParse(signersResponseSchema, data);
563
+ const validationResult = v8.safeParse(signersResponseSchema, data);
639
564
  if (!validationResult.success) {
640
565
  return error({
641
566
  name: "ValidateDataError",
@@ -647,15 +572,15 @@ async function signersInCycle(args) {
647
572
  }
648
573
 
649
574
  // src/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.ts
650
- var v11 = __toESM(require("valibot"), 1);
651
- var stackerInfoSchema = v11.object({
652
- stacker_address: v11.string(),
653
- stacked_amount: v11.string(),
654
- pox_address: v11.string(),
655
- stacker_type: v11.union([v11.literal("pooled"), v11.literal("solo")])
575
+ var v9 = __toESM(require("valibot"), 1);
576
+ var stackerInfoSchema = v9.object({
577
+ stacker_address: v9.string(),
578
+ stacked_amount: v9.string(),
579
+ pox_address: v9.string(),
580
+ stacker_type: v9.union([v9.literal("pooled"), v9.literal("solo")])
656
581
  });
657
- var resultsSchema3 = v11.array(stackerInfoSchema);
658
- var stackersForSignerInCycleResponseSchema = v11.object({
582
+ var resultsSchema3 = v9.array(stackerInfoSchema);
583
+ var stackersForSignerInCycleResponseSchema = v9.object({
659
584
  ...baseListResponseSchema.entries,
660
585
  results: resultsSchema3
661
586
  });
@@ -692,7 +617,7 @@ async function stackersForSignerInCycle(opts) {
692
617
  data: jsonError
693
618
  });
694
619
  }
695
- const validationResult = v11.safeParse(
620
+ const validationResult = v9.safeParse(
696
621
  stackersForSignerInCycleResponseSchema,
697
622
  data
698
623
  );
@@ -706,100 +631,45 @@ async function stackersForSignerInCycle(opts) {
706
631
  return success(validationResult.output);
707
632
  }
708
633
 
709
- // src/stacks-api/smart-contracts/read-only.ts
710
- var v12 = __toESM(require("valibot"), 1);
711
- var readOnlyResponseSchema = v12.variant("okay", [
712
- v12.object({
713
- okay: v12.literal(true),
714
- /**
715
- * A Clarity value as a hex-encoded string.
716
- */
717
- result: v12.string()
718
- }),
719
- v12.object({
720
- okay: v12.literal(false),
721
- cause: v12.unknown()
722
- })
723
- ]);
724
- async function readOnly(args) {
725
- const headers = {
726
- "Content-Type": "application/json"
727
- };
728
- if (args.apiKeyConfig) {
729
- headers[args.apiKeyConfig.header] = args.apiKeyConfig.key;
730
- }
731
- const init = {
732
- method: "POST",
733
- body: JSON.stringify({
734
- sender: args.sender,
735
- arguments: args.arguments
736
- }),
737
- headers
738
- };
739
- const endpoint = `${args.baseUrl}/v2/contracts/call-read/${args.contractAddress}/${args.contractName}/${args.functionName}`;
740
- const res = await fetch(endpoint, init);
741
- if (!res.ok) {
742
- return error({
743
- name: "FetchReadOnlyError",
744
- message: "Failed to fetch.",
745
- data: {
746
- status: res.status,
747
- statusText: res.statusText,
748
- bodyParseResult: await safePromise(res.json())
749
- }
750
- });
751
- }
752
- const [jsonError, data] = await safePromise(res.json());
753
- if (jsonError) {
754
- return error({
755
- name: "ParseBodyError",
756
- message: "Failed to parse response body as JSON.",
757
- data: error
758
- });
759
- }
760
- const validationResult = v12.safeParse(readOnlyResponseSchema, data);
761
- if (!validationResult.success) {
762
- return error({
763
- name: "ValidateDataError",
764
- message: "Failed to validate data.",
765
- data: validationResult
766
- });
767
- }
768
- return success(validationResult.output);
769
- }
634
+ // src/stacks-api/proof-of-transfer/index.ts
635
+ var proofOfTransfer = {
636
+ cycle,
637
+ cycles,
638
+ signerInCycle,
639
+ signersInCycle,
640
+ stackersForSignerInCycle
641
+ };
770
642
 
771
643
  // src/stacks-api/stacking-pool/members.ts
772
- var v13 = __toESM(require("valibot"), 1);
773
- var memberSchema = v13.object({
774
- stacker: v13.string(),
775
- pox_addr: v13.optional(v13.string()),
776
- amount_ustx: v13.string(),
777
- burn_block_unlock_height: v13.optional(v13.number()),
778
- block_height: v13.number(),
779
- tx_id: v13.string()
644
+ var v10 = __toESM(require("valibot"), 1);
645
+ var memberSchema = v10.object({
646
+ stacker: v10.string(),
647
+ pox_addr: v10.optional(v10.string()),
648
+ amount_ustx: v10.string(),
649
+ burn_block_unlock_height: v10.optional(v10.number()),
650
+ block_height: v10.number(),
651
+ tx_id: v10.string()
780
652
  });
781
- var membersResponseSchema = v13.object({
782
- limit: v13.number(),
783
- offset: v13.number(),
784
- total: v13.number(),
785
- results: v13.array(memberSchema)
653
+ var membersResponseSchema = v10.object({
654
+ limit: v10.number(),
655
+ offset: v10.number(),
656
+ total: v10.number(),
657
+ results: v10.array(memberSchema)
786
658
  });
787
- async function members(opts, apiOpts) {
659
+ async function members(args) {
788
660
  const search = new URLSearchParams();
789
- if (opts.afterBlock) search.append("after_block", opts.afterBlock.toString());
790
- if (opts.unanchored) search.append("unanchored", "true");
791
- if (opts.limit) search.append("limit", opts.limit.toString());
792
- if (opts.offset) search.append("offset", opts.offset.toString());
661
+ if (args.afterBlock) search.append("after_block", args.afterBlock.toString());
662
+ if (args.unanchored) search.append("unanchored", "true");
663
+ if (args.limit) search.append("limit", args.limit.toString());
664
+ if (args.offset) search.append("offset", args.offset.toString());
793
665
  const init = {};
794
- if (apiOpts.apiKeyConfig) {
666
+ if (args.apiKeyConfig) {
795
667
  init.headers = {
796
- [apiOpts.apiKeyConfig.header]: apiOpts.apiKeyConfig.key
668
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
797
669
  };
798
670
  }
799
- const res = await fetch(
800
- `${apiOpts.baseUrl}/extended/beta/stacking/${opts.poolPrincipal}/delegations?${search}`,
801
- init
802
- );
671
+ const endpoint = `${args.baseUrl}/extended/v1/pox4/${args.poolPrincipal}/delegations?${search}`;
672
+ const res = await fetch(endpoint, init);
803
673
  if (!res.ok) {
804
674
  return error({
805
675
  name: "FetchMembersError",
@@ -819,7 +689,7 @@ async function members(opts, apiOpts) {
819
689
  data: jsonParseError
820
690
  });
821
691
  }
822
- const validationResult = v13.safeParse(membersResponseSchema, data);
692
+ const validationResult = v10.safeParse(membersResponseSchema, data);
823
693
  if (!validationResult.success) {
824
694
  return error({
825
695
  name: "ValidateDataError",
@@ -830,121 +700,126 @@ async function members(opts, apiOpts) {
830
700
  return success(validationResult.output);
831
701
  }
832
702
 
703
+ // src/stacks-api/stacking-pool/index.ts
704
+ var stackingPool = {
705
+ members
706
+ };
707
+
833
708
  // src/stacks-api/transactions/schemas.ts
834
- var v14 = __toESM(require("valibot"), 1);
835
- var baseTransactionSchema = v14.object({
836
- tx_id: v14.string(),
837
- nonce: v14.number(),
838
- fee_rate: v14.string(),
839
- sender_address: v14.string(),
840
- sponsored: v14.boolean(),
841
- post_condition_mode: v14.string(),
842
- post_conditions: v14.array(v14.unknown()),
843
- anchor_mode: v14.string(),
844
- is_unanchored: v14.boolean(),
845
- block_hash: v14.string(),
846
- parent_block_hash: v14.string(),
847
- block_height: v14.number(),
848
- block_time: v14.number(),
849
- block_time_iso: v14.string(),
850
- burn_block_height: v14.number(),
851
- burn_block_time: v14.number(),
852
- burn_block_time_iso: v14.string(),
853
- parent_burn_block_time: v14.number(),
854
- parent_burn_block_time_iso: v14.string(),
855
- canonical: v14.boolean(),
856
- tx_index: v14.number(),
857
- tx_status: v14.union([
858
- v14.literal("success"),
859
- v14.literal("abort_by_response"),
860
- v14.literal("abort_by_post_condition")
709
+ var v11 = __toESM(require("valibot"), 1);
710
+ var baseTransactionSchema = v11.object({
711
+ tx_id: v11.string(),
712
+ nonce: v11.number(),
713
+ fee_rate: v11.string(),
714
+ sender_address: v11.string(),
715
+ sponsored: v11.boolean(),
716
+ post_condition_mode: v11.string(),
717
+ post_conditions: v11.array(v11.unknown()),
718
+ anchor_mode: v11.string(),
719
+ is_unanchored: v11.boolean(),
720
+ block_hash: v11.string(),
721
+ parent_block_hash: v11.string(),
722
+ block_height: v11.number(),
723
+ block_time: v11.number(),
724
+ block_time_iso: v11.string(),
725
+ burn_block_height: v11.number(),
726
+ burn_block_time: v11.number(),
727
+ burn_block_time_iso: v11.string(),
728
+ parent_burn_block_time: v11.number(),
729
+ parent_burn_block_time_iso: v11.string(),
730
+ canonical: v11.boolean(),
731
+ tx_index: v11.number(),
732
+ tx_status: v11.union([
733
+ v11.literal("success"),
734
+ v11.literal("abort_by_response"),
735
+ v11.literal("abort_by_post_condition")
861
736
  ]),
862
- tx_result: v14.object({
863
- hex: v14.string(),
864
- repr: v14.string()
737
+ tx_result: v11.object({
738
+ hex: v11.string(),
739
+ repr: v11.string()
865
740
  }),
866
- microblock_hash: v14.string(),
867
- microblock_sequence: v14.number(),
868
- microblock_canonical: v14.boolean(),
869
- event_count: v14.number(),
870
- events: v14.array(v14.unknown()),
871
- execution_cost_read_count: v14.number(),
872
- execution_cost_read_length: v14.number(),
873
- execution_cost_runtime: v14.number(),
874
- execution_cost_write_count: v14.number(),
875
- execution_cost_write_length: v14.number()
741
+ microblock_hash: v11.string(),
742
+ microblock_sequence: v11.number(),
743
+ microblock_canonical: v11.boolean(),
744
+ event_count: v11.number(),
745
+ events: v11.array(v11.unknown()),
746
+ execution_cost_read_count: v11.number(),
747
+ execution_cost_read_length: v11.number(),
748
+ execution_cost_runtime: v11.number(),
749
+ execution_cost_write_count: v11.number(),
750
+ execution_cost_write_length: v11.number()
876
751
  });
877
- var contractCallTransactionSchema = v14.object({
878
- tx_type: v14.literal("contract_call"),
879
- contract_call: v14.object({
880
- contract_id: v14.string(),
881
- function_name: v14.string(),
882
- function_signature: v14.string(),
883
- function_args: v14.array(
884
- v14.object({
885
- hex: v14.string(),
886
- repr: v14.string(),
887
- name: v14.string(),
888
- type: v14.string()
752
+ var contractCallTransactionSchema = v11.object({
753
+ tx_type: v11.literal("contract_call"),
754
+ contract_call: v11.object({
755
+ contract_id: v11.string(),
756
+ function_name: v11.string(),
757
+ function_signature: v11.string(),
758
+ function_args: v11.array(
759
+ v11.object({
760
+ hex: v11.string(),
761
+ repr: v11.string(),
762
+ name: v11.string(),
763
+ type: v11.string()
889
764
  })
890
765
  )
891
766
  }),
892
767
  ...baseTransactionSchema.entries
893
768
  });
894
- var smartContractTransactionSchema = v14.object({
895
- tx_type: v14.literal("smart_contract"),
896
- smart_contract: v14.object({
769
+ var smartContractTransactionSchema = v11.object({
770
+ tx_type: v11.literal("smart_contract"),
771
+ smart_contract: v11.object({
897
772
  /**
898
773
  * NOTE: The types may be wrong, not sure what type of value is used when
899
774
  * the version is not `null`.
900
775
  */
901
- clarity_version: v14.union([v14.null(), v14.number()]),
902
- contract_id: v14.string(),
903
- source_code: v14.string()
776
+ clarity_version: v11.union([v11.null(), v11.number()]),
777
+ contract_id: v11.string(),
778
+ source_code: v11.string()
904
779
  }),
905
780
  ...baseTransactionSchema.entries
906
781
  });
907
- var tokenTransferSchema = v14.object({
908
- tx_type: v14.literal("token_transfer"),
909
- token_transfer: v14.object({
910
- recipient_address: v14.string(),
911
- amount: v14.string(),
912
- memo: v14.string()
782
+ var tokenTransferSchema = v11.object({
783
+ tx_type: v11.literal("token_transfer"),
784
+ token_transfer: v11.object({
785
+ recipient_address: v11.string(),
786
+ amount: v11.string(),
787
+ memo: v11.string()
913
788
  }),
914
789
  ...baseTransactionSchema.entries
915
790
  });
916
- var transactionSchema = v14.variant("tx_type", [
791
+ var transactionSchema = v11.variant("tx_type", [
917
792
  contractCallTransactionSchema,
918
793
  smartContractTransactionSchema,
919
794
  tokenTransferSchema
920
795
  ]);
921
796
 
922
797
  // src/stacks-api/transactions/address-transactions.ts
923
- var v15 = __toESM(require("valibot"), 1);
924
- var resultSchema = v15.object({
798
+ var v12 = __toESM(require("valibot"), 1);
799
+ var resultSchema = v12.object({
925
800
  tx: transactionSchema,
926
- stx_sent: v15.string(),
927
- stx_received: v15.string(),
928
- events: v15.object({
929
- stx: v15.object({
930
- transfer: v15.number(),
931
- mint: v15.number(),
932
- burn: v15.number()
801
+ stx_sent: v12.string(),
802
+ stx_received: v12.string(),
803
+ events: v12.object({
804
+ stx: v12.object({
805
+ transfer: v12.number(),
806
+ mint: v12.number(),
807
+ burn: v12.number()
933
808
  }),
934
- ft: v15.object({
935
- transfer: v15.number(),
936
- mint: v15.number(),
937
- burn: v15.number()
809
+ ft: v12.object({
810
+ transfer: v12.number(),
811
+ mint: v12.number(),
812
+ burn: v12.number()
938
813
  }),
939
- nft: v15.object({
940
- transfer: v15.number(),
941
- mint: v15.number(),
942
- burn: v15.number()
814
+ nft: v12.object({
815
+ transfer: v12.number(),
816
+ mint: v12.number(),
817
+ burn: v12.number()
943
818
  })
944
819
  })
945
820
  });
946
- var resultsSchema4 = v15.array(resultSchema);
947
- var addressTransactionsResponseSchema = v15.object({
821
+ var resultsSchema4 = v12.array(resultSchema);
822
+ var addressTransactionsResponseSchema = v12.object({
948
823
  ...baseListResponseSchema.entries,
949
824
  results: resultsSchema4
950
825
  });
@@ -981,7 +856,7 @@ async function addressTransactions(args) {
981
856
  data: jsonParseError
982
857
  });
983
858
  }
984
- const validationResult = v15.safeParse(addressTransactionsResponseSchema, data);
859
+ const validationResult = v12.safeParse(addressTransactionsResponseSchema, data);
985
860
  if (!validationResult.success) {
986
861
  return error({
987
862
  name: "ValidateDataError",
@@ -993,7 +868,7 @@ async function addressTransactions(args) {
993
868
  }
994
869
 
995
870
  // src/stacks-api/transactions/get-transaction.ts
996
- var v16 = __toESM(require("valibot"), 1);
871
+ var v13 = __toESM(require("valibot"), 1);
997
872
  async function getTransaction(args) {
998
873
  const init = {};
999
874
  if (args.apiKeyConfig) {
@@ -1022,7 +897,7 @@ async function getTransaction(args) {
1022
897
  error: jsonParseError
1023
898
  });
1024
899
  }
1025
- const validationResult = v16.safeParse(transactionSchema, data);
900
+ const validationResult = v13.safeParse(transactionSchema, data);
1026
901
  if (!validationResult.success) {
1027
902
  return error({
1028
903
  name: "ValidateDataError",
@@ -1033,20 +908,215 @@ async function getTransaction(args) {
1033
908
  return success(validationResult.output);
1034
909
  }
1035
910
 
911
+ // src/stacks-api/transactions/mempool-transactions.ts
912
+ async function mempoolTransactions(args) {
913
+ const search = new URLSearchParams();
914
+ if (args.limit) search.append("limit", args.limit.toString());
915
+ if (args.offset) search.append("offset", args.offset.toString());
916
+ if (args.senderAddress) search.append("sender_address", args.senderAddress);
917
+ if (args.recipientAddress)
918
+ search.append("recipient_address", args.recipientAddress);
919
+ if (args.address) search.append("address", args.address);
920
+ if (args.orderBy) search.append("order_by", args.orderBy);
921
+ if (args.order) search.append("order", args.order);
922
+ const init = {};
923
+ if (args.apiKeyConfig) {
924
+ init.headers = {
925
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
926
+ };
927
+ }
928
+ const res = await fetch(
929
+ `${args.baseUrl}/extended/v1/tx/mempool?${search}`,
930
+ init
931
+ );
932
+ if (!res.ok) {
933
+ return error({
934
+ name: "FetchMempoolTransactionsError",
935
+ message: "Failed to fetch mempool transactions.",
936
+ data: {
937
+ status: res.status,
938
+ statusText: res.statusText,
939
+ bodyParseResult: await safePromise(res.json())
940
+ }
941
+ });
942
+ }
943
+ const [jsonParseError, data] = await safePromise(res.json());
944
+ if (jsonParseError) {
945
+ return error({
946
+ name: "ParseBodyError",
947
+ message: "Failed to parse response body.",
948
+ data: jsonParseError
949
+ });
950
+ }
951
+ return success(data);
952
+ }
953
+
954
+ // src/stacks-api/transactions/index.ts
955
+ var transactions = {
956
+ addressTransactions,
957
+ getTransaction,
958
+ mempoolTransactions
959
+ };
960
+
1036
961
  // src/stacks-api/index.ts
1037
- var accounts = { balances, latestNonce };
1038
- var blocks = { getBlock };
1039
- var info = { coreApi, poxDetails };
1040
- var proofOfTransfer = {
1041
- cycle,
1042
- cycles,
1043
- signerInCycle,
1044
- signersInCycle,
1045
- stackersForSignerInCycle
962
+ var stacksApi = {
963
+ accounts,
964
+ blocks,
965
+ faucets,
966
+ info,
967
+ proofOfTransfer,
968
+ stackingPool,
969
+ transactions
970
+ };
971
+
972
+ // src/stacks-rpc-api/smart-contracts/map-entry.ts
973
+ var v14 = __toESM(require("valibot"), 1);
974
+ var mapEntryResponseSchema = v14.object({
975
+ /**
976
+ * Hex-encoded string of clarity value. It is always an optional tuple.
977
+ */
978
+ data: v14.string(),
979
+ /**
980
+ * Hex-encoded string of the MARF proof for the data
981
+ */
982
+ proof: v14.optional(v14.string())
983
+ });
984
+ async function mapEntry(args) {
985
+ const search = new URLSearchParams();
986
+ if (args.proof === 0) search.append("proof", "0");
987
+ if (args.tip) search.append("tip", args.tip);
988
+ const init = {};
989
+ if (args.apiKeyConfig) {
990
+ init.headers = {
991
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
992
+ };
993
+ }
994
+ init.method = "POST";
995
+ init.body = JSON.stringify(
996
+ args.mapKey.startsWith("0x") ? args.mapKey : `0x${args.mapKey}`
997
+ );
998
+ init.headers = { ...init.headers, "Content-Type": "application/json" };
999
+ const endpoint = `${args.baseUrl}/v2/map_entry/${args.contractAddress}/${args.contractName}/${args.mapName}?${search}`;
1000
+ const res = await fetch(endpoint, init);
1001
+ if (!res.ok) {
1002
+ return error({
1003
+ name: "FetchMapEntryError",
1004
+ message: "Failed to fetch map entry.",
1005
+ data: {
1006
+ init,
1007
+ status: res.status,
1008
+ statusText: res.statusText,
1009
+ endpoint,
1010
+ bodyParseResult: await safePromise(res.text())
1011
+ }
1012
+ });
1013
+ }
1014
+ const [jsonError, data] = await safePromise(res.json());
1015
+ if (jsonError) {
1016
+ return error({
1017
+ name: "ParseBodyError",
1018
+ message: "Failed to parse response body as JSON.",
1019
+ data: jsonError
1020
+ });
1021
+ }
1022
+ const validationResult = v14.safeParse(mapEntryResponseSchema, data);
1023
+ if (!validationResult.success) {
1024
+ return error({
1025
+ name: "ValidateDataError",
1026
+ message: "Failed to validate response data.",
1027
+ data: validationResult
1028
+ });
1029
+ }
1030
+ return success(validationResult.output);
1031
+ }
1032
+
1033
+ // src/stacks-rpc-api/smart-contracts/read-only.ts
1034
+ async function readOnly(args) {
1035
+ const headers = {
1036
+ "Content-Type": "application/json"
1037
+ };
1038
+ if (args.apiKeyConfig) {
1039
+ headers[args.apiKeyConfig.header] = args.apiKeyConfig.key;
1040
+ }
1041
+ const init = {
1042
+ method: "POST",
1043
+ body: JSON.stringify({
1044
+ sender: args.sender,
1045
+ arguments: args.arguments
1046
+ }),
1047
+ headers
1048
+ };
1049
+ const endpoint = `${args.baseUrl}/v2/contracts/call-read/${args.contractAddress}/${args.contractName}/${args.functionName}`;
1050
+ const res = await fetch(endpoint, init);
1051
+ if (!res.ok) {
1052
+ return error({
1053
+ name: "FetchReadOnlyError",
1054
+ message: "Failed to fetch.",
1055
+ data: {
1056
+ status: res.status,
1057
+ statusText: res.statusText,
1058
+ bodyParseResult: await safePromise(res.json())
1059
+ }
1060
+ });
1061
+ }
1062
+ const [jsonError, data] = await safePromise(res.json());
1063
+ if (jsonError) {
1064
+ return error({
1065
+ name: "ParseBodyError",
1066
+ message: "Failed to parse response body as JSON.",
1067
+ data: error
1068
+ });
1069
+ }
1070
+ return success(data);
1071
+ }
1072
+
1073
+ // src/stacks-rpc-api/smart-contracts/index.ts
1074
+ var smartContracts = {
1075
+ mapEntry,
1076
+ readOnly
1077
+ };
1078
+
1079
+ // src/stacks-rpc-api/pox/pox-details.ts
1080
+ async function poxDetails(args) {
1081
+ const init = {};
1082
+ if (args.apiKeyConfig) {
1083
+ init.headers = {
1084
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
1085
+ };
1086
+ }
1087
+ const res = await fetch(`${args.baseUrl}/v2/pox`, init);
1088
+ if (!res.ok) {
1089
+ return error({
1090
+ name: "FetchPoxDetailsError",
1091
+ message: "Failed to fetch pox details.",
1092
+ data: {
1093
+ status: res.status,
1094
+ statusText: res.statusText,
1095
+ bodyParseResult: await safePromise(res.json())
1096
+ }
1097
+ });
1098
+ }
1099
+ const [jsonParseError, data] = await safePromise(res.json());
1100
+ if (jsonParseError) {
1101
+ return error({
1102
+ name: "ParseBodyError",
1103
+ message: "Failed to parse pox details response.",
1104
+ data: jsonParseError
1105
+ });
1106
+ }
1107
+ return success(data);
1108
+ }
1109
+
1110
+ // src/stacks-rpc-api/pox/index.ts
1111
+ var pox = {
1112
+ poxDetails
1113
+ };
1114
+
1115
+ // src/stacks-rpc-api/index.ts
1116
+ var stacksRpcApi = {
1117
+ pox,
1118
+ smartContracts
1046
1119
  };
1047
- var smartContracts = { readOnly };
1048
- var stackingPool = { members };
1049
- var transactions = { addressTransactions, getTransaction };
1050
1120
 
1051
1121
  // src/utils/call-rate-limited-api.ts
1052
1122
  var import_exponential_backoff = require("exponential-backoff");
@@ -1084,23 +1154,204 @@ async function safeCallRateLimitedApi(fn, options) {
1084
1154
  }
1085
1155
  }
1086
1156
 
1087
- // src/index.ts
1088
- var stacksApi = {
1089
- accounts,
1090
- blocks,
1091
- info,
1092
- proofOfTransfer,
1093
- smartContracts,
1094
- stackingPool,
1095
- transactions
1157
+ // src/queries/get-signer-stacked-amount.ts
1158
+ async function getSignerStackedAmount(args) {
1159
+ let totalLocked = 0n;
1160
+ const { identifier, ...rest } = args;
1161
+ let hasMore = true;
1162
+ let offset = 0;
1163
+ let found = false;
1164
+ const limit = 200;
1165
+ while (hasMore && !found) {
1166
+ const [error2, data] = await safeCallRateLimitedApi(
1167
+ () => signersInCycle({
1168
+ ...rest,
1169
+ limit
1170
+ })
1171
+ );
1172
+ if (error2) {
1173
+ return error({
1174
+ name: "GetSignerTotalLockedError",
1175
+ message: "Failed to get signer total locked.",
1176
+ data: {
1177
+ error: error2
1178
+ }
1179
+ });
1180
+ }
1181
+ for (const signer of data.results) {
1182
+ if (identifier.type === "address") {
1183
+ if (signer.signer_address === identifier.signerAddress) {
1184
+ totalLocked = BigInt(signer.stacked_amount);
1185
+ found = true;
1186
+ break;
1187
+ }
1188
+ } else {
1189
+ if (signer.signing_key === identifier.signerPublicKey) {
1190
+ totalLocked = BigInt(signer.stacked_amount);
1191
+ found = true;
1192
+ break;
1193
+ }
1194
+ }
1195
+ }
1196
+ offset += data.results.length;
1197
+ hasMore = offset < data.total;
1198
+ }
1199
+ if (!found) {
1200
+ return error({
1201
+ name: "SignerNotFound",
1202
+ message: "Signer not found.",
1203
+ data: {
1204
+ identifier,
1205
+ cycle: args.cycleNumber
1206
+ }
1207
+ });
1208
+ }
1209
+ return success(totalLocked);
1210
+ }
1211
+
1212
+ // src/queries/index.ts
1213
+ var queries = {
1214
+ getSignerStackedAmount
1215
+ };
1216
+
1217
+ // src/pox4-api/maps/stacking-state.ts
1218
+ var import_transactions2 = require("@stacks/transactions");
1219
+
1220
+ // src/pox4-api/constants.ts
1221
+ var netValueMap = {
1222
+ mainnet: {
1223
+ pox4ContractAddress: "SP000000000000000000002Q6VF78",
1224
+ pox4ContractName: "pox-4"
1225
+ },
1226
+ testnet: {
1227
+ pox4ContractAddress: "ST000000000000000000002AMW42H",
1228
+ pox4ContractName: "pox-4"
1229
+ }
1096
1230
  };
1231
+ function networkDependentValues(network) {
1232
+ return netValueMap[network];
1233
+ }
1234
+
1235
+ // src/pox4-api/maps/stacking-state.ts
1236
+ async function stackingState({
1237
+ key,
1238
+ network,
1239
+ baseUrl,
1240
+ apiKeyConfig,
1241
+ proof,
1242
+ tip
1243
+ }) {
1244
+ const [mapEntryError, mapEntryData] = await mapEntry({
1245
+ contractAddress: networkDependentValues(network).pox4ContractAddress,
1246
+ contractName: networkDependentValues(network).pox4ContractName,
1247
+ mapKey: (0, import_transactions2.cvToHex)(key),
1248
+ mapName: "stacking-state",
1249
+ apiKeyConfig,
1250
+ proof,
1251
+ tip,
1252
+ baseUrl
1253
+ });
1254
+ if (mapEntryError)
1255
+ return error({
1256
+ name: "FetchStackingStateError",
1257
+ message: "Failed to fetch stacking state.",
1258
+ data: mapEntryError
1259
+ });
1260
+ return success({
1261
+ data: (0, import_transactions2.hexToCV)(mapEntryData.data),
1262
+ proof: mapEntryData.proof
1263
+ });
1264
+ }
1265
+
1266
+ // src/pox4-api/maps/index.ts
1267
+ var maps = { stackingState };
1268
+
1269
+ // src/pox4-api/read-only/get-stacker-info.ts
1270
+ var import_transactions3 = require("@stacks/transactions");
1271
+ async function getStackerInfo({
1272
+ principal,
1273
+ network,
1274
+ baseUrl,
1275
+ apiKeyConfig
1276
+ }) {
1277
+ const [readOnlyError, readOnlyData] = await stacksRpcApi.smartContracts.readOnly({
1278
+ contractAddress: networkDependentValues(network).pox4ContractAddress,
1279
+ contractName: networkDependentValues(network).pox4ContractName,
1280
+ functionName: "get-stacker-info",
1281
+ arguments: [(0, import_transactions3.cvToHex)((0, import_transactions3.principalCV)(principal))],
1282
+ baseUrl,
1283
+ apiKeyConfig,
1284
+ sender: principal
1285
+ });
1286
+ if (readOnlyError) {
1287
+ return error({
1288
+ name: "GetStackerInfoError",
1289
+ message: "Failed to get stacker info.",
1290
+ data: readOnlyError
1291
+ });
1292
+ }
1293
+ if (!readOnlyData.okay) {
1294
+ return error({
1295
+ name: "GetStackerInfoFunctionCallError",
1296
+ message: "Call to `get-stacker-info` failed.",
1297
+ data: readOnlyData
1298
+ });
1299
+ }
1300
+ return success((0, import_transactions3.hexToCV)(readOnlyData.result));
1301
+ }
1302
+
1303
+ // src/pox4-api/read-only/get-check-delegation.ts
1304
+ var import_transactions4 = require("@stacks/transactions");
1305
+ async function getCheckDelegation({
1306
+ principal,
1307
+ network,
1308
+ baseUrl,
1309
+ apiKeyConfig
1310
+ }) {
1311
+ const [readOnlyError, readOnlyData] = await stacksRpcApi.smartContracts.readOnly({
1312
+ contractAddress: networkDependentValues(network).pox4ContractAddress,
1313
+ contractName: networkDependentValues(network).pox4ContractName,
1314
+ functionName: "get-check-delegation",
1315
+ arguments: [(0, import_transactions4.cvToHex)((0, import_transactions4.principalCV)(principal))],
1316
+ baseUrl,
1317
+ apiKeyConfig,
1318
+ sender: principal
1319
+ });
1320
+ if (readOnlyError) {
1321
+ return error({
1322
+ name: "GetCheckDelegationError",
1323
+ message: "Failed to get check delegation.",
1324
+ data: readOnlyError
1325
+ });
1326
+ }
1327
+ if (!readOnlyData.okay) {
1328
+ return error({
1329
+ name: "GetCheckDelegationFunctionCallError",
1330
+ message: "Call to `get-check-delegation` failed.",
1331
+ data: readOnlyData
1332
+ });
1333
+ }
1334
+ return success((0, import_transactions4.hexToCV)(readOnlyData.result));
1335
+ }
1336
+
1337
+ // src/pox4-api/read-only/index.ts
1338
+ var readOnly2 = {
1339
+ getStackerInfo,
1340
+ getCheckDelegation
1341
+ };
1342
+
1343
+ // src/pox4-api/index.ts
1344
+ var pox4Api = { maps, readOnly: readOnly2 };
1097
1345
  // Annotate the CommonJS export names for ESM import in node:
1098
1346
  0 && (module.exports = {
1099
1347
  callRateLimitedApi,
1100
1348
  error,
1349
+ pox4Api,
1350
+ queries,
1101
1351
  safeCall,
1102
1352
  safeCallRateLimitedApi,
1103
1353
  safePromise,
1104
1354
  stacksApi,
1355
+ stacksRpcApi,
1105
1356
  success
1106
1357
  });