@secretkeylabs/stacks-tools 0.1.0 → 0.2.0-7aab7a5
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/queries/get-signer-stacked-amount.d.ts +18 -0
- package/dist/queries/get-signer-stacked-amount.js +59 -0
- package/dist/queries/get-signer-stacked-amount.js.map +1 -0
- package/dist/queries/get-signer-total-locked.d.ts +9 -1
- package/dist/queries/get-signer-total-locked.js +16 -6
- package/dist/queries/get-signer-total-locked.js.map +1 -1
- package/dist/queries/index.d.ts +2 -2
- package/dist/queries/index.js +2 -2
- package/dist/queries/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ApiRequestOptions } from "../stacks-api/types.js";
|
|
2
|
+
import { type Result, type SafeError } from "../utils/safe.js";
|
|
3
|
+
export type Identifier = {
|
|
4
|
+
type: "address";
|
|
5
|
+
signerAddress: string;
|
|
6
|
+
} | {
|
|
7
|
+
type: "publicKey";
|
|
8
|
+
signerPublicKey: string;
|
|
9
|
+
};
|
|
10
|
+
export type Args = {
|
|
11
|
+
identifier: Identifier;
|
|
12
|
+
} & {
|
|
13
|
+
cycleNumber: number;
|
|
14
|
+
} & ApiRequestOptions;
|
|
15
|
+
/**
|
|
16
|
+
* Return the total locked amount for a signer in a PoX cycle.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getSignerStackedAmount(args: Args): Promise<Result<bigint, SafeError<"SignerNotFound" | string>>>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { signersInCycle } from "../stacks-api/proof-of-transfer/signers-in-cycle.js";
|
|
2
|
+
import { safeCallRateLimitedApi } from "../utils/call-rate-limited-api.js";
|
|
3
|
+
import { error as safeError, success, } from "../utils/safe.js";
|
|
4
|
+
/**
|
|
5
|
+
* Return the total locked amount for a signer in a PoX cycle.
|
|
6
|
+
*/
|
|
7
|
+
export async function getSignerStackedAmount(args) {
|
|
8
|
+
let totalLocked = 0n;
|
|
9
|
+
const { identifier, ...rest } = args;
|
|
10
|
+
let hasMore = true;
|
|
11
|
+
let offset = 0;
|
|
12
|
+
let found = false;
|
|
13
|
+
const limit = 200;
|
|
14
|
+
while (hasMore && !found) {
|
|
15
|
+
const [error, data] = await safeCallRateLimitedApi(() => signersInCycle({
|
|
16
|
+
...rest,
|
|
17
|
+
limit,
|
|
18
|
+
}));
|
|
19
|
+
if (error) {
|
|
20
|
+
return safeError({
|
|
21
|
+
name: "GetSignerTotalLockedError",
|
|
22
|
+
message: "Failed to get signer total locked.",
|
|
23
|
+
data: {
|
|
24
|
+
error,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
for (const signer of data.results) {
|
|
29
|
+
if (identifier.type === "address") {
|
|
30
|
+
if (signer.signer_address === identifier.signerAddress) {
|
|
31
|
+
totalLocked = BigInt(signer.stacked_amount);
|
|
32
|
+
found = true;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
if (signer.signing_key === identifier.signerPublicKey) {
|
|
38
|
+
totalLocked = BigInt(signer.stacked_amount);
|
|
39
|
+
found = true;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
offset += limit + data.results.length;
|
|
45
|
+
hasMore = offset < data.total;
|
|
46
|
+
}
|
|
47
|
+
if (!found) {
|
|
48
|
+
return safeError({
|
|
49
|
+
name: "SignerNotFound",
|
|
50
|
+
message: "Signer not found.",
|
|
51
|
+
data: {
|
|
52
|
+
identifier,
|
|
53
|
+
cycle: args.cycleNumber,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return success(totalLocked);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=get-signer-stacked-amount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-signer-stacked-amount.js","sourceRoot":"","sources":["../../src/queries/get-signer-stacked-amount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;AAErF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,KAAK,IAAI,SAAS,EAClB,OAAO,GAGR,MAAM,kBAAkB,CAAC;AAgB1B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAU;IAEV,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAErC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,KAAK,GAAG,GAAG,CAAC;IAClB,OAAO,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,CACtD,cAAc,CAAC;YACb,GAAG,IAAI;YACP,KAAK;SACN,CAAC,CACH,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;gBACf,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,oCAAoC;gBAC7C,IAAI,EAAE;oBACJ,KAAK;iBACN;aACF,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,IAAI,MAAM,CAAC,cAAc,KAAK,UAAU,CAAC,aAAa,EAAE,CAAC;oBACvD,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;oBAC5C,KAAK,GAAG,IAAI,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,CAAC,eAAe,EAAE,CAAC;oBACtD,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;oBAC5C,KAAK,GAAG,IAAI,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACtC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;YACf,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,mBAAmB;YAC5B,IAAI,EAAE;gBACJ,UAAU;gBACV,KAAK,EAAE,IAAI,CAAC,WAAW;aACxB;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import type { ApiRequestOptions } from "../stacks-api/types.js";
|
|
2
2
|
import { type Result, type SafeError } from "../utils/safe.js";
|
|
3
|
+
export type Identifier = {
|
|
4
|
+
type: "address";
|
|
5
|
+
signerAddress: string;
|
|
6
|
+
} | {
|
|
7
|
+
type: "publicKey";
|
|
8
|
+
signerPublicKey: string;
|
|
9
|
+
};
|
|
3
10
|
export type Args = {
|
|
11
|
+
identifier: Identifier;
|
|
12
|
+
} & {
|
|
4
13
|
cycleNumber: number;
|
|
5
|
-
signerAddress: string;
|
|
6
14
|
} & ApiRequestOptions;
|
|
7
15
|
/**
|
|
8
16
|
* Return the total locked amount for a signer in a PoX cycle.
|
|
@@ -6,7 +6,7 @@ import { error as safeError, success, } from "../utils/safe.js";
|
|
|
6
6
|
*/
|
|
7
7
|
export async function getSignerTotalLocked(args) {
|
|
8
8
|
let totalLocked = 0n;
|
|
9
|
-
const {
|
|
9
|
+
const { identifier, ...rest } = args;
|
|
10
10
|
let hasMore = true;
|
|
11
11
|
let offset = 0;
|
|
12
12
|
let found = false;
|
|
@@ -26,10 +26,19 @@ export async function getSignerTotalLocked(args) {
|
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
for (const signer of data.results) {
|
|
29
|
-
if (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
if (identifier.type === "address") {
|
|
30
|
+
if (signer.signer_address === identifier.signerAddress) {
|
|
31
|
+
totalLocked = BigInt(signer.stacked_amount);
|
|
32
|
+
found = true;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
if (signer.signing_key === identifier.signerPublicKey) {
|
|
38
|
+
totalLocked = BigInt(signer.stacked_amount);
|
|
39
|
+
found = true;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
33
42
|
}
|
|
34
43
|
}
|
|
35
44
|
offset += limit + data.results.length;
|
|
@@ -40,7 +49,8 @@ export async function getSignerTotalLocked(args) {
|
|
|
40
49
|
name: "SignerNotFound",
|
|
41
50
|
message: "Signer not found.",
|
|
42
51
|
data: {
|
|
43
|
-
|
|
52
|
+
identifier,
|
|
53
|
+
cycle: args.cycleNumber,
|
|
44
54
|
},
|
|
45
55
|
});
|
|
46
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-signer-total-locked.js","sourceRoot":"","sources":["../../src/queries/get-signer-total-locked.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;AAErF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,KAAK,IAAI,SAAS,EAClB,OAAO,GAGR,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-signer-total-locked.js","sourceRoot":"","sources":["../../src/queries/get-signer-total-locked.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;AAErF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,KAAK,IAAI,SAAS,EAClB,OAAO,GAGR,MAAM,kBAAkB,CAAC;AAgB1B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAU;IAEV,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAErC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,KAAK,GAAG,GAAG,CAAC;IAClB,OAAO,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,CACtD,cAAc,CAAC;YACb,GAAG,IAAI;YACP,KAAK;SACN,CAAC,CACH,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;gBACf,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,oCAAoC;gBAC7C,IAAI,EAAE;oBACJ,KAAK;iBACN;aACF,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,IAAI,MAAM,CAAC,cAAc,KAAK,UAAU,CAAC,aAAa,EAAE,CAAC;oBACvD,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;oBAC5C,KAAK,GAAG,IAAI,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,CAAC,eAAe,EAAE,CAAC;oBACtD,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;oBAC5C,KAAK,GAAG,IAAI,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACtC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;YACf,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,mBAAmB;YAC5B,IAAI,EAAE;gBACJ,UAAU;gBACV,KAAK,EAAE,IAAI,CAAC,WAAW;aACxB;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/queries/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getSignerStackedAmount } from "./get-signer-stacked-amount.js";
|
|
2
2
|
export declare const queries: {
|
|
3
|
-
|
|
3
|
+
getSignerStackedAmount: typeof getSignerStackedAmount;
|
|
4
4
|
};
|
package/dist/queries/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,sBAAsB;CACvB,CAAC"}
|