@secretkeylabs/stacks-tools 0.4.0-fdbbd5e → 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,35 +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.string(),
284
- exit_at_block_height: v5.number()
285
- });
286
- 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");
287
249
  const init = {};
288
- if (apiOpts.apiKeyConfig) {
250
+ if (opts.apiKeyConfig) {
289
251
  init.headers = {
290
- [apiOpts.apiKeyConfig.header]: apiOpts.apiKeyConfig.key
252
+ [opts.apiKeyConfig.header]: opts.apiKeyConfig.key
291
253
  };
292
254
  }
293
- 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);
294
258
  if (!res.ok) {
295
259
  return error({
296
- name: "FetchCoreApiError",
297
- message: "Failed to fetch.",
260
+ name: "FetchStxError",
261
+ message: "Failed to fetch STX.",
298
262
  data: {
299
263
  status: res.status,
300
264
  statusText: res.statusText,
@@ -302,95 +266,52 @@ async function coreApi(apiOpts) {
302
266
  }
303
267
  });
304
268
  }
305
- const [parseBodyError, data] = await safePromise(res.json());
306
- if (parseBodyError) {
269
+ const [jsonError, data] = await safePromise(res.json());
270
+ if (jsonError) {
307
271
  return error({
308
272
  name: "ParseBodyError",
309
273
  message: "Failed to parse response body as JSON.",
310
- data: parseBodyError
311
- });
312
- }
313
- const validationResult = v5.safeParse(CoreApiResponseSchema, data);
314
- if (!validationResult.success) {
315
- return error({
316
- name: "ValidateDataError",
317
- message: "Failed to validate data.",
318
- data: validationResult
274
+ data: jsonError
319
275
  });
320
276
  }
321
- return success(validationResult.output);
277
+ return success(data);
322
278
  }
323
279
 
324
- // src/stacks-api/info/pox-details.ts
325
- var v6 = __toESM(require("valibot"), 1);
326
- var poxDetailsResponseSchema = v6.object({
327
- contract_id: v6.string(),
328
- pox_activation_threshold_ustx: v6.number(),
329
- first_burnchain_block_height: v6.number(),
330
- current_burnchain_block_height: v6.number(),
331
- prepare_phase_block_length: v6.number(),
332
- reward_phase_block_length: v6.number(),
333
- reward_slots: v6.number(),
334
- rejection_fraction: v6.null(),
335
- total_liquid_supply_ustx: v6.number(),
336
- current_cycle: v6.object({
337
- id: v6.number(),
338
- min_threshold_ustx: v6.number(),
339
- stacked_ustx: v6.number(),
340
- is_pox_active: v6.boolean()
341
- }),
342
- next_cycle: v6.object({
343
- id: v6.number(),
344
- min_threshold_ustx: v6.number(),
345
- min_increment_ustx: v6.number(),
346
- stacked_ustx: v6.number(),
347
- prepare_phase_start_block_height: v6.number(),
348
- blocks_until_prepare_phase: v6.number(),
349
- reward_phase_start_block_height: v6.number(),
350
- blocks_until_reward_phase: v6.number(),
351
- ustx_until_pox_rejection: v6.null()
352
- }),
353
- epochs: v6.array(
354
- v6.object({
355
- epoch_id: v6.string(),
356
- start_height: v6.number(),
357
- end_height: v6.number(),
358
- block_limit: v6.object({
359
- write_length: v6.number(),
360
- write_count: v6.number(),
361
- read_length: v6.number(),
362
- read_count: v6.number(),
363
- runtime: v6.number()
364
- }),
365
- network_epoch: v6.number()
366
- })
367
- ),
368
- min_amount_ustx: v6.number(),
369
- prepare_cycle_length: v6.number(),
370
- reward_cycle_id: v6.number(),
371
- reward_cycle_length: v6.number(),
372
- rejection_votes_left_required: v6.null(),
373
- next_reward_cycle_in: v6.number(),
374
- contract_versions: v6.array(
375
- v6.object({
376
- contract_id: v6.string(),
377
- activation_burnchain_block_height: v6.number(),
378
- first_reward_cycle_id: v6.number()
379
- })
380
- )
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())
381
302
  });
382
- async function poxDetails(args) {
303
+ async function coreApi(apiOpts) {
383
304
  const init = {};
384
- if (args.apiKeyConfig) {
305
+ if (apiOpts.apiKeyConfig) {
385
306
  init.headers = {
386
- [args.apiKeyConfig.header]: args.apiKeyConfig.key
307
+ [apiOpts.apiKeyConfig.header]: apiOpts.apiKeyConfig.key
387
308
  };
388
309
  }
389
- const res = await fetch(`${args.baseUrl}/v2/pox`, init);
310
+ const res = await fetch(`${apiOpts.baseUrl}/v2/info`, init);
390
311
  if (!res.ok) {
391
312
  return error({
392
- name: "FetchPoxDetailsError",
393
- message: "Failed to fetch pox details.",
313
+ name: "FetchCoreApiError",
314
+ message: "Failed to fetch.",
394
315
  data: {
395
316
  status: res.status,
396
317
  statusText: res.statusText,
@@ -398,34 +319,39 @@ async function poxDetails(args) {
398
319
  }
399
320
  });
400
321
  }
401
- const [jsonParseError, data] = await safePromise(res.json());
402
- if (jsonParseError) {
322
+ const [parseBodyError, data] = await safePromise(res.json());
323
+ if (parseBodyError) {
403
324
  return error({
404
325
  name: "ParseBodyError",
405
- message: "Failed to parse pox details response.",
406
- data: jsonParseError
326
+ message: "Failed to parse response body as JSON.",
327
+ data: parseBodyError
407
328
  });
408
329
  }
409
- const validationResult = v6.safeParse(poxDetailsResponseSchema, data);
330
+ const validationResult = v4.safeParse(CoreApiResponseSchema, data);
410
331
  if (!validationResult.success) {
411
332
  return error({
412
333
  name: "ValidateDataError",
413
- message: "Failed to parse pox details response.",
334
+ message: "Failed to validate data.",
414
335
  data: validationResult
415
336
  });
416
337
  }
417
338
  return success(validationResult.output);
418
339
  }
419
340
 
341
+ // src/stacks-api/info/index.ts
342
+ var info = {
343
+ coreApi
344
+ };
345
+
420
346
  // src/stacks-api/proof-of-transfer/cycle.ts
421
- var v7 = __toESM(require("valibot"), 1);
422
- var responseSchema4 = v7.object({
423
- block_height: v7.number(),
424
- index_block_hash: v7.string(),
425
- cycle_number: v7.number(),
426
- total_weight: v7.number(),
427
- total_stacked_amount: v7.string(),
428
- 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()
429
355
  });
430
356
  async function cycle(opts) {
431
357
  const init = {};
@@ -456,7 +382,7 @@ async function cycle(opts) {
456
382
  data: jsonError
457
383
  });
458
384
  }
459
- const validationResult = v7.safeParse(responseSchema4, data);
385
+ const validationResult = v5.safeParse(responseSchema3, data);
460
386
  if (!validationResult.success) {
461
387
  return error({
462
388
  name: "ValidateDataError",
@@ -468,17 +394,17 @@ async function cycle(opts) {
468
394
  }
469
395
 
470
396
  // src/stacks-api/proof-of-transfer/cycles.ts
471
- var v8 = __toESM(require("valibot"), 1);
472
- var cycleInfoSchema = v8.object({
473
- block_height: v8.number(),
474
- index_block_hash: v8.string(),
475
- cycle_number: v8.number(),
476
- total_weight: v8.number(),
477
- total_stacked_amount: v8.string(),
478
- 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()
479
405
  });
480
- var resultsSchema = v8.array(cycleInfoSchema);
481
- var cyclesResponseSchema = v8.object({
406
+ var resultsSchema = v6.array(cycleInfoSchema);
407
+ var cyclesResponseSchema = v6.object({
482
408
  ...baseListResponseSchema.entries,
483
409
  results: resultsSchema
484
410
  });
@@ -514,7 +440,7 @@ async function cycles(args) {
514
440
  data: jsonError
515
441
  });
516
442
  }
517
- const validationResult = v8.safeParse(cyclesResponseSchema, data);
443
+ const validationResult = v6.safeParse(cyclesResponseSchema, data);
518
444
  if (!validationResult.success) {
519
445
  return error({
520
446
  name: "ValidateDataError",
@@ -526,16 +452,16 @@ async function cycles(args) {
526
452
  }
527
453
 
528
454
  // src/stacks-api/proof-of-transfer/signer-in-cycle.ts
529
- var v9 = __toESM(require("valibot"), 1);
530
- var signerInCycleResponseSchema = v9.object({
531
- signing_key: v9.string(),
532
- signer_address: v9.string(),
533
- weight: v9.number(),
534
- stacked_amount: v9.string(),
535
- weight_percent: v9.number(),
536
- stacked_amount_percent: v9.number(),
537
- solo_stacker_count: v9.number(),
538
- 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()
539
465
  });
540
466
  async function signerInCycle(args) {
541
467
  const init = {};
@@ -571,7 +497,7 @@ async function signerInCycle(args) {
571
497
  }
572
498
  });
573
499
  }
574
- const validationResult = v9.safeParse(signerInCycleResponseSchema, data);
500
+ const validationResult = v7.safeParse(signerInCycleResponseSchema, data);
575
501
  if (!validationResult.success) {
576
502
  return error({
577
503
  name: "ValidateDataError",
@@ -583,19 +509,19 @@ async function signerInCycle(args) {
583
509
  }
584
510
 
585
511
  // src/stacks-api/proof-of-transfer/signers-in-cycle.ts
586
- var v10 = __toESM(require("valibot"), 1);
587
- var signerSchema = v10.object({
588
- signing_key: v10.string(),
589
- signer_address: v10.string(),
590
- weight: v10.number(),
591
- stacked_amount: v10.string(),
592
- weight_percent: v10.number(),
593
- stacked_amount_percent: v10.number(),
594
- pooled_stacker_count: v10.number(),
595
- 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()
596
522
  });
597
- var resultsSchema2 = v10.array(signerSchema);
598
- var signersResponseSchema = v10.object({
523
+ var resultsSchema2 = v8.array(signerSchema);
524
+ var signersResponseSchema = v8.object({
599
525
  ...baseListResponseSchema.entries,
600
526
  results: resultsSchema2
601
527
  });
@@ -634,7 +560,7 @@ async function signersInCycle(args) {
634
560
  }
635
561
  });
636
562
  }
637
- const validationResult = v10.safeParse(signersResponseSchema, data);
563
+ const validationResult = v8.safeParse(signersResponseSchema, data);
638
564
  if (!validationResult.success) {
639
565
  return error({
640
566
  name: "ValidateDataError",
@@ -646,15 +572,15 @@ async function signersInCycle(args) {
646
572
  }
647
573
 
648
574
  // src/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.ts
649
- var v11 = __toESM(require("valibot"), 1);
650
- var stackerInfoSchema = v11.object({
651
- stacker_address: v11.string(),
652
- stacked_amount: v11.string(),
653
- pox_address: v11.string(),
654
- 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")])
655
581
  });
656
- var resultsSchema3 = v11.array(stackerInfoSchema);
657
- var stackersForSignerInCycleResponseSchema = v11.object({
582
+ var resultsSchema3 = v9.array(stackerInfoSchema);
583
+ var stackersForSignerInCycleResponseSchema = v9.object({
658
584
  ...baseListResponseSchema.entries,
659
585
  results: resultsSchema3
660
586
  });
@@ -691,7 +617,7 @@ async function stackersForSignerInCycle(opts) {
691
617
  data: jsonError
692
618
  });
693
619
  }
694
- const validationResult = v11.safeParse(
620
+ const validationResult = v9.safeParse(
695
621
  stackersForSignerInCycleResponseSchema,
696
622
  data
697
623
  );
@@ -705,100 +631,45 @@ async function stackersForSignerInCycle(opts) {
705
631
  return success(validationResult.output);
706
632
  }
707
633
 
708
- // src/stacks-api/smart-contracts/read-only.ts
709
- var v12 = __toESM(require("valibot"), 1);
710
- var readOnlyResponseSchema = v12.variant("okay", [
711
- v12.object({
712
- okay: v12.literal(true),
713
- /**
714
- * A Clarity value as a hex-encoded string.
715
- */
716
- result: v12.string()
717
- }),
718
- v12.object({
719
- okay: v12.literal(false),
720
- cause: v12.unknown()
721
- })
722
- ]);
723
- async function readOnly(args) {
724
- const headers = {
725
- "Content-Type": "application/json"
726
- };
727
- if (args.apiKeyConfig) {
728
- headers[args.apiKeyConfig.header] = args.apiKeyConfig.key;
729
- }
730
- const init = {
731
- method: "POST",
732
- body: JSON.stringify({
733
- sender: args.sender,
734
- arguments: args.arguments
735
- }),
736
- headers
737
- };
738
- const endpoint = `${args.baseUrl}/v2/contracts/call-read/${args.contractAddress}/${args.contractName}/${args.functionName}`;
739
- const res = await fetch(endpoint, init);
740
- if (!res.ok) {
741
- return error({
742
- name: "FetchReadOnlyError",
743
- message: "Failed to fetch.",
744
- data: {
745
- status: res.status,
746
- statusText: res.statusText,
747
- bodyParseResult: await safePromise(res.json())
748
- }
749
- });
750
- }
751
- const [jsonError, data] = await safePromise(res.json());
752
- if (jsonError) {
753
- return error({
754
- name: "ParseBodyError",
755
- message: "Failed to parse response body as JSON.",
756
- data: error
757
- });
758
- }
759
- const validationResult = v12.safeParse(readOnlyResponseSchema, data);
760
- if (!validationResult.success) {
761
- return error({
762
- name: "ValidateDataError",
763
- message: "Failed to validate data.",
764
- data: validationResult
765
- });
766
- }
767
- return success(validationResult.output);
768
- }
634
+ // src/stacks-api/proof-of-transfer/index.ts
635
+ var proofOfTransfer = {
636
+ cycle,
637
+ cycles,
638
+ signerInCycle,
639
+ signersInCycle,
640
+ stackersForSignerInCycle
641
+ };
769
642
 
770
643
  // src/stacks-api/stacking-pool/members.ts
771
- var v13 = __toESM(require("valibot"), 1);
772
- var memberSchema = v13.object({
773
- stacker: v13.string(),
774
- pox_addr: v13.optional(v13.string()),
775
- amount_ustx: v13.string(),
776
- burn_block_unlock_height: v13.optional(v13.number()),
777
- block_height: v13.number(),
778
- 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()
779
652
  });
780
- var membersResponseSchema = v13.object({
781
- limit: v13.number(),
782
- offset: v13.number(),
783
- total: v13.number(),
784
- 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)
785
658
  });
786
- async function members(opts, apiOpts) {
659
+ async function members(args) {
787
660
  const search = new URLSearchParams();
788
- if (opts.afterBlock) search.append("after_block", opts.afterBlock.toString());
789
- if (opts.unanchored) search.append("unanchored", "true");
790
- if (opts.limit) search.append("limit", opts.limit.toString());
791
- 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());
792
665
  const init = {};
793
- if (apiOpts.apiKeyConfig) {
666
+ if (args.apiKeyConfig) {
794
667
  init.headers = {
795
- [apiOpts.apiKeyConfig.header]: apiOpts.apiKeyConfig.key
668
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
796
669
  };
797
670
  }
798
- const res = await fetch(
799
- `${apiOpts.baseUrl}/extended/beta/stacking/${opts.poolPrincipal}/delegations?${search}`,
800
- init
801
- );
671
+ const endpoint = `${args.baseUrl}/extended/v1/pox4/${args.poolPrincipal}/delegations?${search}`;
672
+ const res = await fetch(endpoint, init);
802
673
  if (!res.ok) {
803
674
  return error({
804
675
  name: "FetchMembersError",
@@ -818,7 +689,7 @@ async function members(opts, apiOpts) {
818
689
  data: jsonParseError
819
690
  });
820
691
  }
821
- const validationResult = v13.safeParse(membersResponseSchema, data);
692
+ const validationResult = v10.safeParse(membersResponseSchema, data);
822
693
  if (!validationResult.success) {
823
694
  return error({
824
695
  name: "ValidateDataError",
@@ -829,121 +700,126 @@ async function members(opts, apiOpts) {
829
700
  return success(validationResult.output);
830
701
  }
831
702
 
703
+ // src/stacks-api/stacking-pool/index.ts
704
+ var stackingPool = {
705
+ members
706
+ };
707
+
832
708
  // src/stacks-api/transactions/schemas.ts
833
- var v14 = __toESM(require("valibot"), 1);
834
- var baseTransactionSchema = v14.object({
835
- tx_id: v14.string(),
836
- nonce: v14.number(),
837
- fee_rate: v14.string(),
838
- sender_address: v14.string(),
839
- sponsored: v14.boolean(),
840
- post_condition_mode: v14.string(),
841
- post_conditions: v14.array(v14.unknown()),
842
- anchor_mode: v14.string(),
843
- is_unanchored: v14.boolean(),
844
- block_hash: v14.string(),
845
- parent_block_hash: v14.string(),
846
- block_height: v14.number(),
847
- block_time: v14.number(),
848
- block_time_iso: v14.string(),
849
- burn_block_height: v14.number(),
850
- burn_block_time: v14.number(),
851
- burn_block_time_iso: v14.string(),
852
- parent_burn_block_time: v14.number(),
853
- parent_burn_block_time_iso: v14.string(),
854
- canonical: v14.boolean(),
855
- tx_index: v14.number(),
856
- tx_status: v14.union([
857
- v14.literal("success"),
858
- v14.literal("abort_by_response"),
859
- 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")
860
736
  ]),
861
- tx_result: v14.object({
862
- hex: v14.string(),
863
- repr: v14.string()
737
+ tx_result: v11.object({
738
+ hex: v11.string(),
739
+ repr: v11.string()
864
740
  }),
865
- microblock_hash: v14.string(),
866
- microblock_sequence: v14.number(),
867
- microblock_canonical: v14.boolean(),
868
- event_count: v14.number(),
869
- events: v14.array(v14.unknown()),
870
- execution_cost_read_count: v14.number(),
871
- execution_cost_read_length: v14.number(),
872
- execution_cost_runtime: v14.number(),
873
- execution_cost_write_count: v14.number(),
874
- 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()
875
751
  });
876
- var contractCallTransactionSchema = v14.object({
877
- tx_type: v14.literal("contract_call"),
878
- contract_call: v14.object({
879
- contract_id: v14.string(),
880
- function_name: v14.string(),
881
- function_signature: v14.string(),
882
- function_args: v14.array(
883
- v14.object({
884
- hex: v14.string(),
885
- repr: v14.string(),
886
- name: v14.string(),
887
- 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()
888
764
  })
889
765
  )
890
766
  }),
891
767
  ...baseTransactionSchema.entries
892
768
  });
893
- var smartContractTransactionSchema = v14.object({
894
- tx_type: v14.literal("smart_contract"),
895
- smart_contract: v14.object({
769
+ var smartContractTransactionSchema = v11.object({
770
+ tx_type: v11.literal("smart_contract"),
771
+ smart_contract: v11.object({
896
772
  /**
897
773
  * NOTE: The types may be wrong, not sure what type of value is used when
898
774
  * the version is not `null`.
899
775
  */
900
- clarity_version: v14.union([v14.null(), v14.number()]),
901
- contract_id: v14.string(),
902
- source_code: v14.string()
776
+ clarity_version: v11.union([v11.null(), v11.number()]),
777
+ contract_id: v11.string(),
778
+ source_code: v11.string()
903
779
  }),
904
780
  ...baseTransactionSchema.entries
905
781
  });
906
- var tokenTransferSchema = v14.object({
907
- tx_type: v14.literal("token_transfer"),
908
- token_transfer: v14.object({
909
- recipient_address: v14.string(),
910
- amount: v14.string(),
911
- 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()
912
788
  }),
913
789
  ...baseTransactionSchema.entries
914
790
  });
915
- var transactionSchema = v14.variant("tx_type", [
791
+ var transactionSchema = v11.variant("tx_type", [
916
792
  contractCallTransactionSchema,
917
793
  smartContractTransactionSchema,
918
794
  tokenTransferSchema
919
795
  ]);
920
796
 
921
797
  // src/stacks-api/transactions/address-transactions.ts
922
- var v15 = __toESM(require("valibot"), 1);
923
- var resultSchema = v15.object({
798
+ var v12 = __toESM(require("valibot"), 1);
799
+ var resultSchema = v12.object({
924
800
  tx: transactionSchema,
925
- stx_sent: v15.string(),
926
- stx_received: v15.string(),
927
- events: v15.object({
928
- stx: v15.object({
929
- transfer: v15.number(),
930
- mint: v15.number(),
931
- 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()
932
808
  }),
933
- ft: v15.object({
934
- transfer: v15.number(),
935
- mint: v15.number(),
936
- burn: v15.number()
809
+ ft: v12.object({
810
+ transfer: v12.number(),
811
+ mint: v12.number(),
812
+ burn: v12.number()
937
813
  }),
938
- nft: v15.object({
939
- transfer: v15.number(),
940
- mint: v15.number(),
941
- burn: v15.number()
814
+ nft: v12.object({
815
+ transfer: v12.number(),
816
+ mint: v12.number(),
817
+ burn: v12.number()
942
818
  })
943
819
  })
944
820
  });
945
- var resultsSchema4 = v15.array(resultSchema);
946
- var addressTransactionsResponseSchema = v15.object({
821
+ var resultsSchema4 = v12.array(resultSchema);
822
+ var addressTransactionsResponseSchema = v12.object({
947
823
  ...baseListResponseSchema.entries,
948
824
  results: resultsSchema4
949
825
  });
@@ -980,7 +856,7 @@ async function addressTransactions(args) {
980
856
  data: jsonParseError
981
857
  });
982
858
  }
983
- const validationResult = v15.safeParse(addressTransactionsResponseSchema, data);
859
+ const validationResult = v12.safeParse(addressTransactionsResponseSchema, data);
984
860
  if (!validationResult.success) {
985
861
  return error({
986
862
  name: "ValidateDataError",
@@ -992,7 +868,7 @@ async function addressTransactions(args) {
992
868
  }
993
869
 
994
870
  // src/stacks-api/transactions/get-transaction.ts
995
- var v16 = __toESM(require("valibot"), 1);
871
+ var v13 = __toESM(require("valibot"), 1);
996
872
  async function getTransaction(args) {
997
873
  const init = {};
998
874
  if (args.apiKeyConfig) {
@@ -1021,7 +897,7 @@ async function getTransaction(args) {
1021
897
  error: jsonParseError
1022
898
  });
1023
899
  }
1024
- const validationResult = v16.safeParse(transactionSchema, data);
900
+ const validationResult = v13.safeParse(transactionSchema, data);
1025
901
  if (!validationResult.success) {
1026
902
  return error({
1027
903
  name: "ValidateDataError",
@@ -1032,20 +908,215 @@ async function getTransaction(args) {
1032
908
  return success(validationResult.output);
1033
909
  }
1034
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
+
1035
961
  // src/stacks-api/index.ts
1036
- var accounts = { balances, latestNonce };
1037
- var blocks = { getBlock };
1038
- var info = { coreApi, poxDetails };
1039
- var proofOfTransfer = {
1040
- cycle,
1041
- cycles,
1042
- signerInCycle,
1043
- signersInCycle,
1044
- 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
1045
1119
  };
1046
- var smartContracts = { readOnly };
1047
- var stackingPool = { members };
1048
- var transactions = { addressTransactions, getTransaction };
1049
1120
 
1050
1121
  // src/utils/call-rate-limited-api.ts
1051
1122
  var import_exponential_backoff = require("exponential-backoff");
@@ -1083,23 +1154,204 @@ async function safeCallRateLimitedApi(fn, options) {
1083
1154
  }
1084
1155
  }
1085
1156
 
1086
- // src/index.ts
1087
- var stacksApi = {
1088
- accounts,
1089
- blocks,
1090
- info,
1091
- proofOfTransfer,
1092
- smartContracts,
1093
- stackingPool,
1094
- 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
+ }
1095
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 };
1096
1345
  // Annotate the CommonJS export names for ESM import in node:
1097
1346
  0 && (module.exports = {
1098
1347
  callRateLimitedApi,
1099
1348
  error,
1349
+ pox4Api,
1350
+ queries,
1100
1351
  safeCall,
1101
1352
  safeCallRateLimitedApi,
1102
1353
  safePromise,
1103
1354
  stacksApi,
1355
+ stacksRpcApi,
1104
1356
  success
1105
1357
  });