@secretkeylabs/stacks-tools 0.4.0-fdbbd5e → 0.5.0-94148cb

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 CHANGED
@@ -32,10 +32,12 @@ var src_exports = {};
32
32
  __export(src_exports, {
33
33
  callRateLimitedApi: () => callRateLimitedApi,
34
34
  error: () => error,
35
+ queries: () => queries,
35
36
  safeCall: () => safeCall,
36
37
  safeCallRateLimitedApi: () => safeCallRateLimitedApi,
37
38
  safePromise: () => safePromise,
38
39
  stacksApi: () => stacksApi,
40
+ stacksRpcApi: () => stacksRpcApi,
39
41
  success: () => success
40
42
  });
41
43
  module.exports = __toCommonJS(src_exports);
@@ -193,6 +195,12 @@ async function latestNonce(opts) {
193
195
  return success(validationResult.output);
194
196
  }
195
197
 
198
+ // src/stacks-api/accounts/index.ts
199
+ var accounts = {
200
+ balances,
201
+ latestNonce
202
+ };
203
+
196
204
  // src/stacks-api/types.ts
197
205
  var v3 = __toESM(require("valibot"), 1);
198
206
  var baseListResponseSchema = v3.object({
@@ -266,6 +274,52 @@ async function getBlock(opts) {
266
274
  return success(validationResult.output);
267
275
  }
268
276
 
277
+ // src/stacks-api/blocks/index.ts
278
+ var blocks = {
279
+ getBlock
280
+ };
281
+
282
+ // src/stacks-api/faucets/stx.ts
283
+ async function stx(opts) {
284
+ const search = new URLSearchParams();
285
+ search.append("address", opts.address);
286
+ if (opts.stacking) search.append("stacking", "true");
287
+ const init = {};
288
+ if (opts.apiKeyConfig) {
289
+ init.headers = {
290
+ [opts.apiKeyConfig.header]: opts.apiKeyConfig.key
291
+ };
292
+ }
293
+ init.method = "POST";
294
+ const endpoint = `${opts.baseUrl}/extended/v1/faucets/stx?${search}`;
295
+ const res = await fetch(endpoint, init);
296
+ if (!res.ok) {
297
+ return error({
298
+ name: "FetchStxError",
299
+ message: "Failed to fetch STX.",
300
+ data: {
301
+ status: res.status,
302
+ statusText: res.statusText,
303
+ bodyParseResult: await safePromise(res.json())
304
+ }
305
+ });
306
+ }
307
+ const [jsonError, data] = await safePromise(res.json());
308
+ if (jsonError) {
309
+ return error({
310
+ name: "ParseBodyError",
311
+ message: "Failed to parse response body as JSON.",
312
+ data: jsonError
313
+ });
314
+ }
315
+ return success(data);
316
+ }
317
+
318
+ // src/stacks-api/faucets/index.ts
319
+ var faucets = {
320
+ stx
321
+ };
322
+
269
323
  // src/stacks-api/info/core-api.ts
270
324
  var v5 = __toESM(require("valibot"), 1);
271
325
  var CoreApiResponseSchema = v5.object({
@@ -280,8 +334,9 @@ var CoreApiResponseSchema = v5.object({
280
334
  stacks_tip_height: v5.number(),
281
335
  stacks_tip: v5.string(),
282
336
  stacks_tip_consensus_hash: v5.string(),
283
- unanchored_tip: v5.string(),
284
- exit_at_block_height: v5.number()
337
+ unanchored_tip: v5.nullable(v5.string()),
338
+ unanchored_seq: v5.nullable(v5.string()),
339
+ exit_at_block_height: v5.nullable(v5.number())
285
340
  });
286
341
  async function coreApi(apiOpts) {
287
342
  const init = {};
@@ -417,6 +472,12 @@ async function poxDetails(args) {
417
472
  return success(validationResult.output);
418
473
  }
419
474
 
475
+ // src/stacks-api/info/index.ts
476
+ var info = {
477
+ coreApi,
478
+ poxDetails
479
+ };
480
+
420
481
  // src/stacks-api/proof-of-transfer/cycle.ts
421
482
  var v7 = __toESM(require("valibot"), 1);
422
483
  var responseSchema4 = v7.object({
@@ -705,100 +766,45 @@ async function stackersForSignerInCycle(opts) {
705
766
  return success(validationResult.output);
706
767
  }
707
768
 
708
- // src/stacks-api/smart-contracts/read-only.ts
709
- var v12 = __toESM(require("valibot"), 1);
710
- var readOnlyResponseSchema = v12.variant("okay", [
711
- v12.object({
712
- okay: v12.literal(true),
713
- /**
714
- * A Clarity value as a hex-encoded string.
715
- */
716
- result: v12.string()
717
- }),
718
- v12.object({
719
- okay: v12.literal(false),
720
- cause: v12.unknown()
721
- })
722
- ]);
723
- async function readOnly(args) {
724
- const headers = {
725
- "Content-Type": "application/json"
726
- };
727
- if (args.apiKeyConfig) {
728
- headers[args.apiKeyConfig.header] = args.apiKeyConfig.key;
729
- }
730
- const init = {
731
- method: "POST",
732
- body: JSON.stringify({
733
- sender: args.sender,
734
- arguments: args.arguments
735
- }),
736
- headers
737
- };
738
- const endpoint = `${args.baseUrl}/v2/contracts/call-read/${args.contractAddress}/${args.contractName}/${args.functionName}`;
739
- const res = await fetch(endpoint, init);
740
- if (!res.ok) {
741
- return error({
742
- name: "FetchReadOnlyError",
743
- message: "Failed to fetch.",
744
- data: {
745
- status: res.status,
746
- statusText: res.statusText,
747
- bodyParseResult: await safePromise(res.json())
748
- }
749
- });
750
- }
751
- const [jsonError, data] = await safePromise(res.json());
752
- if (jsonError) {
753
- return error({
754
- name: "ParseBodyError",
755
- message: "Failed to parse response body as JSON.",
756
- data: error
757
- });
758
- }
759
- const validationResult = v12.safeParse(readOnlyResponseSchema, data);
760
- if (!validationResult.success) {
761
- return error({
762
- name: "ValidateDataError",
763
- message: "Failed to validate data.",
764
- data: validationResult
765
- });
766
- }
767
- return success(validationResult.output);
768
- }
769
+ // src/stacks-api/proof-of-transfer/index.ts
770
+ var proofOfTransfer = {
771
+ cycle,
772
+ cycles,
773
+ signerInCycle,
774
+ signersInCycle,
775
+ stackersForSignerInCycle
776
+ };
769
777
 
770
778
  // src/stacks-api/stacking-pool/members.ts
771
- var v13 = __toESM(require("valibot"), 1);
772
- var memberSchema = v13.object({
773
- stacker: v13.string(),
774
- pox_addr: v13.optional(v13.string()),
775
- amount_ustx: v13.string(),
776
- burn_block_unlock_height: v13.optional(v13.number()),
777
- block_height: v13.number(),
778
- tx_id: v13.string()
779
+ var v12 = __toESM(require("valibot"), 1);
780
+ var memberSchema = v12.object({
781
+ stacker: v12.string(),
782
+ pox_addr: v12.optional(v12.string()),
783
+ amount_ustx: v12.string(),
784
+ burn_block_unlock_height: v12.optional(v12.number()),
785
+ block_height: v12.number(),
786
+ tx_id: v12.string()
779
787
  });
780
- var membersResponseSchema = v13.object({
781
- limit: v13.number(),
782
- offset: v13.number(),
783
- total: v13.number(),
784
- results: v13.array(memberSchema)
788
+ var membersResponseSchema = v12.object({
789
+ limit: v12.number(),
790
+ offset: v12.number(),
791
+ total: v12.number(),
792
+ results: v12.array(memberSchema)
785
793
  });
786
- async function members(opts, apiOpts) {
794
+ async function members(args) {
787
795
  const search = new URLSearchParams();
788
- if (opts.afterBlock) search.append("after_block", opts.afterBlock.toString());
789
- if (opts.unanchored) search.append("unanchored", "true");
790
- if (opts.limit) search.append("limit", opts.limit.toString());
791
- if (opts.offset) search.append("offset", opts.offset.toString());
796
+ if (args.afterBlock) search.append("after_block", args.afterBlock.toString());
797
+ if (args.unanchored) search.append("unanchored", "true");
798
+ if (args.limit) search.append("limit", args.limit.toString());
799
+ if (args.offset) search.append("offset", args.offset.toString());
792
800
  const init = {};
793
- if (apiOpts.apiKeyConfig) {
801
+ if (args.apiKeyConfig) {
794
802
  init.headers = {
795
- [apiOpts.apiKeyConfig.header]: apiOpts.apiKeyConfig.key
803
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
796
804
  };
797
805
  }
798
- const res = await fetch(
799
- `${apiOpts.baseUrl}/extended/beta/stacking/${opts.poolPrincipal}/delegations?${search}`,
800
- init
801
- );
806
+ const endpoint = `${args.baseUrl}/extended/v1/pox4/${args.poolPrincipal}/delegations?${search}`;
807
+ const res = await fetch(endpoint, init);
802
808
  if (!res.ok) {
803
809
  return error({
804
810
  name: "FetchMembersError",
@@ -818,7 +824,7 @@ async function members(opts, apiOpts) {
818
824
  data: jsonParseError
819
825
  });
820
826
  }
821
- const validationResult = v13.safeParse(membersResponseSchema, data);
827
+ const validationResult = v12.safeParse(membersResponseSchema, data);
822
828
  if (!validationResult.success) {
823
829
  return error({
824
830
  name: "ValidateDataError",
@@ -829,121 +835,126 @@ async function members(opts, apiOpts) {
829
835
  return success(validationResult.output);
830
836
  }
831
837
 
838
+ // src/stacks-api/stacking-pool/index.ts
839
+ var stackingPool = {
840
+ members
841
+ };
842
+
832
843
  // src/stacks-api/transactions/schemas.ts
833
- var v14 = __toESM(require("valibot"), 1);
834
- var baseTransactionSchema = v14.object({
835
- tx_id: v14.string(),
836
- nonce: v14.number(),
837
- fee_rate: v14.string(),
838
- sender_address: v14.string(),
839
- sponsored: v14.boolean(),
840
- post_condition_mode: v14.string(),
841
- post_conditions: v14.array(v14.unknown()),
842
- anchor_mode: v14.string(),
843
- is_unanchored: v14.boolean(),
844
- block_hash: v14.string(),
845
- parent_block_hash: v14.string(),
846
- block_height: v14.number(),
847
- block_time: v14.number(),
848
- block_time_iso: v14.string(),
849
- burn_block_height: v14.number(),
850
- burn_block_time: v14.number(),
851
- burn_block_time_iso: v14.string(),
852
- parent_burn_block_time: v14.number(),
853
- parent_burn_block_time_iso: v14.string(),
854
- canonical: v14.boolean(),
855
- tx_index: v14.number(),
856
- tx_status: v14.union([
857
- v14.literal("success"),
858
- v14.literal("abort_by_response"),
859
- v14.literal("abort_by_post_condition")
844
+ var v13 = __toESM(require("valibot"), 1);
845
+ var baseTransactionSchema = v13.object({
846
+ tx_id: v13.string(),
847
+ nonce: v13.number(),
848
+ fee_rate: v13.string(),
849
+ sender_address: v13.string(),
850
+ sponsored: v13.boolean(),
851
+ post_condition_mode: v13.string(),
852
+ post_conditions: v13.array(v13.unknown()),
853
+ anchor_mode: v13.string(),
854
+ is_unanchored: v13.boolean(),
855
+ block_hash: v13.string(),
856
+ parent_block_hash: v13.string(),
857
+ block_height: v13.number(),
858
+ block_time: v13.number(),
859
+ block_time_iso: v13.string(),
860
+ burn_block_height: v13.number(),
861
+ burn_block_time: v13.number(),
862
+ burn_block_time_iso: v13.string(),
863
+ parent_burn_block_time: v13.number(),
864
+ parent_burn_block_time_iso: v13.string(),
865
+ canonical: v13.boolean(),
866
+ tx_index: v13.number(),
867
+ tx_status: v13.union([
868
+ v13.literal("success"),
869
+ v13.literal("abort_by_response"),
870
+ v13.literal("abort_by_post_condition")
860
871
  ]),
861
- tx_result: v14.object({
862
- hex: v14.string(),
863
- repr: v14.string()
872
+ tx_result: v13.object({
873
+ hex: v13.string(),
874
+ repr: v13.string()
864
875
  }),
865
- microblock_hash: v14.string(),
866
- microblock_sequence: v14.number(),
867
- microblock_canonical: v14.boolean(),
868
- event_count: v14.number(),
869
- events: v14.array(v14.unknown()),
870
- execution_cost_read_count: v14.number(),
871
- execution_cost_read_length: v14.number(),
872
- execution_cost_runtime: v14.number(),
873
- execution_cost_write_count: v14.number(),
874
- execution_cost_write_length: v14.number()
876
+ microblock_hash: v13.string(),
877
+ microblock_sequence: v13.number(),
878
+ microblock_canonical: v13.boolean(),
879
+ event_count: v13.number(),
880
+ events: v13.array(v13.unknown()),
881
+ execution_cost_read_count: v13.number(),
882
+ execution_cost_read_length: v13.number(),
883
+ execution_cost_runtime: v13.number(),
884
+ execution_cost_write_count: v13.number(),
885
+ execution_cost_write_length: v13.number()
875
886
  });
876
- var contractCallTransactionSchema = v14.object({
877
- tx_type: v14.literal("contract_call"),
878
- contract_call: v14.object({
879
- contract_id: v14.string(),
880
- function_name: v14.string(),
881
- function_signature: v14.string(),
882
- function_args: v14.array(
883
- v14.object({
884
- hex: v14.string(),
885
- repr: v14.string(),
886
- name: v14.string(),
887
- type: v14.string()
887
+ var contractCallTransactionSchema = v13.object({
888
+ tx_type: v13.literal("contract_call"),
889
+ contract_call: v13.object({
890
+ contract_id: v13.string(),
891
+ function_name: v13.string(),
892
+ function_signature: v13.string(),
893
+ function_args: v13.array(
894
+ v13.object({
895
+ hex: v13.string(),
896
+ repr: v13.string(),
897
+ name: v13.string(),
898
+ type: v13.string()
888
899
  })
889
900
  )
890
901
  }),
891
902
  ...baseTransactionSchema.entries
892
903
  });
893
- var smartContractTransactionSchema = v14.object({
894
- tx_type: v14.literal("smart_contract"),
895
- smart_contract: v14.object({
904
+ var smartContractTransactionSchema = v13.object({
905
+ tx_type: v13.literal("smart_contract"),
906
+ smart_contract: v13.object({
896
907
  /**
897
908
  * NOTE: The types may be wrong, not sure what type of value is used when
898
909
  * the version is not `null`.
899
910
  */
900
- clarity_version: v14.union([v14.null(), v14.number()]),
901
- contract_id: v14.string(),
902
- source_code: v14.string()
911
+ clarity_version: v13.union([v13.null(), v13.number()]),
912
+ contract_id: v13.string(),
913
+ source_code: v13.string()
903
914
  }),
904
915
  ...baseTransactionSchema.entries
905
916
  });
906
- var tokenTransferSchema = v14.object({
907
- tx_type: v14.literal("token_transfer"),
908
- token_transfer: v14.object({
909
- recipient_address: v14.string(),
910
- amount: v14.string(),
911
- memo: v14.string()
917
+ var tokenTransferSchema = v13.object({
918
+ tx_type: v13.literal("token_transfer"),
919
+ token_transfer: v13.object({
920
+ recipient_address: v13.string(),
921
+ amount: v13.string(),
922
+ memo: v13.string()
912
923
  }),
913
924
  ...baseTransactionSchema.entries
914
925
  });
915
- var transactionSchema = v14.variant("tx_type", [
926
+ var transactionSchema = v13.variant("tx_type", [
916
927
  contractCallTransactionSchema,
917
928
  smartContractTransactionSchema,
918
929
  tokenTransferSchema
919
930
  ]);
920
931
 
921
932
  // src/stacks-api/transactions/address-transactions.ts
922
- var v15 = __toESM(require("valibot"), 1);
923
- var resultSchema = v15.object({
933
+ var v14 = __toESM(require("valibot"), 1);
934
+ var resultSchema = v14.object({
924
935
  tx: transactionSchema,
925
- stx_sent: v15.string(),
926
- stx_received: v15.string(),
927
- events: v15.object({
928
- stx: v15.object({
929
- transfer: v15.number(),
930
- mint: v15.number(),
931
- burn: v15.number()
936
+ stx_sent: v14.string(),
937
+ stx_received: v14.string(),
938
+ events: v14.object({
939
+ stx: v14.object({
940
+ transfer: v14.number(),
941
+ mint: v14.number(),
942
+ burn: v14.number()
932
943
  }),
933
- ft: v15.object({
934
- transfer: v15.number(),
935
- mint: v15.number(),
936
- burn: v15.number()
944
+ ft: v14.object({
945
+ transfer: v14.number(),
946
+ mint: v14.number(),
947
+ burn: v14.number()
937
948
  }),
938
- nft: v15.object({
939
- transfer: v15.number(),
940
- mint: v15.number(),
941
- burn: v15.number()
949
+ nft: v14.object({
950
+ transfer: v14.number(),
951
+ mint: v14.number(),
952
+ burn: v14.number()
942
953
  })
943
954
  })
944
955
  });
945
- var resultsSchema4 = v15.array(resultSchema);
946
- var addressTransactionsResponseSchema = v15.object({
956
+ var resultsSchema4 = v14.array(resultSchema);
957
+ var addressTransactionsResponseSchema = v14.object({
947
958
  ...baseListResponseSchema.entries,
948
959
  results: resultsSchema4
949
960
  });
@@ -980,7 +991,7 @@ async function addressTransactions(args) {
980
991
  data: jsonParseError
981
992
  });
982
993
  }
983
- const validationResult = v15.safeParse(addressTransactionsResponseSchema, data);
994
+ const validationResult = v14.safeParse(addressTransactionsResponseSchema, data);
984
995
  if (!validationResult.success) {
985
996
  return error({
986
997
  name: "ValidateDataError",
@@ -992,7 +1003,7 @@ async function addressTransactions(args) {
992
1003
  }
993
1004
 
994
1005
  // src/stacks-api/transactions/get-transaction.ts
995
- var v16 = __toESM(require("valibot"), 1);
1006
+ var v15 = __toESM(require("valibot"), 1);
996
1007
  async function getTransaction(args) {
997
1008
  const init = {};
998
1009
  if (args.apiKeyConfig) {
@@ -1021,7 +1032,7 @@ async function getTransaction(args) {
1021
1032
  error: jsonParseError
1022
1033
  });
1023
1034
  }
1024
- const validationResult = v16.safeParse(transactionSchema, data);
1035
+ const validationResult = v15.safeParse(transactionSchema, data);
1025
1036
  if (!validationResult.success) {
1026
1037
  return error({
1027
1038
  name: "ValidateDataError",
@@ -1032,20 +1043,156 @@ async function getTransaction(args) {
1032
1043
  return success(validationResult.output);
1033
1044
  }
1034
1045
 
1046
+ // src/stacks-api/transactions/index.ts
1047
+ var transactions = {
1048
+ addressTransactions,
1049
+ getTransaction
1050
+ };
1051
+
1035
1052
  // src/stacks-api/index.ts
1036
- var accounts = { balances, latestNonce };
1037
- var blocks = { getBlock };
1038
- var info = { coreApi, poxDetails };
1039
- var proofOfTransfer = {
1040
- cycle,
1041
- cycles,
1042
- signerInCycle,
1043
- signersInCycle,
1044
- stackersForSignerInCycle
1053
+ var stacksApi = {
1054
+ accounts,
1055
+ blocks,
1056
+ faucets,
1057
+ info,
1058
+ proofOfTransfer,
1059
+ stackingPool,
1060
+ transactions
1061
+ };
1062
+
1063
+ // src/stacks-rpc-api/smart-contracts/map-entry.ts
1064
+ var v16 = __toESM(require("valibot"), 1);
1065
+ var mapEntryResponseSchema = v16.object({
1066
+ /**
1067
+ * Hex-encoded string of clarity value. It is always an optional tuple.
1068
+ */
1069
+ data: v16.string(),
1070
+ /**
1071
+ * Hex-encoded string of the MARF proof for the data
1072
+ */
1073
+ proof: v16.optional(v16.string())
1074
+ });
1075
+ async function mapEntry(args) {
1076
+ const search = new URLSearchParams();
1077
+ if (args.proof === 0) search.append("proof", "0");
1078
+ if (args.tip) search.append("tip", args.tip);
1079
+ const init = {};
1080
+ if (args.apiKeyConfig) {
1081
+ init.headers = {
1082
+ [args.apiKeyConfig.header]: args.apiKeyConfig.key
1083
+ };
1084
+ }
1085
+ init.method = "POST";
1086
+ init.body = JSON.stringify(
1087
+ args.mapKey.startsWith("0x") ? args.mapKey : `0x${args.mapKey}`
1088
+ );
1089
+ init.headers = { ...init.headers, "Content-Type": "application/json" };
1090
+ const endpoint = `${args.baseUrl}/v2/map_entry/${args.contractAddress}/${args.contractName}/${args.mapName}?${search}`;
1091
+ const res = await fetch(endpoint, init);
1092
+ if (!res.ok) {
1093
+ return error({
1094
+ name: "FetchMapEntryError",
1095
+ message: "Failed to fetch map entry.",
1096
+ data: {
1097
+ init,
1098
+ status: res.status,
1099
+ statusText: res.statusText,
1100
+ endpoint,
1101
+ bodyParseResult: await safePromise(res.text())
1102
+ }
1103
+ });
1104
+ }
1105
+ const [jsonError, data] = await safePromise(res.json());
1106
+ if (jsonError) {
1107
+ return error({
1108
+ name: "ParseBodyError",
1109
+ message: "Failed to parse response body as JSON.",
1110
+ data: jsonError
1111
+ });
1112
+ }
1113
+ const validationResult = v16.safeParse(mapEntryResponseSchema, data);
1114
+ if (!validationResult.success) {
1115
+ return error({
1116
+ name: "ValidateDataError",
1117
+ message: "Failed to validate response data.",
1118
+ data: validationResult
1119
+ });
1120
+ }
1121
+ return success(validationResult.output);
1122
+ }
1123
+
1124
+ // src/stacks-rpc-api/smart-contracts/read-only.ts
1125
+ var v17 = __toESM(require("valibot"), 1);
1126
+ var readOnlyResponseSchema = v17.variant("okay", [
1127
+ v17.object({
1128
+ okay: v17.literal(true),
1129
+ /**
1130
+ * A Clarity value as a hex-encoded string.
1131
+ */
1132
+ result: v17.string()
1133
+ }),
1134
+ v17.object({
1135
+ okay: v17.literal(false),
1136
+ cause: v17.unknown()
1137
+ })
1138
+ ]);
1139
+ async function readOnly(args) {
1140
+ const headers = {
1141
+ "Content-Type": "application/json"
1142
+ };
1143
+ if (args.apiKeyConfig) {
1144
+ headers[args.apiKeyConfig.header] = args.apiKeyConfig.key;
1145
+ }
1146
+ const init = {
1147
+ method: "POST",
1148
+ body: JSON.stringify({
1149
+ sender: args.sender,
1150
+ arguments: args.arguments
1151
+ }),
1152
+ headers
1153
+ };
1154
+ const endpoint = `${args.baseUrl}/v2/contracts/call-read/${args.contractAddress}/${args.contractName}/${args.functionName}`;
1155
+ const res = await fetch(endpoint, init);
1156
+ if (!res.ok) {
1157
+ return error({
1158
+ name: "FetchReadOnlyError",
1159
+ message: "Failed to fetch.",
1160
+ data: {
1161
+ status: res.status,
1162
+ statusText: res.statusText,
1163
+ bodyParseResult: await safePromise(res.json())
1164
+ }
1165
+ });
1166
+ }
1167
+ const [jsonError, data] = await safePromise(res.json());
1168
+ if (jsonError) {
1169
+ return error({
1170
+ name: "ParseBodyError",
1171
+ message: "Failed to parse response body as JSON.",
1172
+ data: error
1173
+ });
1174
+ }
1175
+ const validationResult = v17.safeParse(readOnlyResponseSchema, data);
1176
+ if (!validationResult.success) {
1177
+ return error({
1178
+ name: "ValidateDataError",
1179
+ message: "Failed to validate data.",
1180
+ data: validationResult
1181
+ });
1182
+ }
1183
+ return success(validationResult.output);
1184
+ }
1185
+
1186
+ // src/stacks-rpc-api/smart-contracts/index.ts
1187
+ var smartContracts = {
1188
+ mapEntry,
1189
+ readOnly
1190
+ };
1191
+
1192
+ // src/stacks-rpc-api/index.ts
1193
+ var stacksRpcApi = {
1194
+ smartContracts
1045
1195
  };
1046
- var smartContracts = { readOnly };
1047
- var stackingPool = { members };
1048
- var transactions = { addressTransactions, getTransaction };
1049
1196
 
1050
1197
  // src/utils/call-rate-limited-api.ts
1051
1198
  var import_exponential_backoff = require("exponential-backoff");
@@ -1083,23 +1230,74 @@ async function safeCallRateLimitedApi(fn, options) {
1083
1230
  }
1084
1231
  }
1085
1232
 
1086
- // src/index.ts
1087
- var stacksApi = {
1088
- accounts,
1089
- blocks,
1090
- info,
1091
- proofOfTransfer,
1092
- smartContracts,
1093
- stackingPool,
1094
- transactions
1233
+ // src/queries/get-signer-stacked-amount.ts
1234
+ async function getSignerStackedAmount(args) {
1235
+ let totalLocked = 0n;
1236
+ const { identifier, ...rest } = args;
1237
+ let hasMore = true;
1238
+ let offset = 0;
1239
+ let found = false;
1240
+ const limit = 200;
1241
+ while (hasMore && !found) {
1242
+ const [error2, data] = await safeCallRateLimitedApi(
1243
+ () => signersInCycle({
1244
+ ...rest,
1245
+ limit
1246
+ })
1247
+ );
1248
+ if (error2) {
1249
+ return error({
1250
+ name: "GetSignerTotalLockedError",
1251
+ message: "Failed to get signer total locked.",
1252
+ data: {
1253
+ error: error2
1254
+ }
1255
+ });
1256
+ }
1257
+ for (const signer of data.results) {
1258
+ if (identifier.type === "address") {
1259
+ if (signer.signer_address === identifier.signerAddress) {
1260
+ totalLocked = BigInt(signer.stacked_amount);
1261
+ found = true;
1262
+ break;
1263
+ }
1264
+ } else {
1265
+ if (signer.signing_key === identifier.signerPublicKey) {
1266
+ totalLocked = BigInt(signer.stacked_amount);
1267
+ found = true;
1268
+ break;
1269
+ }
1270
+ }
1271
+ }
1272
+ offset += data.results.length;
1273
+ hasMore = offset < data.total;
1274
+ }
1275
+ if (!found) {
1276
+ return error({
1277
+ name: "SignerNotFound",
1278
+ message: "Signer not found.",
1279
+ data: {
1280
+ identifier,
1281
+ cycle: args.cycleNumber
1282
+ }
1283
+ });
1284
+ }
1285
+ return success(totalLocked);
1286
+ }
1287
+
1288
+ // src/queries/index.ts
1289
+ var queries = {
1290
+ getSignerStackedAmount
1095
1291
  };
1096
1292
  // Annotate the CommonJS export names for ESM import in node:
1097
1293
  0 && (module.exports = {
1098
1294
  callRateLimitedApi,
1099
1295
  error,
1296
+ queries,
1100
1297
  safeCall,
1101
1298
  safeCallRateLimitedApi,
1102
1299
  safePromise,
1103
1300
  stacksApi,
1301
+ stacksRpcApi,
1104
1302
  success
1105
1303
  });