@secondlayer/stacks 3.1.0 → 3.3.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 (77) hide show
  1. package/dist/shared/{stacks-0j16z8ev.js → stacks-08y0y0t7.js} +17 -13
  2. package/dist/shared/stacks-08y0y0t7.js.map +12 -0
  3. package/dist/shared/{stacks-bq0weg6n.js → stacks-1mpmzzyp.js} +5 -5
  4. package/dist/shared/{stacks-18jv9aen.js → stacks-4z72akdf.js} +11 -32
  5. package/dist/shared/stacks-4z72akdf.js.map +12 -0
  6. package/dist/shared/{stacks-r2yw4xzb.js → stacks-6bgh2c9h.js} +3 -3
  7. package/dist/shared/{stacks-mbnfwekf.js → stacks-9d2d0qjc.js} +3 -3
  8. package/dist/shared/{stacks-6xt8py97.cjs → stacks-agk106zs.cjs} +7 -27
  9. package/dist/shared/stacks-agk106zs.cjs.map +12 -0
  10. package/dist/shared/{stacks-gfm3r397.cjs → stacks-bfan7ex7.js} +27 -2
  11. package/dist/shared/stacks-bfan7ex7.js.map +11 -0
  12. package/dist/shared/{stacks-x94a1d6s.js → stacks-bm49tsh0.js} +2 -2
  13. package/dist/shared/{stacks-qchg7s2m.js → stacks-gkf9tsws.js} +3 -3
  14. package/dist/shared/{stacks-cyeajysa.js → stacks-jknrzd6v.js} +2 -2
  15. package/dist/shared/{stacks-sd9sc71n.js → stacks-jx146qf1.js} +3 -3
  16. package/dist/shared/{stacks-xh87kdz8.cjs → stacks-q34k4vnc.cjs} +15 -11
  17. package/dist/shared/stacks-q34k4vnc.cjs.map +12 -0
  18. package/dist/shared/{stacks-1x9b2k5y.js → stacks-r1m1r72q.js} +6 -6
  19. package/dist/shared/{stacks-m77szbay.js → stacks-rw2xbtdv.js} +2 -2
  20. package/dist/shared/{stacks-2mm20wqf.js → stacks-ttdk2g2f.js} +2 -2
  21. package/dist/shared/{stacks-ch5vshcd.js → stacks-v1hzk599.js} +7 -7
  22. package/dist/shared/{stacks-p2c0w0sq.js → stacks-w8tt1fmt.js} +3 -3
  23. package/dist/shared/{stacks-azp00pve.js → stacks-x5386y2y.cjs} +16 -13
  24. package/dist/shared/stacks-x5386y2y.cjs.map +11 -0
  25. package/dist/src/actions/index.js +12 -12
  26. package/dist/src/bitcoin/index.js +5 -5
  27. package/dist/src/bns/index.js +10 -10
  28. package/dist/src/clarity/index.d.cts +3 -0
  29. package/dist/src/clarity/index.d.ts +3 -0
  30. package/dist/src/clarity/index.js +7 -6
  31. package/dist/src/clarity/index.js.map +1 -1
  32. package/dist/src/connect/index.cjs +1 -2
  33. package/dist/src/connect/index.cjs.map +2 -2
  34. package/dist/src/connect/index.js +1 -2
  35. package/dist/src/connect/index.js.map +2 -2
  36. package/dist/src/filters/index.d.cts +18 -4
  37. package/dist/src/filters/index.d.ts +18 -4
  38. package/dist/src/filters/index.js +2 -2
  39. package/dist/src/index.d.cts +27 -15
  40. package/dist/src/index.d.ts +27 -15
  41. package/dist/src/index.js +11 -11
  42. package/dist/src/postconditions/index.js +2 -2
  43. package/dist/src/pox/index.js +9 -9
  44. package/dist/src/pox5/index.js +9 -9
  45. package/dist/src/sbtc/index.js +8 -8
  46. package/dist/src/stackingdao/index.js +9 -9
  47. package/dist/src/tools/index.cjs +1 -2
  48. package/dist/src/tools/index.cjs.map +4 -4
  49. package/dist/src/tools/index.js +1 -2
  50. package/dist/src/tools/index.js.map +4 -4
  51. package/dist/src/transactions/index.js +4 -4
  52. package/dist/src/utils/index.cjs +3 -1
  53. package/dist/src/utils/index.cjs.map +2 -2
  54. package/dist/src/utils/index.d.cts +13 -1
  55. package/dist/src/utils/index.d.ts +13 -1
  56. package/dist/src/utils/index.js +6 -2
  57. package/dist/src/utils/index.js.map +2 -2
  58. package/dist/src/x402/index.js +7 -7
  59. package/package.json +1 -1
  60. package/dist/shared/stacks-0j16z8ev.js.map +0 -12
  61. package/dist/shared/stacks-18jv9aen.js.map +0 -13
  62. package/dist/shared/stacks-6xt8py97.cjs.map +0 -13
  63. package/dist/shared/stacks-azp00pve.js.map +0 -11
  64. package/dist/shared/stacks-gfm3r397.cjs.map +0 -11
  65. package/dist/shared/stacks-xh87kdz8.cjs.map +0 -12
  66. /package/dist/shared/{stacks-bq0weg6n.js.map → stacks-1mpmzzyp.js.map} +0 -0
  67. /package/dist/shared/{stacks-r2yw4xzb.js.map → stacks-6bgh2c9h.js.map} +0 -0
  68. /package/dist/shared/{stacks-mbnfwekf.js.map → stacks-9d2d0qjc.js.map} +0 -0
  69. /package/dist/shared/{stacks-x94a1d6s.js.map → stacks-bm49tsh0.js.map} +0 -0
  70. /package/dist/shared/{stacks-qchg7s2m.js.map → stacks-gkf9tsws.js.map} +0 -0
  71. /package/dist/shared/{stacks-cyeajysa.js.map → stacks-jknrzd6v.js.map} +0 -0
  72. /package/dist/shared/{stacks-sd9sc71n.js.map → stacks-jx146qf1.js.map} +0 -0
  73. /package/dist/shared/{stacks-1x9b2k5y.js.map → stacks-r1m1r72q.js.map} +0 -0
  74. /package/dist/shared/{stacks-m77szbay.js.map → stacks-rw2xbtdv.js.map} +0 -0
  75. /package/dist/shared/{stacks-2mm20wqf.js.map → stacks-ttdk2g2f.js.map} +0 -0
  76. /package/dist/shared/{stacks-ch5vshcd.js.map → stacks-v1hzk599.js.map} +0 -0
  77. /package/dist/shared/{stacks-p2c0w0sq.js.map → stacks-w8tt1fmt.js.map} +0 -0
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  Cl,
3
3
  serializeCVBytes
4
- } from "./stacks-2mm20wqf.js";
4
+ } from "./stacks-ttdk2g2f.js";
5
5
  import {
6
6
  parseContractId
7
- } from "./stacks-azp00pve.js";
7
+ } from "./stacks-bfan7ex7.js";
8
8
  import {
9
9
  asciiToBytes,
10
10
  bytesToHex,
@@ -950,4 +950,4 @@ async function signSponsorWithAccount(tx, account) {
950
950
  export { AuthType, PayloadType, ClarityVersion, AnchorMode, PostConditionModeWire, AddressHashMode, PubKeyEncoding, FungibleConditionCode, NonFungibleConditionCode, PoxConditionCode, PostConditionPrincipalId, AssetType, AuthFieldType, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, MEMO_MAX_LENGTH_BYTES, MAX_STRING_LENGTH_BYTES, COINBASE_BYTES_LENGTH, VRF_PROOF_BYTES_LENGTH, MICROBLOCK_HEADER_BYTES_LENGTH, TenureChangeCause, serializePayload, clearTxCache, serializeTransaction, serializeTransactionHex, createSingleSigSpendingCondition, createStandardAuth, createSponsoredAuth, sigHashPreSign, sigHashPostSign, nextSignature, isNonSequential, makeMultiSigAddress, createMultiSigSpendingCondition, replayMultiSigSigHash, signMultiSig, signMultiSigWithAccount, finalizeMultiSig, combineMultiSigSignatures, buildTokenTransfer, buildContractCall, buildContractDeploy, signBegin, signTransaction, signTransactionWithAccount, getTransactionId, getOriginSigHash, signSponsor, signSponsorWithAccount };
951
951
 
952
952
  //# debugId=3D603C602BD8172F64756E2164756E21
953
- //# sourceMappingURL=stacks-sd9sc71n.js.map
953
+ //# sourceMappingURL=stacks-jx146qf1.js.map
@@ -55,15 +55,7 @@ function assetId(value) {
55
55
  return value;
56
56
  }
57
57
  function isPrincipal(value) {
58
- const parts = value.split(".");
59
- if (parts.length > 2)
60
- return false;
61
- const [addr, contractName] = parts;
62
- if (!addr || !isValidAddress(addr))
63
- return false;
64
- if (parts.length === 2 && !contractName)
65
- return false;
66
- return true;
58
+ return parsePrincipal(value) !== null;
67
59
  }
68
60
  function hasWildcard(value) {
69
61
  return value.includes("*");
@@ -145,6 +137,9 @@ function toChainTrigger(spec) {
145
137
  for (const [key, value] of specEntries(spec)) {
146
138
  if (DECORATIVE_FIELDS.has(key))
147
139
  continue;
140
+ if (key === "factory") {
141
+ unsupported("Subscriptions", "factory", "dynamic factory discovery is a Subgraphs-only concept — a trigger targets addresses known when it is created");
142
+ }
148
143
  if (Array.isArray(value)) {
149
144
  unsupported("Subscriptions", `${key} set`, "a chain trigger targets ONE contract — create one subscription per contract, or use Index/Subgraphs which accept the set");
150
145
  }
@@ -161,6 +156,9 @@ function toIndexParams(spec, extra = {}) {
161
156
  for (const [key, value] of specEntries(spec)) {
162
157
  if (DECORATIVE_FIELDS.has(key))
163
158
  continue;
159
+ if (key === "factory") {
160
+ unsupported("Index events", "factory", "dynamic factory discovery is a Subgraphs-only concept");
161
+ }
164
162
  if (AMOUNT_FIELDS.has(key)) {
165
163
  unsupported("Index events", key, "amount predicates are Subscriptions/Subgraphs-only; filter client-side on the decoded rows");
166
164
  }
@@ -186,6 +184,9 @@ function toStreamsParams(spec, extra = {}) {
186
184
  for (const [key, value] of specEntries(spec)) {
187
185
  if (DECORATIVE_FIELDS.has(key))
188
186
  continue;
187
+ if (key === "factory") {
188
+ unsupported("Streams", "factory", "dynamic factory discovery is a Subgraphs-only concept");
189
+ }
189
190
  if (AMOUNT_FIELDS.has(key)) {
190
191
  unsupported("Streams", key, "amount predicates are Subscriptions/Subgraphs-only");
191
192
  }
@@ -209,6 +210,9 @@ function toContractCallsParams(spec, extra = {}) {
209
210
  for (const [key, value] of specEntries(spec)) {
210
211
  if (DECORATIVE_FIELDS.has(key))
211
212
  continue;
213
+ if (key === "factory") {
214
+ unsupported("Index contract-calls", "factory", "dynamic factory discovery is a Subgraphs-only concept");
215
+ }
212
216
  if (key === "caller") {
213
217
  out.sender = value;
214
218
  continue;
@@ -278,5 +282,5 @@ var on = {
278
282
  sbtcWithdrawalSweptConfirmed: (fields = {}) => makeChainEventFilter("sbtc_withdrawal_swept_confirmed", fields)
279
283
  };
280
284
 
281
- //# debugId=287B8CB0793CF87664756E2164756E21
282
- //# sourceMappingURL=stacks-xh87kdz8.cjs.map
285
+ //# debugId=FE77C5A2D1B3071D64756E2164756E21
286
+ //# sourceMappingURL=stacks-q34k4vnc.cjs.map
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/filters/event-types.ts", "../src/filters/validate.ts", "../src/filters/factories.ts"],
4
+ "sourcesContent": [
5
+ "// The decoded event-type vocabulary — canonical home. Index (decoded layer)\n// and Streams (canonical firehose) expose the SAME set. This lives in\n// @secondlayer/stacks because it is the leaf of the dependency graph\n// (shared → stacks), so no package can drift a private copy upward:\n// @secondlayer/shared re-exports it for back-compat.\nexport const DECODED_EVENT_TYPES = [\n\t\"stx_transfer\",\n\t\"stx_mint\",\n\t\"stx_burn\",\n\t\"stx_lock\",\n\t\"ft_transfer\",\n\t\"ft_mint\",\n\t\"ft_burn\",\n\t\"nft_transfer\",\n\t\"nft_mint\",\n\t\"nft_burn\",\n\t\"print\",\n] as const;\n\nexport type DecodedEventType = (typeof DECODED_EVENT_TYPES)[number];\n\n/** Every chain-event filter member across all four surfaces: the 10 decoded\n * token/STX types, the three contract-shaped types (spelled as subgraphs and\n * triggers spell them — Index/Streams project `print_event` → `print`), and\n * the five sBTC lifecycle types (Subscriptions-only). */\nexport const CHAIN_EVENT_FILTER_TYPES = [\n\t\"stx_transfer\",\n\t\"stx_mint\",\n\t\"stx_burn\",\n\t\"stx_lock\",\n\t\"ft_transfer\",\n\t\"ft_mint\",\n\t\"ft_burn\",\n\t\"nft_transfer\",\n\t\"nft_mint\",\n\t\"nft_burn\",\n\t\"contract_call\",\n\t\"contract_deploy\",\n\t\"print_event\",\n\t\"sbtc_deposit\",\n\t\"sbtc_withdrawal_create\",\n\t\"sbtc_withdrawal_accept\",\n\t\"sbtc_withdrawal_reject\",\n\t\"sbtc_withdrawal_swept_confirmed\",\n] as const;\n\nexport type ChainEventFilterType = (typeof CHAIN_EVENT_FILTER_TYPES)[number];\n",
6
+ "import { parsePrincipal } from \"../utils/address.ts\";\n\n/** A validated Stacks principal (standard or contract). Branded so downstream\n * code can require \"already validated\" without re-checking. */\nexport type Principal = string & { readonly __principal: unique symbol };\n\n/**\n * `<contract>::<asset-name>` — the shape a fungible/non-fungible asset filter\n * takes, expressed so the compiler can check it.\n *\n * The most common mistake in this API is passing a CONTRACT ID\n * (`SP….sbtc-token`) where an asset identifier (`SP….sbtc-token::sbtc-token`)\n * belongs, and the failure mode is a query that quietly returns zero rows. The\n * two differ structurally by `::`, so a template-literal type catches it at the\n * call site — no brand, no cast, literals just work.\n *\n * A value that is only known at runtime (config, env) is not narrow enough on\n * purpose; run it through {@link assetId} once, which validates and narrows.\n *\n * Wildcard patterns (Subscriptions/Subgraphs-only) are admitted by the second arm — they\n * are legitimately not full identifiers (`SPB.*`), and the runtime validator\n * short-circuits on them for the same reason.\n */\nexport type AssetIdentifier = `${string}::${string}` | `${string}*${string}`;\n\n/**\n * Narrow a runtime string to an {@link AssetIdentifier}, validating it.\n *\n * The escape hatch for config-driven values: `assetId(process.env.ASSET!)`\n * throws on a contract id instead of letting it through to a zero-row query.\n */\nexport function assetId(value: string): AssetIdentifier {\n\tassertAssetIdentifier(\"assetIdentifier\", value);\n\treturn value as AssetIdentifier;\n}\n\n/** `true` for a standard (`SP…`/`ST…`) or contract (`SP….name`) principal.\n * Shares {@link parsePrincipal} with the ABI guards so the two surfaces can't\n * disagree about what a principal is. */\nexport function isPrincipal(value: string): value is Principal {\n\treturn parsePrincipal(value) !== null;\n}\n\n/** Subscriptions and Subgraph sources match `*` wildcards in\n * principal/identifier patterns; every\n * other surface treats the value literally. */\nexport function hasWildcard(value: string): boolean {\n\treturn value.includes(\"*\");\n}\n\n/** Throw unless `value` is a principal or a wildcard pattern. The factories\n * call this so a swapped argument (asset id where a sender belongs, typo'd\n * address) fails at construction — not as a silent zero-row query. */\nexport function assertPrincipalish(field: string, value: string): void {\n\tif (hasWildcard(value)) return;\n\tif (!isPrincipal(value)) {\n\t\tthrow new Error(\n\t\t\t`${field} \"${value}\" is not a valid Stacks principal (SP…/ST…, optionally .contract-name).`,\n\t\t);\n\t}\n}\n\n/** Throw unless `value` looks like `SP….contract::asset` (or a wildcard). */\nexport function assertAssetIdentifier(field: string, value: string): void {\n\tif (hasWildcard(value)) return;\n\tconst [contractId, assetName, ...rest] = value.split(\"::\");\n\tif (\n\t\t!contractId ||\n\t\t!assetName ||\n\t\trest.length > 0 ||\n\t\t!contractId.includes(\".\") ||\n\t\t!isPrincipal(contractId)\n\t) {\n\t\tthrow new Error(\n\t\t\t`${field} \"${value}\" is not a valid asset identifier (SP….contract-name::asset-name). Passing a bare contract id here matches zero rows — use contractId for that.`,\n\t\t);\n\t}\n}\n\n/** Throw unless `value` is a contract id `SP….name` (or a wildcard). */\nexport function assertContractId(field: string, value: string): void {\n\tif (hasWildcard(value)) return;\n\tif (value.includes(\"::\")) {\n\t\tthrow new Error(\n\t\t\t`${field} \"${value}\" is an asset identifier, not a contract id — use assetIdentifier for that.`,\n\t\t);\n\t}\n\tif (!value.includes(\".\") || !isPrincipal(value)) {\n\t\tthrow new Error(\n\t\t\t`${field} \"${value}\" is not a valid contract id (SP….contract-name).`,\n\t\t);\n\t}\n}\n",
7
+ "import type { AbiContract } from \"../clarity/abi/contract.ts\";\nimport type { ChainEventFilterType } from \"./event-types.ts\";\nimport type { SubgraphMemberType, SubgraphSourceSpec } from \"./types.ts\";\nimport type {\n\tChainEventFilter,\n\tChainEventFilterSpec,\n\tChainTriggerShape,\n\tContractCallsParamsShape,\n\tIndexEventsParamsShape,\n\tPrintFieldType,\n\tSpecFor,\n\tStreamsParamsShape,\n} from \"./types.ts\";\nimport {\n\tassertAssetIdentifier,\n\tassertContractId,\n\tassertPrincipalish,\n\thasWildcard,\n} from \"./validate.ts\";\n\n// ── Field metadata driving validation and projections ────────────────────\n\nconst PRINCIPAL_FIELDS = new Set([\n\t\"sender\",\n\t\"recipient\",\n\t\"caller\",\n\t\"deployer\",\n\t\"lockedAddress\",\n]);\nconst AMOUNT_FIELDS = new Set([\"minAmount\", \"maxAmount\"]);\n/** Fields with no filtering semantics — safe to drop in a projection. */\nconst DECORATIVE_FIELDS = new Set([\"abi\", \"prints\"]);\n\nfunction specEntries(spec: ChainEventFilterSpec): Array<[string, unknown]> {\n\treturn Object.entries(spec).filter(\n\t\t([key, value]) => key !== \"type\" && value !== undefined,\n\t);\n}\n\nfunction validateSpec(spec: ChainEventFilterSpec): void {\n\tfor (const [key, value] of specEntries(spec)) {\n\t\tif (PRINCIPAL_FIELDS.has(key)) {\n\t\t\tassertPrincipalish(key, value as string);\n\t\t} else if (key === \"assetIdentifier\") {\n\t\t\tassertAssetIdentifier(key, value as string);\n\t\t} else if (key === \"contractId\") {\n\t\t\t// A contract SET validates member-wise — one bad id in a router+pools\n\t\t\t// list must fail as loudly as a bad single id.\n\t\t\tfor (const id of Array.isArray(value) ? value : [value]) {\n\t\t\t\tassertContractId(key, id as string);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Throw for a field the target surface cannot express — dropping it would\n * silently widen the match, which is the exact bug this module exists to\n * kill. Names the surface that CAN express it. */\nfunction unsupported(surface: string, field: string, hint: string): never {\n\tthrow new Error(\n\t\t`${field} cannot be expressed on ${surface} — ${hint}. Drop the field from the filter or use the surface that supports it.`,\n\t);\n}\n\nfunction assertNoWildcards(surface: string, spec: ChainEventFilterSpec): void {\n\tfor (const [key, value] of specEntries(spec)) {\n\t\t// Arrays too: a wildcard inside a contractId set would otherwise reach\n\t\t// the wire as a literal `IN ('SP….pool-*')` — the silent zero-row match\n\t\t// this module exists to kill.\n\t\tconst candidates = Array.isArray(value) ? value : [value];\n\t\tfor (const candidate of candidates) {\n\t\t\tif (typeof candidate === \"string\" && hasWildcard(candidate)) {\n\t\t\t\tunsupported(\n\t\t\t\t\tsurface,\n\t\t\t\t\t`${key} wildcard \"${candidate}\"`,\n\t\t\t\t\t\"wildcard patterns are Subscriptions/Subgraphs-only\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** The Index API treats `trait` and `contractId` as mutually exclusive (a\n * trait already resolves to a contract set). Throw here, naming the fix,\n * instead of letting the pair reach the server as a 400. Subgraphs AND them\n * — that surface accepts both. */\nfunction assertNotTraitAndContract(\n\tsurface: string,\n\tspec: ChainEventFilterSpec,\n): void {\n\tconst trait = \"trait\" in spec ? spec.trait : undefined;\n\tconst contract = \"contractId\" in spec ? spec.contractId : undefined;\n\tif (trait !== undefined && contract !== undefined) {\n\t\tunsupported(\n\t\t\tsurface,\n\t\t\t\"trait with contractId\",\n\t\t\t\"the Index treats them as mutually exclusive — drop one, or use a subgraph source, which ANDs the pair\",\n\t\t);\n\t}\n}\n\n// ── Projections ──────────────────────────────────────────────────────────\n\nfunction toChainTrigger(spec: ChainEventFilterSpec): ChainTriggerShape {\n\tconst out: Record<string, string | number> = {};\n\tfor (const [key, value] of specEntries(spec)) {\n\t\tif (DECORATIVE_FIELDS.has(key)) continue;\n\t\tif (key === \"factory\") {\n\t\t\tunsupported(\n\t\t\t\t\"Subscriptions\",\n\t\t\t\t\"factory\",\n\t\t\t\t\"dynamic factory discovery is a Subgraphs-only concept — a trigger targets addresses known when it is created\",\n\t\t\t);\n\t\t}\n\t\tif (Array.isArray(value)) {\n\t\t\t// One trigger, one contract: silently taking the first would watch\n\t\t\t// a fraction of what the filter says. Create one subscription per\n\t\t\t// contract instead.\n\t\t\tunsupported(\n\t\t\t\t\"Subscriptions\",\n\t\t\t\t`${key} set`,\n\t\t\t\t\"a chain trigger targets ONE contract — create one subscription per contract, or use Index/Subgraphs which accept the set\",\n\t\t\t);\n\t\t}\n\t\t// The one sanctioned bigint→string boundary.\n\t\tout[key] =\n\t\t\ttypeof value === \"bigint\" ? value.toString() : (value as string | number);\n\t}\n\treturn { type: spec.type, ...out };\n}\n\nfunction toIndexParams(\n\tspec: ChainEventFilterSpec,\n\textra: Record<string, unknown> = {},\n): IndexEventsParamsShape {\n\tassertNoWildcards(\"Index events\", spec);\n\tassertNotTraitAndContract(\"Index events\", spec);\n\tconst out: Record<string, unknown> = {\n\t\teventType: spec.type === \"print_event\" ? \"print\" : spec.type,\n\t};\n\tfor (const [key, value] of specEntries(spec)) {\n\t\tif (DECORATIVE_FIELDS.has(key)) continue;\n\t\tif (key === \"factory\") {\n\t\t\tunsupported(\n\t\t\t\t\"Index events\",\n\t\t\t\t\"factory\",\n\t\t\t\t\"dynamic factory discovery is a Subgraphs-only concept\",\n\t\t\t);\n\t\t}\n\t\tif (AMOUNT_FIELDS.has(key)) {\n\t\t\tunsupported(\n\t\t\t\t\"Index events\",\n\t\t\t\tkey,\n\t\t\t\t\"amount predicates are Subscriptions/Subgraphs-only; filter client-side on the decoded rows\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"topic\") {\n\t\t\tunsupported(\n\t\t\t\t\"Index events\",\n\t\t\t\t\"topic\",\n\t\t\t\t\"per-topic reads are Subgraphs/Subscriptions-only (or read the contract's print feed and switch on topic)\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"lockedAddress\") {\n\t\t\t// Index normalizes stx_lock's locked_address INTO the `sender` column\n\t\t\t// (the row's sender IS the locked address) — a rename, not a gap.\n\t\t\tout.sender = value;\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"caller\") {\n\t\t\tunsupported(\n\t\t\t\t\"Index events\",\n\t\t\t\t\"caller\",\n\t\t\t\t\"contract-call fields live on index.contractCalls\",\n\t\t\t);\n\t\t}\n\t\tout[key] = value;\n\t}\n\treturn { ...out, ...extra } as IndexEventsParamsShape;\n}\n\nfunction toStreamsParams(\n\tspec: ChainEventFilterSpec,\n\textra: Record<string, unknown> = {},\n): StreamsParamsShape {\n\tassertNoWildcards(\"Streams\", spec);\n\tconst out: Record<string, unknown> = {\n\t\ttypes: [spec.type === \"print_event\" ? \"print\" : spec.type],\n\t};\n\tfor (const [key, value] of specEntries(spec)) {\n\t\tif (DECORATIVE_FIELDS.has(key)) continue;\n\t\tif (key === \"factory\") {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\t\"factory\",\n\t\t\t\t\"dynamic factory discovery is a Subgraphs-only concept\",\n\t\t\t);\n\t\t}\n\t\tif (AMOUNT_FIELDS.has(key)) {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\tkey,\n\t\t\t\t\"amount predicates are Subscriptions/Subgraphs-only\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"trait\") {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\t\"trait\",\n\t\t\t\t\"Streams has no trait resolution — Index and Subgraphs do\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"topic\") {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\t\"topic\",\n\t\t\t\t\"per-topic filtering is Subgraphs/Subscriptions-only\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"lockedAddress\") {\n\t\t\tunsupported(\n\t\t\t\t\"Streams\",\n\t\t\t\t\"lockedAddress\",\n\t\t\t\t\"stx_lock address filtering is Subscriptions/Subgraphs-only\",\n\t\t\t);\n\t\t}\n\t\tout[key] = value;\n\t}\n\treturn { ...out, ...extra } as StreamsParamsShape;\n}\n\nfunction toContractCallsParams(\n\tspec: ChainEventFilterSpec,\n\textra: Record<string, unknown> = {},\n): ContractCallsParamsShape {\n\tassertNoWildcards(\"Index contract-calls\", spec);\n\tassertNotTraitAndContract(\"Index contract-calls\", spec);\n\tconst out: Record<string, unknown> = {};\n\tfor (const [key, value] of specEntries(spec)) {\n\t\tif (DECORATIVE_FIELDS.has(key)) continue;\n\t\tif (key === \"factory\") {\n\t\t\tunsupported(\n\t\t\t\t\"Index contract-calls\",\n\t\t\t\t\"factory\",\n\t\t\t\t\"dynamic factory discovery is a Subgraphs-only concept\",\n\t\t\t);\n\t\t}\n\t\tif (key === \"caller\") {\n\t\t\t// The endpoint filters by tx sender, which IS the caller — a rename,\n\t\t\t// not a gap.\n\t\t\tout.sender = value;\n\t\t\tcontinue;\n\t\t}\n\t\tout[key] = value;\n\t}\n\treturn { ...out, ...extra } as ContractCallsParamsShape;\n}\n\nfunction toSubgraphSource(spec: ChainEventFilterSpec): ChainEventFilterSpec {\n\t// The spec IS the subgraph source shape (camelCase, bigint amounts,\n\t// literal prints/abi preserved). Strip the projection methods by copying\n\t// data fields only.\n\treturn Object.fromEntries([\n\t\t[\"type\", spec.type],\n\t\t...specEntries(spec),\n\t]) as unknown as ChainEventFilterSpec;\n}\n\n// ── Factory ──────────────────────────────────────────────────────────────\n\nconst DECODED_MEMBERS = new Set<ChainEventFilterType>([\n\t\"stx_transfer\",\n\t\"stx_mint\",\n\t\"stx_burn\",\n\t\"stx_lock\",\n\t\"ft_transfer\",\n\t\"ft_mint\",\n\t\"ft_burn\",\n\t\"nft_transfer\",\n\t\"nft_mint\",\n\t\"nft_burn\",\n\t\"print_event\",\n]);\n\n/** Build a canonical filter: validated spec + the projections its member\n * supports (methods are attached per member at runtime, matching the\n * type-level gating exactly). `const F` preserves field literals — a\n * `prints`/`abi` declaration keeps its exact type through\n * `toSubgraphSource()`, which is what feeds `defineSubgraph` narrowing. */\nexport function makeChainEventFilter<\n\tT extends ChainEventFilterType,\n\tconst F extends Omit<SpecFor<T>, \"type\">,\n>(type: T, fields: F): ChainEventFilter<T, { type: T } & F> {\n\tconst spec = { type, ...fields } as unknown as SpecFor<T>;\n\tvalidateSpec(spec);\n\n\tconst filter = { ...spec } as unknown as Record<string, unknown>;\n\tfilter.toChainTrigger = () => toChainTrigger(spec);\n\tif (DECODED_MEMBERS.has(type)) {\n\t\tfilter.toIndexParams = (extra?: Record<string, unknown>) =>\n\t\t\ttoIndexParams(spec, extra);\n\t\tfilter.toStreamsParams = (extra?: Record<string, unknown>) =>\n\t\t\ttoStreamsParams(spec, extra);\n\t}\n\tif (type === \"contract_call\") {\n\t\tfilter.toContractCallsParams = (extra?: Record<string, unknown>) =>\n\t\t\ttoContractCallsParams(spec, extra);\n\t}\n\tif (!type.startsWith(\"sbtc_\")) {\n\t\tfilter.toSubgraphSource = () => toSubgraphSource(spec);\n\t}\n\treturn filter as unknown as ChainEventFilter<T, { type: T } & F>;\n}\n\n/**\n * Rehydrate a canonical filter from a subgraph-source-shaped object (the\n * inverse of `toSubgraphSource`). Powers migration and the round-trip\n * property gate: `toSubgraphSource(fromSubgraphSource(f))` must deep-equal\n * `f` for every production subgraph source.\n */\nexport function fromSubgraphSource(\n\tsource: SubgraphSourceSpec,\n): ChainEventFilter<SubgraphMemberType> {\n\tconst { type, ...fields } = source;\n\treturn makeChainEventFilter(\n\t\ttype,\n\t\tfields as Omit<SpecFor<typeof type>, \"type\">,\n\t) as unknown as ChainEventFilter<SubgraphMemberType>;\n}\n\ntype Fields<T extends ChainEventFilterType> = Omit<SpecFor<T>, \"type\">;\n\n/** The `on.*` namespace, annotated explicitly — bunup's dts emitter needs an\n * annotation on exported values (an inferred object of generic factories\n * collapses to `{}` in the emitted declarations). */\nexport interface OnNamespace {\n\tstxTransfer(\n\t\tfields?: Fields<\"stx_transfer\">,\n\t): ChainEventFilter<\"stx_transfer\">;\n\tstxMint(fields?: Fields<\"stx_mint\">): ChainEventFilter<\"stx_mint\">;\n\tstxBurn(fields?: Fields<\"stx_burn\">): ChainEventFilter<\"stx_burn\">;\n\tstxLock(fields?: Fields<\"stx_lock\">): ChainEventFilter<\"stx_lock\">;\n\tftTransfer(fields?: Fields<\"ft_transfer\">): ChainEventFilter<\"ft_transfer\">;\n\tftMint(fields?: Fields<\"ft_mint\">): ChainEventFilter<\"ft_mint\">;\n\tftBurn(fields?: Fields<\"ft_burn\">): ChainEventFilter<\"ft_burn\">;\n\tnftTransfer(\n\t\tfields?: Fields<\"nft_transfer\">,\n\t): ChainEventFilter<\"nft_transfer\">;\n\tnftMint(fields?: Fields<\"nft_mint\">): ChainEventFilter<\"nft_mint\">;\n\tnftBurn(fields?: Fields<\"nft_burn\">): ChainEventFilter<\"nft_burn\">;\n\t/** `abi` literals are preserved (`const A`) so `toSubgraphSource()` keeps\n\t * typing `event.input` inside `defineSubgraph`. */\n\tcontractCall<const A extends AbiContract | undefined = undefined>(\n\t\tfields?: Omit<SpecFor<\"contract_call\">, \"type\" | \"abi\"> & { abi?: A },\n\t): ChainEventFilter<\n\t\t\"contract_call\",\n\t\t{ type: \"contract_call\" } & Omit<\n\t\t\tSpecFor<\"contract_call\">,\n\t\t\t\"type\" | \"abi\"\n\t\t> & {\n\t\t\t\tabi?: A;\n\t\t\t}\n\t>;\n\tcontractDeploy(\n\t\tfields?: Fields<\"contract_deploy\">,\n\t): ChainEventFilter<\"contract_deploy\">;\n\t/** Canonical member is `print_event` (as Subgraphs and Subscriptions spell\n\t * it); `toIndexParams`/`toStreamsParams` project to `print`. `prints`\n\t * literals are preserved (`const P`) for per-topic `event.data` narrowing. */\n\tprint<\n\t\tconst P extends\n\t\t\t| Record<string, Record<string, PrintFieldType>>\n\t\t\t| undefined = undefined,\n\t>(\n\t\tfields?: Omit<SpecFor<\"print_event\">, \"type\" | \"prints\"> & { prints?: P },\n\t): ChainEventFilter<\n\t\t\"print_event\",\n\t\t{ type: \"print_event\" } & Omit<\n\t\t\tSpecFor<\"print_event\">,\n\t\t\t\"type\" | \"prints\"\n\t\t> & {\n\t\t\t\tprints?: P;\n\t\t\t}\n\t>;\n\tsbtcDeposit(\n\t\tfields?: Fields<\"sbtc_deposit\">,\n\t): ChainEventFilter<\"sbtc_deposit\">;\n\tsbtcWithdrawalCreate(\n\t\tfields?: Fields<\"sbtc_withdrawal_create\">,\n\t): ChainEventFilter<\"sbtc_withdrawal_create\">;\n\tsbtcWithdrawalAccept(\n\t\tfields?: Fields<\"sbtc_withdrawal_accept\">,\n\t): ChainEventFilter<\"sbtc_withdrawal_accept\">;\n\tsbtcWithdrawalReject(\n\t\tfields?: Fields<\"sbtc_withdrawal_reject\">,\n\t): ChainEventFilter<\"sbtc_withdrawal_reject\">;\n\tsbtcWithdrawalSweptConfirmed(\n\t\tfields?: Fields<\"sbtc_withdrawal_swept_confirmed\">,\n\t): ChainEventFilter<\"sbtc_withdrawal_swept_confirmed\">;\n}\n\n/**\n * `on.*` — one filter vocabulary for every surface.\n *\n * ```ts\n * import { on } from \"@secondlayer/stacks/filters\";\n *\n * const usdc = on.ftTransfer({ assetIdentifier: USDC, minAmount: 1_000_000n });\n *\n * sl.index.events.list(usdc.toIndexParams({ limit: 100 })); // pull\n * sl.streams.events.consume({ ...usdc.toStreamsParams(), onBatch });\n * sl.subscriptions.create({ name, url, triggers: [usdc.toChainTrigger()] });\n * defineSubgraph({ sources: { usdc: usdc.toSubgraphSource() }, schema, handlers });\n * ```\n *\n * A surface a member can't reach is a missing method (compile error), and a\n * field a surface can't express throws at projection time — never a silent\n * zero-row or over-wide match.\n */\nexport const on: OnNamespace = {\n\tstxTransfer: (fields: Fields<\"stx_transfer\"> = {}) =>\n\t\tmakeChainEventFilter(\"stx_transfer\", fields),\n\tstxMint: (fields: Fields<\"stx_mint\"> = {}) =>\n\t\tmakeChainEventFilter(\"stx_mint\", fields),\n\tstxBurn: (fields: Fields<\"stx_burn\"> = {}) =>\n\t\tmakeChainEventFilter(\"stx_burn\", fields),\n\tstxLock: (fields: Fields<\"stx_lock\"> = {}) =>\n\t\tmakeChainEventFilter(\"stx_lock\", fields),\n\tftTransfer: (fields: Fields<\"ft_transfer\"> = {}) =>\n\t\tmakeChainEventFilter(\"ft_transfer\", fields),\n\tftMint: (fields: Fields<\"ft_mint\"> = {}) =>\n\t\tmakeChainEventFilter(\"ft_mint\", fields),\n\tftBurn: (fields: Fields<\"ft_burn\"> = {}) =>\n\t\tmakeChainEventFilter(\"ft_burn\", fields),\n\tnftTransfer: (fields: Fields<\"nft_transfer\"> = {}) =>\n\t\tmakeChainEventFilter(\"nft_transfer\", fields),\n\tnftMint: (fields: Fields<\"nft_mint\"> = {}) =>\n\t\tmakeChainEventFilter(\"nft_mint\", fields),\n\tnftBurn: (fields: Fields<\"nft_burn\"> = {}) =>\n\t\tmakeChainEventFilter(\"nft_burn\", fields),\n\tcontractCall: <const A extends AbiContract | undefined = undefined>(\n\t\tfields: Omit<SpecFor<\"contract_call\">, \"type\" | \"abi\"> & { abi?: A } = {},\n\t) => makeChainEventFilter(\"contract_call\", fields),\n\tcontractDeploy: (fields: Fields<\"contract_deploy\"> = {}) =>\n\t\tmakeChainEventFilter(\"contract_deploy\", fields),\n\t/** Canonical member is `print_event` (as Subgraphs and Subscriptions spell\n\t * it); `toIndexParams`/`toStreamsParams` project to `print`. */\n\tprint: <\n\t\tconst P extends\n\t\t\t| Record<string, Record<string, PrintFieldType>>\n\t\t\t| undefined = undefined,\n\t>(\n\t\tfields: Omit<SpecFor<\"print_event\">, \"type\" | \"prints\"> & {\n\t\t\tprints?: P;\n\t\t} = {},\n\t) => makeChainEventFilter(\"print_event\", fields),\n\tsbtcDeposit: (fields: Fields<\"sbtc_deposit\"> = {}) =>\n\t\tmakeChainEventFilter(\"sbtc_deposit\", fields),\n\tsbtcWithdrawalCreate: (fields: Fields<\"sbtc_withdrawal_create\"> = {}) =>\n\t\tmakeChainEventFilter(\"sbtc_withdrawal_create\", fields),\n\tsbtcWithdrawalAccept: (fields: Fields<\"sbtc_withdrawal_accept\"> = {}) =>\n\t\tmakeChainEventFilter(\"sbtc_withdrawal_accept\", fields),\n\tsbtcWithdrawalReject: (fields: Fields<\"sbtc_withdrawal_reject\"> = {}) =>\n\t\tmakeChainEventFilter(\"sbtc_withdrawal_reject\", fields),\n\tsbtcWithdrawalSweptConfirmed: (\n\t\tfields: Fields<\"sbtc_withdrawal_swept_confirmed\"> = {},\n\t) => makeChainEventFilter(\"sbtc_withdrawal_swept_confirmed\", fields),\n};\n"
8
+ ],
9
+ "mappings": "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",
10
+ "debugId": "FE77C5A2D1B3071D64756E2164756E21",
11
+ "names": []
12
+ }
@@ -9,7 +9,7 @@ import {
9
9
  resolveFee,
10
10
  resolveNonce,
11
11
  setUnsignedFee
12
- } from "./stacks-mbnfwekf.js";
12
+ } from "./stacks-9d2d0qjc.js";
13
13
  import {
14
14
  MalformedResponseError
15
15
  } from "./stacks-fh48neva.js";
@@ -18,7 +18,7 @@ import {
18
18
  } from "./stacks-709tra19.js";
19
19
  import {
20
20
  deserializeTransaction
21
- } from "./stacks-qchg7s2m.js";
21
+ } from "./stacks-gkf9tsws.js";
22
22
  import {
23
23
  AddressHashMode,
24
24
  PayloadType,
@@ -27,17 +27,17 @@ import {
27
27
  serializeTransactionHex,
28
28
  signMultiSigWithAccount,
29
29
  signTransactionWithAccount
30
- } from "./stacks-sd9sc71n.js";
30
+ } from "./stacks-jx146qf1.js";
31
31
  import {
32
32
  Cl,
33
33
  deserializeCVBytes,
34
34
  serializeCVBytes
35
- } from "./stacks-2mm20wqf.js";
35
+ } from "./stacks-ttdk2g2f.js";
36
36
  import {
37
37
  isClarityName,
38
38
  parseContractId,
39
39
  validateStacksAddress
40
- } from "./stacks-azp00pve.js";
40
+ } from "./stacks-bfan7ex7.js";
41
41
  import {
42
42
  bytesToHex,
43
43
  c32address,
@@ -359,4 +359,4 @@ async function transferStx(client, params) {
359
359
  export { getAccountHistory, getAccountInfo, getBalance, getBlock, getContractAbi, getContractSource, getMempoolStats, getNftHoldings, getRawBlock, getTransaction, SimulationError, simulateCall, simulateTransaction, deployContract, signMessage, signTransactionAction, transferStx };
360
360
 
361
361
  //# debugId=6BA11CC77A75CCA264756E2164756E21
362
- //# sourceMappingURL=stacks-1x9b2k5y.js.map
362
+ //# sourceMappingURL=stacks-r1m1r72q.js.map
@@ -18,7 +18,7 @@ import {
18
18
  isUint128,
19
19
  isUint8Array,
20
20
  toCamelCase
21
- } from "./stacks-18jv9aen.js";
21
+ } from "./stacks-4z72akdf.js";
22
22
  import {
23
23
  asciiToBytes,
24
24
  bytesToAscii,
@@ -533,4 +533,4 @@ function normalizeAbi(abi) {
533
533
  export { prettyPrint, cvToJSON, cvToValue, cvToBigInt, cvToString, cvToBuffer, cvToBoolean, cvToPrincipal, ClarityConversionError, jsToClarity, prepareArgs, validateArgs, validateArgsArray, TRAIT_STANDARDS, classifyContract, parseDeclaredStandards, normalizeAccess, normalizeType, normalizeAbi };
534
534
 
535
535
  //# debugId=3AA88192024EB0C164756E2164756E21
536
- //# sourceMappingURL=stacks-m77szbay.js.map
536
+ //# sourceMappingURL=stacks-rw2xbtdv.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isClarityName
3
- } from "./stacks-azp00pve.js";
3
+ } from "./stacks-bfan7ex7.js";
4
4
  import {
5
5
  asciiToBytes,
6
6
  bigIntToBytes,
@@ -356,4 +356,4 @@ var Cl = {
356
356
  export { ClarityWireType, clarityTypeFromByte, serializeCVBytes, serializeCV, BytesReader, intCV, uintCV, trueCV, falseCV, boolCV, bufferCV, standardPrincipalCV, contractPrincipalCV, noneCV, someCV, responseOkCV, responseErrorCV, listCV, tupleCV, stringAsciiCV, stringUtf8CV, Cl, readAddress, readLPString, readCV, deserializeCVBytes, deserializeCV };
357
357
 
358
358
  //# debugId=75F450EFADB0433F64756E2164756E21
359
- //# sourceMappingURL=stacks-2mm20wqf.js.map
359
+ //# sourceMappingURL=stacks-ttdk2g2f.js.map
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  callContract,
3
3
  getMapEntry
4
- } from "./stacks-bq0weg6n.js";
4
+ } from "./stacks-1mpmzzyp.js";
5
5
  import {
6
6
  readContract
7
- } from "./stacks-r2yw4xzb.js";
7
+ } from "./stacks-6bgh2c9h.js";
8
8
  import {
9
9
  estimateFee,
10
10
  resolveNonce,
11
11
  setUnsignedFee
12
- } from "./stacks-mbnfwekf.js";
12
+ } from "./stacks-9d2d0qjc.js";
13
13
  import {
14
14
  clarityValueToJSUntyped,
15
15
  jsToClarityValue,
16
16
  toCamelCase
17
- } from "./stacks-18jv9aen.js";
17
+ } from "./stacks-4z72akdf.js";
18
18
  import {
19
19
  buildContractCall
20
- } from "./stacks-sd9sc71n.js";
20
+ } from "./stacks-jx146qf1.js";
21
21
  import {
22
22
  publicKeyToAddress
23
- } from "./stacks-azp00pve.js";
23
+ } from "./stacks-bfan7ex7.js";
24
24
 
25
25
  // src/actions/getContract.ts
26
26
  function getContract(params) {
@@ -190,4 +190,4 @@ class ContractResponseError extends Error {
190
190
  export { getContract, resolveNetworkContract, buildFunctionArgs, isResponseOutput, ContractResponseError };
191
191
 
192
192
  //# debugId=2BB182838FE177F864756E2164756E21
193
- //# sourceMappingURL=stacks-ch5vshcd.js.map
193
+ //# sourceMappingURL=stacks-v1hzk599.js.map
@@ -2,12 +2,12 @@ import {
2
2
  isProviderAccount,
3
3
  resolveFee,
4
4
  resolveNonce
5
- } from "./stacks-mbnfwekf.js";
5
+ } from "./stacks-9d2d0qjc.js";
6
6
  import {
7
7
  AuthType,
8
8
  createSingleSigSpendingCondition,
9
9
  signSponsorWithAccount
10
- } from "./stacks-sd9sc71n.js";
10
+ } from "./stacks-jx146qf1.js";
11
11
  import {
12
12
  intToBigInt
13
13
  } from "./stacks-qs5fzts5.js";
@@ -41,4 +41,4 @@ async function sponsorTransaction(client, params) {
41
41
  export { sponsorTransaction };
42
42
 
43
43
  //# debugId=AD4711CB97F1F3EB64756E2164756E21
44
- //# sourceMappingURL=stacks-p2c0w0sq.js.map
44
+ //# sourceMappingURL=stacks-w8tt1fmt.js.map
@@ -1,12 +1,3 @@
1
- import {
2
- bytesToHex,
3
- c32address,
4
- c32addressDecode,
5
- hash160,
6
- hexToBytes,
7
- without0x
8
- } from "./stacks-qs5fzts5.js";
9
-
10
1
  // src/utils/constants.ts
11
2
  var MAX_U128 = (1n << 128n) - 1n;
12
3
  var MAX_I128 = (1n << 127n) - 1n;
@@ -27,6 +18,7 @@ function publicKeyToAddress(publicKey, network = "mainnet") {
27
18
  const version = network === "mainnet" ? AddressVersion.MainnetSingleSig : AddressVersion.TestnetSingleSig;
28
19
  return c32address(version, bytesToHex(hash160(bytes)));
29
20
  }
21
+ var CONTRACT_NAME_REGEX = /^[a-zA-Z][a-zA-Z0-9_-]{0,127}$/;
30
22
  function validateStacksAddress(address) {
31
23
  try {
32
24
  c32addressDecode(address);
@@ -36,6 +28,19 @@ function validateStacksAddress(address) {
36
28
  }
37
29
  }
38
30
  var isValidAddress = validateStacksAddress;
31
+ function parsePrincipal(value) {
32
+ const parts = value.split(".");
33
+ if (parts.length > 2)
34
+ return null;
35
+ const [address, contractName] = parts;
36
+ if (!validateStacksAddress(address))
37
+ return null;
38
+ if (contractName === undefined)
39
+ return { address };
40
+ if (!CONTRACT_NAME_REGEX.test(contractName))
41
+ return null;
42
+ return { address, contractName };
43
+ }
39
44
  function parseContractId(contractId) {
40
45
  const [address, name] = contractId.split(".");
41
46
  if (!address || !name)
@@ -64,7 +69,5 @@ function getContractAddress(deployer, contractName) {
64
69
  return `${deployer}.${contractName}`;
65
70
  }
66
71
 
67
- export { MAX_U128, MAX_I128, MIN_I128, AddressVersion, ZERO_ADDRESS, TESTNET_ZERO_ADDRESS, MICROSTX_PER_STX, publicKeyToAddress, validateStacksAddress, isValidAddress, parseContractId, isClarityName, isAddressEqual, addressToVersion, getContractAddress };
68
-
69
- //# debugId=63F221153EEDD88D64756E2164756E21
70
- //# sourceMappingURL=stacks-azp00pve.js.map
72
+ //# debugId=E71444B13EBBAD2B64756E2164756E21
73
+ //# sourceMappingURL=stacks-x5386y2y.cjs.map
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/utils/constants.ts", "../src/utils/address.ts"],
4
+ "sourcesContent": [
5
+ "// Clarity integer bounds\nexport const MAX_U128: bigint = (1n << 128n) - 1n;\nexport const MAX_I128: bigint = (1n << 127n) - 1n;\nexport const MIN_I128: bigint = -(1n << 127n);\n\n/** C32-encoded address version bytes for single-sig and multi-sig on each network. */\nexport const AddressVersion = {\n\tMainnetSingleSig: 22,\n\tMainnetMultiSig: 20,\n\tTestnetSingleSig: 26,\n\tTestnetMultiSig: 21,\n} as const;\nexport type AddressVersion =\n\t(typeof AddressVersion)[keyof typeof AddressVersion];\n\n/** Mainnet burn address (all-zero hash160). */\nexport const ZERO_ADDRESS = \"SP000000000000000000002Q6VF78\";\n/** Testnet burn address (all-zero hash160). */\nexport const TESTNET_ZERO_ADDRESS = \"ST000000000000000000002AMW42H\";\n\n/** Number of microSTX per 1 STX (10^6). */\nexport const MICROSTX_PER_STX = 1_000_000n;\n",
6
+ "import { c32address, c32addressDecode } from \"./c32.ts\";\nimport { AddressVersion } from \"./constants.ts\";\nimport { bytesToHex, hexToBytes, without0x } from \"./encoding.ts\";\nimport { hash160 } from \"./hash.ts\";\n\nexport { c32address, c32addressDecode };\n\n/**\n * Derive the single-sig Stacks address for a compressed public key.\n */\nexport function publicKeyToAddress(\n\tpublicKey: string | Uint8Array,\n\tnetwork: \"mainnet\" | \"testnet\" = \"mainnet\",\n): string {\n\tconst bytes =\n\t\ttypeof publicKey === \"string\"\n\t\t\t? hexToBytes(without0x(publicKey))\n\t\t\t: publicKey;\n\tconst version =\n\t\tnetwork === \"mainnet\"\n\t\t\t? AddressVersion.MainnetSingleSig\n\t\t\t: AddressVersion.TestnetSingleSig;\n\treturn c32address(version, bytesToHex(hash160(bytes)));\n}\n\n/** Clarity contract-name grammar: leading letter, then letters/digits/`-`/`_`.\n * Underscore is legal (SIP-002) and deployed contracts use it — matches the\n * pattern the Index API already accepts for contract ids. */\nexport const CONTRACT_NAME_REGEX: RegExp = /^[a-zA-Z][a-zA-Z0-9_-]{0,127}$/;\n\nexport function validateStacksAddress(address: string): boolean {\n\ttry {\n\t\tc32addressDecode(address);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/** Alias for validateStacksAddress — matches future.md naming. */\nexport const isValidAddress: (address: string) => boolean =\n\tvalidateStacksAddress;\n\n/** Parse a principal into its parts, or null when malformed. The single\n * definition of \"valid principal\" for this package: exactly one optional\n * `.name` segment (never two), a c32-decodable address, and a contract name\n * matching the Clarity grammar. */\nexport function parsePrincipal(\n\tvalue: string,\n): { address: string; contractName?: string } | null {\n\tconst parts = value.split(\".\");\n\tif (parts.length > 2) return null;\n\tconst [address, contractName] = parts as [string, string | undefined];\n\tif (!validateStacksAddress(address)) return null;\n\tif (contractName === undefined) return { address };\n\tif (!CONTRACT_NAME_REGEX.test(contractName)) return null;\n\treturn { address, contractName };\n}\n\nexport function parseContractId(contractId: string): [string, string] {\n\tconst [address, name] = contractId.split(\".\");\n\tif (!address || !name)\n\t\tthrow new Error(`Invalid contract identifier: ${contractId}`);\n\treturn [address, name];\n}\n\nexport function isClarityName(name: string): boolean {\n\tconst regex = /^[a-zA-Z]([a-zA-Z0-9]|[-_!?+<>=/*])*$|^[-+=/*]$|^[<>]=?$/;\n\treturn regex.test(name) && name.length < 128;\n}\n\n/**\n * Compare two Stacks addresses for equality (case-insensitive, version-aware).\n * Throws if either address is invalid.\n */\nexport function isAddressEqual(a: string, b: string): boolean {\n\tconst [versionA, hashA] = c32addressDecode(a);\n\tconst [versionB, hashB] = c32addressDecode(b);\n\treturn versionA === versionB && hashA.toLowerCase() === hashB.toLowerCase();\n}\n\n/** Extract the version byte from a Stacks address (22, 20, 26, or 21). */\nexport function addressToVersion(address: string): number {\n\treturn c32addressDecode(address)[0];\n}\n\n/**\n * Build a contract address from deployer + contract name.\n * Validates both parts; returns `deployer.contractName`.\n */\nexport function getContractAddress(\n\tdeployer: string,\n\tcontractName: string,\n): string {\n\tif (!validateStacksAddress(deployer)) {\n\t\tthrow new Error(`Invalid deployer address: ${deployer}`);\n\t}\n\tif (!isClarityName(contractName)) {\n\t\tthrow new Error(`Invalid contract name: ${contractName}`);\n\t}\n\treturn `${deployer}.${contractName}`;\n}\n"
7
+ ],
8
+ "mappings": ";AACO,IAAM,YAAoB,MAAM,QAAQ;AACxC,IAAM,YAAoB,MAAM,QAAQ;AACxC,IAAM,WAAmB,EAAE,MAAM;AAGjC,IAAM,iBAAiB;AAAA,EAC7B,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,iBAAiB;AAClB;AAKO,IAAM,eAAe;AAErB,IAAM,uBAAuB;AAG7B,IAAM,mBAAmB;;;ACXzB,SAAS,kBAAkB,CACjC,WACA,UAAiC,WACxB;AAAA,EACT,MAAM,QACL,OAAO,cAAc,WAClB,WAAW,UAAU,SAAS,CAAC,IAC/B;AAAA,EACJ,MAAM,UACL,YAAY,YACT,eAAe,mBACf,eAAe;AAAA,EACnB,OAAO,WAAW,SAAS,WAAW,QAAQ,KAAK,CAAC,CAAC;AAAA;AAM/C,IAAM,sBAA8B;AAEpC,SAAS,qBAAqB,CAAC,SAA0B;AAAA,EAC/D,IAAI;AAAA,IACH,iBAAiB,OAAO;AAAA,IACxB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAKF,IAAM,iBACZ;AAMM,SAAS,cAAc,CAC7B,OACoD;AAAA,EACpD,MAAM,QAAQ,MAAM,MAAM,GAAG;AAAA,EAC7B,IAAI,MAAM,SAAS;AAAA,IAAG,OAAO;AAAA,EAC7B,OAAO,SAAS,gBAAgB;AAAA,EAChC,IAAI,CAAC,sBAAsB,OAAO;AAAA,IAAG,OAAO;AAAA,EAC5C,IAAI,iBAAiB;AAAA,IAAW,OAAO,EAAE,QAAQ;AAAA,EACjD,IAAI,CAAC,oBAAoB,KAAK,YAAY;AAAA,IAAG,OAAO;AAAA,EACpD,OAAO,EAAE,SAAS,aAAa;AAAA;AAGzB,SAAS,eAAe,CAAC,YAAsC;AAAA,EACrE,OAAO,SAAS,QAAQ,WAAW,MAAM,GAAG;AAAA,EAC5C,IAAI,CAAC,WAAW,CAAC;AAAA,IAChB,MAAM,IAAI,MAAM,gCAAgC,YAAY;AAAA,EAC7D,OAAO,CAAC,SAAS,IAAI;AAAA;AAGf,SAAS,aAAa,CAAC,MAAuB;AAAA,EACpD,MAAM,QAAQ;AAAA,EACd,OAAO,MAAM,KAAK,IAAI,KAAK,KAAK,SAAS;AAAA;AAOnC,SAAS,cAAc,CAAC,GAAW,GAAoB;AAAA,EAC7D,OAAO,UAAU,SAAS,iBAAiB,CAAC;AAAA,EAC5C,OAAO,UAAU,SAAS,iBAAiB,CAAC;AAAA,EAC5C,OAAO,aAAa,YAAY,MAAM,YAAY,MAAM,MAAM,YAAY;AAAA;AAIpE,SAAS,gBAAgB,CAAC,SAAyB;AAAA,EACzD,OAAO,iBAAiB,OAAO,EAAE;AAAA;AAO3B,SAAS,kBAAkB,CACjC,UACA,cACS;AAAA,EACT,IAAI,CAAC,sBAAsB,QAAQ,GAAG;AAAA,IACrC,MAAM,IAAI,MAAM,6BAA6B,UAAU;AAAA,EACxD;AAAA,EACA,IAAI,CAAC,cAAc,YAAY,GAAG;AAAA,IACjC,MAAM,IAAI,MAAM,0BAA0B,cAAc;AAAA,EACzD;AAAA,EACA,OAAO,GAAG,YAAY;AAAA;",
9
+ "debugId": "E71444B13EBBAD2B64756E2164756E21",
10
+ "names": []
11
+ }
@@ -3,7 +3,7 @@ import {
3
3
  buildFunctionArgs,
4
4
  getContract,
5
5
  isResponseOutput
6
- } from "../../shared/stacks-ch5vshcd.js";
6
+ } from "../../shared/stacks-v1hzk599.js";
7
7
  import {
8
8
  deployContract,
9
9
  getAccountHistory,
@@ -21,17 +21,17 @@ import {
21
21
  simulateCall,
22
22
  simulateTransaction,
23
23
  transferStx
24
- } from "../../shared/stacks-1x9b2k5y.js";
24
+ } from "../../shared/stacks-r1m1r72q.js";
25
25
  import {
26
26
  multicall
27
- } from "../../shared/stacks-cyeajysa.js";
27
+ } from "../../shared/stacks-jknrzd6v.js";
28
28
  import {
29
29
  callContract,
30
30
  getMapEntry
31
- } from "../../shared/stacks-bq0weg6n.js";
31
+ } from "../../shared/stacks-1mpmzzyp.js";
32
32
  import {
33
33
  readContract
34
- } from "../../shared/stacks-r2yw4xzb.js";
34
+ } from "../../shared/stacks-6bgh2c9h.js";
35
35
  import {
36
36
  watchAddress,
37
37
  watchAddressBalance,
@@ -42,7 +42,7 @@ import {
42
42
  } from "../../shared/stacks-tjjnkt3r.js";
43
43
  import {
44
44
  sponsorTransaction
45
- } from "../../shared/stacks-p2c0w0sq.js";
45
+ } from "../../shared/stacks-w8tt1fmt.js";
46
46
  import {
47
47
  estimateFee,
48
48
  extendedApiSource,
@@ -55,14 +55,14 @@ import {
55
55
  resolveFee,
56
56
  sendTransaction,
57
57
  waitForTransactionReceipt
58
- } from "../../shared/stacks-mbnfwekf.js";
58
+ } from "../../shared/stacks-9d2d0qjc.js";
59
59
  import"../../shared/stacks-fh48neva.js";
60
60
  import"../../shared/stacks-709tra19.js";
61
- import"../../shared/stacks-18jv9aen.js";
62
- import"../../shared/stacks-qchg7s2m.js";
63
- import"../../shared/stacks-sd9sc71n.js";
64
- import"../../shared/stacks-2mm20wqf.js";
65
- import"../../shared/stacks-azp00pve.js";
61
+ import"../../shared/stacks-4z72akdf.js";
62
+ import"../../shared/stacks-gkf9tsws.js";
63
+ import"../../shared/stacks-jx146qf1.js";
64
+ import"../../shared/stacks-ttdk2g2f.js";
65
+ import"../../shared/stacks-bfan7ex7.js";
66
66
  import"../../shared/stacks-qs5fzts5.js";
67
67
  export {
68
68
  watchTransaction,
@@ -16,22 +16,22 @@ import {
16
16
  taprootTweakPubkey
17
17
  } from "../../shared/stacks-0cdm20eh.js";
18
18
  import"../../shared/stacks-5nmz5ad9.js";
19
- import"../../shared/stacks-m77szbay.js";
19
+ import"../../shared/stacks-rw2xbtdv.js";
20
20
  import"../../shared/stacks-kg1npstf.js";
21
21
  import {
22
22
  readContract
23
- } from "../../shared/stacks-r2yw4xzb.js";
23
+ } from "../../shared/stacks-6bgh2c9h.js";
24
24
  import {
25
25
  MalformedResponseError
26
26
  } from "../../shared/stacks-fh48neva.js";
27
27
  import"../../shared/stacks-709tra19.js";
28
- import"../../shared/stacks-18jv9aen.js";
28
+ import"../../shared/stacks-4z72akdf.js";
29
29
  import {
30
30
  bufferCV,
31
31
  listCV,
32
32
  uintCV
33
- } from "../../shared/stacks-2mm20wqf.js";
34
- import"../../shared/stacks-azp00pve.js";
33
+ } from "../../shared/stacks-ttdk2g2f.js";
34
+ import"../../shared/stacks-bfan7ex7.js";
35
35
  import {
36
36
  bytesToHex,
37
37
  concatBytes,
@@ -1,25 +1,25 @@
1
- import"../../shared/stacks-m77szbay.js";
1
+ import"../../shared/stacks-rw2xbtdv.js";
2
2
  import"../../shared/stacks-kg1npstf.js";
3
3
  import {
4
4
  ContractResponseError,
5
5
  getContract,
6
6
  resolveNetworkContract
7
- } from "../../shared/stacks-ch5vshcd.js";
8
- import"../../shared/stacks-bq0weg6n.js";
9
- import"../../shared/stacks-r2yw4xzb.js";
10
- import"../../shared/stacks-mbnfwekf.js";
7
+ } from "../../shared/stacks-v1hzk599.js";
8
+ import"../../shared/stacks-1mpmzzyp.js";
9
+ import"../../shared/stacks-6bgh2c9h.js";
10
+ import"../../shared/stacks-9d2d0qjc.js";
11
11
  import"../../shared/stacks-fh48neva.js";
12
12
  import"../../shared/stacks-709tra19.js";
13
- import"../../shared/stacks-18jv9aen.js";
13
+ import"../../shared/stacks-4z72akdf.js";
14
14
  import"../../shared/stacks-z53fwfcm.js";
15
15
  import {
16
16
  Pc
17
- } from "../../shared/stacks-x94a1d6s.js";
18
- import"../../shared/stacks-sd9sc71n.js";
17
+ } from "../../shared/stacks-bm49tsh0.js";
18
+ import"../../shared/stacks-jx146qf1.js";
19
19
  import {
20
20
  Cl
21
- } from "../../shared/stacks-2mm20wqf.js";
22
- import"../../shared/stacks-azp00pve.js";
21
+ } from "../../shared/stacks-ttdk2g2f.js";
22
+ import"../../shared/stacks-bfan7ex7.js";
23
23
  import {
24
24
  hash160
25
25
  } from "../../shared/stacks-qs5fzts5.js";
@@ -140,6 +140,9 @@ declare function cvToBuffer(val: ClarityValue): string;
140
140
  declare function cvToBoolean(val: ClarityValue): boolean;
141
141
  /** Narrow to principal string; throws unless `val` is a standard or contract principal. */
142
142
  declare function cvToPrincipal(val: ClarityValue): string;
143
+ /** Clarity contract-name grammar: leading letter, then letters/digits/`-`/`_`.
144
+ * Underscore is legal (SIP-002) and deployed contracts use it — matches the
145
+ * pattern the Index API already accepts for contract ids. */
143
146
  declare const CONTRACT_NAME_REGEX: RegExp;
144
147
  type AbiUInt128 = "uint128";
145
148
  type AbiInt128 = "int128";
@@ -140,6 +140,9 @@ declare function cvToBuffer(val: ClarityValue): string;
140
140
  declare function cvToBoolean(val: ClarityValue): boolean;
141
141
  /** Narrow to principal string; throws unless `val` is a standard or contract principal. */
142
142
  declare function cvToPrincipal(val: ClarityValue): string;
143
+ /** Clarity contract-name grammar: leading letter, then letters/digits/`-`/`_`.
144
+ * Underscore is legal (SIP-002) and deployed contracts use it — matches the
145
+ * pattern the Index API already accepts for contract ids. */
143
146
  declare const CONTRACT_NAME_REGEX: RegExp;
144
147
  type AbiUInt128 = "uint128";
145
148
  type AbiInt128 = "int128";
@@ -18,7 +18,7 @@ import {
18
18
  prettyPrint,
19
19
  validateArgs,
20
20
  validateArgsArray
21
- } from "../../shared/stacks-m77szbay.js";
21
+ } from "../../shared/stacks-rw2xbtdv.js";
22
22
  import {
23
23
  SIP009_ABI,
24
24
  SIP010_ABI,
@@ -28,7 +28,6 @@ import {
28
28
  sip013Abi
29
29
  } from "../../shared/stacks-kg1npstf.js";
30
30
  import {
31
- CONTRACT_NAME_REGEX,
32
31
  clarityValueToJS,
33
32
  clarityValueToJSUntyped,
34
33
  isAbiBuffer,
@@ -56,7 +55,7 @@ import {
56
55
  isUint8Array,
57
56
  jsToClarityValue,
58
57
  toCamelCase
59
- } from "../../shared/stacks-18jv9aen.js";
58
+ } from "../../shared/stacks-4z72akdf.js";
60
59
  import {
61
60
  Cl,
62
61
  ClarityWireType,
@@ -81,8 +80,10 @@ import {
81
80
  trueCV,
82
81
  tupleCV,
83
82
  uintCV
84
- } from "../../shared/stacks-2mm20wqf.js";
85
- import"../../shared/stacks-azp00pve.js";
83
+ } from "../../shared/stacks-ttdk2g2f.js";
84
+ import {
85
+ CONTRACT_NAME_REGEX
86
+ } from "../../shared/stacks-bfan7ex7.js";
86
87
  import"../../shared/stacks-qs5fzts5.js";
87
88
  export {
88
89
  validateArgsArray,
@@ -163,5 +164,5 @@ export {
163
164
  CONTRACT_NAME_REGEX
164
165
  };
165
166
 
166
- //# debugId=A17F916FA4524AD764756E2164756E21
167
+ //# debugId=51AEE801DCEFBE6E64756E2164756E21
167
168
  //# sourceMappingURL=index.js.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "A17F916FA4524AD764756E2164756E21",
7
+ "debugId": "51AEE801DCEFBE6E64756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -217,7 +217,6 @@ var MIN_I128 = -(1n << 127n);
217
217
  var import_legacy = require("@noble/hashes/legacy.js");
218
218
  var import_sha22 = require("@noble/hashes/sha2.js");
219
219
  var import_sha23 = require("@noble/hashes/sha2.js");
220
-
221
220
  // src/clarity/types.ts
222
221
  var ClarityWireType = {
223
222
  int: 0,
@@ -529,5 +528,5 @@ function isConnected() {
529
528
  return (data?.addresses?.stx?.length ?? 0) > 0;
530
529
  }
531
530
 
532
- //# debugId=4603DB582F0ABF7C64756E2164756E21
531
+ //# debugId=790CFBA3798A2B6E64756E2164756E21
533
532
  //# sourceMappingURL=index.cjs.map