@secretkeylabs/stacks-tools 0.4.0-afcaa14 → 0.4.0-da5eb9d
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 +571 -301
- package/dist/index.d.cts +419 -112
- package/dist/index.d.ts +419 -112
- package/dist/index.js +569 -301
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -102,37 +102,92 @@ async function balances(opts) {
|
|
|
102
102
|
return success(validationResult.output);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
// src/stacks-api/
|
|
105
|
+
// src/stacks-api/accounts/latest-nonce.ts
|
|
106
106
|
import * as v2 from "valibot";
|
|
107
|
-
var
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
107
|
+
var responseSchema2 = v2.object({
|
|
108
|
+
last_mempool_tx_nonce: v2.nullable(v2.number()),
|
|
109
|
+
last_executed_tx_nonce: v2.nullable(v2.number()),
|
|
110
|
+
possible_next_nonce: v2.number(),
|
|
111
|
+
detected_missing_nonces: v2.array(v2.number()),
|
|
112
|
+
detected_mempool_nonces: v2.array(v2.number())
|
|
112
113
|
});
|
|
114
|
+
async function latestNonce(opts) {
|
|
115
|
+
const init = {};
|
|
116
|
+
if (opts.apiKeyConfig) {
|
|
117
|
+
init.headers = {
|
|
118
|
+
[opts.apiKeyConfig.header]: opts.apiKeyConfig.key
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const endpoint = `${opts.baseUrl}/extended/v1/address/${opts.principal}/nonces`;
|
|
122
|
+
const res = await fetch(endpoint, init);
|
|
123
|
+
if (!res.ok) {
|
|
124
|
+
return error({
|
|
125
|
+
name: "FetchLatestNonceError",
|
|
126
|
+
message: "Failed to fetch latest nonce.",
|
|
127
|
+
data: {
|
|
128
|
+
endpoint,
|
|
129
|
+
status: res.status,
|
|
130
|
+
statusText: res.statusText,
|
|
131
|
+
bodyParseResult: await safePromise(res.json())
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
136
|
+
if (jsonError) {
|
|
137
|
+
return error({
|
|
138
|
+
name: "ParseBodyError",
|
|
139
|
+
message: "Failed to parse response body as JSON.",
|
|
140
|
+
data: jsonError
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
const validationResult = v2.safeParse(responseSchema2, data);
|
|
144
|
+
if (!validationResult.success) {
|
|
145
|
+
return error({
|
|
146
|
+
name: "ValidateDataError",
|
|
147
|
+
message: "Failed to validate data.",
|
|
148
|
+
data: validationResult
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return success(validationResult.output);
|
|
152
|
+
}
|
|
113
153
|
|
|
114
|
-
// src/stacks-api/
|
|
154
|
+
// src/stacks-api/accounts/index.ts
|
|
155
|
+
var accounts = {
|
|
156
|
+
balances,
|
|
157
|
+
latestNonce
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// src/stacks-api/types.ts
|
|
115
161
|
import * as v3 from "valibot";
|
|
116
|
-
var
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
162
|
+
var baseListResponseSchema = v3.object({
|
|
163
|
+
limit: v3.number(),
|
|
164
|
+
offset: v3.number(),
|
|
165
|
+
total: v3.number(),
|
|
166
|
+
results: v3.array(v3.unknown())
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
// src/stacks-api/blocks/get-block.ts
|
|
170
|
+
import * as v4 from "valibot";
|
|
171
|
+
var responseSchema3 = v4.object({
|
|
172
|
+
canonical: v4.boolean(),
|
|
173
|
+
height: v4.number(),
|
|
174
|
+
hash: v4.string(),
|
|
175
|
+
block_time: v4.number(),
|
|
176
|
+
block_time_iso: v4.string(),
|
|
177
|
+
index_block_hash: v4.string(),
|
|
178
|
+
parent_block_hash: v4.string(),
|
|
179
|
+
parent_index_block_hash: v4.string(),
|
|
180
|
+
burn_block_time: v4.number(),
|
|
181
|
+
burn_block_time_iso: v4.string(),
|
|
182
|
+
burn_block_hash: v4.string(),
|
|
183
|
+
burn_block_height: v4.number(),
|
|
184
|
+
miner_txid: v4.string(),
|
|
185
|
+
tx_count: v4.number(),
|
|
186
|
+
execution_cost_read_count: v4.number(),
|
|
187
|
+
execution_cost_read_length: v4.number(),
|
|
188
|
+
execution_cost_runtime: v4.number(),
|
|
189
|
+
execution_cost_write_count: v4.number(),
|
|
190
|
+
execution_cost_write_length: v4.number()
|
|
136
191
|
});
|
|
137
192
|
async function getBlock(opts) {
|
|
138
193
|
const init = {};
|
|
@@ -164,7 +219,7 @@ async function getBlock(opts) {
|
|
|
164
219
|
data: jsonError
|
|
165
220
|
});
|
|
166
221
|
}
|
|
167
|
-
const validationResult =
|
|
222
|
+
const validationResult = v4.safeParse(responseSchema3, data);
|
|
168
223
|
if (!validationResult.success) {
|
|
169
224
|
return error({
|
|
170
225
|
name: "ValidateDataError",
|
|
@@ -175,22 +230,69 @@ async function getBlock(opts) {
|
|
|
175
230
|
return success(validationResult.output);
|
|
176
231
|
}
|
|
177
232
|
|
|
233
|
+
// src/stacks-api/blocks/index.ts
|
|
234
|
+
var blocks = {
|
|
235
|
+
getBlock
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
// src/stacks-api/faucets/stx.ts
|
|
239
|
+
async function stx(opts) {
|
|
240
|
+
const search = new URLSearchParams();
|
|
241
|
+
search.append("address", opts.address);
|
|
242
|
+
if (opts.stacking) search.append("stacking", "true");
|
|
243
|
+
const init = {};
|
|
244
|
+
if (opts.apiKeyConfig) {
|
|
245
|
+
init.headers = {
|
|
246
|
+
[opts.apiKeyConfig.header]: opts.apiKeyConfig.key
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
init.method = "POST";
|
|
250
|
+
const endpoint = `${opts.baseUrl}/extended/v1/faucets/stx?${search}`;
|
|
251
|
+
const res = await fetch(endpoint, init);
|
|
252
|
+
if (!res.ok) {
|
|
253
|
+
return error({
|
|
254
|
+
name: "FetchStxError",
|
|
255
|
+
message: "Failed to fetch STX.",
|
|
256
|
+
data: {
|
|
257
|
+
status: res.status,
|
|
258
|
+
statusText: res.statusText,
|
|
259
|
+
bodyParseResult: await safePromise(res.json())
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
264
|
+
if (jsonError) {
|
|
265
|
+
return error({
|
|
266
|
+
name: "ParseBodyError",
|
|
267
|
+
message: "Failed to parse response body as JSON.",
|
|
268
|
+
data: jsonError
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
return success(data);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// src/stacks-api/faucets/index.ts
|
|
275
|
+
var faucets = {
|
|
276
|
+
stx
|
|
277
|
+
};
|
|
278
|
+
|
|
178
279
|
// src/stacks-api/info/core-api.ts
|
|
179
|
-
import * as
|
|
180
|
-
var CoreApiResponseSchema =
|
|
181
|
-
peer_version:
|
|
182
|
-
pox_consensus:
|
|
183
|
-
burn_block_height:
|
|
184
|
-
stable_pox_consensus:
|
|
185
|
-
stable_burn_block_height:
|
|
186
|
-
server_version:
|
|
187
|
-
network_id:
|
|
188
|
-
parent_network_id:
|
|
189
|
-
stacks_tip_height:
|
|
190
|
-
stacks_tip:
|
|
191
|
-
stacks_tip_consensus_hash:
|
|
192
|
-
unanchored_tip:
|
|
193
|
-
|
|
280
|
+
import * as v5 from "valibot";
|
|
281
|
+
var CoreApiResponseSchema = v5.object({
|
|
282
|
+
peer_version: v5.number(),
|
|
283
|
+
pox_consensus: v5.string(),
|
|
284
|
+
burn_block_height: v5.number(),
|
|
285
|
+
stable_pox_consensus: v5.string(),
|
|
286
|
+
stable_burn_block_height: v5.number(),
|
|
287
|
+
server_version: v5.string(),
|
|
288
|
+
network_id: v5.number(),
|
|
289
|
+
parent_network_id: v5.number(),
|
|
290
|
+
stacks_tip_height: v5.number(),
|
|
291
|
+
stacks_tip: v5.string(),
|
|
292
|
+
stacks_tip_consensus_hash: v5.string(),
|
|
293
|
+
unanchored_tip: v5.nullable(v5.string()),
|
|
294
|
+
unanchored_seq: v5.nullable(v5.string()),
|
|
295
|
+
exit_at_block_height: v5.nullable(v5.number())
|
|
194
296
|
});
|
|
195
297
|
async function coreApi(apiOpts) {
|
|
196
298
|
const init = {};
|
|
@@ -219,7 +321,7 @@ async function coreApi(apiOpts) {
|
|
|
219
321
|
data: parseBodyError
|
|
220
322
|
});
|
|
221
323
|
}
|
|
222
|
-
const validationResult =
|
|
324
|
+
const validationResult = v5.safeParse(CoreApiResponseSchema, data);
|
|
223
325
|
if (!validationResult.success) {
|
|
224
326
|
return error({
|
|
225
327
|
name: "ValidateDataError",
|
|
@@ -231,60 +333,60 @@ async function coreApi(apiOpts) {
|
|
|
231
333
|
}
|
|
232
334
|
|
|
233
335
|
// src/stacks-api/info/pox-details.ts
|
|
234
|
-
import * as
|
|
235
|
-
var poxDetailsResponseSchema =
|
|
236
|
-
contract_id:
|
|
237
|
-
pox_activation_threshold_ustx:
|
|
238
|
-
first_burnchain_block_height:
|
|
239
|
-
current_burnchain_block_height:
|
|
240
|
-
prepare_phase_block_length:
|
|
241
|
-
reward_phase_block_length:
|
|
242
|
-
reward_slots:
|
|
243
|
-
rejection_fraction:
|
|
244
|
-
total_liquid_supply_ustx:
|
|
245
|
-
current_cycle:
|
|
246
|
-
id:
|
|
247
|
-
min_threshold_ustx:
|
|
248
|
-
stacked_ustx:
|
|
249
|
-
is_pox_active:
|
|
336
|
+
import * as v6 from "valibot";
|
|
337
|
+
var poxDetailsResponseSchema = v6.object({
|
|
338
|
+
contract_id: v6.string(),
|
|
339
|
+
pox_activation_threshold_ustx: v6.number(),
|
|
340
|
+
first_burnchain_block_height: v6.number(),
|
|
341
|
+
current_burnchain_block_height: v6.number(),
|
|
342
|
+
prepare_phase_block_length: v6.number(),
|
|
343
|
+
reward_phase_block_length: v6.number(),
|
|
344
|
+
reward_slots: v6.number(),
|
|
345
|
+
rejection_fraction: v6.null(),
|
|
346
|
+
total_liquid_supply_ustx: v6.number(),
|
|
347
|
+
current_cycle: v6.object({
|
|
348
|
+
id: v6.number(),
|
|
349
|
+
min_threshold_ustx: v6.number(),
|
|
350
|
+
stacked_ustx: v6.number(),
|
|
351
|
+
is_pox_active: v6.boolean()
|
|
250
352
|
}),
|
|
251
|
-
next_cycle:
|
|
252
|
-
id:
|
|
253
|
-
min_threshold_ustx:
|
|
254
|
-
min_increment_ustx:
|
|
255
|
-
stacked_ustx:
|
|
256
|
-
prepare_phase_start_block_height:
|
|
257
|
-
blocks_until_prepare_phase:
|
|
258
|
-
reward_phase_start_block_height:
|
|
259
|
-
blocks_until_reward_phase:
|
|
260
|
-
ustx_until_pox_rejection:
|
|
353
|
+
next_cycle: v6.object({
|
|
354
|
+
id: v6.number(),
|
|
355
|
+
min_threshold_ustx: v6.number(),
|
|
356
|
+
min_increment_ustx: v6.number(),
|
|
357
|
+
stacked_ustx: v6.number(),
|
|
358
|
+
prepare_phase_start_block_height: v6.number(),
|
|
359
|
+
blocks_until_prepare_phase: v6.number(),
|
|
360
|
+
reward_phase_start_block_height: v6.number(),
|
|
361
|
+
blocks_until_reward_phase: v6.number(),
|
|
362
|
+
ustx_until_pox_rejection: v6.null()
|
|
261
363
|
}),
|
|
262
|
-
epochs:
|
|
263
|
-
|
|
264
|
-
epoch_id:
|
|
265
|
-
start_height:
|
|
266
|
-
end_height:
|
|
267
|
-
block_limit:
|
|
268
|
-
write_length:
|
|
269
|
-
write_count:
|
|
270
|
-
read_length:
|
|
271
|
-
read_count:
|
|
272
|
-
runtime:
|
|
364
|
+
epochs: v6.array(
|
|
365
|
+
v6.object({
|
|
366
|
+
epoch_id: v6.string(),
|
|
367
|
+
start_height: v6.number(),
|
|
368
|
+
end_height: v6.number(),
|
|
369
|
+
block_limit: v6.object({
|
|
370
|
+
write_length: v6.number(),
|
|
371
|
+
write_count: v6.number(),
|
|
372
|
+
read_length: v6.number(),
|
|
373
|
+
read_count: v6.number(),
|
|
374
|
+
runtime: v6.number()
|
|
273
375
|
}),
|
|
274
|
-
network_epoch:
|
|
376
|
+
network_epoch: v6.number()
|
|
275
377
|
})
|
|
276
378
|
),
|
|
277
|
-
min_amount_ustx:
|
|
278
|
-
prepare_cycle_length:
|
|
279
|
-
reward_cycle_id:
|
|
280
|
-
reward_cycle_length:
|
|
281
|
-
rejection_votes_left_required:
|
|
282
|
-
next_reward_cycle_in:
|
|
283
|
-
contract_versions:
|
|
284
|
-
|
|
285
|
-
contract_id:
|
|
286
|
-
activation_burnchain_block_height:
|
|
287
|
-
first_reward_cycle_id:
|
|
379
|
+
min_amount_ustx: v6.number(),
|
|
380
|
+
prepare_cycle_length: v6.number(),
|
|
381
|
+
reward_cycle_id: v6.number(),
|
|
382
|
+
reward_cycle_length: v6.number(),
|
|
383
|
+
rejection_votes_left_required: v6.null(),
|
|
384
|
+
next_reward_cycle_in: v6.number(),
|
|
385
|
+
contract_versions: v6.array(
|
|
386
|
+
v6.object({
|
|
387
|
+
contract_id: v6.string(),
|
|
388
|
+
activation_burnchain_block_height: v6.number(),
|
|
389
|
+
first_reward_cycle_id: v6.number()
|
|
288
390
|
})
|
|
289
391
|
)
|
|
290
392
|
});
|
|
@@ -315,7 +417,7 @@ async function poxDetails(args) {
|
|
|
315
417
|
data: jsonParseError
|
|
316
418
|
});
|
|
317
419
|
}
|
|
318
|
-
const validationResult =
|
|
420
|
+
const validationResult = v6.safeParse(poxDetailsResponseSchema, data);
|
|
319
421
|
if (!validationResult.success) {
|
|
320
422
|
return error({
|
|
321
423
|
name: "ValidateDataError",
|
|
@@ -326,15 +428,21 @@ async function poxDetails(args) {
|
|
|
326
428
|
return success(validationResult.output);
|
|
327
429
|
}
|
|
328
430
|
|
|
431
|
+
// src/stacks-api/info/index.ts
|
|
432
|
+
var info = {
|
|
433
|
+
coreApi,
|
|
434
|
+
poxDetails
|
|
435
|
+
};
|
|
436
|
+
|
|
329
437
|
// src/stacks-api/proof-of-transfer/cycle.ts
|
|
330
|
-
import * as
|
|
331
|
-
var
|
|
332
|
-
block_height:
|
|
333
|
-
index_block_hash:
|
|
334
|
-
cycle_number:
|
|
335
|
-
total_weight:
|
|
336
|
-
total_stacked_amount:
|
|
337
|
-
total_signers:
|
|
438
|
+
import * as v7 from "valibot";
|
|
439
|
+
var responseSchema4 = v7.object({
|
|
440
|
+
block_height: v7.number(),
|
|
441
|
+
index_block_hash: v7.string(),
|
|
442
|
+
cycle_number: v7.number(),
|
|
443
|
+
total_weight: v7.number(),
|
|
444
|
+
total_stacked_amount: v7.string(),
|
|
445
|
+
total_signers: v7.number()
|
|
338
446
|
});
|
|
339
447
|
async function cycle(opts) {
|
|
340
448
|
const init = {};
|
|
@@ -365,7 +473,7 @@ async function cycle(opts) {
|
|
|
365
473
|
data: jsonError
|
|
366
474
|
});
|
|
367
475
|
}
|
|
368
|
-
const validationResult =
|
|
476
|
+
const validationResult = v7.safeParse(responseSchema4, data);
|
|
369
477
|
if (!validationResult.success) {
|
|
370
478
|
return error({
|
|
371
479
|
name: "ValidateDataError",
|
|
@@ -377,17 +485,17 @@ async function cycle(opts) {
|
|
|
377
485
|
}
|
|
378
486
|
|
|
379
487
|
// src/stacks-api/proof-of-transfer/cycles.ts
|
|
380
|
-
import * as
|
|
381
|
-
var cycleInfoSchema =
|
|
382
|
-
block_height:
|
|
383
|
-
index_block_hash:
|
|
384
|
-
cycle_number:
|
|
385
|
-
total_weight:
|
|
386
|
-
total_stacked_amount:
|
|
387
|
-
total_signers:
|
|
488
|
+
import * as v8 from "valibot";
|
|
489
|
+
var cycleInfoSchema = v8.object({
|
|
490
|
+
block_height: v8.number(),
|
|
491
|
+
index_block_hash: v8.string(),
|
|
492
|
+
cycle_number: v8.number(),
|
|
493
|
+
total_weight: v8.number(),
|
|
494
|
+
total_stacked_amount: v8.string(),
|
|
495
|
+
total_signers: v8.number()
|
|
388
496
|
});
|
|
389
|
-
var resultsSchema =
|
|
390
|
-
var cyclesResponseSchema =
|
|
497
|
+
var resultsSchema = v8.array(cycleInfoSchema);
|
|
498
|
+
var cyclesResponseSchema = v8.object({
|
|
391
499
|
...baseListResponseSchema.entries,
|
|
392
500
|
results: resultsSchema
|
|
393
501
|
});
|
|
@@ -423,7 +531,7 @@ async function cycles(args) {
|
|
|
423
531
|
data: jsonError
|
|
424
532
|
});
|
|
425
533
|
}
|
|
426
|
-
const validationResult =
|
|
534
|
+
const validationResult = v8.safeParse(cyclesResponseSchema, data);
|
|
427
535
|
if (!validationResult.success) {
|
|
428
536
|
return error({
|
|
429
537
|
name: "ValidateDataError",
|
|
@@ -435,16 +543,16 @@ async function cycles(args) {
|
|
|
435
543
|
}
|
|
436
544
|
|
|
437
545
|
// src/stacks-api/proof-of-transfer/signer-in-cycle.ts
|
|
438
|
-
import * as
|
|
439
|
-
var signerInCycleResponseSchema =
|
|
440
|
-
signing_key:
|
|
441
|
-
signer_address:
|
|
442
|
-
weight:
|
|
443
|
-
stacked_amount:
|
|
444
|
-
weight_percent:
|
|
445
|
-
stacked_amount_percent:
|
|
446
|
-
solo_stacker_count:
|
|
447
|
-
pooled_stacker_count:
|
|
546
|
+
import * as v9 from "valibot";
|
|
547
|
+
var signerInCycleResponseSchema = v9.object({
|
|
548
|
+
signing_key: v9.string(),
|
|
549
|
+
signer_address: v9.string(),
|
|
550
|
+
weight: v9.number(),
|
|
551
|
+
stacked_amount: v9.string(),
|
|
552
|
+
weight_percent: v9.number(),
|
|
553
|
+
stacked_amount_percent: v9.number(),
|
|
554
|
+
solo_stacker_count: v9.number(),
|
|
555
|
+
pooled_stacker_count: v9.number()
|
|
448
556
|
});
|
|
449
557
|
async function signerInCycle(args) {
|
|
450
558
|
const init = {};
|
|
@@ -480,7 +588,7 @@ async function signerInCycle(args) {
|
|
|
480
588
|
}
|
|
481
589
|
});
|
|
482
590
|
}
|
|
483
|
-
const validationResult =
|
|
591
|
+
const validationResult = v9.safeParse(signerInCycleResponseSchema, data);
|
|
484
592
|
if (!validationResult.success) {
|
|
485
593
|
return error({
|
|
486
594
|
name: "ValidateDataError",
|
|
@@ -492,19 +600,19 @@ async function signerInCycle(args) {
|
|
|
492
600
|
}
|
|
493
601
|
|
|
494
602
|
// src/stacks-api/proof-of-transfer/signers-in-cycle.ts
|
|
495
|
-
import * as
|
|
496
|
-
var signerSchema =
|
|
497
|
-
signing_key:
|
|
498
|
-
signer_address:
|
|
499
|
-
weight:
|
|
500
|
-
stacked_amount:
|
|
501
|
-
weight_percent:
|
|
502
|
-
stacked_amount_percent:
|
|
503
|
-
pooled_stacker_count:
|
|
504
|
-
solo_stacker_count:
|
|
603
|
+
import * as v10 from "valibot";
|
|
604
|
+
var signerSchema = v10.object({
|
|
605
|
+
signing_key: v10.string(),
|
|
606
|
+
signer_address: v10.string(),
|
|
607
|
+
weight: v10.number(),
|
|
608
|
+
stacked_amount: v10.string(),
|
|
609
|
+
weight_percent: v10.number(),
|
|
610
|
+
stacked_amount_percent: v10.number(),
|
|
611
|
+
pooled_stacker_count: v10.number(),
|
|
612
|
+
solo_stacker_count: v10.number()
|
|
505
613
|
});
|
|
506
|
-
var resultsSchema2 =
|
|
507
|
-
var signersResponseSchema =
|
|
614
|
+
var resultsSchema2 = v10.array(signerSchema);
|
|
615
|
+
var signersResponseSchema = v10.object({
|
|
508
616
|
...baseListResponseSchema.entries,
|
|
509
617
|
results: resultsSchema2
|
|
510
618
|
});
|
|
@@ -543,7 +651,7 @@ async function signersInCycle(args) {
|
|
|
543
651
|
}
|
|
544
652
|
});
|
|
545
653
|
}
|
|
546
|
-
const validationResult =
|
|
654
|
+
const validationResult = v10.safeParse(signersResponseSchema, data);
|
|
547
655
|
if (!validationResult.success) {
|
|
548
656
|
return error({
|
|
549
657
|
name: "ValidateDataError",
|
|
@@ -555,15 +663,15 @@ async function signersInCycle(args) {
|
|
|
555
663
|
}
|
|
556
664
|
|
|
557
665
|
// src/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.ts
|
|
558
|
-
import * as
|
|
559
|
-
var stackerInfoSchema =
|
|
560
|
-
stacker_address:
|
|
561
|
-
stacked_amount:
|
|
562
|
-
pox_address:
|
|
563
|
-
stacker_type:
|
|
666
|
+
import * as v11 from "valibot";
|
|
667
|
+
var stackerInfoSchema = v11.object({
|
|
668
|
+
stacker_address: v11.string(),
|
|
669
|
+
stacked_amount: v11.string(),
|
|
670
|
+
pox_address: v11.string(),
|
|
671
|
+
stacker_type: v11.union([v11.literal("pooled"), v11.literal("solo")])
|
|
564
672
|
});
|
|
565
|
-
var resultsSchema3 =
|
|
566
|
-
var stackersForSignerInCycleResponseSchema =
|
|
673
|
+
var resultsSchema3 = v11.array(stackerInfoSchema);
|
|
674
|
+
var stackersForSignerInCycleResponseSchema = v11.object({
|
|
567
675
|
...baseListResponseSchema.entries,
|
|
568
676
|
results: resultsSchema3
|
|
569
677
|
});
|
|
@@ -577,7 +685,8 @@ async function stackersForSignerInCycle(opts) {
|
|
|
577
685
|
[opts.apiKeyConfig.header]: opts.apiKeyConfig.key
|
|
578
686
|
};
|
|
579
687
|
}
|
|
580
|
-
const
|
|
688
|
+
const signerPublicKeyPathParam = opts.signerPublicKey.startsWith("0x") ? opts.signerPublicKey : `0x${opts.signerPublicKey}`;
|
|
689
|
+
const endpoint = `${opts.baseUrl}/extended/v2/pox/cycles/${opts.cycleNumber}/signers/${signerPublicKeyPathParam}/stackers?${search}`;
|
|
581
690
|
const res = await fetch(endpoint, init);
|
|
582
691
|
if (!res.ok) {
|
|
583
692
|
return error({
|
|
@@ -599,7 +708,7 @@ async function stackersForSignerInCycle(opts) {
|
|
|
599
708
|
data: jsonError
|
|
600
709
|
});
|
|
601
710
|
}
|
|
602
|
-
const validationResult =
|
|
711
|
+
const validationResult = v11.safeParse(
|
|
603
712
|
stackersForSignerInCycleResponseSchema,
|
|
604
713
|
data
|
|
605
714
|
);
|
|
@@ -613,29 +722,47 @@ async function stackersForSignerInCycle(opts) {
|
|
|
613
722
|
return success(validationResult.output);
|
|
614
723
|
}
|
|
615
724
|
|
|
725
|
+
// src/stacks-api/proof-of-transfer/index.ts
|
|
726
|
+
var proofOfTransfer = {
|
|
727
|
+
cycle,
|
|
728
|
+
cycles,
|
|
729
|
+
signerInCycle,
|
|
730
|
+
signersInCycle,
|
|
731
|
+
stackersForSignerInCycle
|
|
732
|
+
};
|
|
733
|
+
|
|
616
734
|
// src/stacks-api/smart-contracts/read-only.ts
|
|
617
|
-
import * as
|
|
618
|
-
var readOnlyResponseSchema =
|
|
619
|
-
|
|
620
|
-
okay:
|
|
621
|
-
|
|
735
|
+
import * as v12 from "valibot";
|
|
736
|
+
var readOnlyResponseSchema = v12.variant("okay", [
|
|
737
|
+
v12.object({
|
|
738
|
+
okay: v12.literal(true),
|
|
739
|
+
/**
|
|
740
|
+
* A Clarity value as a hex-encoded string.
|
|
741
|
+
*/
|
|
742
|
+
result: v12.string()
|
|
622
743
|
}),
|
|
623
|
-
|
|
624
|
-
okay:
|
|
625
|
-
cause:
|
|
744
|
+
v12.object({
|
|
745
|
+
okay: v12.literal(false),
|
|
746
|
+
cause: v12.unknown()
|
|
626
747
|
})
|
|
627
748
|
]);
|
|
628
|
-
async function readOnly(
|
|
629
|
-
const
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
749
|
+
async function readOnly(args) {
|
|
750
|
+
const headers = {
|
|
751
|
+
"Content-Type": "application/json"
|
|
752
|
+
};
|
|
753
|
+
if (args.apiKeyConfig) {
|
|
754
|
+
headers[args.apiKeyConfig.header] = args.apiKeyConfig.key;
|
|
634
755
|
}
|
|
635
|
-
const
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
756
|
+
const init = {
|
|
757
|
+
method: "POST",
|
|
758
|
+
body: JSON.stringify({
|
|
759
|
+
sender: args.sender,
|
|
760
|
+
arguments: args.arguments
|
|
761
|
+
}),
|
|
762
|
+
headers
|
|
763
|
+
};
|
|
764
|
+
const endpoint = `${args.baseUrl}/v2/contracts/call-read/${args.contractAddress}/${args.contractName}/${args.functionName}`;
|
|
765
|
+
const res = await fetch(endpoint, init);
|
|
639
766
|
if (!res.ok) {
|
|
640
767
|
return error({
|
|
641
768
|
name: "FetchReadOnlyError",
|
|
@@ -655,7 +782,7 @@ async function readOnly(opts, apiOpts) {
|
|
|
655
782
|
data: error
|
|
656
783
|
});
|
|
657
784
|
}
|
|
658
|
-
const validationResult =
|
|
785
|
+
const validationResult = v12.safeParse(readOnlyResponseSchema, data);
|
|
659
786
|
if (!validationResult.success) {
|
|
660
787
|
return error({
|
|
661
788
|
name: "ValidateDataError",
|
|
@@ -666,38 +793,41 @@ async function readOnly(opts, apiOpts) {
|
|
|
666
793
|
return success(validationResult.output);
|
|
667
794
|
}
|
|
668
795
|
|
|
796
|
+
// src/stacks-api/smart-contracts/index.ts
|
|
797
|
+
var smartContracts = {
|
|
798
|
+
readOnly
|
|
799
|
+
};
|
|
800
|
+
|
|
669
801
|
// src/stacks-api/stacking-pool/members.ts
|
|
670
|
-
import * as
|
|
671
|
-
var memberSchema =
|
|
672
|
-
stacker:
|
|
673
|
-
pox_addr:
|
|
674
|
-
amount_ustx:
|
|
675
|
-
burn_block_unlock_height:
|
|
676
|
-
block_height:
|
|
677
|
-
tx_id:
|
|
802
|
+
import * as v13 from "valibot";
|
|
803
|
+
var memberSchema = v13.object({
|
|
804
|
+
stacker: v13.string(),
|
|
805
|
+
pox_addr: v13.optional(v13.string()),
|
|
806
|
+
amount_ustx: v13.string(),
|
|
807
|
+
burn_block_unlock_height: v13.optional(v13.number()),
|
|
808
|
+
block_height: v13.number(),
|
|
809
|
+
tx_id: v13.string()
|
|
678
810
|
});
|
|
679
|
-
var membersResponseSchema =
|
|
680
|
-
limit:
|
|
681
|
-
offset:
|
|
682
|
-
total:
|
|
683
|
-
results:
|
|
811
|
+
var membersResponseSchema = v13.object({
|
|
812
|
+
limit: v13.number(),
|
|
813
|
+
offset: v13.number(),
|
|
814
|
+
total: v13.number(),
|
|
815
|
+
results: v13.array(memberSchema)
|
|
684
816
|
});
|
|
685
|
-
async function members(
|
|
817
|
+
async function members(args) {
|
|
686
818
|
const search = new URLSearchParams();
|
|
687
|
-
if (
|
|
688
|
-
if (
|
|
689
|
-
if (
|
|
690
|
-
if (
|
|
819
|
+
if (args.afterBlock) search.append("after_block", args.afterBlock.toString());
|
|
820
|
+
if (args.unanchored) search.append("unanchored", "true");
|
|
821
|
+
if (args.limit) search.append("limit", args.limit.toString());
|
|
822
|
+
if (args.offset) search.append("offset", args.offset.toString());
|
|
691
823
|
const init = {};
|
|
692
|
-
if (
|
|
824
|
+
if (args.apiKeyConfig) {
|
|
693
825
|
init.headers = {
|
|
694
|
-
[
|
|
826
|
+
[args.apiKeyConfig.header]: args.apiKeyConfig.key
|
|
695
827
|
};
|
|
696
828
|
}
|
|
697
|
-
const
|
|
698
|
-
|
|
699
|
-
init
|
|
700
|
-
);
|
|
829
|
+
const endpoint = `${args.baseUrl}/extended/v1/pox4/${args.poolPrincipal}/delegations?${search}`;
|
|
830
|
+
const res = await fetch(endpoint, init);
|
|
701
831
|
if (!res.ok) {
|
|
702
832
|
return error({
|
|
703
833
|
name: "FetchMembersError",
|
|
@@ -717,7 +847,7 @@ async function members(opts, apiOpts) {
|
|
|
717
847
|
data: jsonParseError
|
|
718
848
|
});
|
|
719
849
|
}
|
|
720
|
-
const validationResult =
|
|
850
|
+
const validationResult = v13.safeParse(membersResponseSchema, data);
|
|
721
851
|
if (!validationResult.success) {
|
|
722
852
|
return error({
|
|
723
853
|
name: "ValidateDataError",
|
|
@@ -728,117 +858,126 @@ async function members(opts, apiOpts) {
|
|
|
728
858
|
return success(validationResult.output);
|
|
729
859
|
}
|
|
730
860
|
|
|
861
|
+
// src/stacks-api/stacking-pool/index.ts
|
|
862
|
+
var stackingPool = {
|
|
863
|
+
members
|
|
864
|
+
};
|
|
865
|
+
|
|
731
866
|
// src/stacks-api/transactions/schemas.ts
|
|
732
|
-
import * as
|
|
733
|
-
var baseTransactionSchema =
|
|
734
|
-
tx_id:
|
|
735
|
-
nonce:
|
|
736
|
-
fee_rate:
|
|
737
|
-
sender_address:
|
|
738
|
-
sponsored:
|
|
739
|
-
post_condition_mode:
|
|
740
|
-
post_conditions:
|
|
741
|
-
anchor_mode:
|
|
742
|
-
is_unanchored:
|
|
743
|
-
block_hash:
|
|
744
|
-
parent_block_hash:
|
|
745
|
-
block_height:
|
|
746
|
-
block_time:
|
|
747
|
-
block_time_iso:
|
|
748
|
-
burn_block_height:
|
|
749
|
-
burn_block_time:
|
|
750
|
-
burn_block_time_iso:
|
|
751
|
-
parent_burn_block_time:
|
|
752
|
-
parent_burn_block_time_iso:
|
|
753
|
-
canonical:
|
|
754
|
-
tx_index:
|
|
755
|
-
tx_status:
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
867
|
+
import * as v14 from "valibot";
|
|
868
|
+
var baseTransactionSchema = v14.object({
|
|
869
|
+
tx_id: v14.string(),
|
|
870
|
+
nonce: v14.number(),
|
|
871
|
+
fee_rate: v14.string(),
|
|
872
|
+
sender_address: v14.string(),
|
|
873
|
+
sponsored: v14.boolean(),
|
|
874
|
+
post_condition_mode: v14.string(),
|
|
875
|
+
post_conditions: v14.array(v14.unknown()),
|
|
876
|
+
anchor_mode: v14.string(),
|
|
877
|
+
is_unanchored: v14.boolean(),
|
|
878
|
+
block_hash: v14.string(),
|
|
879
|
+
parent_block_hash: v14.string(),
|
|
880
|
+
block_height: v14.number(),
|
|
881
|
+
block_time: v14.number(),
|
|
882
|
+
block_time_iso: v14.string(),
|
|
883
|
+
burn_block_height: v14.number(),
|
|
884
|
+
burn_block_time: v14.number(),
|
|
885
|
+
burn_block_time_iso: v14.string(),
|
|
886
|
+
parent_burn_block_time: v14.number(),
|
|
887
|
+
parent_burn_block_time_iso: v14.string(),
|
|
888
|
+
canonical: v14.boolean(),
|
|
889
|
+
tx_index: v14.number(),
|
|
890
|
+
tx_status: v14.union([
|
|
891
|
+
v14.literal("success"),
|
|
892
|
+
v14.literal("abort_by_response"),
|
|
893
|
+
v14.literal("abort_by_post_condition")
|
|
894
|
+
]),
|
|
895
|
+
tx_result: v14.object({
|
|
896
|
+
hex: v14.string(),
|
|
897
|
+
repr: v14.string()
|
|
759
898
|
}),
|
|
760
|
-
microblock_hash:
|
|
761
|
-
microblock_sequence:
|
|
762
|
-
microblock_canonical:
|
|
763
|
-
event_count:
|
|
764
|
-
events:
|
|
765
|
-
execution_cost_read_count:
|
|
766
|
-
execution_cost_read_length:
|
|
767
|
-
execution_cost_runtime:
|
|
768
|
-
execution_cost_write_count:
|
|
769
|
-
execution_cost_write_length:
|
|
899
|
+
microblock_hash: v14.string(),
|
|
900
|
+
microblock_sequence: v14.number(),
|
|
901
|
+
microblock_canonical: v14.boolean(),
|
|
902
|
+
event_count: v14.number(),
|
|
903
|
+
events: v14.array(v14.unknown()),
|
|
904
|
+
execution_cost_read_count: v14.number(),
|
|
905
|
+
execution_cost_read_length: v14.number(),
|
|
906
|
+
execution_cost_runtime: v14.number(),
|
|
907
|
+
execution_cost_write_count: v14.number(),
|
|
908
|
+
execution_cost_write_length: v14.number()
|
|
770
909
|
});
|
|
771
|
-
var contractCallTransactionSchema =
|
|
772
|
-
tx_type:
|
|
773
|
-
contract_call:
|
|
774
|
-
contract_id:
|
|
775
|
-
function_name:
|
|
776
|
-
function_signature:
|
|
777
|
-
function_args:
|
|
778
|
-
|
|
779
|
-
hex:
|
|
780
|
-
repr:
|
|
781
|
-
name:
|
|
782
|
-
type:
|
|
910
|
+
var contractCallTransactionSchema = v14.object({
|
|
911
|
+
tx_type: v14.literal("contract_call"),
|
|
912
|
+
contract_call: v14.object({
|
|
913
|
+
contract_id: v14.string(),
|
|
914
|
+
function_name: v14.string(),
|
|
915
|
+
function_signature: v14.string(),
|
|
916
|
+
function_args: v14.array(
|
|
917
|
+
v14.object({
|
|
918
|
+
hex: v14.string(),
|
|
919
|
+
repr: v14.string(),
|
|
920
|
+
name: v14.string(),
|
|
921
|
+
type: v14.string()
|
|
783
922
|
})
|
|
784
923
|
)
|
|
785
924
|
}),
|
|
786
925
|
...baseTransactionSchema.entries
|
|
787
926
|
});
|
|
788
|
-
var smartContractTransactionSchema =
|
|
789
|
-
tx_type:
|
|
790
|
-
smart_contract:
|
|
927
|
+
var smartContractTransactionSchema = v14.object({
|
|
928
|
+
tx_type: v14.literal("smart_contract"),
|
|
929
|
+
smart_contract: v14.object({
|
|
791
930
|
/**
|
|
792
931
|
* NOTE: The types may be wrong, not sure what type of value is used when
|
|
793
932
|
* the version is not `null`.
|
|
794
933
|
*/
|
|
795
|
-
clarity_version:
|
|
796
|
-
contract_id:
|
|
797
|
-
source_code:
|
|
934
|
+
clarity_version: v14.union([v14.null(), v14.number()]),
|
|
935
|
+
contract_id: v14.string(),
|
|
936
|
+
source_code: v14.string()
|
|
798
937
|
}),
|
|
799
938
|
...baseTransactionSchema.entries
|
|
800
939
|
});
|
|
801
|
-
var tokenTransferSchema =
|
|
802
|
-
tx_type:
|
|
803
|
-
token_transfer:
|
|
804
|
-
recipient_address:
|
|
805
|
-
amount:
|
|
806
|
-
memo:
|
|
940
|
+
var tokenTransferSchema = v14.object({
|
|
941
|
+
tx_type: v14.literal("token_transfer"),
|
|
942
|
+
token_transfer: v14.object({
|
|
943
|
+
recipient_address: v14.string(),
|
|
944
|
+
amount: v14.string(),
|
|
945
|
+
memo: v14.string()
|
|
807
946
|
}),
|
|
808
947
|
...baseTransactionSchema.entries
|
|
809
948
|
});
|
|
810
|
-
var transactionSchema =
|
|
949
|
+
var transactionSchema = v14.variant("tx_type", [
|
|
811
950
|
contractCallTransactionSchema,
|
|
812
951
|
smartContractTransactionSchema,
|
|
813
952
|
tokenTransferSchema
|
|
814
953
|
]);
|
|
815
954
|
|
|
816
955
|
// src/stacks-api/transactions/address-transactions.ts
|
|
817
|
-
import * as
|
|
818
|
-
var resultSchema =
|
|
956
|
+
import * as v15 from "valibot";
|
|
957
|
+
var resultSchema = v15.object({
|
|
819
958
|
tx: transactionSchema,
|
|
820
|
-
stx_sent:
|
|
821
|
-
stx_received:
|
|
822
|
-
events:
|
|
823
|
-
stx:
|
|
824
|
-
transfer:
|
|
825
|
-
mint:
|
|
826
|
-
burn:
|
|
959
|
+
stx_sent: v15.string(),
|
|
960
|
+
stx_received: v15.string(),
|
|
961
|
+
events: v15.object({
|
|
962
|
+
stx: v15.object({
|
|
963
|
+
transfer: v15.number(),
|
|
964
|
+
mint: v15.number(),
|
|
965
|
+
burn: v15.number()
|
|
827
966
|
}),
|
|
828
|
-
ft:
|
|
829
|
-
transfer:
|
|
830
|
-
mint:
|
|
831
|
-
burn:
|
|
967
|
+
ft: v15.object({
|
|
968
|
+
transfer: v15.number(),
|
|
969
|
+
mint: v15.number(),
|
|
970
|
+
burn: v15.number()
|
|
832
971
|
}),
|
|
833
|
-
nft:
|
|
834
|
-
transfer:
|
|
835
|
-
mint:
|
|
836
|
-
burn:
|
|
972
|
+
nft: v15.object({
|
|
973
|
+
transfer: v15.number(),
|
|
974
|
+
mint: v15.number(),
|
|
975
|
+
burn: v15.number()
|
|
837
976
|
})
|
|
838
977
|
})
|
|
839
978
|
});
|
|
840
|
-
var resultsSchema4 =
|
|
841
|
-
var addressTransactionsResponseSchema =
|
|
979
|
+
var resultsSchema4 = v15.array(resultSchema);
|
|
980
|
+
var addressTransactionsResponseSchema = v15.object({
|
|
842
981
|
...baseListResponseSchema.entries,
|
|
843
982
|
results: resultsSchema4
|
|
844
983
|
});
|
|
@@ -875,7 +1014,7 @@ async function addressTransactions(args) {
|
|
|
875
1014
|
data: jsonParseError
|
|
876
1015
|
});
|
|
877
1016
|
}
|
|
878
|
-
const validationResult =
|
|
1017
|
+
const validationResult = v15.safeParse(addressTransactionsResponseSchema, data);
|
|
879
1018
|
if (!validationResult.success) {
|
|
880
1019
|
return error({
|
|
881
1020
|
name: "ValidateDataError",
|
|
@@ -887,7 +1026,7 @@ async function addressTransactions(args) {
|
|
|
887
1026
|
}
|
|
888
1027
|
|
|
889
1028
|
// src/stacks-api/transactions/get-transaction.ts
|
|
890
|
-
import * as
|
|
1029
|
+
import * as v16 from "valibot";
|
|
891
1030
|
async function getTransaction(args) {
|
|
892
1031
|
const init = {};
|
|
893
1032
|
if (args.apiKeyConfig) {
|
|
@@ -916,7 +1055,7 @@ async function getTransaction(args) {
|
|
|
916
1055
|
error: jsonParseError
|
|
917
1056
|
});
|
|
918
1057
|
}
|
|
919
|
-
const validationResult =
|
|
1058
|
+
const validationResult = v16.safeParse(transactionSchema, data);
|
|
920
1059
|
if (!validationResult.success) {
|
|
921
1060
|
return error({
|
|
922
1061
|
name: "ValidateDataError",
|
|
@@ -927,20 +1066,89 @@ async function getTransaction(args) {
|
|
|
927
1066
|
return success(validationResult.output);
|
|
928
1067
|
}
|
|
929
1068
|
|
|
1069
|
+
// src/stacks-api/transactions/index.ts
|
|
1070
|
+
var transactions = {
|
|
1071
|
+
addressTransactions,
|
|
1072
|
+
getTransaction
|
|
1073
|
+
};
|
|
1074
|
+
|
|
930
1075
|
// src/stacks-api/index.ts
|
|
931
|
-
var
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
1076
|
+
var stacksApi = {
|
|
1077
|
+
accounts,
|
|
1078
|
+
blocks,
|
|
1079
|
+
faucets,
|
|
1080
|
+
info,
|
|
1081
|
+
proofOfTransfer,
|
|
1082
|
+
smartContracts,
|
|
1083
|
+
stackingPool,
|
|
1084
|
+
transactions
|
|
1085
|
+
};
|
|
1086
|
+
|
|
1087
|
+
// src/stacks-rpc-api/smart-contracts/map-entry.ts
|
|
1088
|
+
import * as v17 from "valibot";
|
|
1089
|
+
var mapEntryResponseSchema = v17.object({
|
|
1090
|
+
/**
|
|
1091
|
+
* Hex-encoded string of clarity value. It is always an optional tuple.
|
|
1092
|
+
*/
|
|
1093
|
+
data: v17.string(),
|
|
1094
|
+
/**
|
|
1095
|
+
* Hex-encoded string of the MARF proof for the data
|
|
1096
|
+
*/
|
|
1097
|
+
proof: v17.optional(v17.string())
|
|
1098
|
+
});
|
|
1099
|
+
async function mapEntry(args) {
|
|
1100
|
+
const search = new URLSearchParams();
|
|
1101
|
+
if (args.proof === 0) search.append("proof", "0");
|
|
1102
|
+
if (args.tip) search.append("tip", args.tip);
|
|
1103
|
+
const init = {};
|
|
1104
|
+
if (args.apiKeyConfig) {
|
|
1105
|
+
init.headers = {
|
|
1106
|
+
[args.apiKeyConfig.header]: args.apiKeyConfig.key
|
|
1107
|
+
};
|
|
1108
|
+
}
|
|
1109
|
+
init.method = "POST";
|
|
1110
|
+
init.body = args.mapKey;
|
|
1111
|
+
const endpoint = `${args.baseUrl}/v2/map_entry/${args.contractAddress}/${args.contractName}/${args.mapName}?${search}`;
|
|
1112
|
+
const res = await fetch(endpoint, init);
|
|
1113
|
+
if (!res.ok) {
|
|
1114
|
+
return error({
|
|
1115
|
+
name: "FetchMapEntryError",
|
|
1116
|
+
message: "Failed to fetch map entry.",
|
|
1117
|
+
data: {
|
|
1118
|
+
status: res.status,
|
|
1119
|
+
statusText: res.statusText,
|
|
1120
|
+
bodyParseResult: await safePromise(res.json())
|
|
1121
|
+
}
|
|
1122
|
+
});
|
|
1123
|
+
}
|
|
1124
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
1125
|
+
if (jsonError) {
|
|
1126
|
+
return error({
|
|
1127
|
+
name: "ParseBodyError",
|
|
1128
|
+
message: "Failed to parse response body as JSON.",
|
|
1129
|
+
data: jsonError
|
|
1130
|
+
});
|
|
1131
|
+
}
|
|
1132
|
+
const validationResult = v17.safeParse(mapEntryResponseSchema, data);
|
|
1133
|
+
if (!validationResult.success) {
|
|
1134
|
+
return error({
|
|
1135
|
+
name: "ValidateDataError",
|
|
1136
|
+
message: "Failed to validate response data.",
|
|
1137
|
+
data: validationResult
|
|
1138
|
+
});
|
|
1139
|
+
}
|
|
1140
|
+
return success(validationResult.output);
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
// src/stacks-rpc-api/smart-contracts/index.ts
|
|
1144
|
+
var smartContracts2 = {
|
|
1145
|
+
mapEntry
|
|
1146
|
+
};
|
|
1147
|
+
|
|
1148
|
+
// src/stacks-rpc-api/index.ts
|
|
1149
|
+
var stacksRpcApi = {
|
|
1150
|
+
smartContracts: smartContracts2
|
|
940
1151
|
};
|
|
941
|
-
var smartContracts = { readOnly };
|
|
942
|
-
var stackingPool = { members };
|
|
943
|
-
var transactions = { addressTransactions, getTransaction };
|
|
944
1152
|
|
|
945
1153
|
// src/utils/call-rate-limited-api.ts
|
|
946
1154
|
import { backOff } from "exponential-backoff";
|
|
@@ -954,10 +1162,19 @@ function callRateLimitedApi(fn, options) {
|
|
|
954
1162
|
}
|
|
955
1163
|
async function safeCallRateLimitedApi(fn, options) {
|
|
956
1164
|
try {
|
|
957
|
-
return await backOff(
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
1165
|
+
return await backOff(
|
|
1166
|
+
async () => {
|
|
1167
|
+
const [error2, data] = await fn();
|
|
1168
|
+
if (error2) {
|
|
1169
|
+
throw error2;
|
|
1170
|
+
}
|
|
1171
|
+
return success(data);
|
|
1172
|
+
},
|
|
1173
|
+
{
|
|
1174
|
+
startingDelay: options?.startingDelay ?? 15e3,
|
|
1175
|
+
numOfAttempts: options?.numOfAttempts ?? 5
|
|
1176
|
+
}
|
|
1177
|
+
);
|
|
961
1178
|
} catch (error2) {
|
|
962
1179
|
return error({
|
|
963
1180
|
name: "MaxRetriesExceeded",
|
|
@@ -969,22 +1186,73 @@ async function safeCallRateLimitedApi(fn, options) {
|
|
|
969
1186
|
}
|
|
970
1187
|
}
|
|
971
1188
|
|
|
972
|
-
// src/
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1189
|
+
// src/queries/get-signer-stacked-amount.ts
|
|
1190
|
+
async function getSignerStackedAmount(args) {
|
|
1191
|
+
let totalLocked = 0n;
|
|
1192
|
+
const { identifier, ...rest } = args;
|
|
1193
|
+
let hasMore = true;
|
|
1194
|
+
let offset = 0;
|
|
1195
|
+
let found = false;
|
|
1196
|
+
const limit = 200;
|
|
1197
|
+
while (hasMore && !found) {
|
|
1198
|
+
const [error2, data] = await safeCallRateLimitedApi(
|
|
1199
|
+
() => signersInCycle({
|
|
1200
|
+
...rest,
|
|
1201
|
+
limit
|
|
1202
|
+
})
|
|
1203
|
+
);
|
|
1204
|
+
if (error2) {
|
|
1205
|
+
return error({
|
|
1206
|
+
name: "GetSignerTotalLockedError",
|
|
1207
|
+
message: "Failed to get signer total locked.",
|
|
1208
|
+
data: {
|
|
1209
|
+
error: error2
|
|
1210
|
+
}
|
|
1211
|
+
});
|
|
1212
|
+
}
|
|
1213
|
+
for (const signer of data.results) {
|
|
1214
|
+
if (identifier.type === "address") {
|
|
1215
|
+
if (signer.signer_address === identifier.signerAddress) {
|
|
1216
|
+
totalLocked = BigInt(signer.stacked_amount);
|
|
1217
|
+
found = true;
|
|
1218
|
+
break;
|
|
1219
|
+
}
|
|
1220
|
+
} else {
|
|
1221
|
+
if (signer.signing_key === identifier.signerPublicKey) {
|
|
1222
|
+
totalLocked = BigInt(signer.stacked_amount);
|
|
1223
|
+
found = true;
|
|
1224
|
+
break;
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
offset += data.results.length;
|
|
1229
|
+
hasMore = offset < data.total;
|
|
1230
|
+
}
|
|
1231
|
+
if (!found) {
|
|
1232
|
+
return error({
|
|
1233
|
+
name: "SignerNotFound",
|
|
1234
|
+
message: "Signer not found.",
|
|
1235
|
+
data: {
|
|
1236
|
+
identifier,
|
|
1237
|
+
cycle: args.cycleNumber
|
|
1238
|
+
}
|
|
1239
|
+
});
|
|
1240
|
+
}
|
|
1241
|
+
return success(totalLocked);
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
// src/queries/index.ts
|
|
1245
|
+
var queries = {
|
|
1246
|
+
getSignerStackedAmount
|
|
981
1247
|
};
|
|
982
1248
|
export {
|
|
983
1249
|
callRateLimitedApi,
|
|
984
1250
|
error,
|
|
1251
|
+
queries,
|
|
985
1252
|
safeCall,
|
|
986
1253
|
safeCallRateLimitedApi,
|
|
987
1254
|
safePromise,
|
|
988
1255
|
stacksApi,
|
|
1256
|
+
stacksRpcApi,
|
|
989
1257
|
success
|
|
990
1258
|
};
|