@secretkeylabs/stacks-tools 0.4.0-47d10ad → 0.4.0-56be0c9
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 +569 -302
- package/dist/index.d.cts +208 -99
- package/dist/index.d.ts +208 -99
- package/dist/index.js +567 -302
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -32,10 +32,12 @@ var src_exports = {};
|
|
|
32
32
|
__export(src_exports, {
|
|
33
33
|
callRateLimitedApi: () => callRateLimitedApi,
|
|
34
34
|
error: () => error,
|
|
35
|
+
queries: () => queries,
|
|
35
36
|
safeCall: () => safeCall,
|
|
36
37
|
safeCallRateLimitedApi: () => safeCallRateLimitedApi,
|
|
37
38
|
safePromise: () => safePromise,
|
|
38
39
|
stacksApi: () => stacksApi,
|
|
40
|
+
stacksRpcApi: () => stacksRpcApi,
|
|
39
41
|
success: () => success
|
|
40
42
|
});
|
|
41
43
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -144,37 +146,92 @@ async function balances(opts) {
|
|
|
144
146
|
return success(validationResult.output);
|
|
145
147
|
}
|
|
146
148
|
|
|
147
|
-
// src/stacks-api/
|
|
149
|
+
// src/stacks-api/accounts/latest-nonce.ts
|
|
148
150
|
var v2 = __toESM(require("valibot"), 1);
|
|
149
|
-
var
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
151
|
+
var responseSchema2 = v2.object({
|
|
152
|
+
last_mempool_tx_nonce: v2.nullable(v2.number()),
|
|
153
|
+
last_executed_tx_nonce: v2.nullable(v2.number()),
|
|
154
|
+
possible_next_nonce: v2.number(),
|
|
155
|
+
detected_missing_nonces: v2.array(v2.number()),
|
|
156
|
+
detected_mempool_nonces: v2.array(v2.number())
|
|
154
157
|
});
|
|
158
|
+
async function latestNonce(opts) {
|
|
159
|
+
const init = {};
|
|
160
|
+
if (opts.apiKeyConfig) {
|
|
161
|
+
init.headers = {
|
|
162
|
+
[opts.apiKeyConfig.header]: opts.apiKeyConfig.key
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
const endpoint = `${opts.baseUrl}/extended/v1/address/${opts.principal}/nonces`;
|
|
166
|
+
const res = await fetch(endpoint, init);
|
|
167
|
+
if (!res.ok) {
|
|
168
|
+
return error({
|
|
169
|
+
name: "FetchLatestNonceError",
|
|
170
|
+
message: "Failed to fetch latest nonce.",
|
|
171
|
+
data: {
|
|
172
|
+
endpoint,
|
|
173
|
+
status: res.status,
|
|
174
|
+
statusText: res.statusText,
|
|
175
|
+
bodyParseResult: await safePromise(res.json())
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
180
|
+
if (jsonError) {
|
|
181
|
+
return error({
|
|
182
|
+
name: "ParseBodyError",
|
|
183
|
+
message: "Failed to parse response body as JSON.",
|
|
184
|
+
data: jsonError
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
const validationResult = v2.safeParse(responseSchema2, data);
|
|
188
|
+
if (!validationResult.success) {
|
|
189
|
+
return error({
|
|
190
|
+
name: "ValidateDataError",
|
|
191
|
+
message: "Failed to validate data.",
|
|
192
|
+
data: validationResult
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
return success(validationResult.output);
|
|
196
|
+
}
|
|
155
197
|
|
|
156
|
-
// src/stacks-api/
|
|
198
|
+
// src/stacks-api/accounts/index.ts
|
|
199
|
+
var accounts = {
|
|
200
|
+
balances,
|
|
201
|
+
latestNonce
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
// src/stacks-api/types.ts
|
|
157
205
|
var v3 = __toESM(require("valibot"), 1);
|
|
158
|
-
var
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
206
|
+
var baseListResponseSchema = v3.object({
|
|
207
|
+
limit: v3.number(),
|
|
208
|
+
offset: v3.number(),
|
|
209
|
+
total: v3.number(),
|
|
210
|
+
results: v3.array(v3.unknown())
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
// src/stacks-api/blocks/get-block.ts
|
|
214
|
+
var v4 = __toESM(require("valibot"), 1);
|
|
215
|
+
var responseSchema3 = v4.object({
|
|
216
|
+
canonical: v4.boolean(),
|
|
217
|
+
height: v4.number(),
|
|
218
|
+
hash: v4.string(),
|
|
219
|
+
block_time: v4.number(),
|
|
220
|
+
block_time_iso: v4.string(),
|
|
221
|
+
index_block_hash: v4.string(),
|
|
222
|
+
parent_block_hash: v4.string(),
|
|
223
|
+
parent_index_block_hash: v4.string(),
|
|
224
|
+
burn_block_time: v4.number(),
|
|
225
|
+
burn_block_time_iso: v4.string(),
|
|
226
|
+
burn_block_hash: v4.string(),
|
|
227
|
+
burn_block_height: v4.number(),
|
|
228
|
+
miner_txid: v4.string(),
|
|
229
|
+
tx_count: v4.number(),
|
|
230
|
+
execution_cost_read_count: v4.number(),
|
|
231
|
+
execution_cost_read_length: v4.number(),
|
|
232
|
+
execution_cost_runtime: v4.number(),
|
|
233
|
+
execution_cost_write_count: v4.number(),
|
|
234
|
+
execution_cost_write_length: v4.number()
|
|
178
235
|
});
|
|
179
236
|
async function getBlock(opts) {
|
|
180
237
|
const init = {};
|
|
@@ -206,7 +263,7 @@ async function getBlock(opts) {
|
|
|
206
263
|
data: jsonError
|
|
207
264
|
});
|
|
208
265
|
}
|
|
209
|
-
const validationResult =
|
|
266
|
+
const validationResult = v4.safeParse(responseSchema3, data);
|
|
210
267
|
if (!validationResult.success) {
|
|
211
268
|
return error({
|
|
212
269
|
name: "ValidateDataError",
|
|
@@ -217,22 +274,69 @@ async function getBlock(opts) {
|
|
|
217
274
|
return success(validationResult.output);
|
|
218
275
|
}
|
|
219
276
|
|
|
277
|
+
// src/stacks-api/blocks/index.ts
|
|
278
|
+
var blocks = {
|
|
279
|
+
getBlock
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
// src/stacks-api/faucets/stx.ts
|
|
283
|
+
async function stx(opts) {
|
|
284
|
+
const search = new URLSearchParams();
|
|
285
|
+
search.append("address", opts.address);
|
|
286
|
+
if (opts.stacking) search.append("stacking", "true");
|
|
287
|
+
const init = {};
|
|
288
|
+
if (opts.apiKeyConfig) {
|
|
289
|
+
init.headers = {
|
|
290
|
+
[opts.apiKeyConfig.header]: opts.apiKeyConfig.key
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
init.method = "POST";
|
|
294
|
+
const endpoint = `${opts.baseUrl}/extended/v1/faucets/stx?${search}`;
|
|
295
|
+
const res = await fetch(endpoint, init);
|
|
296
|
+
if (!res.ok) {
|
|
297
|
+
return error({
|
|
298
|
+
name: "FetchStxError",
|
|
299
|
+
message: "Failed to fetch STX.",
|
|
300
|
+
data: {
|
|
301
|
+
status: res.status,
|
|
302
|
+
statusText: res.statusText,
|
|
303
|
+
bodyParseResult: await safePromise(res.json())
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
308
|
+
if (jsonError) {
|
|
309
|
+
return error({
|
|
310
|
+
name: "ParseBodyError",
|
|
311
|
+
message: "Failed to parse response body as JSON.",
|
|
312
|
+
data: jsonError
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
return success(data);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// src/stacks-api/faucets/index.ts
|
|
319
|
+
var faucets = {
|
|
320
|
+
stx
|
|
321
|
+
};
|
|
322
|
+
|
|
220
323
|
// src/stacks-api/info/core-api.ts
|
|
221
|
-
var
|
|
222
|
-
var CoreApiResponseSchema =
|
|
223
|
-
peer_version:
|
|
224
|
-
pox_consensus:
|
|
225
|
-
burn_block_height:
|
|
226
|
-
stable_pox_consensus:
|
|
227
|
-
stable_burn_block_height:
|
|
228
|
-
server_version:
|
|
229
|
-
network_id:
|
|
230
|
-
parent_network_id:
|
|
231
|
-
stacks_tip_height:
|
|
232
|
-
stacks_tip:
|
|
233
|
-
stacks_tip_consensus_hash:
|
|
234
|
-
unanchored_tip:
|
|
235
|
-
|
|
324
|
+
var v5 = __toESM(require("valibot"), 1);
|
|
325
|
+
var CoreApiResponseSchema = v5.object({
|
|
326
|
+
peer_version: v5.number(),
|
|
327
|
+
pox_consensus: v5.string(),
|
|
328
|
+
burn_block_height: v5.number(),
|
|
329
|
+
stable_pox_consensus: v5.string(),
|
|
330
|
+
stable_burn_block_height: v5.number(),
|
|
331
|
+
server_version: v5.string(),
|
|
332
|
+
network_id: v5.number(),
|
|
333
|
+
parent_network_id: v5.number(),
|
|
334
|
+
stacks_tip_height: v5.number(),
|
|
335
|
+
stacks_tip: v5.string(),
|
|
336
|
+
stacks_tip_consensus_hash: v5.string(),
|
|
337
|
+
unanchored_tip: v5.nullable(v5.string()),
|
|
338
|
+
unanchored_seq: v5.nullable(v5.string()),
|
|
339
|
+
exit_at_block_height: v5.nullable(v5.number())
|
|
236
340
|
});
|
|
237
341
|
async function coreApi(apiOpts) {
|
|
238
342
|
const init = {};
|
|
@@ -261,7 +365,7 @@ async function coreApi(apiOpts) {
|
|
|
261
365
|
data: parseBodyError
|
|
262
366
|
});
|
|
263
367
|
}
|
|
264
|
-
const validationResult =
|
|
368
|
+
const validationResult = v5.safeParse(CoreApiResponseSchema, data);
|
|
265
369
|
if (!validationResult.success) {
|
|
266
370
|
return error({
|
|
267
371
|
name: "ValidateDataError",
|
|
@@ -273,60 +377,60 @@ async function coreApi(apiOpts) {
|
|
|
273
377
|
}
|
|
274
378
|
|
|
275
379
|
// src/stacks-api/info/pox-details.ts
|
|
276
|
-
var
|
|
277
|
-
var poxDetailsResponseSchema =
|
|
278
|
-
contract_id:
|
|
279
|
-
pox_activation_threshold_ustx:
|
|
280
|
-
first_burnchain_block_height:
|
|
281
|
-
current_burnchain_block_height:
|
|
282
|
-
prepare_phase_block_length:
|
|
283
|
-
reward_phase_block_length:
|
|
284
|
-
reward_slots:
|
|
285
|
-
rejection_fraction:
|
|
286
|
-
total_liquid_supply_ustx:
|
|
287
|
-
current_cycle:
|
|
288
|
-
id:
|
|
289
|
-
min_threshold_ustx:
|
|
290
|
-
stacked_ustx:
|
|
291
|
-
is_pox_active:
|
|
380
|
+
var v6 = __toESM(require("valibot"), 1);
|
|
381
|
+
var poxDetailsResponseSchema = v6.object({
|
|
382
|
+
contract_id: v6.string(),
|
|
383
|
+
pox_activation_threshold_ustx: v6.number(),
|
|
384
|
+
first_burnchain_block_height: v6.number(),
|
|
385
|
+
current_burnchain_block_height: v6.number(),
|
|
386
|
+
prepare_phase_block_length: v6.number(),
|
|
387
|
+
reward_phase_block_length: v6.number(),
|
|
388
|
+
reward_slots: v6.number(),
|
|
389
|
+
rejection_fraction: v6.null(),
|
|
390
|
+
total_liquid_supply_ustx: v6.number(),
|
|
391
|
+
current_cycle: v6.object({
|
|
392
|
+
id: v6.number(),
|
|
393
|
+
min_threshold_ustx: v6.number(),
|
|
394
|
+
stacked_ustx: v6.number(),
|
|
395
|
+
is_pox_active: v6.boolean()
|
|
292
396
|
}),
|
|
293
|
-
next_cycle:
|
|
294
|
-
id:
|
|
295
|
-
min_threshold_ustx:
|
|
296
|
-
min_increment_ustx:
|
|
297
|
-
stacked_ustx:
|
|
298
|
-
prepare_phase_start_block_height:
|
|
299
|
-
blocks_until_prepare_phase:
|
|
300
|
-
reward_phase_start_block_height:
|
|
301
|
-
blocks_until_reward_phase:
|
|
302
|
-
ustx_until_pox_rejection:
|
|
397
|
+
next_cycle: v6.object({
|
|
398
|
+
id: v6.number(),
|
|
399
|
+
min_threshold_ustx: v6.number(),
|
|
400
|
+
min_increment_ustx: v6.number(),
|
|
401
|
+
stacked_ustx: v6.number(),
|
|
402
|
+
prepare_phase_start_block_height: v6.number(),
|
|
403
|
+
blocks_until_prepare_phase: v6.number(),
|
|
404
|
+
reward_phase_start_block_height: v6.number(),
|
|
405
|
+
blocks_until_reward_phase: v6.number(),
|
|
406
|
+
ustx_until_pox_rejection: v6.null()
|
|
303
407
|
}),
|
|
304
|
-
epochs:
|
|
305
|
-
|
|
306
|
-
epoch_id:
|
|
307
|
-
start_height:
|
|
308
|
-
end_height:
|
|
309
|
-
block_limit:
|
|
310
|
-
write_length:
|
|
311
|
-
write_count:
|
|
312
|
-
read_length:
|
|
313
|
-
read_count:
|
|
314
|
-
runtime:
|
|
408
|
+
epochs: v6.array(
|
|
409
|
+
v6.object({
|
|
410
|
+
epoch_id: v6.string(),
|
|
411
|
+
start_height: v6.number(),
|
|
412
|
+
end_height: v6.number(),
|
|
413
|
+
block_limit: v6.object({
|
|
414
|
+
write_length: v6.number(),
|
|
415
|
+
write_count: v6.number(),
|
|
416
|
+
read_length: v6.number(),
|
|
417
|
+
read_count: v6.number(),
|
|
418
|
+
runtime: v6.number()
|
|
315
419
|
}),
|
|
316
|
-
network_epoch:
|
|
420
|
+
network_epoch: v6.number()
|
|
317
421
|
})
|
|
318
422
|
),
|
|
319
|
-
min_amount_ustx:
|
|
320
|
-
prepare_cycle_length:
|
|
321
|
-
reward_cycle_id:
|
|
322
|
-
reward_cycle_length:
|
|
323
|
-
rejection_votes_left_required:
|
|
324
|
-
next_reward_cycle_in:
|
|
325
|
-
contract_versions:
|
|
326
|
-
|
|
327
|
-
contract_id:
|
|
328
|
-
activation_burnchain_block_height:
|
|
329
|
-
first_reward_cycle_id:
|
|
423
|
+
min_amount_ustx: v6.number(),
|
|
424
|
+
prepare_cycle_length: v6.number(),
|
|
425
|
+
reward_cycle_id: v6.number(),
|
|
426
|
+
reward_cycle_length: v6.number(),
|
|
427
|
+
rejection_votes_left_required: v6.null(),
|
|
428
|
+
next_reward_cycle_in: v6.number(),
|
|
429
|
+
contract_versions: v6.array(
|
|
430
|
+
v6.object({
|
|
431
|
+
contract_id: v6.string(),
|
|
432
|
+
activation_burnchain_block_height: v6.number(),
|
|
433
|
+
first_reward_cycle_id: v6.number()
|
|
330
434
|
})
|
|
331
435
|
)
|
|
332
436
|
});
|
|
@@ -357,7 +461,7 @@ async function poxDetails(args) {
|
|
|
357
461
|
data: jsonParseError
|
|
358
462
|
});
|
|
359
463
|
}
|
|
360
|
-
const validationResult =
|
|
464
|
+
const validationResult = v6.safeParse(poxDetailsResponseSchema, data);
|
|
361
465
|
if (!validationResult.success) {
|
|
362
466
|
return error({
|
|
363
467
|
name: "ValidateDataError",
|
|
@@ -368,15 +472,21 @@ async function poxDetails(args) {
|
|
|
368
472
|
return success(validationResult.output);
|
|
369
473
|
}
|
|
370
474
|
|
|
475
|
+
// src/stacks-api/info/index.ts
|
|
476
|
+
var info = {
|
|
477
|
+
coreApi,
|
|
478
|
+
poxDetails
|
|
479
|
+
};
|
|
480
|
+
|
|
371
481
|
// src/stacks-api/proof-of-transfer/cycle.ts
|
|
372
|
-
var
|
|
373
|
-
var
|
|
374
|
-
block_height:
|
|
375
|
-
index_block_hash:
|
|
376
|
-
cycle_number:
|
|
377
|
-
total_weight:
|
|
378
|
-
total_stacked_amount:
|
|
379
|
-
total_signers:
|
|
482
|
+
var v7 = __toESM(require("valibot"), 1);
|
|
483
|
+
var responseSchema4 = v7.object({
|
|
484
|
+
block_height: v7.number(),
|
|
485
|
+
index_block_hash: v7.string(),
|
|
486
|
+
cycle_number: v7.number(),
|
|
487
|
+
total_weight: v7.number(),
|
|
488
|
+
total_stacked_amount: v7.string(),
|
|
489
|
+
total_signers: v7.number()
|
|
380
490
|
});
|
|
381
491
|
async function cycle(opts) {
|
|
382
492
|
const init = {};
|
|
@@ -407,7 +517,7 @@ async function cycle(opts) {
|
|
|
407
517
|
data: jsonError
|
|
408
518
|
});
|
|
409
519
|
}
|
|
410
|
-
const validationResult =
|
|
520
|
+
const validationResult = v7.safeParse(responseSchema4, data);
|
|
411
521
|
if (!validationResult.success) {
|
|
412
522
|
return error({
|
|
413
523
|
name: "ValidateDataError",
|
|
@@ -419,17 +529,17 @@ async function cycle(opts) {
|
|
|
419
529
|
}
|
|
420
530
|
|
|
421
531
|
// src/stacks-api/proof-of-transfer/cycles.ts
|
|
422
|
-
var
|
|
423
|
-
var cycleInfoSchema =
|
|
424
|
-
block_height:
|
|
425
|
-
index_block_hash:
|
|
426
|
-
cycle_number:
|
|
427
|
-
total_weight:
|
|
428
|
-
total_stacked_amount:
|
|
429
|
-
total_signers:
|
|
532
|
+
var v8 = __toESM(require("valibot"), 1);
|
|
533
|
+
var cycleInfoSchema = v8.object({
|
|
534
|
+
block_height: v8.number(),
|
|
535
|
+
index_block_hash: v8.string(),
|
|
536
|
+
cycle_number: v8.number(),
|
|
537
|
+
total_weight: v8.number(),
|
|
538
|
+
total_stacked_amount: v8.string(),
|
|
539
|
+
total_signers: v8.number()
|
|
430
540
|
});
|
|
431
|
-
var resultsSchema =
|
|
432
|
-
var cyclesResponseSchema =
|
|
541
|
+
var resultsSchema = v8.array(cycleInfoSchema);
|
|
542
|
+
var cyclesResponseSchema = v8.object({
|
|
433
543
|
...baseListResponseSchema.entries,
|
|
434
544
|
results: resultsSchema
|
|
435
545
|
});
|
|
@@ -465,7 +575,7 @@ async function cycles(args) {
|
|
|
465
575
|
data: jsonError
|
|
466
576
|
});
|
|
467
577
|
}
|
|
468
|
-
const validationResult =
|
|
578
|
+
const validationResult = v8.safeParse(cyclesResponseSchema, data);
|
|
469
579
|
if (!validationResult.success) {
|
|
470
580
|
return error({
|
|
471
581
|
name: "ValidateDataError",
|
|
@@ -477,16 +587,16 @@ async function cycles(args) {
|
|
|
477
587
|
}
|
|
478
588
|
|
|
479
589
|
// src/stacks-api/proof-of-transfer/signer-in-cycle.ts
|
|
480
|
-
var
|
|
481
|
-
var signerInCycleResponseSchema =
|
|
482
|
-
signing_key:
|
|
483
|
-
signer_address:
|
|
484
|
-
weight:
|
|
485
|
-
stacked_amount:
|
|
486
|
-
weight_percent:
|
|
487
|
-
stacked_amount_percent:
|
|
488
|
-
solo_stacker_count:
|
|
489
|
-
pooled_stacker_count:
|
|
590
|
+
var v9 = __toESM(require("valibot"), 1);
|
|
591
|
+
var signerInCycleResponseSchema = v9.object({
|
|
592
|
+
signing_key: v9.string(),
|
|
593
|
+
signer_address: v9.string(),
|
|
594
|
+
weight: v9.number(),
|
|
595
|
+
stacked_amount: v9.string(),
|
|
596
|
+
weight_percent: v9.number(),
|
|
597
|
+
stacked_amount_percent: v9.number(),
|
|
598
|
+
solo_stacker_count: v9.number(),
|
|
599
|
+
pooled_stacker_count: v9.number()
|
|
490
600
|
});
|
|
491
601
|
async function signerInCycle(args) {
|
|
492
602
|
const init = {};
|
|
@@ -522,7 +632,7 @@ async function signerInCycle(args) {
|
|
|
522
632
|
}
|
|
523
633
|
});
|
|
524
634
|
}
|
|
525
|
-
const validationResult =
|
|
635
|
+
const validationResult = v9.safeParse(signerInCycleResponseSchema, data);
|
|
526
636
|
if (!validationResult.success) {
|
|
527
637
|
return error({
|
|
528
638
|
name: "ValidateDataError",
|
|
@@ -534,19 +644,19 @@ async function signerInCycle(args) {
|
|
|
534
644
|
}
|
|
535
645
|
|
|
536
646
|
// src/stacks-api/proof-of-transfer/signers-in-cycle.ts
|
|
537
|
-
var
|
|
538
|
-
var signerSchema =
|
|
539
|
-
signing_key:
|
|
540
|
-
signer_address:
|
|
541
|
-
weight:
|
|
542
|
-
stacked_amount:
|
|
543
|
-
weight_percent:
|
|
544
|
-
stacked_amount_percent:
|
|
545
|
-
pooled_stacker_count:
|
|
546
|
-
solo_stacker_count:
|
|
647
|
+
var v10 = __toESM(require("valibot"), 1);
|
|
648
|
+
var signerSchema = v10.object({
|
|
649
|
+
signing_key: v10.string(),
|
|
650
|
+
signer_address: v10.string(),
|
|
651
|
+
weight: v10.number(),
|
|
652
|
+
stacked_amount: v10.string(),
|
|
653
|
+
weight_percent: v10.number(),
|
|
654
|
+
stacked_amount_percent: v10.number(),
|
|
655
|
+
pooled_stacker_count: v10.number(),
|
|
656
|
+
solo_stacker_count: v10.number()
|
|
547
657
|
});
|
|
548
|
-
var resultsSchema2 =
|
|
549
|
-
var signersResponseSchema =
|
|
658
|
+
var resultsSchema2 = v10.array(signerSchema);
|
|
659
|
+
var signersResponseSchema = v10.object({
|
|
550
660
|
...baseListResponseSchema.entries,
|
|
551
661
|
results: resultsSchema2
|
|
552
662
|
});
|
|
@@ -585,7 +695,7 @@ async function signersInCycle(args) {
|
|
|
585
695
|
}
|
|
586
696
|
});
|
|
587
697
|
}
|
|
588
|
-
const validationResult =
|
|
698
|
+
const validationResult = v10.safeParse(signersResponseSchema, data);
|
|
589
699
|
if (!validationResult.success) {
|
|
590
700
|
return error({
|
|
591
701
|
name: "ValidateDataError",
|
|
@@ -597,15 +707,15 @@ async function signersInCycle(args) {
|
|
|
597
707
|
}
|
|
598
708
|
|
|
599
709
|
// src/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.ts
|
|
600
|
-
var
|
|
601
|
-
var stackerInfoSchema =
|
|
602
|
-
stacker_address:
|
|
603
|
-
stacked_amount:
|
|
604
|
-
pox_address:
|
|
605
|
-
stacker_type:
|
|
710
|
+
var v11 = __toESM(require("valibot"), 1);
|
|
711
|
+
var stackerInfoSchema = v11.object({
|
|
712
|
+
stacker_address: v11.string(),
|
|
713
|
+
stacked_amount: v11.string(),
|
|
714
|
+
pox_address: v11.string(),
|
|
715
|
+
stacker_type: v11.union([v11.literal("pooled"), v11.literal("solo")])
|
|
606
716
|
});
|
|
607
|
-
var resultsSchema3 =
|
|
608
|
-
var stackersForSignerInCycleResponseSchema =
|
|
717
|
+
var resultsSchema3 = v11.array(stackerInfoSchema);
|
|
718
|
+
var stackersForSignerInCycleResponseSchema = v11.object({
|
|
609
719
|
...baseListResponseSchema.entries,
|
|
610
720
|
results: resultsSchema3
|
|
611
721
|
});
|
|
@@ -619,7 +729,8 @@ async function stackersForSignerInCycle(opts) {
|
|
|
619
729
|
[opts.apiKeyConfig.header]: opts.apiKeyConfig.key
|
|
620
730
|
};
|
|
621
731
|
}
|
|
622
|
-
const
|
|
732
|
+
const signerPublicKeyPathParam = opts.signerPublicKey.startsWith("0x") ? opts.signerPublicKey : `0x${opts.signerPublicKey}`;
|
|
733
|
+
const endpoint = `${opts.baseUrl}/extended/v2/pox/cycles/${opts.cycleNumber}/signers/${signerPublicKeyPathParam}/stackers?${search}`;
|
|
623
734
|
const res = await fetch(endpoint, init);
|
|
624
735
|
if (!res.ok) {
|
|
625
736
|
return error({
|
|
@@ -641,7 +752,7 @@ async function stackersForSignerInCycle(opts) {
|
|
|
641
752
|
data: jsonError
|
|
642
753
|
});
|
|
643
754
|
}
|
|
644
|
-
const validationResult =
|
|
755
|
+
const validationResult = v11.safeParse(
|
|
645
756
|
stackersForSignerInCycleResponseSchema,
|
|
646
757
|
data
|
|
647
758
|
);
|
|
@@ -655,29 +766,47 @@ async function stackersForSignerInCycle(opts) {
|
|
|
655
766
|
return success(validationResult.output);
|
|
656
767
|
}
|
|
657
768
|
|
|
769
|
+
// src/stacks-api/proof-of-transfer/index.ts
|
|
770
|
+
var proofOfTransfer = {
|
|
771
|
+
cycle,
|
|
772
|
+
cycles,
|
|
773
|
+
signerInCycle,
|
|
774
|
+
signersInCycle,
|
|
775
|
+
stackersForSignerInCycle
|
|
776
|
+
};
|
|
777
|
+
|
|
658
778
|
// src/stacks-api/smart-contracts/read-only.ts
|
|
659
|
-
var
|
|
660
|
-
var readOnlyResponseSchema =
|
|
661
|
-
|
|
662
|
-
okay:
|
|
663
|
-
|
|
779
|
+
var v12 = __toESM(require("valibot"), 1);
|
|
780
|
+
var readOnlyResponseSchema = v12.variant("okay", [
|
|
781
|
+
v12.object({
|
|
782
|
+
okay: v12.literal(true),
|
|
783
|
+
/**
|
|
784
|
+
* A Clarity value as a hex-encoded string.
|
|
785
|
+
*/
|
|
786
|
+
result: v12.string()
|
|
664
787
|
}),
|
|
665
|
-
|
|
666
|
-
okay:
|
|
667
|
-
cause:
|
|
788
|
+
v12.object({
|
|
789
|
+
okay: v12.literal(false),
|
|
790
|
+
cause: v12.unknown()
|
|
668
791
|
})
|
|
669
792
|
]);
|
|
670
793
|
async function readOnly(args) {
|
|
671
|
-
const
|
|
794
|
+
const headers = {
|
|
795
|
+
"Content-Type": "application/json"
|
|
796
|
+
};
|
|
672
797
|
if (args.apiKeyConfig) {
|
|
673
|
-
|
|
674
|
-
[args.apiKeyConfig.header]: args.apiKeyConfig.key
|
|
675
|
-
};
|
|
798
|
+
headers[args.apiKeyConfig.header] = args.apiKeyConfig.key;
|
|
676
799
|
}
|
|
677
|
-
const
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
800
|
+
const init = {
|
|
801
|
+
method: "POST",
|
|
802
|
+
body: JSON.stringify({
|
|
803
|
+
sender: args.sender,
|
|
804
|
+
arguments: args.arguments
|
|
805
|
+
}),
|
|
806
|
+
headers
|
|
807
|
+
};
|
|
808
|
+
const endpoint = `${args.baseUrl}/v2/contracts/call-read/${args.contractAddress}/${args.contractName}/${args.functionName}`;
|
|
809
|
+
const res = await fetch(endpoint, init);
|
|
681
810
|
if (!res.ok) {
|
|
682
811
|
return error({
|
|
683
812
|
name: "FetchReadOnlyError",
|
|
@@ -697,7 +826,7 @@ async function readOnly(args) {
|
|
|
697
826
|
data: error
|
|
698
827
|
});
|
|
699
828
|
}
|
|
700
|
-
const validationResult =
|
|
829
|
+
const validationResult = v12.safeParse(readOnlyResponseSchema, data);
|
|
701
830
|
if (!validationResult.success) {
|
|
702
831
|
return error({
|
|
703
832
|
name: "ValidateDataError",
|
|
@@ -708,38 +837,41 @@ async function readOnly(args) {
|
|
|
708
837
|
return success(validationResult.output);
|
|
709
838
|
}
|
|
710
839
|
|
|
840
|
+
// src/stacks-api/smart-contracts/index.ts
|
|
841
|
+
var smartContracts = {
|
|
842
|
+
readOnly
|
|
843
|
+
};
|
|
844
|
+
|
|
711
845
|
// src/stacks-api/stacking-pool/members.ts
|
|
712
|
-
var
|
|
713
|
-
var memberSchema =
|
|
714
|
-
stacker:
|
|
715
|
-
pox_addr:
|
|
716
|
-
amount_ustx:
|
|
717
|
-
burn_block_unlock_height:
|
|
718
|
-
block_height:
|
|
719
|
-
tx_id:
|
|
846
|
+
var v13 = __toESM(require("valibot"), 1);
|
|
847
|
+
var memberSchema = v13.object({
|
|
848
|
+
stacker: v13.string(),
|
|
849
|
+
pox_addr: v13.optional(v13.string()),
|
|
850
|
+
amount_ustx: v13.string(),
|
|
851
|
+
burn_block_unlock_height: v13.optional(v13.number()),
|
|
852
|
+
block_height: v13.number(),
|
|
853
|
+
tx_id: v13.string()
|
|
720
854
|
});
|
|
721
|
-
var membersResponseSchema =
|
|
722
|
-
limit:
|
|
723
|
-
offset:
|
|
724
|
-
total:
|
|
725
|
-
results:
|
|
855
|
+
var membersResponseSchema = v13.object({
|
|
856
|
+
limit: v13.number(),
|
|
857
|
+
offset: v13.number(),
|
|
858
|
+
total: v13.number(),
|
|
859
|
+
results: v13.array(memberSchema)
|
|
726
860
|
});
|
|
727
|
-
async function members(
|
|
861
|
+
async function members(args) {
|
|
728
862
|
const search = new URLSearchParams();
|
|
729
|
-
if (
|
|
730
|
-
if (
|
|
731
|
-
if (
|
|
732
|
-
if (
|
|
863
|
+
if (args.afterBlock) search.append("after_block", args.afterBlock.toString());
|
|
864
|
+
if (args.unanchored) search.append("unanchored", "true");
|
|
865
|
+
if (args.limit) search.append("limit", args.limit.toString());
|
|
866
|
+
if (args.offset) search.append("offset", args.offset.toString());
|
|
733
867
|
const init = {};
|
|
734
|
-
if (
|
|
868
|
+
if (args.apiKeyConfig) {
|
|
735
869
|
init.headers = {
|
|
736
|
-
[
|
|
870
|
+
[args.apiKeyConfig.header]: args.apiKeyConfig.key
|
|
737
871
|
};
|
|
738
872
|
}
|
|
739
|
-
const
|
|
740
|
-
|
|
741
|
-
init
|
|
742
|
-
);
|
|
873
|
+
const endpoint = `${args.baseUrl}/extended/v1/pox4/${args.poolPrincipal}/delegations?${search}`;
|
|
874
|
+
const res = await fetch(endpoint, init);
|
|
743
875
|
if (!res.ok) {
|
|
744
876
|
return error({
|
|
745
877
|
name: "FetchMembersError",
|
|
@@ -759,7 +891,7 @@ async function members(opts, apiOpts) {
|
|
|
759
891
|
data: jsonParseError
|
|
760
892
|
});
|
|
761
893
|
}
|
|
762
|
-
const validationResult =
|
|
894
|
+
const validationResult = v13.safeParse(membersResponseSchema, data);
|
|
763
895
|
if (!validationResult.success) {
|
|
764
896
|
return error({
|
|
765
897
|
name: "ValidateDataError",
|
|
@@ -770,121 +902,126 @@ async function members(opts, apiOpts) {
|
|
|
770
902
|
return success(validationResult.output);
|
|
771
903
|
}
|
|
772
904
|
|
|
905
|
+
// src/stacks-api/stacking-pool/index.ts
|
|
906
|
+
var stackingPool = {
|
|
907
|
+
members
|
|
908
|
+
};
|
|
909
|
+
|
|
773
910
|
// src/stacks-api/transactions/schemas.ts
|
|
774
|
-
var
|
|
775
|
-
var baseTransactionSchema =
|
|
776
|
-
tx_id:
|
|
777
|
-
nonce:
|
|
778
|
-
fee_rate:
|
|
779
|
-
sender_address:
|
|
780
|
-
sponsored:
|
|
781
|
-
post_condition_mode:
|
|
782
|
-
post_conditions:
|
|
783
|
-
anchor_mode:
|
|
784
|
-
is_unanchored:
|
|
785
|
-
block_hash:
|
|
786
|
-
parent_block_hash:
|
|
787
|
-
block_height:
|
|
788
|
-
block_time:
|
|
789
|
-
block_time_iso:
|
|
790
|
-
burn_block_height:
|
|
791
|
-
burn_block_time:
|
|
792
|
-
burn_block_time_iso:
|
|
793
|
-
parent_burn_block_time:
|
|
794
|
-
parent_burn_block_time_iso:
|
|
795
|
-
canonical:
|
|
796
|
-
tx_index:
|
|
797
|
-
tx_status:
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
911
|
+
var v14 = __toESM(require("valibot"), 1);
|
|
912
|
+
var baseTransactionSchema = v14.object({
|
|
913
|
+
tx_id: v14.string(),
|
|
914
|
+
nonce: v14.number(),
|
|
915
|
+
fee_rate: v14.string(),
|
|
916
|
+
sender_address: v14.string(),
|
|
917
|
+
sponsored: v14.boolean(),
|
|
918
|
+
post_condition_mode: v14.string(),
|
|
919
|
+
post_conditions: v14.array(v14.unknown()),
|
|
920
|
+
anchor_mode: v14.string(),
|
|
921
|
+
is_unanchored: v14.boolean(),
|
|
922
|
+
block_hash: v14.string(),
|
|
923
|
+
parent_block_hash: v14.string(),
|
|
924
|
+
block_height: v14.number(),
|
|
925
|
+
block_time: v14.number(),
|
|
926
|
+
block_time_iso: v14.string(),
|
|
927
|
+
burn_block_height: v14.number(),
|
|
928
|
+
burn_block_time: v14.number(),
|
|
929
|
+
burn_block_time_iso: v14.string(),
|
|
930
|
+
parent_burn_block_time: v14.number(),
|
|
931
|
+
parent_burn_block_time_iso: v14.string(),
|
|
932
|
+
canonical: v14.boolean(),
|
|
933
|
+
tx_index: v14.number(),
|
|
934
|
+
tx_status: v14.union([
|
|
935
|
+
v14.literal("success"),
|
|
936
|
+
v14.literal("abort_by_response"),
|
|
937
|
+
v14.literal("abort_by_post_condition")
|
|
801
938
|
]),
|
|
802
|
-
tx_result:
|
|
803
|
-
hex:
|
|
804
|
-
repr:
|
|
939
|
+
tx_result: v14.object({
|
|
940
|
+
hex: v14.string(),
|
|
941
|
+
repr: v14.string()
|
|
805
942
|
}),
|
|
806
|
-
microblock_hash:
|
|
807
|
-
microblock_sequence:
|
|
808
|
-
microblock_canonical:
|
|
809
|
-
event_count:
|
|
810
|
-
events:
|
|
811
|
-
execution_cost_read_count:
|
|
812
|
-
execution_cost_read_length:
|
|
813
|
-
execution_cost_runtime:
|
|
814
|
-
execution_cost_write_count:
|
|
815
|
-
execution_cost_write_length:
|
|
943
|
+
microblock_hash: v14.string(),
|
|
944
|
+
microblock_sequence: v14.number(),
|
|
945
|
+
microblock_canonical: v14.boolean(),
|
|
946
|
+
event_count: v14.number(),
|
|
947
|
+
events: v14.array(v14.unknown()),
|
|
948
|
+
execution_cost_read_count: v14.number(),
|
|
949
|
+
execution_cost_read_length: v14.number(),
|
|
950
|
+
execution_cost_runtime: v14.number(),
|
|
951
|
+
execution_cost_write_count: v14.number(),
|
|
952
|
+
execution_cost_write_length: v14.number()
|
|
816
953
|
});
|
|
817
|
-
var contractCallTransactionSchema =
|
|
818
|
-
tx_type:
|
|
819
|
-
contract_call:
|
|
820
|
-
contract_id:
|
|
821
|
-
function_name:
|
|
822
|
-
function_signature:
|
|
823
|
-
function_args:
|
|
824
|
-
|
|
825
|
-
hex:
|
|
826
|
-
repr:
|
|
827
|
-
name:
|
|
828
|
-
type:
|
|
954
|
+
var contractCallTransactionSchema = v14.object({
|
|
955
|
+
tx_type: v14.literal("contract_call"),
|
|
956
|
+
contract_call: v14.object({
|
|
957
|
+
contract_id: v14.string(),
|
|
958
|
+
function_name: v14.string(),
|
|
959
|
+
function_signature: v14.string(),
|
|
960
|
+
function_args: v14.array(
|
|
961
|
+
v14.object({
|
|
962
|
+
hex: v14.string(),
|
|
963
|
+
repr: v14.string(),
|
|
964
|
+
name: v14.string(),
|
|
965
|
+
type: v14.string()
|
|
829
966
|
})
|
|
830
967
|
)
|
|
831
968
|
}),
|
|
832
969
|
...baseTransactionSchema.entries
|
|
833
970
|
});
|
|
834
|
-
var smartContractTransactionSchema =
|
|
835
|
-
tx_type:
|
|
836
|
-
smart_contract:
|
|
971
|
+
var smartContractTransactionSchema = v14.object({
|
|
972
|
+
tx_type: v14.literal("smart_contract"),
|
|
973
|
+
smart_contract: v14.object({
|
|
837
974
|
/**
|
|
838
975
|
* NOTE: The types may be wrong, not sure what type of value is used when
|
|
839
976
|
* the version is not `null`.
|
|
840
977
|
*/
|
|
841
|
-
clarity_version:
|
|
842
|
-
contract_id:
|
|
843
|
-
source_code:
|
|
978
|
+
clarity_version: v14.union([v14.null(), v14.number()]),
|
|
979
|
+
contract_id: v14.string(),
|
|
980
|
+
source_code: v14.string()
|
|
844
981
|
}),
|
|
845
982
|
...baseTransactionSchema.entries
|
|
846
983
|
});
|
|
847
|
-
var tokenTransferSchema =
|
|
848
|
-
tx_type:
|
|
849
|
-
token_transfer:
|
|
850
|
-
recipient_address:
|
|
851
|
-
amount:
|
|
852
|
-
memo:
|
|
984
|
+
var tokenTransferSchema = v14.object({
|
|
985
|
+
tx_type: v14.literal("token_transfer"),
|
|
986
|
+
token_transfer: v14.object({
|
|
987
|
+
recipient_address: v14.string(),
|
|
988
|
+
amount: v14.string(),
|
|
989
|
+
memo: v14.string()
|
|
853
990
|
}),
|
|
854
991
|
...baseTransactionSchema.entries
|
|
855
992
|
});
|
|
856
|
-
var transactionSchema =
|
|
993
|
+
var transactionSchema = v14.variant("tx_type", [
|
|
857
994
|
contractCallTransactionSchema,
|
|
858
995
|
smartContractTransactionSchema,
|
|
859
996
|
tokenTransferSchema
|
|
860
997
|
]);
|
|
861
998
|
|
|
862
999
|
// src/stacks-api/transactions/address-transactions.ts
|
|
863
|
-
var
|
|
864
|
-
var resultSchema =
|
|
1000
|
+
var v15 = __toESM(require("valibot"), 1);
|
|
1001
|
+
var resultSchema = v15.object({
|
|
865
1002
|
tx: transactionSchema,
|
|
866
|
-
stx_sent:
|
|
867
|
-
stx_received:
|
|
868
|
-
events:
|
|
869
|
-
stx:
|
|
870
|
-
transfer:
|
|
871
|
-
mint:
|
|
872
|
-
burn:
|
|
1003
|
+
stx_sent: v15.string(),
|
|
1004
|
+
stx_received: v15.string(),
|
|
1005
|
+
events: v15.object({
|
|
1006
|
+
stx: v15.object({
|
|
1007
|
+
transfer: v15.number(),
|
|
1008
|
+
mint: v15.number(),
|
|
1009
|
+
burn: v15.number()
|
|
873
1010
|
}),
|
|
874
|
-
ft:
|
|
875
|
-
transfer:
|
|
876
|
-
mint:
|
|
877
|
-
burn:
|
|
1011
|
+
ft: v15.object({
|
|
1012
|
+
transfer: v15.number(),
|
|
1013
|
+
mint: v15.number(),
|
|
1014
|
+
burn: v15.number()
|
|
878
1015
|
}),
|
|
879
|
-
nft:
|
|
880
|
-
transfer:
|
|
881
|
-
mint:
|
|
882
|
-
burn:
|
|
1016
|
+
nft: v15.object({
|
|
1017
|
+
transfer: v15.number(),
|
|
1018
|
+
mint: v15.number(),
|
|
1019
|
+
burn: v15.number()
|
|
883
1020
|
})
|
|
884
1021
|
})
|
|
885
1022
|
});
|
|
886
|
-
var resultsSchema4 =
|
|
887
|
-
var addressTransactionsResponseSchema =
|
|
1023
|
+
var resultsSchema4 = v15.array(resultSchema);
|
|
1024
|
+
var addressTransactionsResponseSchema = v15.object({
|
|
888
1025
|
...baseListResponseSchema.entries,
|
|
889
1026
|
results: resultsSchema4
|
|
890
1027
|
});
|
|
@@ -921,7 +1058,7 @@ async function addressTransactions(args) {
|
|
|
921
1058
|
data: jsonParseError
|
|
922
1059
|
});
|
|
923
1060
|
}
|
|
924
|
-
const validationResult =
|
|
1061
|
+
const validationResult = v15.safeParse(addressTransactionsResponseSchema, data);
|
|
925
1062
|
if (!validationResult.success) {
|
|
926
1063
|
return error({
|
|
927
1064
|
name: "ValidateDataError",
|
|
@@ -933,7 +1070,7 @@ async function addressTransactions(args) {
|
|
|
933
1070
|
}
|
|
934
1071
|
|
|
935
1072
|
// src/stacks-api/transactions/get-transaction.ts
|
|
936
|
-
var
|
|
1073
|
+
var v16 = __toESM(require("valibot"), 1);
|
|
937
1074
|
async function getTransaction(args) {
|
|
938
1075
|
const init = {};
|
|
939
1076
|
if (args.apiKeyConfig) {
|
|
@@ -962,7 +1099,7 @@ async function getTransaction(args) {
|
|
|
962
1099
|
error: jsonParseError
|
|
963
1100
|
});
|
|
964
1101
|
}
|
|
965
|
-
const validationResult =
|
|
1102
|
+
const validationResult = v16.safeParse(transactionSchema, data);
|
|
966
1103
|
if (!validationResult.success) {
|
|
967
1104
|
return error({
|
|
968
1105
|
name: "ValidateDataError",
|
|
@@ -973,20 +1110,90 @@ async function getTransaction(args) {
|
|
|
973
1110
|
return success(validationResult.output);
|
|
974
1111
|
}
|
|
975
1112
|
|
|
1113
|
+
// src/stacks-api/transactions/index.ts
|
|
1114
|
+
var transactions = {
|
|
1115
|
+
addressTransactions,
|
|
1116
|
+
getTransaction
|
|
1117
|
+
};
|
|
1118
|
+
|
|
976
1119
|
// src/stacks-api/index.ts
|
|
977
|
-
var
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
1120
|
+
var stacksApi = {
|
|
1121
|
+
accounts,
|
|
1122
|
+
blocks,
|
|
1123
|
+
faucets,
|
|
1124
|
+
info,
|
|
1125
|
+
proofOfTransfer,
|
|
1126
|
+
smartContracts,
|
|
1127
|
+
stackingPool,
|
|
1128
|
+
transactions
|
|
1129
|
+
};
|
|
1130
|
+
|
|
1131
|
+
// src/stacks-rpc-api/smart-contracts/map-entry.ts
|
|
1132
|
+
var v17 = __toESM(require("valibot"), 1);
|
|
1133
|
+
var mapEntryResponseSchema = v17.object({
|
|
1134
|
+
/**
|
|
1135
|
+
* Hex-encoded string of clarity value. It is always an optional tuple.
|
|
1136
|
+
*/
|
|
1137
|
+
data: v17.string(),
|
|
1138
|
+
/**
|
|
1139
|
+
* Hex-encoded string of the MARF proof for the data
|
|
1140
|
+
*/
|
|
1141
|
+
proof: v17.optional(v17.string())
|
|
1142
|
+
});
|
|
1143
|
+
async function mapEntry(args) {
|
|
1144
|
+
const search = new URLSearchParams();
|
|
1145
|
+
if (args.proof === 0) search.append("proof", "0");
|
|
1146
|
+
if (args.tip) search.append("tip", args.tip);
|
|
1147
|
+
const init = {};
|
|
1148
|
+
if (args.apiKeyConfig) {
|
|
1149
|
+
init.headers = {
|
|
1150
|
+
[args.apiKeyConfig.header]: args.apiKeyConfig.key
|
|
1151
|
+
};
|
|
1152
|
+
}
|
|
1153
|
+
init.method = "POST";
|
|
1154
|
+
init.body = args.mapKey.startsWith("0x") ? args.mapKey : `0x${args.mapKey}`;
|
|
1155
|
+
const endpoint = `${args.baseUrl}/v2/map_entry/${args.contractAddress}/${args.contractName}/${args.mapName}?${search}`;
|
|
1156
|
+
const res = await fetch(endpoint, init);
|
|
1157
|
+
if (!res.ok) {
|
|
1158
|
+
return error({
|
|
1159
|
+
name: "FetchMapEntryError",
|
|
1160
|
+
message: "Failed to fetch map entry.",
|
|
1161
|
+
data: {
|
|
1162
|
+
status: res.status,
|
|
1163
|
+
statusText: res.statusText,
|
|
1164
|
+
endpoint,
|
|
1165
|
+
bodyParseResult: await safePromise(res.json())
|
|
1166
|
+
}
|
|
1167
|
+
});
|
|
1168
|
+
}
|
|
1169
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
1170
|
+
if (jsonError) {
|
|
1171
|
+
return error({
|
|
1172
|
+
name: "ParseBodyError",
|
|
1173
|
+
message: "Failed to parse response body as JSON.",
|
|
1174
|
+
data: jsonError
|
|
1175
|
+
});
|
|
1176
|
+
}
|
|
1177
|
+
const validationResult = v17.safeParse(mapEntryResponseSchema, data);
|
|
1178
|
+
if (!validationResult.success) {
|
|
1179
|
+
return error({
|
|
1180
|
+
name: "ValidateDataError",
|
|
1181
|
+
message: "Failed to validate response data.",
|
|
1182
|
+
data: validationResult
|
|
1183
|
+
});
|
|
1184
|
+
}
|
|
1185
|
+
return success(validationResult.output);
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
// src/stacks-rpc-api/smart-contracts/index.ts
|
|
1189
|
+
var smartContracts2 = {
|
|
1190
|
+
mapEntry
|
|
1191
|
+
};
|
|
1192
|
+
|
|
1193
|
+
// src/stacks-rpc-api/index.ts
|
|
1194
|
+
var stacksRpcApi = {
|
|
1195
|
+
smartContracts: smartContracts2
|
|
986
1196
|
};
|
|
987
|
-
var smartContracts = { readOnly };
|
|
988
|
-
var stackingPool = { members };
|
|
989
|
-
var transactions = { addressTransactions, getTransaction };
|
|
990
1197
|
|
|
991
1198
|
// src/utils/call-rate-limited-api.ts
|
|
992
1199
|
var import_exponential_backoff = require("exponential-backoff");
|
|
@@ -1000,10 +1207,19 @@ function callRateLimitedApi(fn, options) {
|
|
|
1000
1207
|
}
|
|
1001
1208
|
async function safeCallRateLimitedApi(fn, options) {
|
|
1002
1209
|
try {
|
|
1003
|
-
return await (0, import_exponential_backoff.backOff)(
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1210
|
+
return await (0, import_exponential_backoff.backOff)(
|
|
1211
|
+
async () => {
|
|
1212
|
+
const [error2, data] = await fn();
|
|
1213
|
+
if (error2) {
|
|
1214
|
+
throw error2;
|
|
1215
|
+
}
|
|
1216
|
+
return success(data);
|
|
1217
|
+
},
|
|
1218
|
+
{
|
|
1219
|
+
startingDelay: options?.startingDelay ?? 15e3,
|
|
1220
|
+
numOfAttempts: options?.numOfAttempts ?? 5
|
|
1221
|
+
}
|
|
1222
|
+
);
|
|
1007
1223
|
} catch (error2) {
|
|
1008
1224
|
return error({
|
|
1009
1225
|
name: "MaxRetriesExceeded",
|
|
@@ -1015,23 +1231,74 @@ async function safeCallRateLimitedApi(fn, options) {
|
|
|
1015
1231
|
}
|
|
1016
1232
|
}
|
|
1017
1233
|
|
|
1018
|
-
// src/
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1234
|
+
// src/queries/get-signer-stacked-amount.ts
|
|
1235
|
+
async function getSignerStackedAmount(args) {
|
|
1236
|
+
let totalLocked = 0n;
|
|
1237
|
+
const { identifier, ...rest } = args;
|
|
1238
|
+
let hasMore = true;
|
|
1239
|
+
let offset = 0;
|
|
1240
|
+
let found = false;
|
|
1241
|
+
const limit = 200;
|
|
1242
|
+
while (hasMore && !found) {
|
|
1243
|
+
const [error2, data] = await safeCallRateLimitedApi(
|
|
1244
|
+
() => signersInCycle({
|
|
1245
|
+
...rest,
|
|
1246
|
+
limit
|
|
1247
|
+
})
|
|
1248
|
+
);
|
|
1249
|
+
if (error2) {
|
|
1250
|
+
return error({
|
|
1251
|
+
name: "GetSignerTotalLockedError",
|
|
1252
|
+
message: "Failed to get signer total locked.",
|
|
1253
|
+
data: {
|
|
1254
|
+
error: error2
|
|
1255
|
+
}
|
|
1256
|
+
});
|
|
1257
|
+
}
|
|
1258
|
+
for (const signer of data.results) {
|
|
1259
|
+
if (identifier.type === "address") {
|
|
1260
|
+
if (signer.signer_address === identifier.signerAddress) {
|
|
1261
|
+
totalLocked = BigInt(signer.stacked_amount);
|
|
1262
|
+
found = true;
|
|
1263
|
+
break;
|
|
1264
|
+
}
|
|
1265
|
+
} else {
|
|
1266
|
+
if (signer.signing_key === identifier.signerPublicKey) {
|
|
1267
|
+
totalLocked = BigInt(signer.stacked_amount);
|
|
1268
|
+
found = true;
|
|
1269
|
+
break;
|
|
1270
|
+
}
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
offset += data.results.length;
|
|
1274
|
+
hasMore = offset < data.total;
|
|
1275
|
+
}
|
|
1276
|
+
if (!found) {
|
|
1277
|
+
return error({
|
|
1278
|
+
name: "SignerNotFound",
|
|
1279
|
+
message: "Signer not found.",
|
|
1280
|
+
data: {
|
|
1281
|
+
identifier,
|
|
1282
|
+
cycle: args.cycleNumber
|
|
1283
|
+
}
|
|
1284
|
+
});
|
|
1285
|
+
}
|
|
1286
|
+
return success(totalLocked);
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
// src/queries/index.ts
|
|
1290
|
+
var queries = {
|
|
1291
|
+
getSignerStackedAmount
|
|
1027
1292
|
};
|
|
1028
1293
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1029
1294
|
0 && (module.exports = {
|
|
1030
1295
|
callRateLimitedApi,
|
|
1031
1296
|
error,
|
|
1297
|
+
queries,
|
|
1032
1298
|
safeCall,
|
|
1033
1299
|
safeCallRateLimitedApi,
|
|
1034
1300
|
safePromise,
|
|
1035
1301
|
stacksApi,
|
|
1302
|
+
stacksRpcApi,
|
|
1036
1303
|
success
|
|
1037
1304
|
});
|