@secretkeylabs/stacks-tools 0.7.0 → 0.8.0-907b20e

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
@@ -223,28 +223,6 @@ var baseListResponseSchema = v2.object({
223
223
  });
224
224
 
225
225
  // src/stacks-api/blocks/get-block.ts
226
- var v3 = __toESM(require("valibot"), 1);
227
- var responseSchema2 = v3.object({
228
- canonical: v3.boolean(),
229
- height: v3.number(),
230
- hash: v3.string(),
231
- block_time: v3.number(),
232
- block_time_iso: v3.string(),
233
- index_block_hash: v3.string(),
234
- parent_block_hash: v3.string(),
235
- parent_index_block_hash: v3.string(),
236
- burn_block_time: v3.number(),
237
- burn_block_time_iso: v3.string(),
238
- burn_block_hash: v3.string(),
239
- burn_block_height: v3.number(),
240
- miner_txid: v3.string(),
241
- tx_count: v3.number(),
242
- execution_cost_read_count: v3.number(),
243
- execution_cost_read_length: v3.number(),
244
- execution_cost_runtime: v3.number(),
245
- execution_cost_write_count: v3.number(),
246
- execution_cost_write_length: v3.number()
247
- });
248
226
  async function getBlock(opts) {
249
227
  const init = {};
250
228
  if (opts.apiKeyConfig) {
@@ -252,10 +230,8 @@ async function getBlock(opts) {
252
230
  [opts.apiKeyConfig.header]: opts.apiKeyConfig.key
253
231
  };
254
232
  }
255
- const res = await fetch(
256
- `${opts.baseUrl}/extended/v2/blocks/${opts.heightOrHash}`,
257
- init
258
- );
233
+ const endpoint = `${opts.baseUrl}/extended/v2/blocks/${opts.heightOrHash}`;
234
+ const res = await fetch(endpoint, init);
259
235
  if (!res.ok) {
260
236
  return error({
261
237
  name: "FetchBlockError",
@@ -275,15 +251,7 @@ async function getBlock(opts) {
275
251
  data: jsonError
276
252
  });
277
253
  }
278
- const validationResult = v3.safeParse(responseSchema2, data);
279
- if (!validationResult.success) {
280
- return error({
281
- name: "ValidateDataError",
282
- message: "Failed to validate data.",
283
- data: validationResult
284
- });
285
- }
286
- return success(validationResult.output);
254
+ return success(data);
287
255
  }
288
256
 
289
257
  // src/stacks-api/blocks/index.ts
@@ -291,6 +259,44 @@ var blocks = {
291
259
  getBlock
292
260
  };
293
261
 
262
+ // src/stacks-api/burn-blocks/get-burn-block.ts
263
+ async function getBurnBlock(args) {
264
+ const init = {};
265
+ if (args.apiKeyConfig) {
266
+ init.headers = {
267
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
268
+ };
269
+ }
270
+ const endpoint = `${args.baseUrl}/extended/v2/burn-blocks/${args.heightOrHash}`;
271
+ const res = await fetch(endpoint, init);
272
+ if (!res.ok) {
273
+ return error({
274
+ name: "BurnBlockGetError",
275
+ message: "Failed to get burn block.",
276
+ data: {
277
+ heightOrHash: args.heightOrHash,
278
+ status: res.status,
279
+ statusText: res.statusText,
280
+ body: await safeExtractResponseBody(res)
281
+ }
282
+ });
283
+ }
284
+ const [jsonParseError, data] = await safePromise(res.json());
285
+ if (jsonParseError) {
286
+ return error({
287
+ name: "ParseBodyError",
288
+ message: "Failed to parse response body as JSON.",
289
+ data: jsonParseError
290
+ });
291
+ }
292
+ return success(data);
293
+ }
294
+
295
+ // src/stacks-api/burn-blocks/index.ts
296
+ var burnBlocks = {
297
+ getBurnBlock
298
+ };
299
+
294
300
  // src/stacks-api/faucets/stx.ts
295
301
  async function stx(opts) {
296
302
  const search = new URLSearchParams();
@@ -333,22 +339,22 @@ var faucets = {
333
339
  };
334
340
 
335
341
  // src/stacks-api/info/core-api.ts
336
- var v4 = __toESM(require("valibot"), 1);
337
- var CoreApiResponseSchema = v4.object({
338
- peer_version: v4.number(),
339
- pox_consensus: v4.string(),
340
- burn_block_height: v4.number(),
341
- stable_pox_consensus: v4.string(),
342
- stable_burn_block_height: v4.number(),
343
- server_version: v4.string(),
344
- network_id: v4.number(),
345
- parent_network_id: v4.number(),
346
- stacks_tip_height: v4.number(),
347
- stacks_tip: v4.string(),
348
- stacks_tip_consensus_hash: v4.string(),
349
- unanchored_tip: v4.nullable(v4.string()),
350
- unanchored_seq: v4.nullable(v4.string()),
351
- exit_at_block_height: v4.nullable(v4.number())
342
+ var v3 = __toESM(require("valibot"), 1);
343
+ var CoreApiResponseSchema = v3.object({
344
+ peer_version: v3.number(),
345
+ pox_consensus: v3.string(),
346
+ burn_block_height: v3.number(),
347
+ stable_pox_consensus: v3.string(),
348
+ stable_burn_block_height: v3.number(),
349
+ server_version: v3.string(),
350
+ network_id: v3.number(),
351
+ parent_network_id: v3.number(),
352
+ stacks_tip_height: v3.number(),
353
+ stacks_tip: v3.string(),
354
+ stacks_tip_consensus_hash: v3.string(),
355
+ unanchored_tip: v3.nullable(v3.string()),
356
+ unanchored_seq: v3.nullable(v3.string()),
357
+ exit_at_block_height: v3.nullable(v3.number())
352
358
  });
353
359
  async function coreApi(apiOpts) {
354
360
  const init = {};
@@ -377,7 +383,7 @@ async function coreApi(apiOpts) {
377
383
  data: parseBodyError
378
384
  });
379
385
  }
380
- const validationResult = v4.safeParse(CoreApiResponseSchema, data);
386
+ const validationResult = v3.safeParse(CoreApiResponseSchema, data);
381
387
  if (!validationResult.success) {
382
388
  return error({
383
389
  name: "ValidateDataError",
@@ -394,14 +400,14 @@ var info = {
394
400
  };
395
401
 
396
402
  // src/stacks-api/proof-of-transfer/cycle.ts
397
- var v5 = __toESM(require("valibot"), 1);
398
- var responseSchema3 = v5.object({
399
- block_height: v5.number(),
400
- index_block_hash: v5.string(),
401
- cycle_number: v5.number(),
402
- total_weight: v5.number(),
403
- total_stacked_amount: v5.string(),
404
- total_signers: v5.number()
403
+ var v4 = __toESM(require("valibot"), 1);
404
+ var responseSchema2 = v4.object({
405
+ block_height: v4.number(),
406
+ index_block_hash: v4.string(),
407
+ cycle_number: v4.number(),
408
+ total_weight: v4.number(),
409
+ total_stacked_amount: v4.string(),
410
+ total_signers: v4.number()
405
411
  });
406
412
  async function cycle(opts) {
407
413
  const init = {};
@@ -432,7 +438,7 @@ async function cycle(opts) {
432
438
  data: jsonError
433
439
  });
434
440
  }
435
- const validationResult = v5.safeParse(responseSchema3, data);
441
+ const validationResult = v4.safeParse(responseSchema2, data);
436
442
  if (!validationResult.success) {
437
443
  return error({
438
444
  name: "ValidateDataError",
@@ -444,17 +450,17 @@ async function cycle(opts) {
444
450
  }
445
451
 
446
452
  // src/stacks-api/proof-of-transfer/cycles.ts
447
- var v6 = __toESM(require("valibot"), 1);
448
- var cycleInfoSchema = v6.object({
449
- block_height: v6.number(),
450
- index_block_hash: v6.string(),
451
- cycle_number: v6.number(),
452
- total_weight: v6.number(),
453
- total_stacked_amount: v6.string(),
454
- total_signers: v6.number()
453
+ var v5 = __toESM(require("valibot"), 1);
454
+ var cycleInfoSchema = v5.object({
455
+ block_height: v5.number(),
456
+ index_block_hash: v5.string(),
457
+ cycle_number: v5.number(),
458
+ total_weight: v5.number(),
459
+ total_stacked_amount: v5.string(),
460
+ total_signers: v5.number()
455
461
  });
456
- var resultsSchema = v6.array(cycleInfoSchema);
457
- var cyclesResponseSchema = v6.object({
462
+ var resultsSchema = v5.array(cycleInfoSchema);
463
+ var cyclesResponseSchema = v5.object({
458
464
  ...baseListResponseSchema.entries,
459
465
  results: resultsSchema
460
466
  });
@@ -490,7 +496,7 @@ async function cycles(args) {
490
496
  data: jsonError
491
497
  });
492
498
  }
493
- const validationResult = v6.safeParse(cyclesResponseSchema, data);
499
+ const validationResult = v5.safeParse(cyclesResponseSchema, data);
494
500
  if (!validationResult.success) {
495
501
  return error({
496
502
  name: "ValidateDataError",
@@ -502,16 +508,16 @@ async function cycles(args) {
502
508
  }
503
509
 
504
510
  // src/stacks-api/proof-of-transfer/signer-in-cycle.ts
505
- var v7 = __toESM(require("valibot"), 1);
506
- var signerInCycleResponseSchema = v7.object({
507
- signing_key: v7.string(),
508
- signer_address: v7.string(),
509
- weight: v7.number(),
510
- stacked_amount: v7.string(),
511
- weight_percent: v7.number(),
512
- stacked_amount_percent: v7.number(),
513
- solo_stacker_count: v7.number(),
514
- pooled_stacker_count: v7.number()
511
+ var v6 = __toESM(require("valibot"), 1);
512
+ var signerInCycleResponseSchema = v6.object({
513
+ signing_key: v6.string(),
514
+ signer_address: v6.string(),
515
+ weight: v6.number(),
516
+ stacked_amount: v6.string(),
517
+ weight_percent: v6.number(),
518
+ stacked_amount_percent: v6.number(),
519
+ solo_stacker_count: v6.number(),
520
+ pooled_stacker_count: v6.number()
515
521
  });
516
522
  async function signerInCycle(args) {
517
523
  const init = {};
@@ -547,7 +553,7 @@ async function signerInCycle(args) {
547
553
  }
548
554
  });
549
555
  }
550
- const validationResult = v7.safeParse(signerInCycleResponseSchema, data);
556
+ const validationResult = v6.safeParse(signerInCycleResponseSchema, data);
551
557
  if (!validationResult.success) {
552
558
  return error({
553
559
  name: "ValidateDataError",
@@ -559,19 +565,19 @@ async function signerInCycle(args) {
559
565
  }
560
566
 
561
567
  // src/stacks-api/proof-of-transfer/signers-in-cycle.ts
562
- var v8 = __toESM(require("valibot"), 1);
563
- var signerSchema = v8.object({
564
- signing_key: v8.string(),
565
- signer_address: v8.string(),
566
- weight: v8.number(),
567
- stacked_amount: v8.string(),
568
- weight_percent: v8.number(),
569
- stacked_amount_percent: v8.number(),
570
- pooled_stacker_count: v8.number(),
571
- solo_stacker_count: v8.number()
568
+ var v7 = __toESM(require("valibot"), 1);
569
+ var signerSchema = v7.object({
570
+ signing_key: v7.string(),
571
+ signer_address: v7.string(),
572
+ weight: v7.number(),
573
+ stacked_amount: v7.string(),
574
+ weight_percent: v7.number(),
575
+ stacked_amount_percent: v7.number(),
576
+ pooled_stacker_count: v7.number(),
577
+ solo_stacker_count: v7.number()
572
578
  });
573
- var resultsSchema2 = v8.array(signerSchema);
574
- var signersResponseSchema = v8.object({
579
+ var resultsSchema2 = v7.array(signerSchema);
580
+ var signersResponseSchema = v7.object({
575
581
  ...baseListResponseSchema.entries,
576
582
  results: resultsSchema2
577
583
  });
@@ -610,7 +616,7 @@ async function signersInCycle(args) {
610
616
  }
611
617
  });
612
618
  }
613
- const validationResult = v8.safeParse(signersResponseSchema, data);
619
+ const validationResult = v7.safeParse(signersResponseSchema, data);
614
620
  if (!validationResult.success) {
615
621
  return error({
616
622
  name: "ValidateDataError",
@@ -942,6 +948,7 @@ var mempool = {
942
948
  var stacksApi = {
943
949
  accounts,
944
950
  blocks,
951
+ burnBlocks,
945
952
  faucets,
946
953
  info,
947
954
  mempool,
@@ -951,16 +958,16 @@ var stacksApi = {
951
958
  };
952
959
 
953
960
  // src/stacks-rpc-api/smart-contracts/map-entry.ts
954
- var v9 = __toESM(require("valibot"), 1);
955
- var mapEntryResponseSchema = v9.object({
961
+ var v8 = __toESM(require("valibot"), 1);
962
+ var mapEntryResponseSchema = v8.object({
956
963
  /**
957
964
  * Hex-encoded string of clarity value. It is always an optional tuple.
958
965
  */
959
- data: v9.string(),
966
+ data: v8.string(),
960
967
  /**
961
968
  * Hex-encoded string of the MARF proof for the data
962
969
  */
963
- proof: v9.optional(v9.string())
970
+ proof: v8.optional(v8.string())
964
971
  });
965
972
  async function mapEntry(args) {
966
973
  const search = new URLSearchParams();
@@ -1000,7 +1007,7 @@ async function mapEntry(args) {
1000
1007
  data: jsonError
1001
1008
  });
1002
1009
  }
1003
- const validationResult = v9.safeParse(mapEntryResponseSchema, data);
1010
+ const validationResult = v8.safeParse(mapEntryResponseSchema, data);
1004
1011
  if (!validationResult.success) {
1005
1012
  return error({
1006
1013
  name: "ValidateDataError",
@@ -1131,8 +1138,51 @@ var pox = {
1131
1138
  poxDetails
1132
1139
  };
1133
1140
 
1141
+ // src/stacks-rpc-api/accounts/info.ts
1142
+ var info2 = async (args) => {
1143
+ const search = new URLSearchParams();
1144
+ if (args.proof === 0) search.append("proof", "0");
1145
+ if (args.tip) search.append("tip", args.tip);
1146
+ const init = {};
1147
+ if (args.apiKeyConfig) {
1148
+ init.headers = {
1149
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
1150
+ };
1151
+ }
1152
+ init.method = "GET";
1153
+ const endpoint = `${args.baseUrl}/v2/accounts/${args.principal}?${search}`;
1154
+ const res = await fetch(endpoint, init);
1155
+ if (!res.ok)
1156
+ return error({
1157
+ name: "InfoFetchError",
1158
+ message: "Failed to fetch info.",
1159
+ data: {
1160
+ init,
1161
+ status: res.status,
1162
+ statusText: res.statusText,
1163
+ endpoint,
1164
+ body: await safeExtractResponseBody(res)
1165
+ }
1166
+ });
1167
+ const [jsonError, data] = await safePromise(res.json());
1168
+ if (jsonError) {
1169
+ return error({
1170
+ name: "ParseBodyError",
1171
+ message: "Failed to parse response body as JSON.",
1172
+ data: jsonError
1173
+ });
1174
+ }
1175
+ return success(data);
1176
+ };
1177
+
1178
+ // src/stacks-rpc-api/accounts/index.ts
1179
+ var accounts2 = {
1180
+ info: info2
1181
+ };
1182
+
1134
1183
  // src/stacks-rpc-api/index.ts
1135
1184
  var stacksRpcApi = {
1185
+ accounts: accounts2,
1136
1186
  pox,
1137
1187
  smartContracts
1138
1188
  };