@secretkeylabs/stacks-tools 0.2.0 → 0.3.0-05c5288
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 +1090 -0
- package/dist/index.d.cts +661 -0
- package/dist/index.d.ts +661 -2
- package/dist/index.js +1052 -3
- package/package.json +13 -5
- package/dist/index.js.map +0 -1
- package/dist/pox4-api/burn-height-to-reward-cycle.d.ts +0 -7
- package/dist/pox4-api/burn-height-to-reward-cycle.js +0 -6
- package/dist/pox4-api/burn-height-to-reward-cycle.js.map +0 -1
- package/dist/pox4-api/current-pox-reward-cycle.d.ts +0 -1
- package/dist/pox4-api/current-pox-reward-cycle.js +0 -3
- package/dist/pox4-api/current-pox-reward-cycle.js.map +0 -1
- package/dist/pox4-api/get-stacker-info.d.ts +0 -1
- package/dist/pox4-api/get-stacker-info.js +0 -3
- package/dist/pox4-api/get-stacker-info.js.map +0 -1
- package/dist/pox4-api/reward-cycle-to-burn-height.d.ts +0 -1
- package/dist/pox4-api/reward-cycle-to-burn-height.js +0 -3
- package/dist/pox4-api/reward-cycle-to-burn-height.js.map +0 -1
- package/dist/queries/get-signer-total-locked.d.ts +0 -18
- package/dist/queries/get-signer-total-locked.js +0 -59
- package/dist/queries/get-signer-total-locked.js.map +0 -1
- package/dist/queries/index.d.ts +0 -4
- package/dist/queries/index.js +0 -5
- package/dist/queries/index.js.map +0 -1
- package/dist/stacks-api/accounts/balances.d.ts +0 -34
- package/dist/stacks-api/accounts/balances.js +0 -70
- package/dist/stacks-api/accounts/balances.js.map +0 -1
- package/dist/stacks-api/accounts/index.d.ts +0 -4
- package/dist/stacks-api/accounts/index.js +0 -5
- package/dist/stacks-api/accounts/index.js.map +0 -1
- package/dist/stacks-api/blocks/get-block.d.ts +0 -29
- package/dist/stacks-api/blocks/get-block.js +0 -62
- package/dist/stacks-api/blocks/get-block.js.map +0 -1
- package/dist/stacks-api/blocks/index.d.ts +0 -4
- package/dist/stacks-api/blocks/index.js +0 -5
- package/dist/stacks-api/blocks/index.js.map +0 -1
- package/dist/stacks-api/index.d.ts +0 -28
- package/dist/stacks-api/index.js +0 -17
- package/dist/stacks-api/index.js.map +0 -1
- package/dist/stacks-api/info/core-api.d.ts +0 -21
- package/dist/stacks-api/info/core-api.js +0 -55
- package/dist/stacks-api/info/core-api.js.map +0 -1
- package/dist/stacks-api/info/index.d.ts +0 -6
- package/dist/stacks-api/info/index.js +0 -7
- package/dist/stacks-api/info/index.js.map +0 -1
- package/dist/stacks-api/info/pox-details.d.ts +0 -59
- package/dist/stacks-api/info/pox-details.js +0 -92
- package/dist/stacks-api/info/pox-details.js.map +0 -1
- package/dist/stacks-api/proof-of-transfer/cycle.d.ts +0 -16
- package/dist/stacks-api/proof-of-transfer/cycle.js +0 -50
- package/dist/stacks-api/proof-of-transfer/cycle.js.map +0 -1
- package/dist/stacks-api/proof-of-transfer/cycles.d.ts +0 -37
- package/dist/stacks-api/proof-of-transfer/cycles.js +0 -61
- package/dist/stacks-api/proof-of-transfer/cycles.js.map +0 -1
- package/dist/stacks-api/proof-of-transfer/index.d.ts +0 -10
- package/dist/stacks-api/proof-of-transfer/index.js +0 -11
- package/dist/stacks-api/proof-of-transfer/index.js.map +0 -1
- package/dist/stacks-api/proof-of-transfer/signers-in-cycle.d.ts +0 -45
- package/dist/stacks-api/proof-of-transfer/signers-in-cycle.js +0 -66
- package/dist/stacks-api/proof-of-transfer/signers-in-cycle.js.map +0 -1
- package/dist/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.d.ts +0 -34
- package/dist/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.js +0 -59
- package/dist/stacks-api/proof-of-transfer/stackers-for-signer-in-cycle.js.map +0 -1
- package/dist/stacks-api/smart-contracts/index.d.ts +0 -4
- package/dist/stacks-api/smart-contracts/index.js +0 -5
- package/dist/stacks-api/smart-contracts/index.js.map +0 -1
- package/dist/stacks-api/smart-contracts/read-only.d.ts +0 -19
- package/dist/stacks-api/smart-contracts/read-only.js +0 -50
- package/dist/stacks-api/smart-contracts/read-only.js.map +0 -1
- package/dist/stacks-api/stacking-pool/index.d.ts +0 -4
- package/dist/stacks-api/stacking-pool/index.js +0 -5
- package/dist/stacks-api/stacking-pool/index.js.map +0 -1
- package/dist/stacks-api/stacking-pool/members.d.ts +0 -34
- package/dist/stacks-api/stacking-pool/members.js +0 -64
- package/dist/stacks-api/stacking-pool/members.js.map +0 -1
- package/dist/stacks-api/transactions/address-transactions.d.ts +0 -487
- package/dist/stacks-api/transactions/address-transactions.js +0 -75
- package/dist/stacks-api/transactions/address-transactions.js.map +0 -1
- package/dist/stacks-api/transactions/get-transaction.d.ts +0 -8
- package/dist/stacks-api/transactions/get-transaction.js +0 -42
- package/dist/stacks-api/transactions/get-transaction.js.map +0 -1
- package/dist/stacks-api/transactions/index.d.ts +0 -6
- package/dist/stacks-api/transactions/index.js +0 -7
- package/dist/stacks-api/transactions/index.js.map +0 -1
- package/dist/stacks-api/transactions/schemas.d.ts +0 -327
- package/dist/stacks-api/transactions/schemas.js +0 -85
- package/dist/stacks-api/transactions/schemas.js.map +0 -1
- package/dist/stacks-api/types.d.ts +0 -26
- package/dist/stacks-api/types.js +0 -8
- package/dist/stacks-api/types.js.map +0 -1
- package/dist/utils/call-rate-limited-api.d.ts +0 -8
- package/dist/utils/call-rate-limited-api.js +0 -28
- package/dist/utils/call-rate-limited-api.js.map +0 -1
- package/dist/utils/safe.d.ts +0 -10
- package/dist/utils/safe.js +0 -31
- package/dist/utils/safe.js.map +0 -1
|
@@ -1,50 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
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
|
-
poolPrincipal: string;
|
|
6
|
-
afterBlock?: number;
|
|
7
|
-
unanchored?: boolean;
|
|
8
|
-
limit?: number;
|
|
9
|
-
offset?: number;
|
|
10
|
-
};
|
|
11
|
-
export declare const memberSchema: v.ObjectSchema<{
|
|
12
|
-
readonly stacker: v.StringSchema<undefined>;
|
|
13
|
-
readonly pox_addr: v.OptionalSchema<v.StringSchema<undefined>, never>;
|
|
14
|
-
readonly amount_ustx: v.StringSchema<undefined>;
|
|
15
|
-
readonly burn_block_unlock_height: v.OptionalSchema<v.NumberSchema<undefined>, never>;
|
|
16
|
-
readonly block_height: v.NumberSchema<undefined>;
|
|
17
|
-
readonly tx_id: v.StringSchema<undefined>;
|
|
18
|
-
}, undefined>;
|
|
19
|
-
export type Member = v.InferOutput<typeof memberSchema>;
|
|
20
|
-
export declare const membersResponseSchema: v.ObjectSchema<{
|
|
21
|
-
readonly limit: v.NumberSchema<undefined>;
|
|
22
|
-
readonly offset: v.NumberSchema<undefined>;
|
|
23
|
-
readonly total: v.NumberSchema<undefined>;
|
|
24
|
-
readonly results: v.ArraySchema<v.ObjectSchema<{
|
|
25
|
-
readonly stacker: v.StringSchema<undefined>;
|
|
26
|
-
readonly pox_addr: v.OptionalSchema<v.StringSchema<undefined>, never>;
|
|
27
|
-
readonly amount_ustx: v.StringSchema<undefined>;
|
|
28
|
-
readonly burn_block_unlock_height: v.OptionalSchema<v.NumberSchema<undefined>, never>;
|
|
29
|
-
readonly block_height: v.NumberSchema<undefined>;
|
|
30
|
-
readonly tx_id: v.StringSchema<undefined>;
|
|
31
|
-
}, undefined>, undefined>;
|
|
32
|
-
}, undefined>;
|
|
33
|
-
export type MembersResponse = v.InferOutput<typeof membersResponseSchema>;
|
|
34
|
-
export declare function members(opts: Options, apiOpts: ApiRequestOptions): Promise<Result<MembersResponse>>;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { error, safePromise, success } from "../../utils/safe.js";
|
|
2
|
-
import {} from "../types.js";
|
|
3
|
-
import * as v from "valibot";
|
|
4
|
-
export const memberSchema = v.object({
|
|
5
|
-
stacker: v.string(),
|
|
6
|
-
pox_addr: v.optional(v.string()),
|
|
7
|
-
amount_ustx: v.string(),
|
|
8
|
-
burn_block_unlock_height: v.optional(v.number()),
|
|
9
|
-
block_height: v.number(),
|
|
10
|
-
tx_id: v.string(),
|
|
11
|
-
});
|
|
12
|
-
export const membersResponseSchema = v.object({
|
|
13
|
-
limit: v.number(),
|
|
14
|
-
offset: v.number(),
|
|
15
|
-
total: v.number(),
|
|
16
|
-
results: v.array(memberSchema),
|
|
17
|
-
});
|
|
18
|
-
export async function members(opts, apiOpts) {
|
|
19
|
-
const search = new URLSearchParams();
|
|
20
|
-
if (opts.afterBlock)
|
|
21
|
-
search.append("after_block", opts.afterBlock.toString());
|
|
22
|
-
if (opts.unanchored)
|
|
23
|
-
search.append("unanchored", "true");
|
|
24
|
-
if (opts.limit)
|
|
25
|
-
search.append("limit", opts.limit.toString());
|
|
26
|
-
if (opts.offset)
|
|
27
|
-
search.append("offset", opts.offset.toString());
|
|
28
|
-
const init = {};
|
|
29
|
-
if (apiOpts.apiKeyConfig) {
|
|
30
|
-
init.headers = {
|
|
31
|
-
[apiOpts.apiKeyConfig.header]: apiOpts.apiKeyConfig.key,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
const res = await fetch(`${apiOpts.baseUrl}/extended/beta/stacking/${opts.poolPrincipal}/delegations?${search}`, init);
|
|
35
|
-
if (!res.ok) {
|
|
36
|
-
return error({
|
|
37
|
-
name: "FetchMembersError",
|
|
38
|
-
message: "Failed to fetch members.",
|
|
39
|
-
data: {
|
|
40
|
-
status: res.status,
|
|
41
|
-
statusText: res.statusText,
|
|
42
|
-
bodyParseResult: await safePromise(res.json()),
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
const [jsonParseError, data] = await safePromise(res.json());
|
|
47
|
-
if (jsonParseError) {
|
|
48
|
-
return error({
|
|
49
|
-
name: "ParseBodyError",
|
|
50
|
-
message: "Failed to parse response body as JSON.",
|
|
51
|
-
data: jsonParseError,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
const validationResult = v.safeParse(membersResponseSchema, data);
|
|
55
|
-
if (!validationResult.success) {
|
|
56
|
-
return error({
|
|
57
|
-
name: "ValidateDataError",
|
|
58
|
-
message: "Failed to validate data.",
|
|
59
|
-
data: validationResult,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
return success(validationResult.output);
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=members.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../../src/stacks-api/stacking-pool/members.ts"],"names":[],"mappings":"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"}
|