@secretkeylabs/stacks-tools 0.1.0-77af370
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/README.md +17 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/pox4-api/burn-height-to-reward-cycle.d.ts +7 -0
- package/dist/pox4-api/burn-height-to-reward-cycle.js +6 -0
- package/dist/pox4-api/burn-height-to-reward-cycle.js.map +1 -0
- package/dist/pox4-api/current-pox-reward-cycle.d.ts +1 -0
- package/dist/pox4-api/current-pox-reward-cycle.js +3 -0
- package/dist/pox4-api/current-pox-reward-cycle.js.map +1 -0
- package/dist/pox4-api/get-stacker-info.d.ts +1 -0
- package/dist/pox4-api/get-stacker-info.js +3 -0
- package/dist/pox4-api/get-stacker-info.js.map +1 -0
- package/dist/pox4-api/reward-cycle-to-burn-height.d.ts +1 -0
- package/dist/pox4-api/reward-cycle-to-burn-height.js +3 -0
- package/dist/pox4-api/reward-cycle-to-burn-height.js.map +1 -0
- package/dist/queries/get-signer-total-locked.d.ts +10 -0
- package/dist/queries/get-signer-total-locked.js +49 -0
- package/dist/queries/get-signer-total-locked.js.map +1 -0
- package/dist/queries/index.d.ts +4 -0
- package/dist/queries/index.js +5 -0
- package/dist/queries/index.js.map +1 -0
- package/dist/stacks-api/accounts/balances.d.ts +34 -0
- package/dist/stacks-api/accounts/balances.js +70 -0
- package/dist/stacks-api/accounts/balances.js.map +1 -0
- package/dist/stacks-api/accounts/index.d.ts +4 -0
- package/dist/stacks-api/accounts/index.js +5 -0
- package/dist/stacks-api/accounts/index.js.map +1 -0
- package/dist/stacks-api/blocks/get-block.d.ts +29 -0
- package/dist/stacks-api/blocks/get-block.js +62 -0
- package/dist/stacks-api/blocks/get-block.js.map +1 -0
- package/dist/stacks-api/blocks/index.d.ts +4 -0
- package/dist/stacks-api/blocks/index.js +5 -0
- package/dist/stacks-api/blocks/index.js.map +1 -0
- package/dist/stacks-api/index.d.ts +28 -0
- package/dist/stacks-api/index.js +17 -0
- package/dist/stacks-api/index.js.map +1 -0
- package/dist/stacks-api/info/core-api.d.ts +21 -0
- package/dist/stacks-api/info/core-api.js +55 -0
- package/dist/stacks-api/info/core-api.js.map +1 -0
- package/dist/stacks-api/info/index.d.ts +6 -0
- package/dist/stacks-api/info/index.js +7 -0
- package/dist/stacks-api/info/index.js.map +1 -0
- package/dist/stacks-api/info/pox-details.d.ts +59 -0
- package/dist/stacks-api/info/pox-details.js +92 -0
- package/dist/stacks-api/info/pox-details.js.map +1 -0
- package/dist/stacks-api/proof-of-transfer/cycle.d.ts +16 -0
- package/dist/stacks-api/proof-of-transfer/cycle.js +50 -0
- package/dist/stacks-api/proof-of-transfer/cycle.js.map +1 -0
- package/dist/stacks-api/proof-of-transfer/cycles.d.ts +37 -0
- package/dist/stacks-api/proof-of-transfer/cycles.js +61 -0
- package/dist/stacks-api/proof-of-transfer/cycles.js.map +1 -0
- package/dist/stacks-api/proof-of-transfer/index.d.ts +10 -0
- package/dist/stacks-api/proof-of-transfer/index.js +11 -0
- package/dist/stacks-api/proof-of-transfer/index.js.map +1 -0
- package/dist/stacks-api/proof-of-transfer/signers-in-cycle.d.ts +45 -0
- package/dist/stacks-api/proof-of-transfer/signers-in-cycle.js +66 -0
- package/dist/stacks-api/proof-of-transfer/signers-in-cycle.js.map +1 -0
- package/dist/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.d.ts +34 -0
- package/dist/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.js +59 -0
- package/dist/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.js.map +1 -0
- package/dist/stacks-api/smart-contracts/index.d.ts +4 -0
- package/dist/stacks-api/smart-contracts/index.js +5 -0
- package/dist/stacks-api/smart-contracts/index.js.map +1 -0
- package/dist/stacks-api/smart-contracts/read-only.d.ts +19 -0
- package/dist/stacks-api/smart-contracts/read-only.js +50 -0
- package/dist/stacks-api/smart-contracts/read-only.js.map +1 -0
- package/dist/stacks-api/stacking-pool/index.d.ts +4 -0
- package/dist/stacks-api/stacking-pool/index.js +5 -0
- package/dist/stacks-api/stacking-pool/index.js.map +1 -0
- package/dist/stacks-api/stacking-pool/members.d.ts +34 -0
- package/dist/stacks-api/stacking-pool/members.js +64 -0
- package/dist/stacks-api/stacking-pool/members.js.map +1 -0
- package/dist/stacks-api/transactions/address-transactions.d.ts +487 -0
- package/dist/stacks-api/transactions/address-transactions.js +75 -0
- package/dist/stacks-api/transactions/address-transactions.js.map +1 -0
- package/dist/stacks-api/transactions/get-transaction.d.ts +8 -0
- package/dist/stacks-api/transactions/get-transaction.js +42 -0
- package/dist/stacks-api/transactions/get-transaction.js.map +1 -0
- package/dist/stacks-api/transactions/index.d.ts +6 -0
- package/dist/stacks-api/transactions/index.js +7 -0
- package/dist/stacks-api/transactions/index.js.map +1 -0
- package/dist/stacks-api/transactions/schemas.d.ts +327 -0
- package/dist/stacks-api/transactions/schemas.js +85 -0
- package/dist/stacks-api/transactions/schemas.js.map +1 -0
- package/dist/stacks-api/types.d.ts +26 -0
- package/dist/stacks-api/types.js +8 -0
- package/dist/stacks-api/types.js.map +1 -0
- package/dist/utils/call-rate-limited-api.d.ts +8 -0
- package/dist/utils/call-rate-limited-api.js +28 -0
- package/dist/utils/call-rate-limited-api.js.map +1 -0
- package/dist/utils/safe.d.ts +10 -0
- package/dist/utils/safe.js +31 -0
- package/dist/utils/safe.js.map +1 -0
- package/package.json +30 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { error, safePromise, success } from "../../utils/safe.js";
|
|
2
|
+
import * as v from "valibot";
|
|
3
|
+
const poxDetailsResponseSchema = v.object({
|
|
4
|
+
contract_id: v.string(),
|
|
5
|
+
pox_activation_threshold_ustx: v.number(),
|
|
6
|
+
first_burnchain_block_height: v.number(),
|
|
7
|
+
current_burnchain_block_height: v.number(),
|
|
8
|
+
prepare_phase_block_length: v.number(),
|
|
9
|
+
reward_phase_block_length: v.number(),
|
|
10
|
+
reward_slots: v.number(),
|
|
11
|
+
rejection_fraction: v.null(),
|
|
12
|
+
total_liquid_supply_ustx: v.number(),
|
|
13
|
+
current_cycle: v.object({
|
|
14
|
+
id: v.number(),
|
|
15
|
+
min_threshold_ustx: v.number(),
|
|
16
|
+
stacked_ustx: v.number(),
|
|
17
|
+
is_pox_active: v.boolean(),
|
|
18
|
+
}),
|
|
19
|
+
next_cycle: v.object({
|
|
20
|
+
id: v.number(),
|
|
21
|
+
min_threshold_ustx: v.number(),
|
|
22
|
+
min_increment_ustx: v.number(),
|
|
23
|
+
stacked_ustx: v.number(),
|
|
24
|
+
prepare_phase_start_block_height: v.number(),
|
|
25
|
+
blocks_until_prepare_phase: v.number(),
|
|
26
|
+
reward_phase_start_block_height: v.number(),
|
|
27
|
+
blocks_until_reward_phase: v.number(),
|
|
28
|
+
ustx_until_pox_rejection: v.null(),
|
|
29
|
+
}),
|
|
30
|
+
epochs: v.array(v.object({
|
|
31
|
+
epoch_id: v.string(),
|
|
32
|
+
start_height: v.number(),
|
|
33
|
+
end_height: v.number(),
|
|
34
|
+
block_limit: v.object({
|
|
35
|
+
write_length: v.number(),
|
|
36
|
+
write_count: v.number(),
|
|
37
|
+
read_length: v.number(),
|
|
38
|
+
read_count: v.number(),
|
|
39
|
+
runtime: v.number(),
|
|
40
|
+
}),
|
|
41
|
+
network_epoch: v.number(),
|
|
42
|
+
})),
|
|
43
|
+
min_amount_ustx: v.number(),
|
|
44
|
+
prepare_cycle_length: v.number(),
|
|
45
|
+
reward_cycle_id: v.number(),
|
|
46
|
+
reward_cycle_length: v.number(),
|
|
47
|
+
rejection_votes_left_required: v.null(),
|
|
48
|
+
next_reward_cycle_in: v.number(),
|
|
49
|
+
contract_versions: v.array(v.object({
|
|
50
|
+
contract_id: v.string(),
|
|
51
|
+
activation_burnchain_block_height: v.number(),
|
|
52
|
+
first_reward_cycle_id: v.number(),
|
|
53
|
+
})),
|
|
54
|
+
});
|
|
55
|
+
export async function poxDetails(args) {
|
|
56
|
+
const init = {};
|
|
57
|
+
if (args.apiKeyConfig) {
|
|
58
|
+
init.headers = {
|
|
59
|
+
[args.apiKeyConfig.header]: args.apiKeyConfig.key,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const res = await fetch(`${args.baseUrl}/v2/pox`, init);
|
|
63
|
+
if (!res.ok) {
|
|
64
|
+
return error({
|
|
65
|
+
name: "FetchPoxDetailsError",
|
|
66
|
+
message: "Failed to fetch pox details.",
|
|
67
|
+
data: {
|
|
68
|
+
status: res.status,
|
|
69
|
+
statusText: res.statusText,
|
|
70
|
+
bodyParseResult: await safePromise(res.json()),
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const [jsonParseError, data] = await safePromise(res.json());
|
|
75
|
+
if (jsonParseError) {
|
|
76
|
+
return error({
|
|
77
|
+
name: "ParseBodyError",
|
|
78
|
+
message: "Failed to parse pox details response.",
|
|
79
|
+
data: jsonParseError,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
const validationResult = v.safeParse(poxDetailsResponseSchema, data);
|
|
83
|
+
if (!validationResult.success) {
|
|
84
|
+
return error({
|
|
85
|
+
name: "ValidateDataError",
|
|
86
|
+
message: "Failed to parse pox details response.",
|
|
87
|
+
data: validationResult,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return success(validationResult.output);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=pox-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pox-details.js","sourceRoot":"","sources":["../../../src/stacks-api/info/pox-details.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Result, type SafeError } from "../../utils/safe.js";
|
|
2
|
+
import type { ApiRequestOptions } from "../types.js";
|
|
3
|
+
import * as v from "valibot";
|
|
4
|
+
export type Args = {
|
|
5
|
+
cycleNumber: number;
|
|
6
|
+
} & ApiRequestOptions;
|
|
7
|
+
export declare const responseSchema: v.ObjectSchema<{
|
|
8
|
+
readonly block_height: v.NumberSchema<undefined>;
|
|
9
|
+
readonly index_block_hash: v.StringSchema<undefined>;
|
|
10
|
+
readonly cycle_number: v.NumberSchema<undefined>;
|
|
11
|
+
readonly total_weight: v.NumberSchema<undefined>;
|
|
12
|
+
readonly total_stacked_amount: v.StringSchema<undefined>;
|
|
13
|
+
readonly total_signers: v.NumberSchema<undefined>;
|
|
14
|
+
}, undefined>;
|
|
15
|
+
export type Response = v.InferOutput<typeof responseSchema>;
|
|
16
|
+
export declare function cycle(opts: Args): Promise<Result<Response, SafeError<"FetchCycleError" | "ParseBodyError" | "ValidateDataError">>>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { error, safePromise, success, } from "../../utils/safe.js";
|
|
2
|
+
import * as v from "valibot";
|
|
3
|
+
export const responseSchema = v.object({
|
|
4
|
+
block_height: v.number(),
|
|
5
|
+
index_block_hash: v.string(),
|
|
6
|
+
cycle_number: v.number(),
|
|
7
|
+
total_weight: v.number(),
|
|
8
|
+
total_stacked_amount: v.string(),
|
|
9
|
+
total_signers: v.number(),
|
|
10
|
+
});
|
|
11
|
+
export async function cycle(opts) {
|
|
12
|
+
const init = {};
|
|
13
|
+
if (opts.apiKeyConfig) {
|
|
14
|
+
init.headers = {
|
|
15
|
+
[opts.apiKeyConfig.header]: opts.apiKeyConfig.key,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const endpoint = `${opts.baseUrl}/extended/v2/pox/cycles/${opts.cycleNumber}`;
|
|
19
|
+
const res = await fetch(endpoint, init);
|
|
20
|
+
if (!res.ok) {
|
|
21
|
+
return error({
|
|
22
|
+
name: "FetchCycleError",
|
|
23
|
+
message: "Failed to fetch cycle.",
|
|
24
|
+
data: {
|
|
25
|
+
endpoint,
|
|
26
|
+
status: res.status,
|
|
27
|
+
statusText: res.statusText,
|
|
28
|
+
bodyParseResult: await safePromise(res.json()),
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
33
|
+
if (jsonError) {
|
|
34
|
+
return error({
|
|
35
|
+
name: "ParseBodyError",
|
|
36
|
+
message: "Failed to parse response body as JSON.",
|
|
37
|
+
data: jsonError,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const validationResult = v.safeParse(responseSchema, data);
|
|
41
|
+
if (!validationResult.success) {
|
|
42
|
+
return error({
|
|
43
|
+
name: "ValidateDataError",
|
|
44
|
+
message: "Failed to validate data.",
|
|
45
|
+
data: validationResult,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return success(validationResult.output);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=cycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../src/stacks-api/proof-of-transfer/cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,WAAW,EACX,OAAO,GAGR,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAM7B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE;IAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,IAAU;IAOV,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG;YACb,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;SAClD,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,OAAO,2BAA2B,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;YACX,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,wBAAwB;YACjC,IAAI,EAAE;gBACJ,QAAQ;gBACR,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,eAAe,EAAE,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aAC/C;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,wCAAwC;YACjD,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;YACX,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,0BAA0B;YACnC,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type Result } from "../../utils/safe.js";
|
|
2
|
+
import { type ApiPaginationOptions, type ApiRequestOptions } from "../types.js";
|
|
3
|
+
import * as v from "valibot";
|
|
4
|
+
export type Args = ApiRequestOptions & ApiPaginationOptions;
|
|
5
|
+
export declare const cycleInfoSchema: v.ObjectSchema<{
|
|
6
|
+
readonly block_height: v.NumberSchema<undefined>;
|
|
7
|
+
readonly index_block_hash: v.StringSchema<undefined>;
|
|
8
|
+
readonly cycle_number: v.NumberSchema<undefined>;
|
|
9
|
+
readonly total_weight: v.NumberSchema<undefined>;
|
|
10
|
+
readonly total_stacked_amount: v.StringSchema<undefined>;
|
|
11
|
+
readonly total_signers: v.NumberSchema<undefined>;
|
|
12
|
+
}, undefined>;
|
|
13
|
+
export type CycleInfo = v.InferOutput<typeof cycleInfoSchema>;
|
|
14
|
+
export declare const resultsSchema: v.ArraySchema<v.ObjectSchema<{
|
|
15
|
+
readonly block_height: v.NumberSchema<undefined>;
|
|
16
|
+
readonly index_block_hash: v.StringSchema<undefined>;
|
|
17
|
+
readonly cycle_number: v.NumberSchema<undefined>;
|
|
18
|
+
readonly total_weight: v.NumberSchema<undefined>;
|
|
19
|
+
readonly total_stacked_amount: v.StringSchema<undefined>;
|
|
20
|
+
readonly total_signers: v.NumberSchema<undefined>;
|
|
21
|
+
}, undefined>, undefined>;
|
|
22
|
+
export type Results = v.InferOutput<typeof resultsSchema>;
|
|
23
|
+
export declare const cyclesResponseSchema: v.ObjectSchema<{
|
|
24
|
+
readonly results: v.ArraySchema<v.ObjectSchema<{
|
|
25
|
+
readonly block_height: v.NumberSchema<undefined>;
|
|
26
|
+
readonly index_block_hash: v.StringSchema<undefined>;
|
|
27
|
+
readonly cycle_number: v.NumberSchema<undefined>;
|
|
28
|
+
readonly total_weight: v.NumberSchema<undefined>;
|
|
29
|
+
readonly total_stacked_amount: v.StringSchema<undefined>;
|
|
30
|
+
readonly total_signers: v.NumberSchema<undefined>;
|
|
31
|
+
}, undefined>, undefined>;
|
|
32
|
+
readonly limit: v.NumberSchema<undefined>;
|
|
33
|
+
readonly offset: v.NumberSchema<undefined>;
|
|
34
|
+
readonly total: v.NumberSchema<undefined>;
|
|
35
|
+
}, undefined>;
|
|
36
|
+
export type CyclesResponse = v.InferOutput<typeof cyclesResponseSchema>;
|
|
37
|
+
export declare function cycles(args: Args): Promise<Result<CyclesResponse>>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { error, safePromise, success } from "../../utils/safe.js";
|
|
2
|
+
import { baseListResponseSchema, } from "../types.js";
|
|
3
|
+
import * as v from "valibot";
|
|
4
|
+
export const cycleInfoSchema = v.object({
|
|
5
|
+
block_height: v.number(),
|
|
6
|
+
index_block_hash: v.string(),
|
|
7
|
+
cycle_number: v.number(),
|
|
8
|
+
total_weight: v.number(),
|
|
9
|
+
total_stacked_amount: v.string(),
|
|
10
|
+
total_signers: v.number(),
|
|
11
|
+
});
|
|
12
|
+
export const resultsSchema = v.array(cycleInfoSchema);
|
|
13
|
+
export const cyclesResponseSchema = v.object({
|
|
14
|
+
...baseListResponseSchema.entries,
|
|
15
|
+
results: resultsSchema,
|
|
16
|
+
});
|
|
17
|
+
export async function cycles(args) {
|
|
18
|
+
const search = new URLSearchParams();
|
|
19
|
+
if (args.limit)
|
|
20
|
+
search.append("limit", args.limit.toString());
|
|
21
|
+
if (args.offset)
|
|
22
|
+
search.append("offset", args.offset.toString());
|
|
23
|
+
const init = {};
|
|
24
|
+
if (args.apiKeyConfig) {
|
|
25
|
+
init.headers = {
|
|
26
|
+
[args.apiKeyConfig.header]: args.apiKeyConfig.key,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const endpoint = `${args.baseUrl}/extended/v2/pox/cycles`;
|
|
30
|
+
const res = await fetch(endpoint, init);
|
|
31
|
+
if (!res.ok) {
|
|
32
|
+
return error({
|
|
33
|
+
name: "FetchCyclesError",
|
|
34
|
+
message: "Failed to fetch cycles.",
|
|
35
|
+
data: {
|
|
36
|
+
endpoint,
|
|
37
|
+
status: res.status,
|
|
38
|
+
statusText: res.statusText,
|
|
39
|
+
bodyParseResult: await safePromise(res.json()),
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
44
|
+
if (jsonError) {
|
|
45
|
+
return error({
|
|
46
|
+
name: "ParseBodyError",
|
|
47
|
+
message: "Failed to parse response body as JSON.",
|
|
48
|
+
data: jsonError,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const validationResult = v.safeParse(cyclesResponseSchema, data);
|
|
52
|
+
if (!validationResult.success) {
|
|
53
|
+
return error({
|
|
54
|
+
name: "ValidateDataError",
|
|
55
|
+
message: "Failed to validate response data.",
|
|
56
|
+
data: validationResult,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return success(validationResult.output);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=cycles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cycles.js","sourceRoot":"","sources":["../../../src/stacks-api/proof-of-transfer/cycles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,sBAAsB,GAGvB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAI7B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE;IAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAGtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,GAAG,sBAAsB,CAAC,OAAO;IACjC,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAU;IACrC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG;YACb,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;SAClD,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,OAAO,yBAAyB,CAAC;IAC1D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,yBAAyB;YAClC,IAAI,EAAE;gBACJ,QAAQ;gBACR,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,eAAe,EAAE,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aAC/C;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,wCAAwC;YACjD,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;YACX,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,mCAAmC;YAC5C,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { cycle } from "./cycle.js";
|
|
2
|
+
import { cycles } from "./cycles.js";
|
|
3
|
+
import { signersInCycle } from "./signers-in-cycle.js";
|
|
4
|
+
import { stackersForSignerInCycle } from "./stackers-for-signer-in-cycle.js";
|
|
5
|
+
export declare const proofOfTransfer: {
|
|
6
|
+
cycle: typeof cycle;
|
|
7
|
+
cycles: typeof cycles;
|
|
8
|
+
signersInCycle: typeof signersInCycle;
|
|
9
|
+
stackersForSignerInCycle: typeof stackersForSignerInCycle;
|
|
10
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { cycle } from "./cycle.js";
|
|
2
|
+
import { cycles } from "./cycles.js";
|
|
3
|
+
import { signersInCycle } from "./signers-in-cycle.js";
|
|
4
|
+
import { stackersForSignerInCycle } from "./stackers-for-signer-in-cycle.js";
|
|
5
|
+
export const proofOfTransfer = {
|
|
6
|
+
cycle,
|
|
7
|
+
cycles,
|
|
8
|
+
signersInCycle,
|
|
9
|
+
stackersForSignerInCycle,
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stacks-api/proof-of-transfer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK;IACL,MAAM;IACN,cAAc;IACd,wBAAwB;CACzB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Result, type SafeError } from "../../utils/safe.js";
|
|
2
|
+
import { type ApiPaginationOptions, type ApiRequestOptions } from "../types.js";
|
|
3
|
+
import * as v from "valibot";
|
|
4
|
+
export type Args = {
|
|
5
|
+
cycleNumber: number;
|
|
6
|
+
} & ApiRequestOptions & ApiPaginationOptions;
|
|
7
|
+
export declare const signerSchema: v.ObjectSchema<{
|
|
8
|
+
readonly signing_key: v.StringSchema<undefined>;
|
|
9
|
+
readonly signer_address: v.StringSchema<undefined>;
|
|
10
|
+
readonly weight: v.NumberSchema<undefined>;
|
|
11
|
+
readonly stacked_amount: v.StringSchema<undefined>;
|
|
12
|
+
readonly weight_percent: v.NumberSchema<undefined>;
|
|
13
|
+
readonly stacked_amount_percent: v.NumberSchema<undefined>;
|
|
14
|
+
readonly pooled_stacker_count: v.NumberSchema<undefined>;
|
|
15
|
+
readonly solo_stacker_count: v.NumberSchema<undefined>;
|
|
16
|
+
}, undefined>;
|
|
17
|
+
export type Signer = v.InferOutput<typeof signerSchema>;
|
|
18
|
+
export declare const resultsSchema: v.ArraySchema<v.ObjectSchema<{
|
|
19
|
+
readonly signing_key: v.StringSchema<undefined>;
|
|
20
|
+
readonly signer_address: v.StringSchema<undefined>;
|
|
21
|
+
readonly weight: v.NumberSchema<undefined>;
|
|
22
|
+
readonly stacked_amount: v.StringSchema<undefined>;
|
|
23
|
+
readonly weight_percent: v.NumberSchema<undefined>;
|
|
24
|
+
readonly stacked_amount_percent: v.NumberSchema<undefined>;
|
|
25
|
+
readonly pooled_stacker_count: v.NumberSchema<undefined>;
|
|
26
|
+
readonly solo_stacker_count: v.NumberSchema<undefined>;
|
|
27
|
+
}, undefined>, undefined>;
|
|
28
|
+
export type Results = v.InferOutput<typeof resultsSchema>;
|
|
29
|
+
export declare const signersResponseSchema: v.ObjectSchema<{
|
|
30
|
+
readonly results: v.ArraySchema<v.ObjectSchema<{
|
|
31
|
+
readonly signing_key: v.StringSchema<undefined>;
|
|
32
|
+
readonly signer_address: v.StringSchema<undefined>;
|
|
33
|
+
readonly weight: v.NumberSchema<undefined>;
|
|
34
|
+
readonly stacked_amount: v.StringSchema<undefined>;
|
|
35
|
+
readonly weight_percent: v.NumberSchema<undefined>;
|
|
36
|
+
readonly stacked_amount_percent: v.NumberSchema<undefined>;
|
|
37
|
+
readonly pooled_stacker_count: v.NumberSchema<undefined>;
|
|
38
|
+
readonly solo_stacker_count: v.NumberSchema<undefined>;
|
|
39
|
+
}, undefined>, undefined>;
|
|
40
|
+
readonly limit: v.NumberSchema<undefined>;
|
|
41
|
+
readonly offset: v.NumberSchema<undefined>;
|
|
42
|
+
readonly total: v.NumberSchema<undefined>;
|
|
43
|
+
}, undefined>;
|
|
44
|
+
export type SignersResponse = v.InferOutput<typeof signersResponseSchema>;
|
|
45
|
+
export declare function signersInCycle(args: Args): Promise<Result<SignersResponse, SafeError<"FetchSignersError" | "ParseBodyError" | "ValidateDataError">>>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { error, safePromise, success, } from "../../utils/safe.js";
|
|
2
|
+
import { baseListResponseSchema, } from "../types.js";
|
|
3
|
+
import * as v from "valibot";
|
|
4
|
+
export const signerSchema = v.object({
|
|
5
|
+
signing_key: v.string(),
|
|
6
|
+
signer_address: v.string(),
|
|
7
|
+
weight: v.number(),
|
|
8
|
+
stacked_amount: v.string(),
|
|
9
|
+
weight_percent: v.number(),
|
|
10
|
+
stacked_amount_percent: v.number(),
|
|
11
|
+
pooled_stacker_count: v.number(),
|
|
12
|
+
solo_stacker_count: v.number(),
|
|
13
|
+
});
|
|
14
|
+
export const resultsSchema = v.array(signerSchema);
|
|
15
|
+
export const signersResponseSchema = v.object({
|
|
16
|
+
...baseListResponseSchema.entries,
|
|
17
|
+
results: resultsSchema,
|
|
18
|
+
});
|
|
19
|
+
export async function signersInCycle(args) {
|
|
20
|
+
const search = new URLSearchParams();
|
|
21
|
+
if (args.limit)
|
|
22
|
+
search.append("limit", args.limit.toString());
|
|
23
|
+
if (args.offset)
|
|
24
|
+
search.append("offset", args.offset.toString());
|
|
25
|
+
const init = {};
|
|
26
|
+
if (args.apiKeyConfig) {
|
|
27
|
+
init.headers = {
|
|
28
|
+
[args.apiKeyConfig.header]: args.apiKeyConfig.key,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const endpoint = `${args.baseUrl}/extended/v2/pox/cycles/${args.cycleNumber}/signers`;
|
|
32
|
+
const res = await fetch(endpoint, init);
|
|
33
|
+
if (!res.ok) {
|
|
34
|
+
return error({
|
|
35
|
+
name: "FetchSignersError",
|
|
36
|
+
message: "Failed to fetch signers.",
|
|
37
|
+
data: {
|
|
38
|
+
endpoint,
|
|
39
|
+
status: res.status,
|
|
40
|
+
statusText: res.statusText,
|
|
41
|
+
bodyParseResult: await safePromise(res.json()),
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
46
|
+
if (jsonError) {
|
|
47
|
+
return error({
|
|
48
|
+
name: "ParseBodyError",
|
|
49
|
+
message: "Failed to parse response body as JSON.",
|
|
50
|
+
data: {
|
|
51
|
+
endpoint,
|
|
52
|
+
bodyParseResult: data,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const validationResult = v.safeParse(signersResponseSchema, data);
|
|
57
|
+
if (!validationResult.success) {
|
|
58
|
+
return error({
|
|
59
|
+
name: "ValidateDataError",
|
|
60
|
+
message: "Failed to validate response data.",
|
|
61
|
+
data: validationResult,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return success(validationResult.output);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=signers-in-cycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signers-in-cycle.js","sourceRoot":"","sources":["../../../src/stacks-api/proof-of-transfer/signers-in-cycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type Result, type SafeError } from "../../utils/safe.js";
|
|
2
|
+
import { type ApiPaginationOptions, type ApiRequestOptions } from "../types.js";
|
|
3
|
+
import * as v from "valibot";
|
|
4
|
+
export type Args = {
|
|
5
|
+
cycleNumber: number;
|
|
6
|
+
signerPublicKey: string;
|
|
7
|
+
} & ApiRequestOptions & ApiPaginationOptions;
|
|
8
|
+
export declare const stackerInfoSchema: v.ObjectSchema<{
|
|
9
|
+
readonly stacker_address: v.StringSchema<undefined>;
|
|
10
|
+
readonly stacked_amount: v.StringSchema<undefined>;
|
|
11
|
+
readonly pox_address: v.StringSchema<undefined>;
|
|
12
|
+
readonly stacker_type: v.UnionSchema<[v.LiteralSchema<"pooled", undefined>, v.LiteralSchema<"solo", undefined>], undefined>;
|
|
13
|
+
}, undefined>;
|
|
14
|
+
export type StackerInfo = v.InferOutput<typeof stackerInfoSchema>;
|
|
15
|
+
export declare const resultsSchema: v.ArraySchema<v.ObjectSchema<{
|
|
16
|
+
readonly stacker_address: v.StringSchema<undefined>;
|
|
17
|
+
readonly stacked_amount: v.StringSchema<undefined>;
|
|
18
|
+
readonly pox_address: v.StringSchema<undefined>;
|
|
19
|
+
readonly stacker_type: v.UnionSchema<[v.LiteralSchema<"pooled", undefined>, v.LiteralSchema<"solo", undefined>], undefined>;
|
|
20
|
+
}, undefined>, undefined>;
|
|
21
|
+
export type Results = v.InferOutput<typeof resultsSchema>;
|
|
22
|
+
export declare const stackersForSignerInCycleResponseSchema: v.ObjectSchema<{
|
|
23
|
+
readonly results: v.ArraySchema<v.ObjectSchema<{
|
|
24
|
+
readonly stacker_address: v.StringSchema<undefined>;
|
|
25
|
+
readonly stacked_amount: v.StringSchema<undefined>;
|
|
26
|
+
readonly pox_address: v.StringSchema<undefined>;
|
|
27
|
+
readonly stacker_type: v.UnionSchema<[v.LiteralSchema<"pooled", undefined>, v.LiteralSchema<"solo", undefined>], undefined>;
|
|
28
|
+
}, undefined>, undefined>;
|
|
29
|
+
readonly limit: v.NumberSchema<undefined>;
|
|
30
|
+
readonly offset: v.NumberSchema<undefined>;
|
|
31
|
+
readonly total: v.NumberSchema<undefined>;
|
|
32
|
+
}, undefined>;
|
|
33
|
+
export type StackersForSignerInCycleResponse = v.InferOutput<typeof stackersForSignerInCycleResponseSchema>;
|
|
34
|
+
export declare function stackersForSignerInCycle(opts: Args): Promise<Result<StackersForSignerInCycleResponse, SafeError<"FetchStackersForSignerInCycleError" | "ParseBodyError" | "ValidateDataError">>>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { error, safePromise, success, } from "../../utils/safe.js";
|
|
2
|
+
import { baseListResponseSchema, } from "../types.js";
|
|
3
|
+
import * as v from "valibot";
|
|
4
|
+
export const stackerInfoSchema = v.object({
|
|
5
|
+
stacker_address: v.string(),
|
|
6
|
+
stacked_amount: v.string(),
|
|
7
|
+
pox_address: v.string(),
|
|
8
|
+
stacker_type: v.union([v.literal("pooled"), v.literal("solo")]),
|
|
9
|
+
});
|
|
10
|
+
export const resultsSchema = v.array(stackerInfoSchema);
|
|
11
|
+
export const stackersForSignerInCycleResponseSchema = v.object({
|
|
12
|
+
...baseListResponseSchema.entries,
|
|
13
|
+
results: resultsSchema,
|
|
14
|
+
});
|
|
15
|
+
export async function stackersForSignerInCycle(opts) {
|
|
16
|
+
const search = new URLSearchParams();
|
|
17
|
+
if (opts.limit)
|
|
18
|
+
search.append("limit", opts.limit.toString());
|
|
19
|
+
if (opts.offset)
|
|
20
|
+
search.append("offset", opts.offset.toString());
|
|
21
|
+
const init = {};
|
|
22
|
+
if (opts.apiKeyConfig) {
|
|
23
|
+
init.headers = {
|
|
24
|
+
[opts.apiKeyConfig.header]: opts.apiKeyConfig.key,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const endpoint = `${opts.baseUrl}/extended/v2/pox/cycles/${opts.cycleNumber}/signers/${opts.signerPublicKey}/stackers?${search}`;
|
|
28
|
+
const res = await fetch(endpoint, init);
|
|
29
|
+
if (!res.ok) {
|
|
30
|
+
return error({
|
|
31
|
+
name: "FetchStackersForSignerInCycleError",
|
|
32
|
+
message: "Failed to fetch stackers for signer in cycle.",
|
|
33
|
+
data: {
|
|
34
|
+
endpoint,
|
|
35
|
+
status: res.status,
|
|
36
|
+
statusText: res.statusText,
|
|
37
|
+
bodyParseResult: await safePromise(res.json()),
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
42
|
+
if (jsonError) {
|
|
43
|
+
return error({
|
|
44
|
+
name: "ParseBodyError",
|
|
45
|
+
message: "Failed to parse response body as JSON.",
|
|
46
|
+
data: jsonError,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const validationResult = v.safeParse(stackersForSignerInCycleResponseSchema, data);
|
|
50
|
+
if (!validationResult.success) {
|
|
51
|
+
return error({
|
|
52
|
+
name: "ValidateDataError",
|
|
53
|
+
message: "Failed to validate response data.",
|
|
54
|
+
data: validationResult,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return success(validationResult.output);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=stackers-for-signer-in-cycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackers-for-signer-in-cycle.js","sourceRoot":"","sources":["../../../src/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stacks-api/smart-contracts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ;CACT,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Result } from "../../utils/safe.js";
|
|
2
|
+
import type { ApiRequestOptions } from "../types.js";
|
|
3
|
+
import * as v from "valibot";
|
|
4
|
+
export type Options = {
|
|
5
|
+
sender: string;
|
|
6
|
+
arguments: string[];
|
|
7
|
+
contractAddress: string;
|
|
8
|
+
contractName: string;
|
|
9
|
+
functionName: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const readOnlyResponseSchema: v.VariantSchema<"okay", [v.ObjectSchema<{
|
|
12
|
+
readonly okay: v.LiteralSchema<true, undefined>;
|
|
13
|
+
readonly result: v.StringSchema<undefined>;
|
|
14
|
+
}, undefined>, v.ObjectSchema<{
|
|
15
|
+
readonly okay: v.LiteralSchema<false, undefined>;
|
|
16
|
+
readonly cause: v.UnknownSchema;
|
|
17
|
+
}, undefined>], undefined>;
|
|
18
|
+
export type ReadOnlyResponse = v.InferOutput<typeof readOnlyResponseSchema>;
|
|
19
|
+
export declare function readOnly(opts: Options, apiOpts: ApiRequestOptions): Promise<Result<ReadOnlyResponse>>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { error, safePromise, success } from "../../utils/safe.js";
|
|
2
|
+
import * as v from "valibot";
|
|
3
|
+
export const readOnlyResponseSchema = v.variant("okay", [
|
|
4
|
+
v.object({
|
|
5
|
+
okay: v.literal(true),
|
|
6
|
+
result: v.string(),
|
|
7
|
+
}),
|
|
8
|
+
v.object({
|
|
9
|
+
okay: v.literal(false),
|
|
10
|
+
cause: v.unknown(),
|
|
11
|
+
}),
|
|
12
|
+
]);
|
|
13
|
+
export async function readOnly(opts, apiOpts) {
|
|
14
|
+
const init = {};
|
|
15
|
+
if (apiOpts.apiKeyConfig) {
|
|
16
|
+
init.headers = {
|
|
17
|
+
[apiOpts.apiKeyConfig.header]: apiOpts.apiKeyConfig.key,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const res = await fetch(`${apiOpts.baseUrl}/v2/contracts/call-read/${opts.contractAddress}/${opts.contractName}/${opts.functionName}`, init);
|
|
21
|
+
if (!res.ok) {
|
|
22
|
+
return error({
|
|
23
|
+
name: "FetchReadOnlyError",
|
|
24
|
+
message: "Failed to fetch.",
|
|
25
|
+
data: {
|
|
26
|
+
status: res.status,
|
|
27
|
+
statusText: res.statusText,
|
|
28
|
+
bodyParseResult: await safePromise(res.json()),
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
const [jsonError, data] = await safePromise(res.json());
|
|
33
|
+
if (jsonError) {
|
|
34
|
+
return error({
|
|
35
|
+
name: "ParseBodyError",
|
|
36
|
+
message: "Failed to parse response body as JSON.",
|
|
37
|
+
data: error,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const validationResult = v.safeParse(readOnlyResponseSchema, data);
|
|
41
|
+
if (!validationResult.success) {
|
|
42
|
+
return error({
|
|
43
|
+
name: "ValidateDataError",
|
|
44
|
+
message: "Failed to validate data.",
|
|
45
|
+
data: validationResult,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return success(validationResult.output);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=read-only.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-only.js","sourceRoot":"","sources":["../../../src/stacks-api/smart-contracts/read-only.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAE/E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAU7B,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;IACtD,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;KACnB,CAAC;CACH,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAa,EACb,OAA0B;IAE1B,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG;YACb,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;SACxD,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,OAAO,CAAC,OAAO,2BAA2B,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,EAC7G,IAAI,CACL,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;YACX,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,kBAAkB;YAC3B,IAAI,EAAE;gBACJ,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,eAAe,EAAE,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aAC/C;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,wCAAwC;YACjD,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IACnE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;YACX,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,0BAA0B;YACnC,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stacks-api/stacking-pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO;CACR,CAAC"}
|