@secondlayer/stacks 2.5.2 → 2.7.0

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.
Files changed (56) hide show
  1. package/README.md +65 -0
  2. package/dist/shared/{stacks-jevhg39n.cjs → stacks-7nf5h3qe.cjs} +16 -12
  3. package/dist/shared/{stacks-jevhg39n.cjs.map → stacks-7nf5h3qe.cjs.map} +4 -4
  4. package/dist/shared/{stacks-5th5dffx.js → stacks-a48qj7ss.js} +20 -16
  5. package/dist/shared/{stacks-5th5dffx.js.map → stacks-a48qj7ss.js.map} +4 -4
  6. package/dist/shared/{stacks-7wfdkhj6.cjs → stacks-e7pmsrbs.cjs} +9 -7
  7. package/dist/shared/{stacks-7wfdkhj6.cjs.map → stacks-e7pmsrbs.cjs.map} +3 -3
  8. package/dist/shared/{stacks-7wqprfrm.cjs → stacks-hxm7r5ay.cjs} +3 -3
  9. package/dist/shared/{stacks-7wqprfrm.cjs.map → stacks-hxm7r5ay.cjs.map} +3 -3
  10. package/dist/shared/{stacks-hyz7zgdk.js → stacks-k96f5g1a.js} +2 -2
  11. package/dist/shared/stacks-r3mqgw2d.js +204 -0
  12. package/dist/shared/stacks-r3mqgw2d.js.map +15 -0
  13. package/dist/shared/{stacks-4z1jhw6y.js → stacks-s6v8k4j5.js} +6 -6
  14. package/dist/shared/{stacks-4z1jhw6y.js.map → stacks-s6v8k4j5.js.map} +3 -3
  15. package/dist/shared/{stacks-yq5a5cda.js → stacks-txh6dadn.js} +12 -10
  16. package/dist/shared/{stacks-yq5a5cda.js.map → stacks-txh6dadn.js.map} +3 -3
  17. package/dist/shared/stacks-wb06pevp.cjs +190 -0
  18. package/dist/shared/stacks-wb06pevp.cjs.map +15 -0
  19. package/dist/src/actions/index.d.cts +138 -120
  20. package/dist/src/actions/index.d.ts +138 -120
  21. package/dist/src/actions/index.js +5 -5
  22. package/dist/src/bns/index.d.cts +18 -0
  23. package/dist/src/bns/index.d.ts +18 -0
  24. package/dist/src/bns/index.js +3 -3
  25. package/dist/src/index.cjs +180 -5
  26. package/dist/src/index.cjs.map +7 -5
  27. package/dist/src/index.d.cts +377 -101
  28. package/dist/src/index.d.ts +377 -101
  29. package/dist/src/index.js +193 -10
  30. package/dist/src/index.js.map +7 -5
  31. package/dist/src/pox/index.d.cts +18 -0
  32. package/dist/src/pox/index.d.ts +18 -0
  33. package/dist/src/pox/index.js +3 -3
  34. package/dist/src/sbtc/index.d.cts +18 -0
  35. package/dist/src/sbtc/index.d.ts +18 -0
  36. package/dist/src/sbtc/index.js +3 -3
  37. package/dist/src/stackingdao/index.d.cts +18 -0
  38. package/dist/src/stackingdao/index.d.ts +18 -0
  39. package/dist/src/stackingdao/index.js +3 -3
  40. package/dist/src/subscriptions/index.d.cts +18 -0
  41. package/dist/src/subscriptions/index.d.ts +18 -0
  42. package/dist/src/tools/index.cjs +44 -14
  43. package/dist/src/tools/index.cjs.map +7 -6
  44. package/dist/src/tools/index.d.cts +18 -0
  45. package/dist/src/tools/index.d.ts +18 -0
  46. package/dist/src/tools/index.js +44 -14
  47. package/dist/src/tools/index.js.map +7 -6
  48. package/dist/src/x402/index.d.cts +18 -0
  49. package/dist/src/x402/index.d.ts +18 -0
  50. package/dist/src/x402/index.js +2 -2
  51. package/package.json +1 -1
  52. package/dist/shared/stacks-qk8pdyjy.cjs +0 -76
  53. package/dist/shared/stacks-qk8pdyjy.cjs.map +0 -14
  54. package/dist/shared/stacks-y8e3gx6w.js +0 -90
  55. package/dist/shared/stacks-y8e3gx6w.js.map +0 -14
  56. /package/dist/shared/{stacks-hyz7zgdk.js.map → stacks-k96f5g1a.js.map} +0 -0
package/dist/src/index.js CHANGED
@@ -22,12 +22,12 @@ import {
22
22
  simulateCall,
23
23
  simulateTransaction,
24
24
  transferStx
25
- } from "../shared/stacks-5th5dffx.js";
25
+ } from "../shared/stacks-a48qj7ss.js";
26
26
  import {
27
27
  callContract,
28
28
  getMapEntry,
29
29
  readContract
30
- } from "../shared/stacks-yq5a5cda.js";
30
+ } from "../shared/stacks-txh6dadn.js";
31
31
  import {
32
32
  WebSocketError,
33
33
  watchAddress,
@@ -39,16 +39,24 @@ import {
39
39
  } from "../shared/stacks-tjjnkt3r.js";
40
40
  import {
41
41
  sponsorTransaction
42
- } from "../shared/stacks-4z1jhw6y.js";
42
+ } from "../shared/stacks-s6v8k4j5.js";
43
43
  import {
44
44
  BroadcastError,
45
45
  SerializationError,
46
46
  SigningError,
47
47
  TransactionError,
48
+ broadcastWithNonceReset,
49
+ createNonceManager,
48
50
  estimateFee,
49
51
  getNonce,
50
- sendTransaction
51
- } from "../shared/stacks-y8e3gx6w.js";
52
+ isNonceConflictError,
53
+ jsonRpcSource,
54
+ memoryStore,
55
+ reconcileNonce,
56
+ resolveNonce,
57
+ sendTransaction,
58
+ startNonceReconciler
59
+ } from "../shared/stacks-r3mqgw2d.js";
52
60
  import {
53
61
  BaseError
54
62
  } from "../shared/stacks-709tra19.js";
@@ -89,6 +97,7 @@ var BASE_KEYS = new Set([
89
97
  "account",
90
98
  "transport",
91
99
  "request",
100
+ "nonceManager",
92
101
  "extend"
93
102
  ]);
94
103
  function bindExtend(base) {
@@ -111,6 +120,7 @@ function createClient(config) {
111
120
  account: config.account,
112
121
  transport,
113
122
  request: transport.request,
123
+ nonceManager: config.nonceManager,
114
124
  extend: null
115
125
  };
116
126
  client.extend = bindExtend(client);
@@ -167,15 +177,17 @@ function multisigActions(client) {
167
177
  if (!msConfig)
168
178
  throw new Error("multisigActions requires a multi-sig client");
169
179
  const { signers, requiredSignatures, hashMode } = msConfig;
170
- async function resolveNonce(nonce) {
180
+ async function resolveNonce2(nonce) {
171
181
  if (nonce !== undefined)
172
182
  return nonce;
173
183
  const address = makeMultiSigAddress(signers, requiredSignatures, client.chain);
184
+ if (client.nonceManager)
185
+ return client.nonceManager.consume({ client, address });
174
186
  return getNonce(client, { address });
175
187
  }
176
188
  return {
177
189
  async transferStx(params) {
178
- const nonce = await resolveNonce(params.nonce);
190
+ const nonce = await resolveNonce2(params.nonce);
179
191
  const unsigned = buildTokenTransfer({
180
192
  recipient: params.to,
181
193
  amount: params.amount,
@@ -200,7 +212,7 @@ function multisigActions(client) {
200
212
  },
201
213
  async callContract(params) {
202
214
  const [contractAddress, contractName] = parseContractId(params.contract);
203
- const nonce = await resolveNonce(params.nonce);
215
+ const nonce = await resolveNonce2(params.nonce);
204
216
  const unsigned = buildContractCall({
205
217
  contractAddress,
206
218
  contractName,
@@ -225,7 +237,7 @@ function multisigActions(client) {
225
237
  return unsigned;
226
238
  },
227
239
  async deployContract(params) {
228
- const nonce = await resolveNonce(params.nonce);
240
+ const nonce = await resolveNonce2(params.nonce);
229
241
  const unsigned = buildContractDeploy({
230
242
  contractName: params.contractName,
231
243
  codeBody: params.codeBody,
@@ -268,6 +280,163 @@ function createMultiSigClient(config) {
268
280
  };
269
281
  return client.extend(multisigActions);
270
282
  }
283
+ // src/actions/wallet/nonceStores.ts
284
+ var TAKE_IF_PRESENT = `local v = redis.call('GET', KEYS[1])
285
+ if v == false then return false end
286
+ redis.call('INCR', KEYS[1])
287
+ return v`;
288
+ var SEED_OR_TAKE = `local v = redis.call('GET', KEYS[1])
289
+ if v == false then redis.call('SET', KEYS[1], ARGV[1]); v = ARGV[1] end
290
+ redis.call('INCR', KEYS[1])
291
+ return v`;
292
+ function redisStore(params) {
293
+ const { redis } = params;
294
+ const prefix = params.prefix ?? "stacks:nonce:";
295
+ return {
296
+ async reserve(key, getFloor) {
297
+ const k = prefix + key;
298
+ const present = await redis.send("EVAL", [TAKE_IF_PRESENT, "1", k]);
299
+ if (present != null)
300
+ return BigInt(present);
301
+ const floor = await getFloor();
302
+ const seeded = await redis.send("EVAL", [
303
+ SEED_OR_TAKE,
304
+ "1",
305
+ k,
306
+ floor.toString()
307
+ ]);
308
+ return BigInt(seeded);
309
+ },
310
+ async reset(key) {
311
+ await redis.send("DEL", [prefix + key]);
312
+ },
313
+ async peek(key) {
314
+ const v = await redis.send("GET", [prefix + key]);
315
+ return v == null ? undefined : BigInt(v);
316
+ }
317
+ };
318
+ }
319
+ function postgresStore(params) {
320
+ const { sql } = params;
321
+ const shouldEnsure = params.ensureTable ?? true;
322
+ let ensured = false;
323
+ async function ensureTable() {
324
+ if (!shouldEnsure || ensured)
325
+ return;
326
+ await sql`CREATE TABLE IF NOT EXISTS stacks_nonce_state (key text PRIMARY KEY, next numeric NOT NULL)`;
327
+ ensured = true;
328
+ }
329
+ return {
330
+ async reserve(key, getFloor) {
331
+ await ensureTable();
332
+ const updated = await sql`UPDATE stacks_nonce_state SET next = next + 1 WHERE key = ${key} RETURNING next - 1 AS nonce`;
333
+ const warm = updated[0];
334
+ if (warm)
335
+ return BigInt(String(warm.nonce));
336
+ const floor = await getFloor();
337
+ const seeded = await sql`INSERT INTO stacks_nonce_state (key, next) VALUES (${key}, ${(floor + 1n).toString()}) ON CONFLICT (key) DO UPDATE SET next = stacks_nonce_state.next + 1 RETURNING next - 1 AS nonce`;
338
+ const cold = seeded[0];
339
+ if (!cold)
340
+ throw new Error("postgresStore: insert returned no row");
341
+ return BigInt(String(cold.nonce));
342
+ },
343
+ async reset(key) {
344
+ await ensureTable();
345
+ await sql`DELETE FROM stacks_nonce_state WHERE key = ${key}`;
346
+ },
347
+ async peek(key) {
348
+ await ensureTable();
349
+ const rows = await sql`SELECT next FROM stacks_nonce_state WHERE key = ${key}`;
350
+ const row = rows[0];
351
+ return row ? BigInt(String(row.next)) : undefined;
352
+ }
353
+ };
354
+ }
355
+ // src/actions/wallet/nonceSources.ts
356
+ function resolveFetch(fetchImpl) {
357
+ const f = fetchImpl ?? globalThis.fetch;
358
+ if (!f)
359
+ throw new Error("No fetch implementation available; pass `fetchImpl`");
360
+ return f;
361
+ }
362
+ function nextFreeNonce(confirmed, pending) {
363
+ const taken = new Set(pending.filter((n2) => n2 >= confirmed).map((n2) => n2.toString()));
364
+ let n = confirmed;
365
+ while (taken.has(n.toString()))
366
+ n += 1n;
367
+ return n;
368
+ }
369
+ function mempoolAwareSource(params) {
370
+ const getConfirmed = params.getConfirmed ?? (({ client, address }) => getNonce(client, { address }));
371
+ return {
372
+ async get({ client, address }) {
373
+ const confirmed = await getConfirmed({ client, address });
374
+ let pending = [];
375
+ try {
376
+ pending = await params.getPending({ client, address });
377
+ } catch {
378
+ return confirmed;
379
+ }
380
+ return nextFreeNonce(confirmed, pending);
381
+ }
382
+ };
383
+ }
384
+ function indexSource(params = {}) {
385
+ const baseUrl = (params.baseUrl ?? "https://api.secondlayer.tools").replace(/\/$/, "");
386
+ const fetchImpl = resolveFetch(params.fetchImpl);
387
+ const maxPages = params.maxPages ?? 10;
388
+ return mempoolAwareSource({
389
+ getConfirmed: params.getConfirmed,
390
+ async getPending({ address }) {
391
+ const out = [];
392
+ let cursor;
393
+ let pages = 0;
394
+ do {
395
+ const url = new URL(`${baseUrl}/v1/index/mempool`);
396
+ url.searchParams.set("sender", address);
397
+ url.searchParams.set("limit", "200");
398
+ if (cursor)
399
+ url.searchParams.set("from_cursor", cursor);
400
+ const res = await fetchImpl(url, {
401
+ headers: params.apiKey ? { authorization: `Bearer ${params.apiKey}` } : undefined
402
+ });
403
+ if (!res.ok) {
404
+ throw new Error(`indexSource: /v1/index/mempool ${res.status}`);
405
+ }
406
+ const data = await res.json();
407
+ for (const tx of data.mempool ?? []) {
408
+ if (tx.nonce != null)
409
+ out.push(BigInt(tx.nonce));
410
+ }
411
+ cursor = data.next_cursor ?? undefined;
412
+ pages += 1;
413
+ } while (cursor && pages < maxPages);
414
+ if (cursor) {
415
+ console.warn(`indexSource: stopped paging mempool for ${address} after ${maxPages} pages; pending set may be incomplete`);
416
+ }
417
+ return out;
418
+ }
419
+ });
420
+ }
421
+ function hiroNonceSource(params) {
422
+ const baseUrl = params.baseUrl.replace(/\/$/, "");
423
+ const fetchImpl = resolveFetch(params.fetchImpl);
424
+ return {
425
+ async get({ address }) {
426
+ const res = await fetchImpl(`${baseUrl}/extended/v1/address/${address}/nonces`, {
427
+ headers: params.apiKey ? { "x-api-key": params.apiKey } : undefined
428
+ });
429
+ if (!res.ok) {
430
+ throw new Error(`hiroNonceSource: /nonces ${res.status}`);
431
+ }
432
+ const data = await res.json();
433
+ const missing = (data.detected_missing_nonces ?? []).map((n) => BigInt(n)).sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
434
+ if (missing[0] !== undefined)
435
+ return missing[0];
436
+ return BigInt(data.possible_next_nonce ?? 0);
437
+ }
438
+ };
439
+ }
271
440
  // src/transports/createTransport.ts
272
441
  function createTransport(type, config) {
273
442
  return {
@@ -689,16 +858,28 @@ export {
689
858
  webSocket,
690
859
  walletActions,
691
860
  testnet,
861
+ startNonceReconciler,
862
+ resolveNonce,
863
+ redisStore,
864
+ reconcileNonce,
692
865
  publicActions,
693
866
  providerToAccount,
867
+ postgresStore,
694
868
  parseStx,
695
869
  exports_on as on,
870
+ nextFreeNonce,
696
871
  multisigActions,
697
872
  mocknet,
873
+ mempoolAwareSource,
874
+ memoryStore,
698
875
  mainnet,
876
+ jsonRpcSource,
699
877
  isValidAddress,
878
+ isNonceConflictError,
700
879
  isAddressEqual,
880
+ indexSource,
701
881
  http,
882
+ hiroNonceSource,
702
883
  getContractAddress,
703
884
  formatStx,
704
885
  fallback,
@@ -707,8 +888,10 @@ export {
707
888
  custom,
708
889
  createWalletClient,
709
890
  createPublicClient,
891
+ createNonceManager,
710
892
  createMultiSigClient,
711
893
  createClient,
894
+ broadcastWithNonceReset,
712
895
  ZERO_ADDRESS,
713
896
  WebSocketError,
714
897
  TransactionError,
@@ -724,5 +907,5 @@ export {
724
907
  AddressVersion
725
908
  };
726
909
 
727
- //# debugId=8C2A991E317B310264756E2164756E21
910
+ //# debugId=59A29616F35E1A0D64756E2164756E21
728
911
  //# sourceMappingURL=index.js.map
@@ -1,14 +1,16 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/clients/createClient.ts", "../src/clients/decorators/public.ts", "../src/clients/createPublicClient.ts", "../src/clients/decorators/wallet.ts", "../src/clients/createWalletClient.ts", "../src/clients/decorators/multisig.ts", "../src/clients/createMultiSigClient.ts", "../src/transports/createTransport.ts", "../src/transports/http.ts", "../src/transports/custom.ts", "../src/transports/fallback.ts", "../src/transports/webSocket.ts", "../src/on/spec.ts", "../src/on/bns.ts", "../src/on/pox.ts", "../src/on/sbtc.ts", "../src/on/transfer.ts", "../src/errors/contract.ts"],
3
+ "sources": ["../src/clients/createClient.ts", "../src/clients/decorators/public.ts", "../src/clients/createPublicClient.ts", "../src/clients/decorators/wallet.ts", "../src/clients/createWalletClient.ts", "../src/clients/decorators/multisig.ts", "../src/clients/createMultiSigClient.ts", "../src/actions/wallet/nonceStores.ts", "../src/actions/wallet/nonceSources.ts", "../src/transports/createTransport.ts", "../src/transports/http.ts", "../src/transports/custom.ts", "../src/transports/fallback.ts", "../src/transports/webSocket.ts", "../src/on/spec.ts", "../src/on/bns.ts", "../src/on/pox.ts", "../src/on/sbtc.ts", "../src/on/transfer.ts", "../src/errors/contract.ts"],
4
4
  "sourcesContent": [
5
- "import type { Client, ClientConfig } from \"./types.ts\";\n\nconst BASE_KEYS = new Set([\n\t\"chain\",\n\t\"account\",\n\t\"transport\",\n\t\"request\",\n\t\"extend\",\n]);\n\nfunction bindExtend(base: Client): Client[\"extend\"] {\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\treturn ((fn: any) => {\n\t\tconst extensions = fn(base);\n\t\tconst next = { ...base };\n\t\tfor (const [key, value] of Object.entries(extensions)) {\n\t\t\tif (BASE_KEYS.has(key)) continue;\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t(next as any)[key] = value;\n\t\t}\n\t\tnext.extend = bindExtend(next);\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\treturn next as any;\n\t}) as Client[\"extend\"];\n}\n\n/**\n * Create a base client with transport and optional chain/account.\n * Use `.extend()` to compose action decorators (public, wallet, multisig).\n */\nexport function createClient<\n\tTExtended extends Record<string, unknown> = Record<string, unknown>,\n>(config: ClientConfig): Client<TExtended> {\n\tconst transport = config.transport({ chain: config.chain });\n\n\tconst client: Client = {\n\t\tchain: config.chain,\n\t\taccount: config.account,\n\t\ttransport,\n\t\trequest: transport.request,\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\textend: null as any,\n\t};\n\n\tclient.extend = bindExtend(client);\n\n\treturn client as Client<TExtended>;\n}\n",
5
+ "import type { Client, ClientConfig } from \"./types.ts\";\n\nconst BASE_KEYS = new Set([\n\t\"chain\",\n\t\"account\",\n\t\"transport\",\n\t\"request\",\n\t\"nonceManager\",\n\t\"extend\",\n]);\n\nfunction bindExtend(base: Client): Client[\"extend\"] {\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\treturn ((fn: any) => {\n\t\tconst extensions = fn(base);\n\t\tconst next = { ...base };\n\t\tfor (const [key, value] of Object.entries(extensions)) {\n\t\t\tif (BASE_KEYS.has(key)) continue;\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t(next as any)[key] = value;\n\t\t}\n\t\tnext.extend = bindExtend(next);\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\treturn next as any;\n\t}) as Client[\"extend\"];\n}\n\n/**\n * Create a base client with transport and optional chain/account.\n * Use `.extend()` to compose action decorators (public, wallet, multisig).\n */\nexport function createClient<\n\tTExtended extends Record<string, unknown> = Record<string, unknown>,\n>(config: ClientConfig): Client<TExtended> {\n\tconst transport = config.transport({ chain: config.chain });\n\n\tconst client: Client = {\n\t\tchain: config.chain,\n\t\taccount: config.account,\n\t\ttransport,\n\t\trequest: transport.request,\n\t\tnonceManager: config.nonceManager,\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\textend: null as any,\n\t};\n\n\tclient.extend = bindExtend(client);\n\n\treturn client as Client<TExtended>;\n}\n",
6
6
  "import {\n\ttype EstimateFeeParams,\n\ttype FeeEstimation,\n\testimateFee,\n} from \"../../actions/public/estimateFee.ts\";\nimport {\n\ttype AccountInfo,\n\ttype GetAccountInfoParams,\n\tgetAccountInfo,\n} from \"../../actions/public/getAccountInfo.ts\";\nimport {\n\ttype GetBalanceParams,\n\tgetBalance,\n} from \"../../actions/public/getBalance.ts\";\nimport {\n\ttype GetBlockParams,\n\tgetBlock,\n} from \"../../actions/public/getBlock.ts\";\nimport { getBlockHeight } from \"../../actions/public/getBlockHeight.ts\";\nimport {\n\ttype GetContractAbiParams,\n\tgetContractAbi,\n} from \"../../actions/public/getContractAbi.ts\";\nimport {\n\ttype GetMapEntryParams,\n\tgetMapEntry,\n} from \"../../actions/public/getMapEntry.ts\";\nimport {\n\ttype GetNonceParams,\n\tgetNonce,\n} from \"../../actions/public/getNonce.ts\";\nimport {\n\ttype MulticallParams,\n\ttype MulticallResult,\n\tmulticall,\n} from \"../../actions/public/multicall.ts\";\nimport {\n\ttype ReadContractParams,\n\treadContract,\n} from \"../../actions/public/readContract.ts\";\nimport {\n\ttype SimulateCallParams,\n\ttype SimulateCallResult,\n\tsimulateCall,\n} from \"../../actions/public/simulateCall.ts\";\nimport {\n\ttype SimulateTransactionParams,\n\ttype SimulateTransactionResult,\n\tsimulateTransaction,\n} from \"../../actions/public/simulateTransaction.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport {\n\ttype WatchAddressBalanceParams,\n\ttype WatchAddressParams,\n\ttype WatchBlocksParams,\n\ttype WatchMempoolParams,\n\ttype WatchNftEventParams,\n\ttype WatchTransactionParams,\n\twatchAddress,\n\twatchAddressBalance,\n\twatchBlocks,\n\twatchMempool,\n\twatchNftEvent,\n\twatchTransaction,\n} from \"../../subscriptions/actions.ts\";\nimport type { Subscription } from \"../../subscriptions/types.ts\";\nimport type { Client } from \"../types.ts\";\n\n/** Read-only actions: balance queries, contract reads, block data, and event subscriptions. */\nexport type PublicActions = {\n\tgetNonce: (params: GetNonceParams) => Promise<bigint>;\n\tgetBalance: (params: GetBalanceParams) => Promise<bigint>;\n\tgetAccountInfo: (params: GetAccountInfoParams) => Promise<AccountInfo>;\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tgetBlock: (params: GetBlockParams) => Promise<any>;\n\tgetBlockHeight: () => Promise<number>;\n\treadContract: (params: ReadContractParams) => Promise<ClarityValue>;\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tgetContractAbi: (params: GetContractAbiParams) => Promise<any>;\n\tgetMapEntry: (params: GetMapEntryParams) => Promise<ClarityValue>;\n\testimateFee: (params: EstimateFeeParams) => Promise<FeeEstimation[]>;\n\tmulticall: <T extends boolean = true>(\n\t\tparams: MulticallParams<T>,\n\t) => Promise<MulticallResult<T>>;\n\tsimulateCall: (params: SimulateCallParams) => Promise<SimulateCallResult>;\n\tsimulateTransaction: (\n\t\tparams: SimulateTransactionParams,\n\t) => Promise<SimulateTransactionResult>;\n\twatchBlocks: (params: WatchBlocksParams) => Promise<Subscription>;\n\twatchMempool: (params: WatchMempoolParams) => Promise<Subscription>;\n\twatchTransaction: (params: WatchTransactionParams) => Promise<Subscription>;\n\twatchAddress: (params: WatchAddressParams) => Promise<Subscription>;\n\twatchAddressBalance: (\n\t\tparams: WatchAddressBalanceParams,\n\t) => Promise<Subscription>;\n\twatchNftEvent: (params: WatchNftEventParams) => Promise<Subscription>;\n};\n\n/** Decorator that binds {@link PublicActions} to a client instance. */\nexport function publicActions(client: Client): PublicActions {\n\treturn {\n\t\tgetNonce: (params) => getNonce(client, params),\n\t\tgetBalance: (params) => getBalance(client, params),\n\t\tgetAccountInfo: (params) => getAccountInfo(client, params),\n\t\tgetBlock: (params) => getBlock(client, params),\n\t\tgetBlockHeight: () => getBlockHeight(client),\n\t\treadContract: (params) => readContract(client, params),\n\t\tgetContractAbi: (params) => getContractAbi(client, params),\n\t\tgetMapEntry: (params) => getMapEntry(client, params),\n\t\testimateFee: (params) => estimateFee(client, params),\n\t\tmulticall: (params) => multicall(client, params),\n\t\tsimulateCall: (params) => simulateCall(client, params),\n\t\tsimulateTransaction: (params) => simulateTransaction(client, params),\n\t\twatchBlocks: (params) => watchBlocks(client, params),\n\t\twatchMempool: (params) => watchMempool(client, params),\n\t\twatchTransaction: (params) => watchTransaction(client, params),\n\t\twatchAddress: (params) => watchAddress(client, params),\n\t\twatchAddressBalance: (params) => watchAddressBalance(client, params),\n\t\twatchNftEvent: (params) => watchNftEvent(client, params),\n\t};\n}\n",
7
7
  "import { createClient } from \"./createClient.ts\";\nimport { type PublicActions, publicActions } from \"./decorators/public.ts\";\nimport type { Client, ClientConfig } from \"./types.ts\";\n\n/** Configuration for {@link createPublicClient} (no account needed). */\nexport type PublicClientConfig = Omit<ClientConfig, \"account\">;\n\n/**\n * Create a read-only client pre-extended with {@link PublicActions}.\n * Use for queries, contract reads, and event subscriptions.\n */\nexport function createPublicClient(\n\tconfig: PublicClientConfig,\n): Client<PublicActions> & PublicActions {\n\treturn createClient(config).extend(publicActions);\n}\n",
8
8
  "import {\n\ttype CallContractParams,\n\tcallContract,\n} from \"../../actions/wallet/callContract.ts\";\nimport {\n\ttype DeployContractParams,\n\tdeployContract,\n} from \"../../actions/wallet/deployContract.ts\";\nimport {\n\ttype SendTransactionParams,\n\ttype SendTransactionResult,\n\tsendTransaction,\n} from \"../../actions/wallet/sendTransaction.ts\";\nimport {\n\ttype SignMessageParams,\n\tsignMessage,\n} from \"../../actions/wallet/signMessage.ts\";\nimport {\n\ttype SignTransactionParams,\n\tsignTransactionAction,\n} from \"../../actions/wallet/signTransaction.ts\";\nimport {\n\ttype SponsorTransactionParams,\n\tsponsorTransaction,\n} from \"../../actions/wallet/sponsorTransaction.ts\";\nimport {\n\ttype TransferStxParams,\n\ttransferStx,\n} from \"../../actions/wallet/transferStx.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport type { Client } from \"../types.ts\";\n\n/** Signing actions: send transactions, transfer STX, call/deploy contracts, sign messages. */\nexport type WalletActions = {\n\tsendTransaction: (\n\t\tparams: SendTransactionParams,\n\t) => Promise<SendTransactionResult>;\n\tsignTransaction: (\n\t\tparams: SignTransactionParams,\n\t) => Promise<StacksTransaction>;\n\ttransferStx: (params: TransferStxParams) => Promise<string>;\n\tcallContract: (params: CallContractParams) => Promise<string>;\n\tdeployContract: (params: DeployContractParams) => Promise<string>;\n\tsignMessage: (params: SignMessageParams) => Promise<string>;\n\tsponsorTransaction: (\n\t\tparams: SponsorTransactionParams,\n\t) => Promise<StacksTransaction>;\n};\n\n/** Decorator that binds {@link WalletActions} to a client instance. */\nexport function walletActions(client: Client): WalletActions {\n\treturn {\n\t\tsendTransaction: (params) => sendTransaction(client, params),\n\t\tsignTransaction: (params) => signTransactionAction(client, params),\n\t\ttransferStx: (params) => transferStx(client, params),\n\t\tcallContract: (params) => callContract(client, params),\n\t\tdeployContract: (params) => deployContract(client, params),\n\t\tsignMessage: (params) => signMessage(client, params),\n\t\tsponsorTransaction: (params) => sponsorTransaction(client, params),\n\t};\n}\n",
9
9
  "import { createClient } from \"./createClient.ts\";\nimport { type WalletActions, walletActions } from \"./decorators/wallet.ts\";\nimport type { Account, Client, ClientConfig } from \"./types.ts\";\n\n/** Configuration for {@link createWalletClient} — requires an account for signing. */\nexport type WalletClientConfig = ClientConfig & {\n\taccount: Account;\n};\n\n/**\n * Create a client pre-extended with {@link WalletActions} for signing and broadcasting transactions.\n */\nexport function createWalletClient(\n\tconfig: WalletClientConfig,\n): Client<WalletActions> & WalletActions & { account: Account } {\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\treturn createClient(config).extend(walletActions) as any;\n}\n",
10
- "import { estimateFee } from \"../../actions/public/estimateFee.ts\";\nimport { getNonce } from \"../../actions/public/getNonce.ts\";\nimport {\n\ttype SendTransactionResult,\n\tsendTransaction,\n} from \"../../actions/wallet/sendTransaction.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport {\n\tbuildContractCall,\n\tbuildContractDeploy,\n\tbuildTokenTransfer,\n} from \"../../transactions/build.ts\";\nimport {\n\tfinalizeMultiSig,\n\tmakeMultiSigAddress,\n} from \"../../transactions/multisig.ts\";\nimport type {\n\tClarityVersion,\n\tMultiSigHashMode,\n\tStacksTransaction,\n} from \"../../transactions/types.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport type { Client } from \"../types.ts\";\n\nexport type MultiSigTransferStxParams = {\n\tto: string;\n\tamount: IntegerType;\n\tmemo?: string;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigCallContractParams = {\n\tcontract: string;\n\tfunctionName: string;\n\tfunctionArgs?: ClarityValue[];\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigDeployContractParams = {\n\tcontractName: string;\n\tcodeBody: string;\n\tclarityVersion?: ClarityVersion;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigSendTransactionParams = {\n\ttransaction: StacksTransaction;\n\tattachment?: Uint8Array | string;\n};\n\n/** Multi-sig transaction actions: build unsigned transactions and broadcast with auto-finalization. */\nexport type MultiSigActions = {\n\ttransferStx: (\n\t\tparams: MultiSigTransferStxParams,\n\t) => Promise<StacksTransaction>;\n\tcallContract: (\n\t\tparams: MultiSigCallContractParams,\n\t) => Promise<StacksTransaction>;\n\tdeployContract: (\n\t\tparams: MultiSigDeployContractParams,\n\t) => Promise<StacksTransaction>;\n\tsendTransaction: (\n\t\tparams: MultiSigSendTransactionParams,\n\t) => Promise<SendTransactionResult>;\n};\n\n/** Decorator that binds {@link MultiSigActions} to a multi-sig client. */\nexport function multisigActions(client: Client): MultiSigActions {\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tconst msConfig = (client as any)._multisigConfig as {\n\t\tsigners: string[];\n\t\trequiredSignatures: number;\n\t\thashMode?: MultiSigHashMode;\n\t};\n\n\tif (!msConfig) throw new Error(\"multisigActions requires a multi-sig client\");\n\n\tconst { signers, requiredSignatures, hashMode } = msConfig;\n\n\t/** Resolve nonce from the multi-sig address */\n\tasync function resolveNonce(nonce?: IntegerType): Promise<IntegerType> {\n\t\tif (nonce !== undefined) return nonce;\n\t\tconst address = makeMultiSigAddress(\n\t\t\tsigners,\n\t\t\trequiredSignatures,\n\t\t\tclient.chain,\n\t\t);\n\t\treturn getNonce(client, { address });\n\t}\n\n\treturn {\n\t\tasync transferStx(params) {\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildTokenTransfer({\n\t\t\t\trecipient: params.to,\n\t\t\t\tamount: params.amount,\n\t\t\t\tmemo: params.memo,\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync callContract(params) {\n\t\t\tconst [contractAddress, contractName] = parseContractId(params.contract);\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildContractCall({\n\t\t\t\tcontractAddress,\n\t\t\t\tcontractName,\n\t\t\t\tfunctionName: params.functionName,\n\t\t\t\tfunctionArgs: params.functionArgs ?? [],\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync deployContract(params) {\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildContractDeploy({\n\t\t\t\tcontractName: params.contractName,\n\t\t\t\tcodeBody: params.codeBody,\n\t\t\t\tclarityVersion: params.clarityVersion,\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync sendTransaction(params) {\n\t\t\t// Auto-finalize before broadcast\n\t\t\tconst finalized = finalizeMultiSig(params.transaction, signers);\n\t\t\treturn sendTransaction(client, {\n\t\t\t\ttransaction: finalized,\n\t\t\t\tattachment: params.attachment,\n\t\t\t});\n\t\t},\n\t};\n}\n",
10
+ "import { estimateFee } from \"../../actions/public/estimateFee.ts\";\nimport { getNonce } from \"../../actions/public/getNonce.ts\";\nimport {\n\ttype SendTransactionResult,\n\tsendTransaction,\n} from \"../../actions/wallet/sendTransaction.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport {\n\tbuildContractCall,\n\tbuildContractDeploy,\n\tbuildTokenTransfer,\n} from \"../../transactions/build.ts\";\nimport {\n\tfinalizeMultiSig,\n\tmakeMultiSigAddress,\n} from \"../../transactions/multisig.ts\";\nimport type {\n\tClarityVersion,\n\tMultiSigHashMode,\n\tStacksTransaction,\n} from \"../../transactions/types.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport type { Client } from \"../types.ts\";\n\nexport type MultiSigTransferStxParams = {\n\tto: string;\n\tamount: IntegerType;\n\tmemo?: string;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigCallContractParams = {\n\tcontract: string;\n\tfunctionName: string;\n\tfunctionArgs?: ClarityValue[];\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigDeployContractParams = {\n\tcontractName: string;\n\tcodeBody: string;\n\tclarityVersion?: ClarityVersion;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigSendTransactionParams = {\n\ttransaction: StacksTransaction;\n\tattachment?: Uint8Array | string;\n};\n\n/** Multi-sig transaction actions: build unsigned transactions and broadcast with auto-finalization. */\nexport type MultiSigActions = {\n\ttransferStx: (\n\t\tparams: MultiSigTransferStxParams,\n\t) => Promise<StacksTransaction>;\n\tcallContract: (\n\t\tparams: MultiSigCallContractParams,\n\t) => Promise<StacksTransaction>;\n\tdeployContract: (\n\t\tparams: MultiSigDeployContractParams,\n\t) => Promise<StacksTransaction>;\n\tsendTransaction: (\n\t\tparams: MultiSigSendTransactionParams,\n\t) => Promise<SendTransactionResult>;\n};\n\n/** Decorator that binds {@link MultiSigActions} to a multi-sig client. */\nexport function multisigActions(client: Client): MultiSigActions {\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tconst msConfig = (client as any)._multisigConfig as {\n\t\tsigners: string[];\n\t\trequiredSignatures: number;\n\t\thashMode?: MultiSigHashMode;\n\t};\n\n\tif (!msConfig) throw new Error(\"multisigActions requires a multi-sig client\");\n\n\tconst { signers, requiredSignatures, hashMode } = msConfig;\n\n\t/** Resolve nonce from the multi-sig address */\n\tasync function resolveNonce(nonce?: IntegerType): Promise<IntegerType> {\n\t\tif (nonce !== undefined) return nonce;\n\t\tconst address = makeMultiSigAddress(\n\t\t\tsigners,\n\t\t\trequiredSignatures,\n\t\t\tclient.chain,\n\t\t);\n\t\tif (client.nonceManager)\n\t\t\treturn client.nonceManager.consume({ client, address });\n\t\treturn getNonce(client, { address });\n\t}\n\n\treturn {\n\t\tasync transferStx(params) {\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildTokenTransfer({\n\t\t\t\trecipient: params.to,\n\t\t\t\tamount: params.amount,\n\t\t\t\tmemo: params.memo,\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync callContract(params) {\n\t\t\tconst [contractAddress, contractName] = parseContractId(params.contract);\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildContractCall({\n\t\t\t\tcontractAddress,\n\t\t\t\tcontractName,\n\t\t\t\tfunctionName: params.functionName,\n\t\t\t\tfunctionArgs: params.functionArgs ?? [],\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync deployContract(params) {\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildContractDeploy({\n\t\t\t\tcontractName: params.contractName,\n\t\t\t\tcodeBody: params.codeBody,\n\t\t\t\tclarityVersion: params.clarityVersion,\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync sendTransaction(params) {\n\t\t\t// Auto-finalize before broadcast\n\t\t\tconst finalized = finalizeMultiSig(params.transaction, signers);\n\t\t\treturn sendTransaction(client, {\n\t\t\t\ttransaction: finalized,\n\t\t\t\tattachment: params.attachment,\n\t\t\t});\n\t\t},\n\t};\n}\n",
11
11
  "import type { MultiSigHashMode } from \"../transactions/types.ts\";\nimport { createClient } from \"./createClient.ts\";\nimport {\n\ttype MultiSigActions,\n\tmultisigActions,\n} from \"./decorators/multisig.ts\";\nimport type { Client, ClientConfig } from \"./types.ts\";\n\n/** Configuration for {@link createMultiSigClient} — requires signer public keys and threshold. */\nexport type MultiSigClientConfig = Omit<ClientConfig, \"account\"> & {\n\tsigners: string[];\n\trequiredSignatures: number;\n\thashMode?: MultiSigHashMode;\n};\n\n/** A client pre-extended with {@link MultiSigActions} for m-of-n signing flows. */\nexport type MultiSigClient = Client<MultiSigActions> & MultiSigActions;\n\n/**\n * Create a client for multi-sig transaction flows.\n * Builds unsigned transactions that can be signed by each party then broadcast.\n */\nexport function createMultiSigClient(\n\tconfig: MultiSigClientConfig,\n): MultiSigClient {\n\tconst client = createClient(config);\n\n\t// Attach multi-sig config for the decorator to read\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t(client as any)._multisigConfig = {\n\t\tsigners: config.signers,\n\t\trequiredSignatures: config.requiredSignatures,\n\t\thashMode: config.hashMode,\n\t};\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\treturn client.extend(multisigActions) as any;\n}\n",
12
+ "import type { NonceStore } from \"./nonceManager.ts\";\n\n/**\n * Persisted {@link NonceStore} adapters for multi-process / multi-builder\n * deployments (the smart-wallet-as-a-service case).\n *\n * The in-memory {@link memoryStore} is correct only within one process: two\n * workers sharing a signing key both read the same confirmed floor and collide.\n * These adapters move the atomic reserve into a shared datastore — Redis `INCR`\n * inside an `EVAL`, or a single Postgres upsert under a row lock — so the store\n * itself becomes the cross-process lock and the durable source of truth.\n *\n * Both are dependency-injected: pass your own `Bun.redis` / `Bun.sql` client.\n * No global `Bun` reference, so importing this module is runtime-agnostic.\n */\n\n/** Minimal structural shape of a `Bun.redis` client (the `send` escape hatch). */\nexport type RedisLike = {\n\tsend(command: string, args: string[]): Promise<unknown>;\n};\n\nexport type RedisStoreParams = {\n\tredis: RedisLike;\n\t/** Key prefix for stored nonce counters. Default `\"stacks:nonce:\"`. */\n\tprefix?: string;\n};\n\n// Warm path: counter exists → atomically hand out the current value and bump.\n// Returns the nonce (bulk string) or `false` (RESP nil) when the key is unset.\nconst TAKE_IF_PRESENT = `local v = redis.call('GET', KEYS[1])\nif v == false then return false end\nredis.call('INCR', KEYS[1])\nreturn v`;\n\n// Cold path: seed from the confirmed floor if still unset, then hand out and\n// bump. Atomic, so two racing cold reservers can never return the same nonce.\nconst SEED_OR_TAKE = `local v = redis.call('GET', KEYS[1])\nif v == false then redis.call('SET', KEYS[1], ARGV[1]); v = ARGV[1] end\nredis.call('INCR', KEYS[1])\nreturn v`;\n\n/**\n * Redis-backed nonce store. The atomic reserve lives in a Lua `EVAL`, so it is\n * safe across processes sharing one Redis. The confirmed floor (`getFloor`) is\n * read only once per key, on cold start.\n */\nexport function redisStore(params: RedisStoreParams): NonceStore {\n\tconst { redis } = params;\n\tconst prefix = params.prefix ?? \"stacks:nonce:\";\n\n\treturn {\n\t\tasync reserve(key, getFloor) {\n\t\t\tconst k = prefix + key;\n\t\t\tconst present = await redis.send(\"EVAL\", [TAKE_IF_PRESENT, \"1\", k]);\n\t\t\tif (present != null) return BigInt(present as string | number);\n\n\t\t\tconst floor = await getFloor();\n\t\t\tconst seeded = await redis.send(\"EVAL\", [\n\t\t\t\tSEED_OR_TAKE,\n\t\t\t\t\"1\",\n\t\t\t\tk,\n\t\t\t\tfloor.toString(),\n\t\t\t]);\n\t\t\treturn BigInt(seeded as string | number);\n\t\t},\n\t\tasync reset(key) {\n\t\t\tawait redis.send(\"DEL\", [prefix + key]);\n\t\t},\n\t\tasync peek(key) {\n\t\t\tconst v = await redis.send(\"GET\", [prefix + key]);\n\t\t\treturn v == null ? undefined : BigInt(v as string | number);\n\t\t},\n\t};\n}\n\n/** Minimal structural shape of a `Bun.sql` tagged-template client. */\nexport type SqlLike = (\n\tstrings: TemplateStringsArray,\n\t...values: unknown[]\n) => Promise<Array<Record<string, unknown>>>;\n\nexport type PostgresStoreParams = {\n\tsql: SqlLike;\n\t/**\n\t * Run `CREATE TABLE IF NOT EXISTS stacks_nonce_state` lazily on first use.\n\t * Default `true`. Set `false` if you manage the schema via migrations.\n\t */\n\tensureTable?: boolean;\n};\n\n/**\n * Postgres-backed nonce store. Each reserve is a single atomic statement under\n * a row lock, so concurrent reservers on the same key serialize and never\n * collide across processes. State is durable — survives restarts.\n *\n * Uses a fixed table `stacks_nonce_state (key text primary key, next numeric)`.\n */\nexport function postgresStore(params: PostgresStoreParams): NonceStore {\n\tconst { sql } = params;\n\tconst shouldEnsure = params.ensureTable ?? true;\n\tlet ensured = false;\n\n\tasync function ensureTable() {\n\t\tif (!shouldEnsure || ensured) return;\n\t\tawait sql`CREATE TABLE IF NOT EXISTS stacks_nonce_state (key text PRIMARY KEY, next numeric NOT NULL)`;\n\t\tensured = true;\n\t}\n\n\treturn {\n\t\tasync reserve(key, getFloor) {\n\t\t\tawait ensureTable();\n\n\t\t\t// Warm path: bump and return the pre-increment value atomically.\n\t\t\tconst updated =\n\t\t\t\tawait sql`UPDATE stacks_nonce_state SET next = next + 1 WHERE key = ${key} RETURNING next - 1 AS nonce`;\n\t\t\tconst warm = updated[0];\n\t\t\tif (warm) return BigInt(String(warm.nonce));\n\n\t\t\t// Cold path: seed from the confirmed floor. ON CONFLICT keeps the seed\n\t\t\t// atomic against a racing reserver.\n\t\t\tconst floor = await getFloor();\n\t\t\tconst seeded =\n\t\t\t\tawait sql`INSERT INTO stacks_nonce_state (key, next) VALUES (${key}, ${(floor + 1n).toString()}) ON CONFLICT (key) DO UPDATE SET next = stacks_nonce_state.next + 1 RETURNING next - 1 AS nonce`;\n\t\t\tconst cold = seeded[0];\n\t\t\tif (!cold) throw new Error(\"postgresStore: insert returned no row\");\n\t\t\treturn BigInt(String(cold.nonce));\n\t\t},\n\t\tasync reset(key) {\n\t\t\tawait ensureTable();\n\t\t\tawait sql`DELETE FROM stacks_nonce_state WHERE key = ${key}`;\n\t\t},\n\t\tasync peek(key) {\n\t\t\tawait ensureTable();\n\t\t\tconst rows =\n\t\t\t\tawait sql`SELECT next FROM stacks_nonce_state WHERE key = ${key}`;\n\t\t\tconst row = rows[0];\n\t\t\treturn row ? BigInt(String(row.next)) : undefined;\n\t\t},\n\t};\n}\n",
13
+ "import type { Client } from \"../../clients/types.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport type { NonceManagerSource } from \"./nonceManager.ts\";\n\n/**\n * Mempool-aware {@link NonceManagerSource}s.\n *\n * The default {@link jsonRpcSource} reads only the confirmed nonce, so a tx\n * sitting in the mempool is invisible — broadcasting many quickly forces manual\n * tracking. These sources fold pending (mempool) txs into the next-nonce\n * computation. The gap-filling core is generic; where the pending set comes from\n * is pluggable, so you are never locked to any one provider:\n *\n * - {@link mempoolAwareSource} — bring your own `getPending`.\n * - {@link indexSource} — prebuilt over Secondlayer's `/v1/index/mempool`.\n * - {@link hiroNonceSource} — prebuilt over Hiro's `/extended` nonces endpoint.\n */\n\ntype FetchImpl = typeof globalThis.fetch;\n\nfunction resolveFetch(fetchImpl?: FetchImpl): FetchImpl {\n\tconst f = fetchImpl ?? globalThis.fetch;\n\tif (!f)\n\t\tthrow new Error(\"No fetch implementation available; pass `fetchImpl`\");\n\treturn f;\n}\n\n/**\n * The next free nonce ≥ `confirmed` not already taken by a pending tx.\n *\n * Unlike Hiro's `possible_next_nonce` (which is `max(pending) + 1` and strands\n * higher txs when a lower nonce is missing), this FILLS gaps: it returns the\n * lowest unused slot, so a dropped-tx hole is reused instead of stranding the\n * chain.\n */\nexport function nextFreeNonce(confirmed: bigint, pending: bigint[]): bigint {\n\tconst taken = new Set(\n\t\tpending.filter((n) => n >= confirmed).map((n) => n.toString()),\n\t);\n\tlet n = confirmed;\n\twhile (taken.has(n.toString())) n += 1n;\n\treturn n;\n}\n\nexport type MempoolAwareSourceParams = {\n\t/** Pending (mempool) nonces for an address. */\n\tgetPending: (args: {\n\t\tclient: Client;\n\t\taddress: string;\n\t}) => Promise<bigint[]>;\n\t/**\n\t * Confirmed-nonce floor. Defaults to the node's `/v2/accounts` read — the\n\t * user's own node via the client transport, no provider dependency.\n\t */\n\tgetConfirmed?: (args: { client: Client; address: string }) => Promise<bigint>;\n};\n\n/**\n * Build a gap-filling, mempool-aware source from any `getPending`. The confirmed\n * floor defaults to the node read; if `getPending` throws, the source degrades\n * to confirmed-only rather than blocking a broadcast.\n */\nexport function mempoolAwareSource(\n\tparams: MempoolAwareSourceParams,\n): NonceManagerSource {\n\tconst getConfirmed =\n\t\tparams.getConfirmed ??\n\t\t(({ client, address }) => getNonce(client, { address }));\n\n\treturn {\n\t\tasync get({ client, address }) {\n\t\t\tconst confirmed = await getConfirmed({ client, address });\n\t\t\tlet pending: bigint[] = [];\n\t\t\ttry {\n\t\t\t\tpending = await params.getPending({ client, address });\n\t\t\t} catch {\n\t\t\t\t// Source unavailable — fall back to the confirmed floor. The local\n\t\t\t\t// increment in the manager still prevents same-process collisions.\n\t\t\t\treturn confirmed;\n\t\t\t}\n\t\t\treturn nextFreeNonce(confirmed, pending);\n\t\t},\n\t};\n}\n\nexport type IndexSourceParams = {\n\t/** Secondlayer Index base URL. Default `https://api.secondlayer.tools`. */\n\tbaseUrl?: string;\n\t/** Optional API key (keyless by default; supply to raise rate limits). */\n\tapiKey?: string;\n\tfetchImpl?: FetchImpl;\n\t/** Max mempool pages to page through per address. Default 10 (×200 = 2000 txs). */\n\tmaxPages?: number;\n\t/** Override the confirmed floor (defaults to the node read). */\n\tgetConfirmed?: (args: { client: Client; address: string }) => Promise<bigint>;\n};\n\ntype IndexMempoolResponse = {\n\tmempool?: Array<{ nonce?: string | number | null }>;\n\tnext_cursor?: string | null;\n};\n\n/**\n * Mempool-aware source backed by Secondlayer's `/v1/index/mempool` (our node's\n * observed mempool). `baseUrl` is configurable — point it at any shape-compatible\n * endpoint. Note our mempool is a go-forward, single-node observed view (not a\n * globally-aggregated mempool), so it can lag or miss txs our node never saw.\n */\nexport function indexSource(\n\tparams: IndexSourceParams = {},\n): NonceManagerSource {\n\tconst baseUrl = (params.baseUrl ?? \"https://api.secondlayer.tools\").replace(\n\t\t/\\/$/,\n\t\t\"\",\n\t);\n\tconst fetchImpl = resolveFetch(params.fetchImpl);\n\tconst maxPages = params.maxPages ?? 10;\n\n\treturn mempoolAwareSource({\n\t\tgetConfirmed: params.getConfirmed,\n\t\tasync getPending({ address }) {\n\t\t\tconst out: bigint[] = [];\n\t\t\tlet cursor: string | undefined;\n\t\t\tlet pages = 0;\n\n\t\t\tdo {\n\t\t\t\tconst url = new URL(`${baseUrl}/v1/index/mempool`);\n\t\t\t\turl.searchParams.set(\"sender\", address);\n\t\t\t\turl.searchParams.set(\"limit\", \"200\");\n\t\t\t\tif (cursor) url.searchParams.set(\"from_cursor\", cursor);\n\n\t\t\t\tconst res = await fetchImpl(url, {\n\t\t\t\t\theaders: params.apiKey\n\t\t\t\t\t\t? { authorization: `Bearer ${params.apiKey}` }\n\t\t\t\t\t\t: undefined,\n\t\t\t\t});\n\t\t\t\tif (!res.ok) {\n\t\t\t\t\tthrow new Error(`indexSource: /v1/index/mempool ${res.status}`);\n\t\t\t\t}\n\n\t\t\t\tconst data = (await res.json()) as IndexMempoolResponse;\n\t\t\t\tfor (const tx of data.mempool ?? []) {\n\t\t\t\t\tif (tx.nonce != null) out.push(BigInt(tx.nonce));\n\t\t\t\t}\n\t\t\t\tcursor = data.next_cursor ?? undefined;\n\t\t\t\tpages += 1;\n\t\t\t} while (cursor && pages < maxPages);\n\n\t\t\tif (cursor) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`indexSource: stopped paging mempool for ${address} after ${maxPages} pages; pending set may be incomplete`,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t});\n}\n\nexport type HiroNonceSourceParams = {\n\t/** Hiro API base URL, e.g. `https://api.hiro.so` or `https://api.testnet.hiro.so`. */\n\tbaseUrl: string;\n\tapiKey?: string;\n\tfetchImpl?: FetchImpl;\n};\n\ntype HiroNoncesResponse = {\n\tlast_executed_tx_nonce?: number | null;\n\tlast_mempool_tx_nonce?: number | null;\n\tpossible_next_nonce?: number | null;\n\tdetected_missing_nonces?: number[];\n};\n\n/**\n * Off-the-shelf, non-Secondlayer mempool-aware source over Hiro's\n * `/extended/v1/address/{address}/nonces`. Fills the lowest detected gap first,\n * then falls back to `possible_next_nonce`. Requires a host that serves Hiro's\n * extended API (a bare stacks-node does not).\n */\nexport function hiroNonceSource(\n\tparams: HiroNonceSourceParams,\n): NonceManagerSource {\n\tconst baseUrl = params.baseUrl.replace(/\\/$/, \"\");\n\tconst fetchImpl = resolveFetch(params.fetchImpl);\n\n\treturn {\n\t\tasync get({ address }) {\n\t\t\tconst res = await fetchImpl(\n\t\t\t\t`${baseUrl}/extended/v1/address/${address}/nonces`,\n\t\t\t\t{\n\t\t\t\t\theaders: params.apiKey ? { \"x-api-key\": params.apiKey } : undefined,\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (!res.ok) {\n\t\t\t\tthrow new Error(`hiroNonceSource: /nonces ${res.status}`);\n\t\t\t}\n\t\t\tconst data = (await res.json()) as HiroNoncesResponse;\n\n\t\t\t// Fill the lowest gap first — possible_next_nonce ignores gaps and would\n\t\t\t// strand the missing slots.\n\t\t\tconst missing = (data.detected_missing_nonces ?? [])\n\t\t\t\t.map((n) => BigInt(n))\n\t\t\t\t.sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));\n\t\t\tif (missing[0] !== undefined) return missing[0];\n\n\t\t\treturn BigInt(data.possible_next_nonce ?? 0);\n\t\t},\n\t};\n}\n",
12
14
  "import type {\n\tRequestFn,\n\tRequestOptions,\n\tTransport,\n\tTransportConfig,\n} from \"./types.ts\";\n\nexport function createTransport(\n\ttype: string,\n\tconfig: TransportConfig & { request: RequestFn },\n): Transport {\n\treturn {\n\t\ttype,\n\t\trequest: config.request,\n\t\tconfig,\n\t};\n}\n\nexport async function fetchWithRetry(\n\turl: string,\n\toptions: RequestInit,\n\tretryCount: number,\n\tretryDelay: number,\n\ttimeout: number,\n): Promise<Response> {\n\tlet lastError: Error | undefined;\n\n\tfor (let attempt = 0; attempt <= retryCount; attempt++) {\n\t\ttry {\n\t\t\tconst controller = new AbortController();\n\t\t\tconst timeoutId = setTimeout(() => controller.abort(), timeout);\n\n\t\t\tconst response = await fetch(url, {\n\t\t\t\t...options,\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\n\t\t\tclearTimeout(timeoutId);\n\n\t\t\tif (response.ok || response.status < 500) {\n\t\t\t\treturn response;\n\t\t\t}\n\n\t\t\tlastError = new Error(`HTTP ${response.status}: ${response.statusText}`);\n\t\t} catch (error) {\n\t\t\tlastError = error instanceof Error ? error : new Error(String(error));\n\t\t}\n\n\t\tif (attempt < retryCount) {\n\t\t\tawait new Promise((r) => setTimeout(r, retryDelay * (attempt + 1)));\n\t\t}\n\t}\n\n\tthrow lastError ?? new Error(\"Request failed\");\n}\n\nexport function buildRequestFn(\n\tbaseUrl: string,\n\tconfig: TransportConfig,\n): RequestFn {\n\tconst {\n\t\ttimeout = 30_000,\n\t\tretryCount = 3,\n\t\tretryDelay = 150,\n\t\tfetchOptions = {},\n\t\tapiKey,\n\t} = config;\n\n\treturn async (path: string, options?: RequestOptions) => {\n\t\tconst url = `${baseUrl.replace(/\\/$/, \"\")}${path}`;\n\t\tconst headers: Record<string, string> = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...(fetchOptions.headers as Record<string, string>),\n\t\t\t...options?.headers,\n\t\t};\n\n\t\tif (apiKey) {\n\t\t\theaders[\"x-api-key\"] = apiKey;\n\t\t}\n\n\t\tconst init: RequestInit = {\n\t\t\t...fetchOptions,\n\t\t\tmethod: options?.method ?? \"GET\",\n\t\t\theaders,\n\t\t};\n\n\t\tif (options?.body !== undefined) {\n\t\t\tinit.body = JSON.stringify(options.body);\n\t\t}\n\n\t\tconst response = await fetchWithRetry(\n\t\t\turl,\n\t\t\tinit,\n\t\t\tretryCount,\n\t\t\tretryDelay,\n\t\t\ttimeout,\n\t\t);\n\n\t\tconst contentType = response.headers.get(\"content-type\") ?? \"\";\n\t\tif (contentType.includes(\"application/json\")) {\n\t\t\treturn response.json();\n\t\t}\n\t\treturn response.text();\n\t};\n}\n",
13
15
  "import { buildRequestFn, createTransport } from \"./createTransport.ts\";\nimport type { TransportConfig, TransportFactory } from \"./types.ts\";\n\n/**\n * Create an HTTP transport for Stacks node RPC calls.\n * Falls back to the chain's default RPC URL, then `localhost:3999`.\n */\nexport function http(url?: string, config?: TransportConfig): TransportFactory {\n\treturn (params) => {\n\t\tconst resolvedUrl =\n\t\t\turl ?? params?.chain?.rpcUrls.default.http[0] ?? \"http://localhost:3999\";\n\n\t\tconst mergedConfig: TransportConfig = {\n\t\t\t...config,\n\t\t\turl: resolvedUrl,\n\t\t};\n\n\t\treturn createTransport(\"http\", {\n\t\t\t...mergedConfig,\n\t\t\trequest: buildRequestFn(resolvedUrl, mergedConfig),\n\t\t});\n\t};\n}\n",
14
16
  "import { createTransport } from \"./createTransport.ts\";\nimport type { RequestFn, TransportFactory } from \"./types.ts\";\n\n/** Create a transport backed by a user-provided request function. */\nexport function custom(params: { request: RequestFn }): TransportFactory {\n\treturn () => createTransport(\"custom\", { request: params.request });\n}\n",
@@ -21,7 +23,7 @@
21
23
  "import {\n\ttype FactoryTarget,\n\ttype SubscriptionFilterSpec,\n\tmakeSpec,\n} from \"./spec.ts\";\n\n/**\n * Match transfer events into a recipient address.\n *\n * Works against any subgraph table that has a `recipient` column (and\n * optionally `asset_identifier`). Templates that scaffold this shape:\n * `sip-010-balances`, `sbtc-flows`.\n *\n * @param target the user's subgraph + table to bind against\n * @param recipient stx principal that should receive the transfer\n * @param opts.asset optional asset identifier (e.g. `\"SP1...usdc::usdc-token\"`)\n * to filter to a specific FT/NFT contract\n */\nexport function transferTo(\n\ttarget: FactoryTarget,\n\trecipient: string,\n\topts?: { asset?: string },\n): SubscriptionFilterSpec {\n\treturn makeSpec(target, {\n\t\trecipient,\n\t\t...(opts?.asset && { asset_identifier: opts.asset }),\n\t});\n}\n\n/**\n * SIP-010 (fungible token) transfer sugar — alias for `transferTo` that\n * makes the asset filter intent explicit at the call site. Same backing\n * filter; the `asset` param is optional (omit to match every SIP-010\n * transfer in the bound table).\n */\nexport function sip010Transfer(\n\ttarget: FactoryTarget,\n\tasset?: string,\n\topts?: { recipient?: string },\n): SubscriptionFilterSpec {\n\treturn makeSpec(target, {\n\t\t...(asset && { asset_identifier: asset }),\n\t\t...(opts?.recipient && { recipient: opts.recipient }),\n\t});\n}\n\n/**\n * SIP-009 (non-fungible token) transfer sugar — same pattern as\n * `sip010Transfer`. Bind against an NFT-shaped table (see template\n * `nft-transfers` if/when published).\n */\nexport function sip009Transfer(\n\ttarget: FactoryTarget,\n\tasset?: string,\n\topts?: { recipient?: string; tokenId?: string | number },\n): SubscriptionFilterSpec {\n\treturn makeSpec(target, {\n\t\t...(asset && { asset_identifier: asset }),\n\t\t...(opts?.recipient && { recipient: opts.recipient }),\n\t\t...(opts?.tokenId !== undefined && { token_id: String(opts.tokenId) }),\n\t});\n}\n",
22
24
  "import { BaseError } from \"./base.ts\";\n\nexport class ContractCallError extends BaseError {\n\toverride name = \"ContractCallError\";\n}\n\nexport class ReadOnlyCallError extends BaseError {\n\toverride name = \"ReadOnlyCallError\";\n}\n"
23
25
  ],
24
- "mappings": "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",
25
- "debugId": "8C2A991E317B310264756E2164756E21",
26
+ "mappings": "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",
27
+ "debugId": "59A29616F35E1A0D64756E2164756E21",
26
28
  "names": []
27
29
  }
@@ -27,6 +27,22 @@ type ProviderAccount = {
27
27
  publicKey: string
28
28
  provider: StacksProvider
29
29
  };
30
+ /** Allocates mempool-safe sequential nonces across rapid broadcasts from one account. */
31
+ type NonceManager = {
32
+ consume(params: {
33
+ client: Client
34
+ address: string
35
+ }): Promise<bigint>
36
+ reset(params: {
37
+ client: Client
38
+ address: string
39
+ }): void | Promise<void>
40
+ /** Next nonce that {@link NonceManager.consume} would return without consuming it, or `undefined` if untracked. */
41
+ peek(params: {
42
+ client: Client
43
+ address: string
44
+ }): Promise<bigint | undefined>
45
+ };
30
46
  /** Full chain descriptor used by clients and transports for network-aware operations. */
31
47
  type StacksChain = {
32
48
  /** Chain ID (e.g. 0x00000001 for mainnet) */
@@ -104,6 +120,8 @@ type Client<TExtended extends Record<string, unknown> = Record<string, unknown>>
104
120
  account?: Account
105
121
  transport: Transport
106
122
  request: RequestFn
123
+ /** Optional nonce manager for mempool-safe sequential nonces across rapid broadcasts. */
124
+ nonceManager?: NonceManager
107
125
  extend: <const TNew extends Record<string, unknown>>(fn: (client: Client<TExtended>) => TNew) => Client<TExtended & TNew> & TNew
108
126
  } & TExtended;
109
127
  /** Bitcoin address in Clarity tuple format for PoX */
@@ -27,6 +27,22 @@ type ProviderAccount = {
27
27
  publicKey: string
28
28
  provider: StacksProvider
29
29
  };
30
+ /** Allocates mempool-safe sequential nonces across rapid broadcasts from one account. */
31
+ type NonceManager = {
32
+ consume(params: {
33
+ client: Client
34
+ address: string
35
+ }): Promise<bigint>
36
+ reset(params: {
37
+ client: Client
38
+ address: string
39
+ }): void | Promise<void>
40
+ /** Next nonce that {@link NonceManager.consume} would return without consuming it, or `undefined` if untracked. */
41
+ peek(params: {
42
+ client: Client
43
+ address: string
44
+ }): Promise<bigint | undefined>
45
+ };
30
46
  /** Full chain descriptor used by clients and transports for network-aware operations. */
31
47
  type StacksChain = {
32
48
  /** Chain ID (e.g. 0x00000001 for mainnet) */
@@ -104,6 +120,8 @@ type Client<TExtended extends Record<string, unknown> = Record<string, unknown>>
104
120
  account?: Account
105
121
  transport: Transport
106
122
  request: RequestFn
123
+ /** Optional nonce manager for mempool-safe sequential nonces across rapid broadcasts. */
124
+ nonceManager?: NonceManager
107
125
  extend: <const TNew extends Record<string, unknown>>(fn: (client: Client<TExtended>) => TNew) => Client<TExtended & TNew> & TNew
108
126
  } & TExtended;
109
127
  /** Bitcoin address in Clarity tuple format for PoX */
@@ -4,9 +4,9 @@ import {
4
4
  } from "../../shared/stacks-9z833ww5.js";
5
5
  import {
6
6
  getContract
7
- } from "../../shared/stacks-hyz7zgdk.js";
8
- import"../../shared/stacks-yq5a5cda.js";
9
- import"../../shared/stacks-y8e3gx6w.js";
7
+ } from "../../shared/stacks-k96f5g1a.js";
8
+ import"../../shared/stacks-txh6dadn.js";
9
+ import"../../shared/stacks-r3mqgw2d.js";
10
10
  import"../../shared/stacks-709tra19.js";
11
11
  import"../../shared/stacks-g7ffp8aj.js";
12
12
  import"../../shared/stacks-z53fwfcm.js";
@@ -27,6 +27,22 @@ type ProviderAccount = {
27
27
  publicKey: string
28
28
  provider: StacksProvider
29
29
  };
30
+ /** Allocates mempool-safe sequential nonces across rapid broadcasts from one account. */
31
+ type NonceManager = {
32
+ consume(params: {
33
+ client: Client
34
+ address: string
35
+ }): Promise<bigint>
36
+ reset(params: {
37
+ client: Client
38
+ address: string
39
+ }): void | Promise<void>
40
+ /** Next nonce that {@link NonceManager.consume} would return without consuming it, or `undefined` if untracked. */
41
+ peek(params: {
42
+ client: Client
43
+ address: string
44
+ }): Promise<bigint | undefined>
45
+ };
30
46
  /** Full chain descriptor used by clients and transports for network-aware operations. */
31
47
  type StacksChain = {
32
48
  /** Chain ID (e.g. 0x00000001 for mainnet) */
@@ -104,6 +120,8 @@ type Client<TExtended extends Record<string, unknown> = Record<string, unknown>>
104
120
  account?: Account
105
121
  transport: Transport
106
122
  request: RequestFn
123
+ /** Optional nonce manager for mempool-safe sequential nonces across rapid broadcasts. */
124
+ nonceManager?: NonceManager
107
125
  extend: <const TNew extends Record<string, unknown>>(fn: (client: Client<TExtended>) => TNew) => Client<TExtended & TNew> & TNew
108
126
  } & TExtended;
109
127
  /**