@secretkeylabs/stacks-tools 0.2.0-b1b31e3 → 0.3.0-9b21b7a

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.
@@ -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,4 +1,4 @@
1
- import { getSignerTotalLocked } from "./get-signer-total-locked.js";
1
+ import { getSignerStackedAmount } from "./get-signer-stacked-amount.js";
2
2
  export declare const queries: {
3
- getSignerTotalLocked: typeof getSignerTotalLocked;
3
+ getSignerStackedAmount: typeof getSignerStackedAmount;
4
4
  };
@@ -1,5 +1,5 @@
1
- import { getSignerTotalLocked } from "./get-signer-total-locked.js";
1
+ import { getSignerStackedAmount } from "./get-signer-stacked-amount.js";
2
2
  export const queries = {
3
- getSignerTotalLocked,
3
+ getSignerStackedAmount,
4
4
  };
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,oBAAoB;CACrB,CAAC"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@secretkeylabs/stacks-tools",
3
- "version": "0.2.0-b1b31e3",
3
+ "version": "0.3.0-9b21b7a",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"