@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.js CHANGED
@@ -175,28 +175,6 @@ var baseListResponseSchema = v2.object({
175
175
  });
176
176
 
177
177
  // src/stacks-api/blocks/get-block.ts
178
- import * as v3 from "valibot";
179
- var responseSchema2 = v3.object({
180
- canonical: v3.boolean(),
181
- height: v3.number(),
182
- hash: v3.string(),
183
- block_time: v3.number(),
184
- block_time_iso: v3.string(),
185
- index_block_hash: v3.string(),
186
- parent_block_hash: v3.string(),
187
- parent_index_block_hash: v3.string(),
188
- burn_block_time: v3.number(),
189
- burn_block_time_iso: v3.string(),
190
- burn_block_hash: v3.string(),
191
- burn_block_height: v3.number(),
192
- miner_txid: v3.string(),
193
- tx_count: v3.number(),
194
- execution_cost_read_count: v3.number(),
195
- execution_cost_read_length: v3.number(),
196
- execution_cost_runtime: v3.number(),
197
- execution_cost_write_count: v3.number(),
198
- execution_cost_write_length: v3.number()
199
- });
200
178
  async function getBlock(opts) {
201
179
  const init = {};
202
180
  if (opts.apiKeyConfig) {
@@ -204,10 +182,8 @@ async function getBlock(opts) {
204
182
  [opts.apiKeyConfig.header]: opts.apiKeyConfig.key
205
183
  };
206
184
  }
207
- const res = await fetch(
208
- `${opts.baseUrl}/extended/v2/blocks/${opts.heightOrHash}`,
209
- init
210
- );
185
+ const endpoint = `${opts.baseUrl}/extended/v2/blocks/${opts.heightOrHash}`;
186
+ const res = await fetch(endpoint, init);
211
187
  if (!res.ok) {
212
188
  return error({
213
189
  name: "FetchBlockError",
@@ -227,15 +203,7 @@ async function getBlock(opts) {
227
203
  data: jsonError
228
204
  });
229
205
  }
230
- const validationResult = v3.safeParse(responseSchema2, data);
231
- if (!validationResult.success) {
232
- return error({
233
- name: "ValidateDataError",
234
- message: "Failed to validate data.",
235
- data: validationResult
236
- });
237
- }
238
- return success(validationResult.output);
206
+ return success(data);
239
207
  }
240
208
 
241
209
  // src/stacks-api/blocks/index.ts
@@ -243,6 +211,44 @@ var blocks = {
243
211
  getBlock
244
212
  };
245
213
 
214
+ // src/stacks-api/burn-blocks/get-burn-block.ts
215
+ async function getBurnBlock(args) {
216
+ const init = {};
217
+ if (args.apiKeyConfig) {
218
+ init.headers = {
219
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
220
+ };
221
+ }
222
+ const endpoint = `${args.baseUrl}/extended/v2/burn-blocks/${args.heightOrHash}`;
223
+ const res = await fetch(endpoint, init);
224
+ if (!res.ok) {
225
+ return error({
226
+ name: "BurnBlockGetError",
227
+ message: "Failed to get burn block.",
228
+ data: {
229
+ heightOrHash: args.heightOrHash,
230
+ status: res.status,
231
+ statusText: res.statusText,
232
+ body: await safeExtractResponseBody(res)
233
+ }
234
+ });
235
+ }
236
+ const [jsonParseError, data] = await safePromise(res.json());
237
+ if (jsonParseError) {
238
+ return error({
239
+ name: "ParseBodyError",
240
+ message: "Failed to parse response body as JSON.",
241
+ data: jsonParseError
242
+ });
243
+ }
244
+ return success(data);
245
+ }
246
+
247
+ // src/stacks-api/burn-blocks/index.ts
248
+ var burnBlocks = {
249
+ getBurnBlock
250
+ };
251
+
246
252
  // src/stacks-api/faucets/stx.ts
247
253
  async function stx(opts) {
248
254
  const search = new URLSearchParams();
@@ -285,22 +291,22 @@ var faucets = {
285
291
  };
286
292
 
287
293
  // src/stacks-api/info/core-api.ts
288
- import * as v4 from "valibot";
289
- var CoreApiResponseSchema = v4.object({
290
- peer_version: v4.number(),
291
- pox_consensus: v4.string(),
292
- burn_block_height: v4.number(),
293
- stable_pox_consensus: v4.string(),
294
- stable_burn_block_height: v4.number(),
295
- server_version: v4.string(),
296
- network_id: v4.number(),
297
- parent_network_id: v4.number(),
298
- stacks_tip_height: v4.number(),
299
- stacks_tip: v4.string(),
300
- stacks_tip_consensus_hash: v4.string(),
301
- unanchored_tip: v4.nullable(v4.string()),
302
- unanchored_seq: v4.nullable(v4.string()),
303
- exit_at_block_height: v4.nullable(v4.number())
294
+ import * as v3 from "valibot";
295
+ var CoreApiResponseSchema = v3.object({
296
+ peer_version: v3.number(),
297
+ pox_consensus: v3.string(),
298
+ burn_block_height: v3.number(),
299
+ stable_pox_consensus: v3.string(),
300
+ stable_burn_block_height: v3.number(),
301
+ server_version: v3.string(),
302
+ network_id: v3.number(),
303
+ parent_network_id: v3.number(),
304
+ stacks_tip_height: v3.number(),
305
+ stacks_tip: v3.string(),
306
+ stacks_tip_consensus_hash: v3.string(),
307
+ unanchored_tip: v3.nullable(v3.string()),
308
+ unanchored_seq: v3.nullable(v3.string()),
309
+ exit_at_block_height: v3.nullable(v3.number())
304
310
  });
305
311
  async function coreApi(apiOpts) {
306
312
  const init = {};
@@ -329,7 +335,7 @@ async function coreApi(apiOpts) {
329
335
  data: parseBodyError
330
336
  });
331
337
  }
332
- const validationResult = v4.safeParse(CoreApiResponseSchema, data);
338
+ const validationResult = v3.safeParse(CoreApiResponseSchema, data);
333
339
  if (!validationResult.success) {
334
340
  return error({
335
341
  name: "ValidateDataError",
@@ -346,14 +352,14 @@ var info = {
346
352
  };
347
353
 
348
354
  // src/stacks-api/proof-of-transfer/cycle.ts
349
- import * as v5 from "valibot";
350
- var responseSchema3 = v5.object({
351
- block_height: v5.number(),
352
- index_block_hash: v5.string(),
353
- cycle_number: v5.number(),
354
- total_weight: v5.number(),
355
- total_stacked_amount: v5.string(),
356
- total_signers: v5.number()
355
+ import * as v4 from "valibot";
356
+ var responseSchema2 = v4.object({
357
+ block_height: v4.number(),
358
+ index_block_hash: v4.string(),
359
+ cycle_number: v4.number(),
360
+ total_weight: v4.number(),
361
+ total_stacked_amount: v4.string(),
362
+ total_signers: v4.number()
357
363
  });
358
364
  async function cycle(opts) {
359
365
  const init = {};
@@ -384,7 +390,7 @@ async function cycle(opts) {
384
390
  data: jsonError
385
391
  });
386
392
  }
387
- const validationResult = v5.safeParse(responseSchema3, data);
393
+ const validationResult = v4.safeParse(responseSchema2, data);
388
394
  if (!validationResult.success) {
389
395
  return error({
390
396
  name: "ValidateDataError",
@@ -396,17 +402,17 @@ async function cycle(opts) {
396
402
  }
397
403
 
398
404
  // src/stacks-api/proof-of-transfer/cycles.ts
399
- import * as v6 from "valibot";
400
- var cycleInfoSchema = v6.object({
401
- block_height: v6.number(),
402
- index_block_hash: v6.string(),
403
- cycle_number: v6.number(),
404
- total_weight: v6.number(),
405
- total_stacked_amount: v6.string(),
406
- total_signers: v6.number()
405
+ import * as v5 from "valibot";
406
+ var cycleInfoSchema = v5.object({
407
+ block_height: v5.number(),
408
+ index_block_hash: v5.string(),
409
+ cycle_number: v5.number(),
410
+ total_weight: v5.number(),
411
+ total_stacked_amount: v5.string(),
412
+ total_signers: v5.number()
407
413
  });
408
- var resultsSchema = v6.array(cycleInfoSchema);
409
- var cyclesResponseSchema = v6.object({
414
+ var resultsSchema = v5.array(cycleInfoSchema);
415
+ var cyclesResponseSchema = v5.object({
410
416
  ...baseListResponseSchema.entries,
411
417
  results: resultsSchema
412
418
  });
@@ -442,7 +448,7 @@ async function cycles(args) {
442
448
  data: jsonError
443
449
  });
444
450
  }
445
- const validationResult = v6.safeParse(cyclesResponseSchema, data);
451
+ const validationResult = v5.safeParse(cyclesResponseSchema, data);
446
452
  if (!validationResult.success) {
447
453
  return error({
448
454
  name: "ValidateDataError",
@@ -454,16 +460,16 @@ async function cycles(args) {
454
460
  }
455
461
 
456
462
  // src/stacks-api/proof-of-transfer/signer-in-cycle.ts
457
- import * as v7 from "valibot";
458
- var signerInCycleResponseSchema = v7.object({
459
- signing_key: v7.string(),
460
- signer_address: v7.string(),
461
- weight: v7.number(),
462
- stacked_amount: v7.string(),
463
- weight_percent: v7.number(),
464
- stacked_amount_percent: v7.number(),
465
- solo_stacker_count: v7.number(),
466
- pooled_stacker_count: v7.number()
463
+ import * as v6 from "valibot";
464
+ var signerInCycleResponseSchema = v6.object({
465
+ signing_key: v6.string(),
466
+ signer_address: v6.string(),
467
+ weight: v6.number(),
468
+ stacked_amount: v6.string(),
469
+ weight_percent: v6.number(),
470
+ stacked_amount_percent: v6.number(),
471
+ solo_stacker_count: v6.number(),
472
+ pooled_stacker_count: v6.number()
467
473
  });
468
474
  async function signerInCycle(args) {
469
475
  const init = {};
@@ -499,7 +505,7 @@ async function signerInCycle(args) {
499
505
  }
500
506
  });
501
507
  }
502
- const validationResult = v7.safeParse(signerInCycleResponseSchema, data);
508
+ const validationResult = v6.safeParse(signerInCycleResponseSchema, data);
503
509
  if (!validationResult.success) {
504
510
  return error({
505
511
  name: "ValidateDataError",
@@ -511,19 +517,19 @@ async function signerInCycle(args) {
511
517
  }
512
518
 
513
519
  // src/stacks-api/proof-of-transfer/signers-in-cycle.ts
514
- import * as v8 from "valibot";
515
- var signerSchema = v8.object({
516
- signing_key: v8.string(),
517
- signer_address: v8.string(),
518
- weight: v8.number(),
519
- stacked_amount: v8.string(),
520
- weight_percent: v8.number(),
521
- stacked_amount_percent: v8.number(),
522
- pooled_stacker_count: v8.number(),
523
- solo_stacker_count: v8.number()
520
+ import * as v7 from "valibot";
521
+ var signerSchema = v7.object({
522
+ signing_key: v7.string(),
523
+ signer_address: v7.string(),
524
+ weight: v7.number(),
525
+ stacked_amount: v7.string(),
526
+ weight_percent: v7.number(),
527
+ stacked_amount_percent: v7.number(),
528
+ pooled_stacker_count: v7.number(),
529
+ solo_stacker_count: v7.number()
524
530
  });
525
- var resultsSchema2 = v8.array(signerSchema);
526
- var signersResponseSchema = v8.object({
531
+ var resultsSchema2 = v7.array(signerSchema);
532
+ var signersResponseSchema = v7.object({
527
533
  ...baseListResponseSchema.entries,
528
534
  results: resultsSchema2
529
535
  });
@@ -562,7 +568,7 @@ async function signersInCycle(args) {
562
568
  }
563
569
  });
564
570
  }
565
- const validationResult = v8.safeParse(signersResponseSchema, data);
571
+ const validationResult = v7.safeParse(signersResponseSchema, data);
566
572
  if (!validationResult.success) {
567
573
  return error({
568
574
  name: "ValidateDataError",
@@ -894,6 +900,7 @@ var mempool = {
894
900
  var stacksApi = {
895
901
  accounts,
896
902
  blocks,
903
+ burnBlocks,
897
904
  faucets,
898
905
  info,
899
906
  mempool,
@@ -903,16 +910,16 @@ var stacksApi = {
903
910
  };
904
911
 
905
912
  // src/stacks-rpc-api/smart-contracts/map-entry.ts
906
- import * as v9 from "valibot";
907
- var mapEntryResponseSchema = v9.object({
913
+ import * as v8 from "valibot";
914
+ var mapEntryResponseSchema = v8.object({
908
915
  /**
909
916
  * Hex-encoded string of clarity value. It is always an optional tuple.
910
917
  */
911
- data: v9.string(),
918
+ data: v8.string(),
912
919
  /**
913
920
  * Hex-encoded string of the MARF proof for the data
914
921
  */
915
- proof: v9.optional(v9.string())
922
+ proof: v8.optional(v8.string())
916
923
  });
917
924
  async function mapEntry(args) {
918
925
  const search = new URLSearchParams();
@@ -952,7 +959,7 @@ async function mapEntry(args) {
952
959
  data: jsonError
953
960
  });
954
961
  }
955
- const validationResult = v9.safeParse(mapEntryResponseSchema, data);
962
+ const validationResult = v8.safeParse(mapEntryResponseSchema, data);
956
963
  if (!validationResult.success) {
957
964
  return error({
958
965
  name: "ValidateDataError",
@@ -1083,8 +1090,51 @@ var pox = {
1083
1090
  poxDetails
1084
1091
  };
1085
1092
 
1093
+ // src/stacks-rpc-api/accounts/info.ts
1094
+ var info2 = async (args) => {
1095
+ const search = new URLSearchParams();
1096
+ if (args.proof === 0) search.append("proof", "0");
1097
+ if (args.tip) search.append("tip", args.tip);
1098
+ const init = {};
1099
+ if (args.apiKeyConfig) {
1100
+ init.headers = {
1101
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
1102
+ };
1103
+ }
1104
+ init.method = "GET";
1105
+ const endpoint = `${args.baseUrl}/v2/accounts/${args.principal}?${search}`;
1106
+ const res = await fetch(endpoint, init);
1107
+ if (!res.ok)
1108
+ return error({
1109
+ name: "InfoFetchError",
1110
+ message: "Failed to fetch info.",
1111
+ data: {
1112
+ init,
1113
+ status: res.status,
1114
+ statusText: res.statusText,
1115
+ endpoint,
1116
+ body: await safeExtractResponseBody(res)
1117
+ }
1118
+ });
1119
+ const [jsonError, data] = await safePromise(res.json());
1120
+ if (jsonError) {
1121
+ return error({
1122
+ name: "ParseBodyError",
1123
+ message: "Failed to parse response body as JSON.",
1124
+ data: jsonError
1125
+ });
1126
+ }
1127
+ return success(data);
1128
+ };
1129
+
1130
+ // src/stacks-rpc-api/accounts/index.ts
1131
+ var accounts2 = {
1132
+ info: info2
1133
+ };
1134
+
1086
1135
  // src/stacks-rpc-api/index.ts
1087
1136
  var stacksRpcApi = {
1137
+ accounts: accounts2,
1088
1138
  pox,
1089
1139
  smartContracts
1090
1140
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@secretkeylabs/stacks-tools",
3
- "version": "0.7.0",
3
+ "version": "0.8.0-907b20e",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"