@secretkeylabs/stacks-tools 0.4.0-afcaa14 → 0.4.0-de2b6d9

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
@@ -102,37 +102,86 @@ async function balances(opts) {
102
102
  return success(validationResult.output);
103
103
  }
104
104
 
105
- // src/stacks-api/types.ts
105
+ // src/stacks-api/accounts/latest-nonce.ts
106
106
  import * as v2 from "valibot";
107
- var baseListResponseSchema = v2.object({
108
- limit: v2.number(),
109
- offset: v2.number(),
110
- total: v2.number(),
111
- results: v2.array(v2.unknown())
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())
112
113
  });
114
+ async function latestNonce(opts) {
115
+ const init = {};
116
+ if (opts.apiKeyConfig) {
117
+ init.headers = {
118
+ [opts.apiKeyConfig.header]: opts.apiKeyConfig.key
119
+ };
120
+ }
121
+ const endpoint = `${opts.baseUrl}/extended/v1/address/${opts.principal}/nonces`;
122
+ const res = await fetch(endpoint, init);
123
+ if (!res.ok) {
124
+ return error({
125
+ name: "FetchLatestNonceError",
126
+ message: "Failed to fetch latest nonce.",
127
+ data: {
128
+ endpoint,
129
+ status: res.status,
130
+ statusText: res.statusText,
131
+ bodyParseResult: await safePromise(res.json())
132
+ }
133
+ });
134
+ }
135
+ const [jsonError, data] = await safePromise(res.json());
136
+ if (jsonError) {
137
+ return error({
138
+ name: "ParseBodyError",
139
+ message: "Failed to parse response body as JSON.",
140
+ data: jsonError
141
+ });
142
+ }
143
+ const validationResult = v2.safeParse(responseSchema2, data);
144
+ if (!validationResult.success) {
145
+ return error({
146
+ name: "ValidateDataError",
147
+ message: "Failed to validate data.",
148
+ data: validationResult
149
+ });
150
+ }
151
+ return success(validationResult.output);
152
+ }
113
153
 
114
- // src/stacks-api/blocks/get-block.ts
154
+ // src/stacks-api/types.ts
115
155
  import * as v3 from "valibot";
116
- var responseSchema2 = v3.object({
117
- canonical: v3.boolean(),
118
- height: v3.number(),
119
- hash: v3.string(),
120
- block_time: v3.number(),
121
- block_time_iso: v3.string(),
122
- index_block_hash: v3.string(),
123
- parent_block_hash: v3.string(),
124
- parent_index_block_hash: v3.string(),
125
- burn_block_time: v3.number(),
126
- burn_block_time_iso: v3.string(),
127
- burn_block_hash: v3.string(),
128
- burn_block_height: v3.number(),
129
- miner_txid: v3.string(),
130
- tx_count: v3.number(),
131
- execution_cost_read_count: v3.number(),
132
- execution_cost_read_length: v3.number(),
133
- execution_cost_runtime: v3.number(),
134
- execution_cost_write_count: v3.number(),
135
- execution_cost_write_length: v3.number()
156
+ var baseListResponseSchema = v3.object({
157
+ limit: v3.number(),
158
+ offset: v3.number(),
159
+ total: v3.number(),
160
+ results: v3.array(v3.unknown())
161
+ });
162
+
163
+ // 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()
136
185
  });
137
186
  async function getBlock(opts) {
138
187
  const init = {};
@@ -164,7 +213,7 @@ async function getBlock(opts) {
164
213
  data: jsonError
165
214
  });
166
215
  }
167
- const validationResult = v3.safeParse(responseSchema2, data);
216
+ const validationResult = v4.safeParse(responseSchema3, data);
168
217
  if (!validationResult.success) {
169
218
  return error({
170
219
  name: "ValidateDataError",
@@ -176,21 +225,22 @@ async function getBlock(opts) {
176
225
  }
177
226
 
178
227
  // src/stacks-api/info/core-api.ts
179
- import * as v4 from "valibot";
180
- var CoreApiResponseSchema = v4.object({
181
- peer_version: v4.number(),
182
- pox_consensus: v4.string(),
183
- burn_block_height: v4.number(),
184
- stable_pox_consensus: v4.string(),
185
- stable_burn_block_height: v4.number(),
186
- server_version: v4.string(),
187
- network_id: v4.number(),
188
- parent_network_id: v4.number(),
189
- stacks_tip_height: v4.number(),
190
- stacks_tip: v4.string(),
191
- stacks_tip_consensus_hash: v4.string(),
192
- unanchored_tip: v4.string(),
193
- exit_at_block_height: v4.number()
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())
194
244
  });
195
245
  async function coreApi(apiOpts) {
196
246
  const init = {};
@@ -219,7 +269,7 @@ async function coreApi(apiOpts) {
219
269
  data: parseBodyError
220
270
  });
221
271
  }
222
- const validationResult = v4.safeParse(CoreApiResponseSchema, data);
272
+ const validationResult = v5.safeParse(CoreApiResponseSchema, data);
223
273
  if (!validationResult.success) {
224
274
  return error({
225
275
  name: "ValidateDataError",
@@ -231,60 +281,60 @@ async function coreApi(apiOpts) {
231
281
  }
232
282
 
233
283
  // src/stacks-api/info/pox-details.ts
234
- import * as v5 from "valibot";
235
- var poxDetailsResponseSchema = v5.object({
236
- contract_id: v5.string(),
237
- pox_activation_threshold_ustx: v5.number(),
238
- first_burnchain_block_height: v5.number(),
239
- current_burnchain_block_height: v5.number(),
240
- prepare_phase_block_length: v5.number(),
241
- reward_phase_block_length: v5.number(),
242
- reward_slots: v5.number(),
243
- rejection_fraction: v5.null(),
244
- total_liquid_supply_ustx: v5.number(),
245
- current_cycle: v5.object({
246
- id: v5.number(),
247
- min_threshold_ustx: v5.number(),
248
- stacked_ustx: v5.number(),
249
- is_pox_active: v5.boolean()
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()
250
300
  }),
251
- next_cycle: v5.object({
252
- id: v5.number(),
253
- min_threshold_ustx: v5.number(),
254
- min_increment_ustx: v5.number(),
255
- stacked_ustx: v5.number(),
256
- prepare_phase_start_block_height: v5.number(),
257
- blocks_until_prepare_phase: v5.number(),
258
- reward_phase_start_block_height: v5.number(),
259
- blocks_until_reward_phase: v5.number(),
260
- ustx_until_pox_rejection: v5.null()
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()
261
311
  }),
262
- epochs: v5.array(
263
- v5.object({
264
- epoch_id: v5.string(),
265
- start_height: v5.number(),
266
- end_height: v5.number(),
267
- block_limit: v5.object({
268
- write_length: v5.number(),
269
- write_count: v5.number(),
270
- read_length: v5.number(),
271
- read_count: v5.number(),
272
- runtime: v5.number()
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()
273
323
  }),
274
- network_epoch: v5.number()
324
+ network_epoch: v6.number()
275
325
  })
276
326
  ),
277
- min_amount_ustx: v5.number(),
278
- prepare_cycle_length: v5.number(),
279
- reward_cycle_id: v5.number(),
280
- reward_cycle_length: v5.number(),
281
- rejection_votes_left_required: v5.null(),
282
- next_reward_cycle_in: v5.number(),
283
- contract_versions: v5.array(
284
- v5.object({
285
- contract_id: v5.string(),
286
- activation_burnchain_block_height: v5.number(),
287
- first_reward_cycle_id: v5.number()
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()
288
338
  })
289
339
  )
290
340
  });
@@ -315,7 +365,7 @@ async function poxDetails(args) {
315
365
  data: jsonParseError
316
366
  });
317
367
  }
318
- const validationResult = v5.safeParse(poxDetailsResponseSchema, data);
368
+ const validationResult = v6.safeParse(poxDetailsResponseSchema, data);
319
369
  if (!validationResult.success) {
320
370
  return error({
321
371
  name: "ValidateDataError",
@@ -327,14 +377,14 @@ async function poxDetails(args) {
327
377
  }
328
378
 
329
379
  // src/stacks-api/proof-of-transfer/cycle.ts
330
- import * as v6 from "valibot";
331
- var responseSchema3 = v6.object({
332
- block_height: v6.number(),
333
- index_block_hash: v6.string(),
334
- cycle_number: v6.number(),
335
- total_weight: v6.number(),
336
- total_stacked_amount: v6.string(),
337
- total_signers: v6.number()
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()
338
388
  });
339
389
  async function cycle(opts) {
340
390
  const init = {};
@@ -365,7 +415,7 @@ async function cycle(opts) {
365
415
  data: jsonError
366
416
  });
367
417
  }
368
- const validationResult = v6.safeParse(responseSchema3, data);
418
+ const validationResult = v7.safeParse(responseSchema4, data);
369
419
  if (!validationResult.success) {
370
420
  return error({
371
421
  name: "ValidateDataError",
@@ -377,17 +427,17 @@ async function cycle(opts) {
377
427
  }
378
428
 
379
429
  // src/stacks-api/proof-of-transfer/cycles.ts
380
- import * as v7 from "valibot";
381
- var cycleInfoSchema = 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()
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()
388
438
  });
389
- var resultsSchema = v7.array(cycleInfoSchema);
390
- var cyclesResponseSchema = v7.object({
439
+ var resultsSchema = v8.array(cycleInfoSchema);
440
+ var cyclesResponseSchema = v8.object({
391
441
  ...baseListResponseSchema.entries,
392
442
  results: resultsSchema
393
443
  });
@@ -423,7 +473,7 @@ async function cycles(args) {
423
473
  data: jsonError
424
474
  });
425
475
  }
426
- const validationResult = v7.safeParse(cyclesResponseSchema, data);
476
+ const validationResult = v8.safeParse(cyclesResponseSchema, data);
427
477
  if (!validationResult.success) {
428
478
  return error({
429
479
  name: "ValidateDataError",
@@ -435,16 +485,16 @@ async function cycles(args) {
435
485
  }
436
486
 
437
487
  // src/stacks-api/proof-of-transfer/signer-in-cycle.ts
438
- import * as v8 from "valibot";
439
- var signerInCycleResponseSchema = v8.object({
440
- signing_key: v8.string(),
441
- signer_address: v8.string(),
442
- weight: v8.number(),
443
- stacked_amount: v8.string(),
444
- weight_percent: v8.number(),
445
- stacked_amount_percent: v8.number(),
446
- solo_stacker_count: v8.number(),
447
- pooled_stacker_count: v8.number()
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()
448
498
  });
449
499
  async function signerInCycle(args) {
450
500
  const init = {};
@@ -480,7 +530,7 @@ async function signerInCycle(args) {
480
530
  }
481
531
  });
482
532
  }
483
- const validationResult = v8.safeParse(signerInCycleResponseSchema, data);
533
+ const validationResult = v9.safeParse(signerInCycleResponseSchema, data);
484
534
  if (!validationResult.success) {
485
535
  return error({
486
536
  name: "ValidateDataError",
@@ -492,19 +542,19 @@ async function signerInCycle(args) {
492
542
  }
493
543
 
494
544
  // src/stacks-api/proof-of-transfer/signers-in-cycle.ts
495
- import * as v9 from "valibot";
496
- var signerSchema = v9.object({
497
- signing_key: v9.string(),
498
- signer_address: v9.string(),
499
- weight: v9.number(),
500
- stacked_amount: v9.string(),
501
- weight_percent: v9.number(),
502
- stacked_amount_percent: v9.number(),
503
- pooled_stacker_count: v9.number(),
504
- solo_stacker_count: v9.number()
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()
505
555
  });
506
- var resultsSchema2 = v9.array(signerSchema);
507
- var signersResponseSchema = v9.object({
556
+ var resultsSchema2 = v10.array(signerSchema);
557
+ var signersResponseSchema = v10.object({
508
558
  ...baseListResponseSchema.entries,
509
559
  results: resultsSchema2
510
560
  });
@@ -543,7 +593,7 @@ async function signersInCycle(args) {
543
593
  }
544
594
  });
545
595
  }
546
- const validationResult = v9.safeParse(signersResponseSchema, data);
596
+ const validationResult = v10.safeParse(signersResponseSchema, data);
547
597
  if (!validationResult.success) {
548
598
  return error({
549
599
  name: "ValidateDataError",
@@ -555,15 +605,15 @@ async function signersInCycle(args) {
555
605
  }
556
606
 
557
607
  // src/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.ts
558
- import * as v10 from "valibot";
559
- var stackerInfoSchema = v10.object({
560
- stacker_address: v10.string(),
561
- stacked_amount: v10.string(),
562
- pox_address: v10.string(),
563
- stacker_type: v10.union([v10.literal("pooled"), v10.literal("solo")])
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")])
564
614
  });
565
- var resultsSchema3 = v10.array(stackerInfoSchema);
566
- var stackersForSignerInCycleResponseSchema = v10.object({
615
+ var resultsSchema3 = v11.array(stackerInfoSchema);
616
+ var stackersForSignerInCycleResponseSchema = v11.object({
567
617
  ...baseListResponseSchema.entries,
568
618
  results: resultsSchema3
569
619
  });
@@ -577,7 +627,8 @@ async function stackersForSignerInCycle(opts) {
577
627
  [opts.apiKeyConfig.header]: opts.apiKeyConfig.key
578
628
  };
579
629
  }
580
- const endpoint = `${opts.baseUrl}/extended/v2/pox/cycles/${opts.cycleNumber}/signers/${opts.signerPublicKey}/stackers?${search}`;
630
+ const signerPublicKeyPathParam = opts.signerPublicKey.startsWith("0x") ? opts.signerPublicKey : `0x${opts.signerPublicKey}`;
631
+ const endpoint = `${opts.baseUrl}/extended/v2/pox/cycles/${opts.cycleNumber}/signers/${signerPublicKeyPathParam}/stackers?${search}`;
581
632
  const res = await fetch(endpoint, init);
582
633
  if (!res.ok) {
583
634
  return error({
@@ -599,7 +650,7 @@ async function stackersForSignerInCycle(opts) {
599
650
  data: jsonError
600
651
  });
601
652
  }
602
- const validationResult = v10.safeParse(
653
+ const validationResult = v11.safeParse(
603
654
  stackersForSignerInCycleResponseSchema,
604
655
  data
605
656
  );
@@ -614,28 +665,37 @@ async function stackersForSignerInCycle(opts) {
614
665
  }
615
666
 
616
667
  // src/stacks-api/smart-contracts/read-only.ts
617
- import * as v11 from "valibot";
618
- var readOnlyResponseSchema = v11.variant("okay", [
619
- v11.object({
620
- okay: v11.literal(true),
621
- result: v11.string()
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()
622
676
  }),
623
- v11.object({
624
- okay: v11.literal(false),
625
- cause: v11.unknown()
677
+ v12.object({
678
+ okay: v12.literal(false),
679
+ cause: v12.unknown()
626
680
  })
627
681
  ]);
628
- async function readOnly(opts, apiOpts) {
629
- const init = {};
630
- if (apiOpts.apiKeyConfig) {
631
- init.headers = {
632
- [apiOpts.apiKeyConfig.header]: apiOpts.apiKeyConfig.key
633
- };
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;
634
688
  }
635
- const res = await fetch(
636
- `${apiOpts.baseUrl}/v2/contracts/call-read/${opts.contractAddress}/${opts.contractName}/${opts.functionName}`,
637
- init
638
- );
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);
639
699
  if (!res.ok) {
640
700
  return error({
641
701
  name: "FetchReadOnlyError",
@@ -655,7 +715,7 @@ async function readOnly(opts, apiOpts) {
655
715
  data: error
656
716
  });
657
717
  }
658
- const validationResult = v11.safeParse(readOnlyResponseSchema, data);
718
+ const validationResult = v12.safeParse(readOnlyResponseSchema, data);
659
719
  if (!validationResult.success) {
660
720
  return error({
661
721
  name: "ValidateDataError",
@@ -667,20 +727,20 @@ async function readOnly(opts, apiOpts) {
667
727
  }
668
728
 
669
729
  // src/stacks-api/stacking-pool/members.ts
670
- import * as v12 from "valibot";
671
- var memberSchema = v12.object({
672
- stacker: v12.string(),
673
- pox_addr: v12.optional(v12.string()),
674
- amount_ustx: v12.string(),
675
- burn_block_unlock_height: v12.optional(v12.number()),
676
- block_height: v12.number(),
677
- tx_id: v12.string()
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()
678
738
  });
679
- var membersResponseSchema = v12.object({
680
- limit: v12.number(),
681
- offset: v12.number(),
682
- total: v12.number(),
683
- results: v12.array(memberSchema)
739
+ var membersResponseSchema = v13.object({
740
+ limit: v13.number(),
741
+ offset: v13.number(),
742
+ total: v13.number(),
743
+ results: v13.array(memberSchema)
684
744
  });
685
745
  async function members(opts, apiOpts) {
686
746
  const search = new URLSearchParams();
@@ -717,7 +777,7 @@ async function members(opts, apiOpts) {
717
777
  data: jsonParseError
718
778
  });
719
779
  }
720
- const validationResult = v12.safeParse(membersResponseSchema, data);
780
+ const validationResult = v13.safeParse(membersResponseSchema, data);
721
781
  if (!validationResult.success) {
722
782
  return error({
723
783
  name: "ValidateDataError",
@@ -729,116 +789,120 @@ async function members(opts, apiOpts) {
729
789
  }
730
790
 
731
791
  // src/stacks-api/transactions/schemas.ts
732
- import * as v13 from "valibot";
733
- var baseTransactionSchema = v13.object({
734
- tx_id: v13.string(),
735
- nonce: v13.number(),
736
- fee_rate: v13.string(),
737
- sender_address: v13.string(),
738
- sponsored: v13.boolean(),
739
- post_condition_mode: v13.string(),
740
- post_conditions: v13.array(v13.unknown()),
741
- anchor_mode: v13.string(),
742
- is_unanchored: v13.boolean(),
743
- block_hash: v13.string(),
744
- parent_block_hash: v13.string(),
745
- block_height: v13.number(),
746
- block_time: v13.number(),
747
- block_time_iso: v13.string(),
748
- burn_block_height: v13.number(),
749
- burn_block_time: v13.number(),
750
- burn_block_time_iso: v13.string(),
751
- parent_burn_block_time: v13.number(),
752
- parent_burn_block_time_iso: v13.string(),
753
- canonical: v13.boolean(),
754
- tx_index: v13.number(),
755
- tx_status: v13.string(),
756
- tx_result: v13.object({
757
- hex: v13.string(),
758
- repr: v13.string()
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")
819
+ ]),
820
+ tx_result: v14.object({
821
+ hex: v14.string(),
822
+ repr: v14.string()
759
823
  }),
760
- microblock_hash: v13.string(),
761
- microblock_sequence: v13.number(),
762
- microblock_canonical: v13.boolean(),
763
- event_count: v13.number(),
764
- events: v13.array(v13.unknown()),
765
- execution_cost_read_count: v13.number(),
766
- execution_cost_read_length: v13.number(),
767
- execution_cost_runtime: v13.number(),
768
- execution_cost_write_count: v13.number(),
769
- execution_cost_write_length: v13.number()
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()
770
834
  });
771
- var contractCallTransactionSchema = v13.object({
772
- tx_type: v13.literal("contract_call"),
773
- contract_call: v13.object({
774
- contract_id: v13.string(),
775
- function_name: v13.string(),
776
- function_signature: v13.string(),
777
- function_args: v13.array(
778
- v13.object({
779
- hex: v13.string(),
780
- repr: v13.string(),
781
- name: v13.string(),
782
- type: v13.string()
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()
783
847
  })
784
848
  )
785
849
  }),
786
850
  ...baseTransactionSchema.entries
787
851
  });
788
- var smartContractTransactionSchema = v13.object({
789
- tx_type: v13.literal("smart_contract"),
790
- smart_contract: v13.object({
852
+ var smartContractTransactionSchema = v14.object({
853
+ tx_type: v14.literal("smart_contract"),
854
+ smart_contract: v14.object({
791
855
  /**
792
856
  * NOTE: The types may be wrong, not sure what type of value is used when
793
857
  * the version is not `null`.
794
858
  */
795
- clarity_version: v13.union([v13.null(), v13.number()]),
796
- contract_id: v13.string(),
797
- source_code: v13.string()
859
+ clarity_version: v14.union([v14.null(), v14.number()]),
860
+ contract_id: v14.string(),
861
+ source_code: v14.string()
798
862
  }),
799
863
  ...baseTransactionSchema.entries
800
864
  });
801
- var tokenTransferSchema = v13.object({
802
- tx_type: v13.literal("token_transfer"),
803
- token_transfer: v13.object({
804
- recipient_address: v13.string(),
805
- amount: v13.string(),
806
- memo: v13.string()
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()
807
871
  }),
808
872
  ...baseTransactionSchema.entries
809
873
  });
810
- var transactionSchema = v13.variant("tx_type", [
874
+ var transactionSchema = v14.variant("tx_type", [
811
875
  contractCallTransactionSchema,
812
876
  smartContractTransactionSchema,
813
877
  tokenTransferSchema
814
878
  ]);
815
879
 
816
880
  // src/stacks-api/transactions/address-transactions.ts
817
- import * as v14 from "valibot";
818
- var resultSchema = v14.object({
881
+ import * as v15 from "valibot";
882
+ var resultSchema = v15.object({
819
883
  tx: transactionSchema,
820
- stx_sent: v14.string(),
821
- stx_received: v14.string(),
822
- events: v14.object({
823
- stx: v14.object({
824
- transfer: v14.number(),
825
- mint: v14.number(),
826
- burn: v14.number()
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()
827
891
  }),
828
- ft: v14.object({
829
- transfer: v14.number(),
830
- mint: v14.number(),
831
- burn: v14.number()
892
+ ft: v15.object({
893
+ transfer: v15.number(),
894
+ mint: v15.number(),
895
+ burn: v15.number()
832
896
  }),
833
- nft: v14.object({
834
- transfer: v14.number(),
835
- mint: v14.number(),
836
- burn: v14.number()
897
+ nft: v15.object({
898
+ transfer: v15.number(),
899
+ mint: v15.number(),
900
+ burn: v15.number()
837
901
  })
838
902
  })
839
903
  });
840
- var resultsSchema4 = v14.array(resultSchema);
841
- var addressTransactionsResponseSchema = v14.object({
904
+ var resultsSchema4 = v15.array(resultSchema);
905
+ var addressTransactionsResponseSchema = v15.object({
842
906
  ...baseListResponseSchema.entries,
843
907
  results: resultsSchema4
844
908
  });
@@ -875,7 +939,7 @@ async function addressTransactions(args) {
875
939
  data: jsonParseError
876
940
  });
877
941
  }
878
- const validationResult = v14.safeParse(addressTransactionsResponseSchema, data);
942
+ const validationResult = v15.safeParse(addressTransactionsResponseSchema, data);
879
943
  if (!validationResult.success) {
880
944
  return error({
881
945
  name: "ValidateDataError",
@@ -887,7 +951,7 @@ async function addressTransactions(args) {
887
951
  }
888
952
 
889
953
  // src/stacks-api/transactions/get-transaction.ts
890
- import * as v15 from "valibot";
954
+ import * as v16 from "valibot";
891
955
  async function getTransaction(args) {
892
956
  const init = {};
893
957
  if (args.apiKeyConfig) {
@@ -916,7 +980,7 @@ async function getTransaction(args) {
916
980
  error: jsonParseError
917
981
  });
918
982
  }
919
- const validationResult = v15.safeParse(transactionSchema, data);
983
+ const validationResult = v16.safeParse(transactionSchema, data);
920
984
  if (!validationResult.success) {
921
985
  return error({
922
986
  name: "ValidateDataError",
@@ -928,7 +992,7 @@ async function getTransaction(args) {
928
992
  }
929
993
 
930
994
  // src/stacks-api/index.ts
931
- var accounts = { balances };
995
+ var accounts = { balances, latestNonce };
932
996
  var blocks = { getBlock };
933
997
  var info = { coreApi, poxDetails };
934
998
  var proofOfTransfer = {
@@ -954,10 +1018,19 @@ function callRateLimitedApi(fn, options) {
954
1018
  }
955
1019
  async function safeCallRateLimitedApi(fn, options) {
956
1020
  try {
957
- return await backOff(() => fn(), {
958
- startingDelay: options?.startingDelay ?? 15e3,
959
- numOfAttempts: options?.numOfAttempts ?? 5
960
- });
1021
+ return await backOff(
1022
+ async () => {
1023
+ const [error2, data] = await fn();
1024
+ if (error2) {
1025
+ throw error2;
1026
+ }
1027
+ return success(data);
1028
+ },
1029
+ {
1030
+ startingDelay: options?.startingDelay ?? 15e3,
1031
+ numOfAttempts: options?.numOfAttempts ?? 5
1032
+ }
1033
+ );
961
1034
  } catch (error2) {
962
1035
  return error({
963
1036
  name: "MaxRetriesExceeded",