@secretkeylabs/stacks-tools 0.4.0-afcaa14 → 0.4.0-da98468
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 +576 -301
- package/dist/index.d.cts +419 -112
- package/dist/index.d.ts +419 -112
- package/dist/index.js +574 -301
- 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())
|
|
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
|
+
}
|
|
197
|
+
|
|
198
|
+
// src/stacks-api/accounts/index.ts
|
|
199
|
+
var accounts = {
|
|
200
|
+
balances,
|
|
201
|
+
latestNonce
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
// src/stacks-api/types.ts
|
|
205
|
+
var v3 = __toESM(require("valibot"), 1);
|
|
206
|
+
var baseListResponseSchema = v3.object({
|
|
207
|
+
limit: v3.number(),
|
|
208
|
+
offset: v3.number(),
|
|
209
|
+
total: v3.number(),
|
|
210
|
+
results: v3.array(v3.unknown())
|
|
154
211
|
});
|
|
155
212
|
|
|
156
213
|
// src/stacks-api/blocks/get-block.ts
|
|
157
|
-
var
|
|
158
|
-
var
|
|
159
|
-
canonical:
|
|
160
|
-
height:
|
|
161
|
-
hash:
|
|
162
|
-
block_time:
|
|
163
|
-
block_time_iso:
|
|
164
|
-
index_block_hash:
|
|
165
|
-
parent_block_hash:
|
|
166
|
-
parent_index_block_hash:
|
|
167
|
-
burn_block_time:
|
|
168
|
-
burn_block_time_iso:
|
|
169
|
-
burn_block_hash:
|
|
170
|
-
burn_block_height:
|
|
171
|
-
miner_txid:
|
|
172
|
-
tx_count:
|
|
173
|
-
execution_cost_read_count:
|
|
174
|
-
execution_cost_read_length:
|
|
175
|
-
execution_cost_runtime:
|
|
176
|
-
execution_cost_write_count:
|
|
177
|
-
execution_cost_write_length:
|
|
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
|
-
async function readOnly(
|
|
671
|
-
const
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
793
|
+
async function readOnly(args) {
|
|
794
|
+
const headers = {
|
|
795
|
+
"Content-Type": "application/json"
|
|
796
|
+
};
|
|
797
|
+
if (args.apiKeyConfig) {
|
|
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(opts, apiOpts) {
|
|
|
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(opts, apiOpts) {
|
|
|
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,117 +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")
|
|
938
|
+
]),
|
|
939
|
+
tx_result: v14.object({
|
|
940
|
+
hex: v14.string(),
|
|
941
|
+
repr: v14.string()
|
|
801
942
|
}),
|
|
802
|
-
microblock_hash:
|
|
803
|
-
microblock_sequence:
|
|
804
|
-
microblock_canonical:
|
|
805
|
-
event_count:
|
|
806
|
-
events:
|
|
807
|
-
execution_cost_read_count:
|
|
808
|
-
execution_cost_read_length:
|
|
809
|
-
execution_cost_runtime:
|
|
810
|
-
execution_cost_write_count:
|
|
811
|
-
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()
|
|
812
953
|
});
|
|
813
|
-
var contractCallTransactionSchema =
|
|
814
|
-
tx_type:
|
|
815
|
-
contract_call:
|
|
816
|
-
contract_id:
|
|
817
|
-
function_name:
|
|
818
|
-
function_signature:
|
|
819
|
-
function_args:
|
|
820
|
-
|
|
821
|
-
hex:
|
|
822
|
-
repr:
|
|
823
|
-
name:
|
|
824
|
-
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()
|
|
825
966
|
})
|
|
826
967
|
)
|
|
827
968
|
}),
|
|
828
969
|
...baseTransactionSchema.entries
|
|
829
970
|
});
|
|
830
|
-
var smartContractTransactionSchema =
|
|
831
|
-
tx_type:
|
|
832
|
-
smart_contract:
|
|
971
|
+
var smartContractTransactionSchema = v14.object({
|
|
972
|
+
tx_type: v14.literal("smart_contract"),
|
|
973
|
+
smart_contract: v14.object({
|
|
833
974
|
/**
|
|
834
975
|
* NOTE: The types may be wrong, not sure what type of value is used when
|
|
835
976
|
* the version is not `null`.
|
|
836
977
|
*/
|
|
837
|
-
clarity_version:
|
|
838
|
-
contract_id:
|
|
839
|
-
source_code:
|
|
978
|
+
clarity_version: v14.union([v14.null(), v14.number()]),
|
|
979
|
+
contract_id: v14.string(),
|
|
980
|
+
source_code: v14.string()
|
|
840
981
|
}),
|
|
841
982
|
...baseTransactionSchema.entries
|
|
842
983
|
});
|
|
843
|
-
var tokenTransferSchema =
|
|
844
|
-
tx_type:
|
|
845
|
-
token_transfer:
|
|
846
|
-
recipient_address:
|
|
847
|
-
amount:
|
|
848
|
-
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()
|
|
849
990
|
}),
|
|
850
991
|
...baseTransactionSchema.entries
|
|
851
992
|
});
|
|
852
|
-
var transactionSchema =
|
|
993
|
+
var transactionSchema = v14.variant("tx_type", [
|
|
853
994
|
contractCallTransactionSchema,
|
|
854
995
|
smartContractTransactionSchema,
|
|
855
996
|
tokenTransferSchema
|
|
856
997
|
]);
|
|
857
998
|
|
|
858
999
|
// src/stacks-api/transactions/address-transactions.ts
|
|
859
|
-
var
|
|
860
|
-
var resultSchema =
|
|
1000
|
+
var v15 = __toESM(require("valibot"), 1);
|
|
1001
|
+
var resultSchema = v15.object({
|
|
861
1002
|
tx: transactionSchema,
|
|
862
|
-
stx_sent:
|
|
863
|
-
stx_received:
|
|
864
|
-
events:
|
|
865
|
-
stx:
|
|
866
|
-
transfer:
|
|
867
|
-
mint:
|
|
868
|
-
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()
|
|
869
1010
|
}),
|
|
870
|
-
ft:
|
|
871
|
-
transfer:
|
|
872
|
-
mint:
|
|
873
|
-
burn:
|
|
1011
|
+
ft: v15.object({
|
|
1012
|
+
transfer: v15.number(),
|
|
1013
|
+
mint: v15.number(),
|
|
1014
|
+
burn: v15.number()
|
|
874
1015
|
}),
|
|
875
|
-
nft:
|
|
876
|
-
transfer:
|
|
877
|
-
mint:
|
|
878
|
-
burn:
|
|
1016
|
+
nft: v15.object({
|
|
1017
|
+
transfer: v15.number(),
|
|
1018
|
+
mint: v15.number(),
|
|
1019
|
+
burn: v15.number()
|
|
879
1020
|
})
|
|
880
1021
|
})
|
|
881
1022
|
});
|
|
882
|
-
var resultsSchema4 =
|
|
883
|
-
var addressTransactionsResponseSchema =
|
|
1023
|
+
var resultsSchema4 = v15.array(resultSchema);
|
|
1024
|
+
var addressTransactionsResponseSchema = v15.object({
|
|
884
1025
|
...baseListResponseSchema.entries,
|
|
885
1026
|
results: resultsSchema4
|
|
886
1027
|
});
|
|
@@ -917,7 +1058,7 @@ async function addressTransactions(args) {
|
|
|
917
1058
|
data: jsonParseError
|
|
918
1059
|
});
|
|
919
1060
|
}
|
|
920
|
-
const validationResult =
|
|
1061
|
+
const validationResult = v15.safeParse(addressTransactionsResponseSchema, data);
|
|
921
1062
|
if (!validationResult.success) {
|
|
922
1063
|
return error({
|
|
923
1064
|
name: "ValidateDataError",
|
|
@@ -929,7 +1070,7 @@ async function addressTransactions(args) {
|
|
|
929
1070
|
}
|
|
930
1071
|
|
|
931
1072
|
// src/stacks-api/transactions/get-transaction.ts
|
|
932
|
-
var
|
|
1073
|
+
var v16 = __toESM(require("valibot"), 1);
|
|
933
1074
|
async function getTransaction(args) {
|
|
934
1075
|
const init = {};
|
|
935
1076
|
if (args.apiKeyConfig) {
|
|
@@ -958,7 +1099,7 @@ async function getTransaction(args) {
|
|
|
958
1099
|
error: jsonParseError
|
|
959
1100
|
});
|
|
960
1101
|
}
|
|
961
|
-
const validationResult =
|
|
1102
|
+
const validationResult = v16.safeParse(transactionSchema, data);
|
|
962
1103
|
if (!validationResult.success) {
|
|
963
1104
|
return error({
|
|
964
1105
|
name: "ValidateDataError",
|
|
@@ -969,20 +1110,94 @@ async function getTransaction(args) {
|
|
|
969
1110
|
return success(validationResult.output);
|
|
970
1111
|
}
|
|
971
1112
|
|
|
1113
|
+
// src/stacks-api/transactions/index.ts
|
|
1114
|
+
var transactions = {
|
|
1115
|
+
addressTransactions,
|
|
1116
|
+
getTransaction
|
|
1117
|
+
};
|
|
1118
|
+
|
|
972
1119
|
// src/stacks-api/index.ts
|
|
973
|
-
var
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
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 = JSON.stringify(
|
|
1155
|
+
args.mapKey.startsWith("0x") ? args.mapKey : `0x${args.mapKey}`
|
|
1156
|
+
);
|
|
1157
|
+
init.headers = { ...init.headers, "Content-Type": "application/json" };
|
|
1158
|
+
const endpoint = `${args.baseUrl}/v2/map_entry/${args.contractAddress}/${args.contractName}/${args.mapName}?${search}`;
|
|
1159
|
+
const res = await fetch(endpoint, init);
|
|
1160
|
+
if (!res.ok) {
|
|
1161
|
+
return error({
|
|
1162
|
+
name: "FetchMapEntryError",
|
|
1163
|
+
message: "Failed to fetch map entry.",
|
|
1164
|
+
data: {
|
|
1165
|
+
init,
|
|
1166
|
+
status: res.status,
|
|
1167
|
+
statusText: res.statusText,
|
|
1168
|
+
endpoint,
|
|
1169
|
+
bodyParseResult: await safePromise(res.text())
|
|
1170
|
+
}
|
|
1171
|
+
});
|
|
1172
|
+
}
|
|
1173
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
1174
|
+
if (jsonError) {
|
|
1175
|
+
return error({
|
|
1176
|
+
name: "ParseBodyError",
|
|
1177
|
+
message: "Failed to parse response body as JSON.",
|
|
1178
|
+
data: jsonError
|
|
1179
|
+
});
|
|
1180
|
+
}
|
|
1181
|
+
const validationResult = v17.safeParse(mapEntryResponseSchema, data);
|
|
1182
|
+
if (!validationResult.success) {
|
|
1183
|
+
return error({
|
|
1184
|
+
name: "ValidateDataError",
|
|
1185
|
+
message: "Failed to validate response data.",
|
|
1186
|
+
data: validationResult
|
|
1187
|
+
});
|
|
1188
|
+
}
|
|
1189
|
+
return success(validationResult.output);
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
// src/stacks-rpc-api/smart-contracts/index.ts
|
|
1193
|
+
var smartContracts2 = {
|
|
1194
|
+
mapEntry
|
|
1195
|
+
};
|
|
1196
|
+
|
|
1197
|
+
// src/stacks-rpc-api/index.ts
|
|
1198
|
+
var stacksRpcApi = {
|
|
1199
|
+
smartContracts: smartContracts2
|
|
982
1200
|
};
|
|
983
|
-
var smartContracts = { readOnly };
|
|
984
|
-
var stackingPool = { members };
|
|
985
|
-
var transactions = { addressTransactions, getTransaction };
|
|
986
1201
|
|
|
987
1202
|
// src/utils/call-rate-limited-api.ts
|
|
988
1203
|
var import_exponential_backoff = require("exponential-backoff");
|
|
@@ -996,10 +1211,19 @@ function callRateLimitedApi(fn, options) {
|
|
|
996
1211
|
}
|
|
997
1212
|
async function safeCallRateLimitedApi(fn, options) {
|
|
998
1213
|
try {
|
|
999
|
-
return await (0, import_exponential_backoff.backOff)(
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1214
|
+
return await (0, import_exponential_backoff.backOff)(
|
|
1215
|
+
async () => {
|
|
1216
|
+
const [error2, data] = await fn();
|
|
1217
|
+
if (error2) {
|
|
1218
|
+
throw error2;
|
|
1219
|
+
}
|
|
1220
|
+
return success(data);
|
|
1221
|
+
},
|
|
1222
|
+
{
|
|
1223
|
+
startingDelay: options?.startingDelay ?? 15e3,
|
|
1224
|
+
numOfAttempts: options?.numOfAttempts ?? 5
|
|
1225
|
+
}
|
|
1226
|
+
);
|
|
1003
1227
|
} catch (error2) {
|
|
1004
1228
|
return error({
|
|
1005
1229
|
name: "MaxRetriesExceeded",
|
|
@@ -1011,23 +1235,74 @@ async function safeCallRateLimitedApi(fn, options) {
|
|
|
1011
1235
|
}
|
|
1012
1236
|
}
|
|
1013
1237
|
|
|
1014
|
-
// src/
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1238
|
+
// src/queries/get-signer-stacked-amount.ts
|
|
1239
|
+
async function getSignerStackedAmount(args) {
|
|
1240
|
+
let totalLocked = 0n;
|
|
1241
|
+
const { identifier, ...rest } = args;
|
|
1242
|
+
let hasMore = true;
|
|
1243
|
+
let offset = 0;
|
|
1244
|
+
let found = false;
|
|
1245
|
+
const limit = 200;
|
|
1246
|
+
while (hasMore && !found) {
|
|
1247
|
+
const [error2, data] = await safeCallRateLimitedApi(
|
|
1248
|
+
() => signersInCycle({
|
|
1249
|
+
...rest,
|
|
1250
|
+
limit
|
|
1251
|
+
})
|
|
1252
|
+
);
|
|
1253
|
+
if (error2) {
|
|
1254
|
+
return error({
|
|
1255
|
+
name: "GetSignerTotalLockedError",
|
|
1256
|
+
message: "Failed to get signer total locked.",
|
|
1257
|
+
data: {
|
|
1258
|
+
error: error2
|
|
1259
|
+
}
|
|
1260
|
+
});
|
|
1261
|
+
}
|
|
1262
|
+
for (const signer of data.results) {
|
|
1263
|
+
if (identifier.type === "address") {
|
|
1264
|
+
if (signer.signer_address === identifier.signerAddress) {
|
|
1265
|
+
totalLocked = BigInt(signer.stacked_amount);
|
|
1266
|
+
found = true;
|
|
1267
|
+
break;
|
|
1268
|
+
}
|
|
1269
|
+
} else {
|
|
1270
|
+
if (signer.signing_key === identifier.signerPublicKey) {
|
|
1271
|
+
totalLocked = BigInt(signer.stacked_amount);
|
|
1272
|
+
found = true;
|
|
1273
|
+
break;
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1277
|
+
offset += data.results.length;
|
|
1278
|
+
hasMore = offset < data.total;
|
|
1279
|
+
}
|
|
1280
|
+
if (!found) {
|
|
1281
|
+
return error({
|
|
1282
|
+
name: "SignerNotFound",
|
|
1283
|
+
message: "Signer not found.",
|
|
1284
|
+
data: {
|
|
1285
|
+
identifier,
|
|
1286
|
+
cycle: args.cycleNumber
|
|
1287
|
+
}
|
|
1288
|
+
});
|
|
1289
|
+
}
|
|
1290
|
+
return success(totalLocked);
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
// src/queries/index.ts
|
|
1294
|
+
var queries = {
|
|
1295
|
+
getSignerStackedAmount
|
|
1023
1296
|
};
|
|
1024
1297
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1025
1298
|
0 && (module.exports = {
|
|
1026
1299
|
callRateLimitedApi,
|
|
1027
1300
|
error,
|
|
1301
|
+
queries,
|
|
1028
1302
|
safeCall,
|
|
1029
1303
|
safeCallRateLimitedApi,
|
|
1030
1304
|
safePromise,
|
|
1031
1305
|
stacksApi,
|
|
1306
|
+
stacksRpcApi,
|
|
1032
1307
|
success
|
|
1033
1308
|
});
|