@secretkeylabs/stacks-tools 0.4.0 → 0.5.0-5d800c5

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