@secondlayer/stacks 2.9.1 → 2.11.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 (117) hide show
  1. package/dist/shared/{stacks-wyxj879g.cjs → stacks-18jv9aen.js} +83 -4
  2. package/dist/shared/stacks-18jv9aen.js.map +13 -0
  3. package/dist/shared/{stacks-0zysn74p.js → stacks-2mm20wqf.js} +3 -3
  4. package/dist/shared/{stacks-1qmx9kt8.js → stacks-3kmj5yre.js} +4 -4
  5. package/dist/shared/{stacks-ttbq8emk.js → stacks-502j0efj.js} +3 -3
  6. package/dist/shared/{stacks-nqae5amn.cjs → stacks-5nskdw7w.cjs} +19 -2
  7. package/dist/shared/stacks-5nskdw7w.cjs.map +10 -0
  8. package/dist/shared/{stacks-8mj5jw77.js → stacks-63xbc6cj.js} +63 -7
  9. package/dist/shared/stacks-63xbc6cj.js.map +10 -0
  10. package/dist/shared/{stacks-g7ffp8aj.js → stacks-6xt8py97.cjs} +59 -30
  11. package/dist/shared/stacks-6xt8py97.cjs.map +13 -0
  12. package/dist/shared/{stacks-53bjdb6p.js → stacks-7nvbv61d.js} +8 -8
  13. package/dist/shared/stacks-azp00pve.js +70 -0
  14. package/dist/shared/stacks-azp00pve.js.map +11 -0
  15. package/dist/shared/{stacks-vk8fwz0t.cjs → stacks-b9904rc2.cjs} +3 -2
  16. package/dist/shared/{stacks-vk8fwz0t.cjs.map → stacks-b9904rc2.cjs.map} +2 -2
  17. package/dist/shared/{stacks-3y058qda.cjs → stacks-fhzwsn5d.cjs} +16 -2
  18. package/dist/shared/{stacks-3y058qda.cjs.map → stacks-fhzwsn5d.cjs.map} +5 -4
  19. package/dist/shared/{stacks-wqgepfab.js → stacks-g11v9a35.js} +22 -5
  20. package/dist/shared/stacks-g11v9a35.js.map +10 -0
  21. package/dist/shared/{stacks-6xmk24yw.js → stacks-gfm3r397.cjs} +20 -7
  22. package/dist/shared/stacks-gfm3r397.cjs.map +11 -0
  23. package/dist/shared/{stacks-43cxvnr7.js → stacks-jbmcwky5.js} +3 -3
  24. package/dist/shared/{stacks-q1mjkt15.js → stacks-msmgyerb.js} +4 -4
  25. package/dist/shared/{stacks-2h8d2y27.js → stacks-qs5fzts5.js} +17 -3
  26. package/dist/shared/{stacks-2h8d2y27.js.map → stacks-qs5fzts5.js.map} +5 -4
  27. package/dist/shared/{stacks-vdfag81a.cjs → stacks-shn9zw99.cjs} +49 -3
  28. package/dist/shared/stacks-shn9zw99.cjs.map +10 -0
  29. package/dist/shared/{stacks-4trgpb5a.js → stacks-ssndnbbd.js} +48 -13
  30. package/dist/shared/stacks-ssndnbbd.js.map +15 -0
  31. package/dist/shared/{stacks-z1j5d6fd.js → stacks-v150hffx.js} +6 -6
  32. package/dist/shared/{stacks-ertyhttt.cjs → stacks-wamwv8q8.cjs} +41 -4
  33. package/dist/shared/stacks-wamwv8q8.cjs.map +15 -0
  34. package/dist/shared/{stacks-a36n7sjz.js → stacks-x94a1d6s.js} +3 -3
  35. package/dist/src/accounts/index.js +3 -5
  36. package/dist/src/accounts/index.js.map +2 -2
  37. package/dist/src/actions/index.d.cts +91 -10
  38. package/dist/src/actions/index.d.ts +91 -10
  39. package/dist/src/actions/index.js +13 -15
  40. package/dist/src/actions/index.js.map +1 -1
  41. package/dist/src/bitcoin/index.cjs +25 -19
  42. package/dist/src/bitcoin/index.cjs.map +3 -3
  43. package/dist/src/bitcoin/index.js +32 -29
  44. package/dist/src/bitcoin/index.js.map +3 -3
  45. package/dist/src/bns/index.cjs +4 -16
  46. package/dist/src/bns/index.cjs.map +3 -3
  47. package/dist/src/bns/index.js +17 -30
  48. package/dist/src/bns/index.js.map +3 -3
  49. package/dist/src/clarity/index.d.cts +50 -1
  50. package/dist/src/clarity/index.d.ts +50 -1
  51. package/dist/src/clarity/index.js +8 -7
  52. package/dist/src/clarity/index.js.map +1 -1
  53. package/dist/src/index.d.cts +32 -2
  54. package/dist/src/index.d.ts +32 -2
  55. package/dist/src/index.js +12 -15
  56. package/dist/src/index.js.map +2 -2
  57. package/dist/src/postconditions/index.d.cts +14 -2
  58. package/dist/src/postconditions/index.d.ts +14 -2
  59. package/dist/src/postconditions/index.js +3 -3
  60. package/dist/src/pox/index.cjs +2 -6
  61. package/dist/src/pox/index.cjs.map +3 -3
  62. package/dist/src/pox/index.js +14 -19
  63. package/dist/src/pox/index.js.map +3 -3
  64. package/dist/src/sbtc/index.cjs +2 -6
  65. package/dist/src/sbtc/index.cjs.map +3 -3
  66. package/dist/src/sbtc/index.js +13 -18
  67. package/dist/src/sbtc/index.js.map +3 -3
  68. package/dist/src/stackingdao/index.js +11 -13
  69. package/dist/src/stackingdao/index.js.map +2 -2
  70. package/dist/src/tools/index.cjs +199 -57
  71. package/dist/src/tools/index.cjs.map +13 -13
  72. package/dist/src/tools/index.js +199 -57
  73. package/dist/src/tools/index.js.map +13 -13
  74. package/dist/src/transactions/index.cjs +2 -1
  75. package/dist/src/transactions/index.cjs.map +1 -1
  76. package/dist/src/transactions/index.d.cts +35 -3
  77. package/dist/src/transactions/index.d.ts +35 -3
  78. package/dist/src/transactions/index.js +8 -7
  79. package/dist/src/transactions/index.js.map +1 -1
  80. package/dist/src/utils/index.cjs +2 -1
  81. package/dist/src/utils/index.cjs.map +2 -2
  82. package/dist/src/utils/index.d.cts +5 -1
  83. package/dist/src/utils/index.d.ts +5 -1
  84. package/dist/src/utils/index.js +12 -14
  85. package/dist/src/utils/index.js.map +2 -2
  86. package/dist/src/x402/index.d.cts +19 -1
  87. package/dist/src/x402/index.d.ts +19 -1
  88. package/dist/src/x402/index.js +9 -10
  89. package/dist/src/x402/index.js.map +2 -2
  90. package/package.json +4 -2
  91. package/dist/shared/stacks-4trgpb5a.js.map +0 -15
  92. package/dist/shared/stacks-6xmk24yw.js.map +0 -10
  93. package/dist/shared/stacks-8mj5jw77.js.map +0 -10
  94. package/dist/shared/stacks-9g0jhab3.cjs +0 -40
  95. package/dist/shared/stacks-9g0jhab3.cjs.map +0 -10
  96. package/dist/shared/stacks-ertyhttt.cjs.map +0 -15
  97. package/dist/shared/stacks-fcaefc5b.cjs +0 -16
  98. package/dist/shared/stacks-fcaefc5b.cjs.map +0 -10
  99. package/dist/shared/stacks-g7ffp8aj.js.map +0 -13
  100. package/dist/shared/stacks-nqae5amn.cjs.map +0 -10
  101. package/dist/shared/stacks-v9jqcpd4.js +0 -18
  102. package/dist/shared/stacks-v9jqcpd4.js.map +0 -10
  103. package/dist/shared/stacks-vdfag81a.cjs.map +0 -10
  104. package/dist/shared/stacks-wqgepfab.js.map +0 -10
  105. package/dist/shared/stacks-wyxj879g.cjs.map +0 -13
  106. package/dist/shared/stacks-xxn5ma6g.js +0 -22
  107. package/dist/shared/stacks-xxn5ma6g.js.map +0 -10
  108. package/dist/shared/stacks-ya3x01yd.cjs +0 -16
  109. package/dist/shared/stacks-ya3x01yd.cjs.map +0 -10
  110. /package/dist/shared/{stacks-0zysn74p.js.map → stacks-2mm20wqf.js.map} +0 -0
  111. /package/dist/shared/{stacks-1qmx9kt8.js.map → stacks-3kmj5yre.js.map} +0 -0
  112. /package/dist/shared/{stacks-ttbq8emk.js.map → stacks-502j0efj.js.map} +0 -0
  113. /package/dist/shared/{stacks-53bjdb6p.js.map → stacks-7nvbv61d.js.map} +0 -0
  114. /package/dist/shared/{stacks-43cxvnr7.js.map → stacks-jbmcwky5.js.map} +0 -0
  115. /package/dist/shared/{stacks-q1mjkt15.js.map → stacks-msmgyerb.js.map} +0 -0
  116. /package/dist/shared/{stacks-z1j5d6fd.js.map → stacks-v150hffx.js.map} +0 -0
  117. /package/dist/shared/{stacks-a36n7sjz.js.map → stacks-x94a1d6s.js.map} +0 -0
@@ -6,10 +6,10 @@
6
6
  "export const BNS_CONTRACTS = {\n\tmainnet: {\n\t\taddress: \"SP2QEZ06AGJ3RKJPBV14SY1V5BBFNAW33D96YPGZF\",\n\t\tname: \"BNS-V2\",\n\t},\n\ttestnet: {\n\t\taddress: \"ST2QEZ06AGJ3RKJPBV14SY1V5BBFNAW33D9SZJQ0M\",\n\t\tname: \"BNS-V2\",\n\t},\n} as const;\n\nexport const ZONEFILE_RESOLVER_CONTRACTS = {\n\tmainnet: {\n\t\taddress: \"SP2QEZ06AGJ3RKJPBV14SY1V5BBFNAW33D96YPGZF\",\n\t\tname: \"zonefile-resolver\",\n\t},\n\ttestnet: {\n\t\taddress: \"ST2QEZ06AGJ3RKJPBV14SY1V5BBFNAW33D9SZJQ0M\",\n\t\tname: \"zonefile-resolver\",\n\t},\n} as const;\n\n// BNS v2 uses .btc namespace primarily\nexport const DEFAULT_NAMESPACE = \"btc\";\n",
7
7
  "import { hash160 } from \"../utils/hash.ts\";\nimport { DEFAULT_NAMESPACE } from \"./constants.ts\";\nimport type { FullyQualifiedName } from \"./types.ts\";\n\n/**\n * Parse a fully qualified name string into components.\n * Supports:\n * - \"name.namespace\" → { name: \"name\", namespace: \"namespace\" }\n * - \"name\" → { name: \"name\", namespace: \"btc\" } (default)\n */\nexport function parseFQN(fqn: string): FullyQualifiedName {\n\tconst parts = fqn.split(\".\");\n\n\tif (parts.length === 1) {\n\t\treturn {\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tname: parts[0]!,\n\t\t\tnamespace: DEFAULT_NAMESPACE,\n\t\t};\n\t}\n\n\tif (parts.length === 2) {\n\t\treturn {\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tname: parts[0]!,\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tnamespace: parts[1]!,\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`Invalid fully qualified name: ${fqn}. Expected format: \"name.namespace\" or \"name\"`,\n\t);\n}\n\n/**\n * Format name components into FQN string.\n */\nexport function formatFQN(name: string, namespace: string): string {\n\treturn `${name}.${namespace}`;\n}\n\n/**\n * Validate name format.\n * Names must be:\n * - 1-48 characters\n * - Lowercase alphanumeric, hyphens, underscores\n * - Cannot start or end with hyphen/underscore\n */\nexport function validateName(name: string): boolean {\n\tif (name.length < 1 || name.length > 48) return false;\n\n\tconst regex = /^[a-z0-9]([a-z0-9_-]*[a-z0-9])?$/;\n\treturn regex.test(name);\n}\n\n/**\n * Validate namespace format.\n * Namespaces must be:\n * - 1-20 characters\n * - Lowercase alphanumeric\n */\nexport function validateNamespace(namespace: string): boolean {\n\tif (namespace.length < 1 || namespace.length > 20) return false;\n\n\tconst regex = /^[a-z0-9]+$/;\n\treturn regex.test(namespace);\n}\n\n/**\n * Validate a fully qualified name.\n */\nexport function validateFQN(fqn: string): boolean {\n\ttry {\n\t\tconst { name, namespace } = parseFQN(fqn);\n\t\treturn validateName(name) && validateNamespace(namespace);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Generate a random 20-byte salt for name preorders.\n * @returns Random Uint8Array of length 20\n */\nexport function generateSalt(): Uint8Array {\n\tconst salt = new Uint8Array(20);\n\tcrypto.getRandomValues(salt);\n\treturn salt;\n}\n\n/**\n * Calculate hash160 for name preorder commitment.\n * Hash format: hash160(name + namespace + salt)\n *\n * @param name - BNS name (without namespace)\n * @param namespace - BNS namespace (e.g., \"btc\")\n * @param salt - 20-byte random salt\n * @returns 20-byte hash160 commitment\n */\nexport function hashPreorder(\n\tname: string,\n\tnamespace: string,\n\tsalt: Uint8Array,\n): Uint8Array {\n\tconst nameBytes = new TextEncoder().encode(name);\n\tconst namespaceBytes = new TextEncoder().encode(namespace);\n\n\t// Concatenate: name + namespace + salt\n\tconst combined = new Uint8Array(\n\t\tnameBytes.length + namespaceBytes.length + salt.length,\n\t);\n\tcombined.set(nameBytes, 0);\n\tcombined.set(namespaceBytes, nameBytes.length);\n\tcombined.set(salt, nameBytes.length + namespaceBytes.length);\n\n\treturn hash160(combined);\n}\n",
8
8
  "import type { AbiContract } from \"../clarity/abi/contract.ts\";\n\n/**\n * BNS v2 Zonefile Resolver ABI\n * Manages DNS-like records for BNS names (up to 8192 bytes).\n * Separate contract from BNS-V2 for decoupled zonefile management.\n */\nexport const ZONEFILE_RESOLVER_ABI = {\n\tfunctions: [\n\t\t{\n\t\t\tname: \"resolve-name\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"name\", type: { buff: { length: 48 } } },\n\t\t\t\t{ name: \"namespace\", type: { buff: { length: 20 } } },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: { optional: { buff: { length: 8192 } } },\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"update-zonefile\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"name\", type: { buff: { length: 48 } } },\n\t\t\t\t{ name: \"namespace\", type: { buff: { length: 20 } } },\n\t\t\t\t{\n\t\t\t\t\tname: \"new-zonefile\",\n\t\t\t\t\ttype: { optional: { buff: { length: 8192 } } },\n\t\t\t\t},\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"revoke-name\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"name\", type: { buff: { length: 48 } } },\n\t\t\t\t{ name: \"namespace\", type: { buff: { length: 20 } } },\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\t],\n} as const satisfies AbiContract;\n",
9
- "import { getContract } from \"../actions/getContract.ts\";\nimport { ContractResponseError } from \"../actions/getContract.ts\";\nimport { Cl } from \"../clarity/index.ts\";\nimport type { Client } from \"../clients/types.ts\";\nimport { Pc } from \"../postconditions/index.ts\";\nimport { BNS_ABI } from \"./abi.ts\";\nimport { BNS_CONTRACTS, ZONEFILE_RESOLVER_CONTRACTS } from \"./constants.ts\";\nimport type {\n\tClaimFastParams,\n\tPreorderParams,\n\tRegisterParams,\n\tSetPrimaryParams,\n\tTransferParams,\n\tUpdateZonefileParams,\n} from \"./types.ts\";\nimport {\n\tformatFQN,\n\tgenerateSalt,\n\thashPreorder,\n\tparseFQN,\n\tvalidateFQN,\n} from \"./utils.ts\";\nimport { ZONEFILE_RESOLVER_ABI } from \"./zonefile-abi.ts\";\n\nfunction getBnsContract(client: Client) {\n\tif (!client.chain) {\n\t\tthrow new Error(\"Client must have a chain configured\");\n\t}\n\tconst network = client.chain.network;\n\tconst contract =\n\t\tnetwork === \"mainnet\" ? BNS_CONTRACTS.mainnet : BNS_CONTRACTS.testnet;\n\n\treturn getContract({\n\t\tclient,\n\t\taddress: contract.address,\n\t\tname: contract.name,\n\t\tabi: BNS_ABI,\n\t});\n}\n\nfunction getZonefileContract(client: Client) {\n\tif (!client.chain) {\n\t\tthrow new Error(\"Client must have a chain configured\");\n\t}\n\tconst network = client.chain.network;\n\tconst contract =\n\t\tnetwork === \"mainnet\"\n\t\t\t? ZONEFILE_RESOLVER_CONTRACTS.mainnet\n\t\t\t: ZONEFILE_RESOLVER_CONTRACTS.testnet;\n\n\treturn getContract({\n\t\tclient,\n\t\taddress: contract.address,\n\t\tname: contract.name,\n\t\tabi: ZONEFILE_RESOLVER_ABI,\n\t});\n}\n\nfunction stringToBytes(str: string): Uint8Array {\n\treturn new TextEncoder().encode(str);\n}\n\n/**\n * Resolve a BNS name to its owner address.\n * @example\n * const owner = await resolveName(client, \"alice.btc\");\n */\nexport async function resolveName(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<string | null> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst bns = getBnsContract(client);\n\n\ttry {\n\t\treturn (await bns.read.getOwnerName({\n\t\t\tname: stringToBytes(name),\n\t\t\tnamespace: stringToBytes(namespace),\n\t\t})) as string | null;\n\t} catch (e) {\n\t\tif (e instanceof ContractResponseError) return null;\n\t\tthrow e;\n\t}\n}\n\n/**\n * Get the primary name for an address.\n * @example\n * const primary = await getPrimaryName(client, \"SP2J6...\");\n */\nexport async function getPrimaryName(\n\tclient: Client,\n\taddress: string,\n): Promise<string | null> {\n\tconst bns = getBnsContract(client);\n\n\ttry {\n\t\tconst result = (await bns.read.getPrimary({\n\t\t\towner: address,\n\t\t})) as { name: Uint8Array; namespace: Uint8Array } | null;\n\n\t\tif (result === null) return null;\n\n\t\tconst name = new TextDecoder().decode(result.name);\n\t\tconst namespace = new TextDecoder().decode(result.namespace);\n\n\t\treturn formatFQN(name, namespace);\n\t} catch (e) {\n\t\tif (e instanceof ContractResponseError) return null;\n\t\tthrow e;\n\t}\n}\n\n/**\n * Check if a name is available for registration.\n * @example\n * const available = await canRegister(client, \"bob.btc\");\n */\nexport async function canRegister(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<boolean> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst bns = getBnsContract(client);\n\n\t// No can-register-name function — use can-resolve-name instead.\n\t// If it resolves, the name is taken. If it errors, it's available.\n\ttry {\n\t\tawait bns.read.canResolveName({\n\t\t\tnamespace: stringToBytes(namespace),\n\t\t\tname: stringToBytes(name),\n\t\t});\n\t\treturn false; // resolved = taken\n\t} catch {\n\t\treturn true; // error = available\n\t}\n}\n\n/**\n * Get the price to register a name in microSTX.\n * @example\n * const price = await getNamePrice(client, \"bob.btc\");\n */\nexport async function getNamePrice(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<bigint> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst bns = getBnsContract(client);\n\n\t// get-name-price returns a nested response: (ok (ok uint))\n\tconst result = (await bns.read.getNamePrice({\n\t\tnamespace: stringToBytes(namespace),\n\t\tname: stringToBytes(name),\n\t})) as { ok: bigint } | { err: bigint };\n\n\tif (\"ok\" in result) return result.ok;\n\tthrow new Error(`Failed to get name price for ${nameOrFQN}`);\n}\n\n/**\n * Get the NFT token ID for a name.\n * @example\n * const id = await getNameId(client, \"alice.btc\");\n */\nexport async function getNameId(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<bigint | null> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst bns = getBnsContract(client);\n\n\ttry {\n\t\treturn (await bns.read.getIdFromBns({\n\t\t\tname: stringToBytes(name),\n\t\t\tnamespace: stringToBytes(namespace),\n\t\t})) as bigint | null;\n\t} catch (e) {\n\t\tif (e instanceof ContractResponseError) return null;\n\t\tthrow e;\n\t}\n}\n\n/**\n * Preorder a name (step 1 of secure registration).\n * Commits to a name with a salted hash, preventing front-running.\n * Must wait 1 Bitcoin block (~10 min) before calling register().\n *\n * @example\n * const { txid, salt } = await preorder(client, {\n * name: \"bob.btc\",\n * });\n * // Save salt! You'll need it for register()\n * // Wait ~10 minutes (1 Bitcoin block)\n * await register(client, { name: \"bob.btc\", salt });\n */\nexport async function preorder(\n\tclient: Client,\n\tparams: PreorderParams,\n): Promise<{ txid: string; salt: Uint8Array }> {\n\tconst {\n\t\tname: nameInput,\n\t\tnamespace: namespaceInput,\n\t\tsalt: providedSalt,\n\t} = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(fqn);\n\n\t// Check availability\n\tconst available = await canRegister(client, fqn);\n\tif (!available) {\n\t\tthrow new Error(`Name ${fqn} is not available for registration`);\n\t}\n\n\t// Get price\n\tconst price = await getNamePrice(client, fqn);\n\n\t// Generate or use provided salt\n\tconst salt = providedSalt ?? generateSalt();\n\n\t// Calculate hash commitment\n\tconst hashedSaltedFqn = hashPreorder(name, namespace, salt);\n\n\tconst bns = getBnsContract(client);\n\n\tconst txid = await bns.call.namePreorder(\n\t\t{\n\t\t\thashedSaltedFqn,\n\t\t\tstxToBurn: price,\n\t\t},\n\t\t{\n\t\t\tpostConditions: client.account?.address\n\t\t\t\t? [Pc.principal(client.account.address).willSendLte(price).ustx()]\n\t\t\t\t: [],\n\t\t},\n\t);\n\n\treturn { txid, salt };\n}\n\n/**\n * Register a name (step 2 of secure registration).\n * Reveals the name after preorder. Must wait 1 Bitcoin block after preorder.\n *\n * @example\n * const { txid } = await register(client, {\n * name: \"bob.btc\",\n * salt, // from preorder()\n * });\n */\nexport async function register(\n\tclient: Client,\n\tparams: RegisterParams,\n): Promise<string> {\n\tconst { name: nameInput, namespace: namespaceInput, salt } = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(fqn);\n\n\tconst bns = getBnsContract(client);\n\n\treturn bns.call.nameRegister({\n\t\tname: stringToBytes(name),\n\t\tnamespace: stringToBytes(namespace),\n\t\tsalt,\n\t});\n}\n\n/**\n * Claim a name instantly (fast but snipeable).\n * Burns STX to register the name immediately.\n * @example\n * const txid = await claimFast(client, {\n * name: \"bob.btc\",\n * recipient: account.address,\n * });\n */\nexport async function claimFast(\n\tclient: Client,\n\tparams: ClaimFastParams,\n): Promise<string> {\n\tconst { name: nameInput, namespace: namespaceInput, recipient } = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(fqn);\n\n\t// Check availability\n\tconst available = await canRegister(client, fqn);\n\tif (!available) {\n\t\tthrow new Error(`Name ${fqn} is not available for registration`);\n\t}\n\n\t// Get price\n\tconst price = await getNamePrice(client, fqn);\n\n\tconst bns = getBnsContract(client);\n\n\treturn bns.call.nameClaimFast(\n\t\t{\n\t\t\tname: stringToBytes(name),\n\t\t\tnamespace: stringToBytes(namespace),\n\t\t\tsendTo: recipient,\n\t\t},\n\t\t{\n\t\t\tpostConditions: [Pc.principal(recipient).willSendLte(price).ustx()],\n\t\t},\n\t);\n}\n\n/**\n * Transfer a name to a new owner.\n * @example\n * const txid = await transfer(client, {\n * name: \"alice.btc\",\n * recipient: \"SP3FBR...\",\n * });\n */\nexport async function transfer(\n\tclient: Client,\n\tparams: TransferParams,\n): Promise<string> {\n\tconst { name: nameInput, namespace: namespaceInput, recipient } = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst id = await getNameId(client, fqn);\n\tif (id === null) {\n\t\tthrow new Error(`Name ${fqn} does not exist`);\n\t}\n\n\tconst currentOwner = await resolveName(client, fqn);\n\tif (!currentOwner) {\n\t\tthrow new Error(`Cannot determine owner of ${fqn}`);\n\t}\n\n\tconst bns = getBnsContract(client);\n\tif (!client.chain) {\n\t\tthrow new Error(\"Client must have a chain configured\");\n\t}\n\tconst network = client.chain.network;\n\tconst contract =\n\t\tnetwork === \"mainnet\" ? BNS_CONTRACTS.mainnet : BNS_CONTRACTS.testnet;\n\n\treturn bns.call.transfer(\n\t\t{\n\t\t\tid,\n\t\t\towner: currentOwner,\n\t\t\trecipient,\n\t\t},\n\t\t{\n\t\t\tpostConditions: [\n\t\t\t\tPc.principal(currentOwner)\n\t\t\t\t\t.willSendAsset()\n\t\t\t\t\t.nft(`${contract.address}.${contract.name}::BNS-V2`, Cl.uint(id)),\n\t\t\t],\n\t\t},\n\t);\n}\n\n/**\n * Set a name as your primary name.\n * @example\n * const txid = await setPrimary(client, {\n * name: \"alice.btc\",\n * });\n */\nexport async function setPrimary(\n\tclient: Client,\n\tparams: SetPrimaryParams,\n): Promise<string> {\n\tconst { name: nameInput, namespace: namespaceInput } = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst id = await getNameId(client, fqn);\n\tif (id === null) {\n\t\tthrow new Error(`Name ${fqn} does not exist`);\n\t}\n\n\tconst bns = getBnsContract(client);\n\n\treturn bns.call.setPrimaryName({ primaryNameId: id });\n}\n\n/**\n * Get the zonefile for a name.\n * Zonefiles contain DNS-like records (up to 8192 bytes).\n *\n * @example\n * const zonefile = await getZonefile(client, \"alice.btc\");\n * if (zonefile) {\n * console.log(new TextDecoder().decode(zonefile));\n * }\n */\nexport async function getZonefile(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<Uint8Array | null> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst zonefile = getZonefileContract(client);\n\n\ttry {\n\t\tconst result = (await zonefile.read.resolveName({\n\t\t\tname: stringToBytes(name),\n\t\t\tnamespace: stringToBytes(namespace),\n\t\t})) as Uint8Array | null;\n\n\t\treturn result;\n\t} catch {\n\t\t// Contract returns (err 101) when no zonefile is set\n\t\treturn null;\n\t}\n}\n\n/**\n * Update or clear the zonefile for a name.\n * Only the name owner can update the zonefile.\n *\n * @example\n * // Update zonefile\n * await updateZonefile(client, {\n * name: \"alice.btc\",\n * zonefile: \"$ORIGIN alice.btc\\n$TTL 3600\\n...\",\n * });\n *\n * // Clear zonefile\n * await updateZonefile(client, {\n * name: \"alice.btc\",\n * zonefile: null,\n * });\n */\nexport async function updateZonefile(\n\tclient: Client,\n\tparams: UpdateZonefileParams,\n): Promise<string> {\n\tconst { name: nameInput, namespace: namespaceInput, zonefile } = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(fqn);\n\n\t// Verify ownership\n\tconst currentOwner = await resolveName(client, fqn);\n\tif (!currentOwner) {\n\t\tthrow new Error(`Name ${fqn} does not exist`);\n\t}\n\n\tconst zonefileContract = getZonefileContract(client);\n\n\t// Convert zonefile to Uint8Array or null\n\tlet zonefileBytes: Uint8Array | null = null;\n\tif (zonefile !== null) {\n\t\tzonefileBytes =\n\t\t\ttypeof zonefile === \"string\"\n\t\t\t\t? new TextEncoder().encode(zonefile)\n\t\t\t\t: zonefile;\n\n\t\tif (zonefileBytes.length > 8192) {\n\t\t\tthrow new Error(\n\t\t\t\t`Zonefile too large: ${zonefileBytes.length} bytes (max 8192)`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn zonefileContract.call.updateZonefile({\n\t\tname: stringToBytes(name),\n\t\tnamespace: stringToBytes(namespace),\n\t\tnewZonefile: zonefileBytes,\n\t});\n}\n\n/**\n * Revoke (clear) the zonefile for a name.\n * Alias for updateZonefile with zonefile: null.\n *\n * @example\n * await revokeZonefile(client, \"alice.btc\");\n */\nexport async function revokeZonefile(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<string> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst zonefileContract = getZonefileContract(client);\n\n\treturn zonefileContract.call.revokeName({\n\t\tname: stringToBytes(name),\n\t\tnamespace: stringToBytes(namespace),\n\t});\n}\n",
9
+ "import { getContract, resolveNetworkContract } from \"../actions/getContract.ts\";\nimport { ContractResponseError } from \"../actions/getContract.ts\";\nimport { Cl } from \"../clarity/index.ts\";\nimport type { Client } from \"../clients/types.ts\";\nimport { Pc } from \"../postconditions/index.ts\";\nimport { BNS_ABI } from \"./abi.ts\";\nimport { BNS_CONTRACTS, ZONEFILE_RESOLVER_CONTRACTS } from \"./constants.ts\";\nimport type {\n\tClaimFastParams,\n\tPreorderParams,\n\tRegisterParams,\n\tSetPrimaryParams,\n\tTransferParams,\n\tUpdateZonefileParams,\n} from \"./types.ts\";\nimport {\n\tformatFQN,\n\tgenerateSalt,\n\thashPreorder,\n\tparseFQN,\n\tvalidateFQN,\n} from \"./utils.ts\";\nimport { ZONEFILE_RESOLVER_ABI } from \"./zonefile-abi.ts\";\n\nfunction getBnsContract(client: Client) {\n\tconst contract = resolveNetworkContract(client, BNS_CONTRACTS);\n\treturn getContract({\n\t\tclient,\n\t\taddress: contract.address,\n\t\tname: contract.name,\n\t\tabi: BNS_ABI,\n\t});\n}\n\nfunction getZonefileContract(client: Client) {\n\tconst contract = resolveNetworkContract(client, ZONEFILE_RESOLVER_CONTRACTS);\n\treturn getContract({\n\t\tclient,\n\t\taddress: contract.address,\n\t\tname: contract.name,\n\t\tabi: ZONEFILE_RESOLVER_ABI,\n\t});\n}\n\nfunction stringToBytes(str: string): Uint8Array {\n\treturn new TextEncoder().encode(str);\n}\n\n/**\n * Resolve a BNS name to its owner address.\n * @example\n * const owner = await resolveName(client, \"alice.btc\");\n */\nexport async function resolveName(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<string | null> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst bns = getBnsContract(client);\n\n\ttry {\n\t\treturn (await bns.read.getOwnerName({\n\t\t\tname: stringToBytes(name),\n\t\t\tnamespace: stringToBytes(namespace),\n\t\t})) as string | null;\n\t} catch (e) {\n\t\tif (e instanceof ContractResponseError) return null;\n\t\tthrow e;\n\t}\n}\n\n/**\n * Get the primary name for an address.\n * @example\n * const primary = await getPrimaryName(client, \"SP2J6...\");\n */\nexport async function getPrimaryName(\n\tclient: Client,\n\taddress: string,\n): Promise<string | null> {\n\tconst bns = getBnsContract(client);\n\n\ttry {\n\t\tconst result = (await bns.read.getPrimary({\n\t\t\towner: address,\n\t\t})) as { name: Uint8Array; namespace: Uint8Array } | null;\n\n\t\tif (result === null) return null;\n\n\t\tconst name = new TextDecoder().decode(result.name);\n\t\tconst namespace = new TextDecoder().decode(result.namespace);\n\n\t\treturn formatFQN(name, namespace);\n\t} catch (e) {\n\t\tif (e instanceof ContractResponseError) return null;\n\t\tthrow e;\n\t}\n}\n\n/**\n * Check if a name is available for registration.\n * @example\n * const available = await canRegister(client, \"bob.btc\");\n */\nexport async function canRegister(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<boolean> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst bns = getBnsContract(client);\n\n\t// No can-register-name function — use can-resolve-name instead.\n\t// If it resolves, the name is taken. If it errors, it's available.\n\ttry {\n\t\tawait bns.read.canResolveName({\n\t\t\tnamespace: stringToBytes(namespace),\n\t\t\tname: stringToBytes(name),\n\t\t});\n\t\treturn false; // resolved = taken\n\t} catch {\n\t\treturn true; // error = available\n\t}\n}\n\n/**\n * Get the price to register a name in microSTX.\n * @example\n * const price = await getNamePrice(client, \"bob.btc\");\n */\nexport async function getNamePrice(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<bigint> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst bns = getBnsContract(client);\n\n\t// get-name-price returns a nested response: (ok (ok uint))\n\tconst result = (await bns.read.getNamePrice({\n\t\tnamespace: stringToBytes(namespace),\n\t\tname: stringToBytes(name),\n\t})) as { ok: bigint } | { err: bigint };\n\n\tif (\"ok\" in result) return result.ok;\n\tthrow new Error(`Failed to get name price for ${nameOrFQN}`);\n}\n\n/**\n * Get the NFT token ID for a name.\n * @example\n * const id = await getNameId(client, \"alice.btc\");\n */\nexport async function getNameId(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<bigint | null> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst bns = getBnsContract(client);\n\n\ttry {\n\t\treturn (await bns.read.getIdFromBns({\n\t\t\tname: stringToBytes(name),\n\t\t\tnamespace: stringToBytes(namespace),\n\t\t})) as bigint | null;\n\t} catch (e) {\n\t\tif (e instanceof ContractResponseError) return null;\n\t\tthrow e;\n\t}\n}\n\n/**\n * Preorder a name (step 1 of secure registration).\n * Commits to a name with a salted hash, preventing front-running.\n * Must wait 1 Bitcoin block (~10 min) before calling register().\n *\n * @example\n * const { txid, salt } = await preorder(client, {\n * name: \"bob.btc\",\n * });\n * // Save salt! You'll need it for register()\n * // Wait ~10 minutes (1 Bitcoin block)\n * await register(client, { name: \"bob.btc\", salt });\n */\nexport async function preorder(\n\tclient: Client,\n\tparams: PreorderParams,\n): Promise<{ txid: string; salt: Uint8Array }> {\n\tconst {\n\t\tname: nameInput,\n\t\tnamespace: namespaceInput,\n\t\tsalt: providedSalt,\n\t} = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(fqn);\n\n\t// Check availability\n\tconst available = await canRegister(client, fqn);\n\tif (!available) {\n\t\tthrow new Error(`Name ${fqn} is not available for registration`);\n\t}\n\n\t// Get price\n\tconst price = await getNamePrice(client, fqn);\n\n\t// Generate or use provided salt\n\tconst salt = providedSalt ?? generateSalt();\n\n\t// Calculate hash commitment\n\tconst hashedSaltedFqn = hashPreorder(name, namespace, salt);\n\n\tconst bns = getBnsContract(client);\n\n\tconst txid = await bns.call.namePreorder(\n\t\t{\n\t\t\thashedSaltedFqn,\n\t\t\tstxToBurn: price,\n\t\t},\n\t\t{\n\t\t\tpostConditions: client.account?.address\n\t\t\t\t? [Pc.principal(client.account.address).willSendLte(price).ustx()]\n\t\t\t\t: [],\n\t\t},\n\t);\n\n\treturn { txid, salt };\n}\n\n/**\n * Register a name (step 2 of secure registration).\n * Reveals the name after preorder. Must wait 1 Bitcoin block after preorder.\n *\n * @example\n * const { txid } = await register(client, {\n * name: \"bob.btc\",\n * salt, // from preorder()\n * });\n */\nexport async function register(\n\tclient: Client,\n\tparams: RegisterParams,\n): Promise<string> {\n\tconst { name: nameInput, namespace: namespaceInput, salt } = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(fqn);\n\n\tconst bns = getBnsContract(client);\n\n\treturn bns.call.nameRegister({\n\t\tname: stringToBytes(name),\n\t\tnamespace: stringToBytes(namespace),\n\t\tsalt,\n\t});\n}\n\n/**\n * Claim a name instantly (fast but snipeable).\n * Burns STX to register the name immediately.\n * @example\n * const txid = await claimFast(client, {\n * name: \"bob.btc\",\n * recipient: account.address,\n * });\n */\nexport async function claimFast(\n\tclient: Client,\n\tparams: ClaimFastParams,\n): Promise<string> {\n\tconst { name: nameInput, namespace: namespaceInput, recipient } = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(fqn);\n\n\t// Check availability\n\tconst available = await canRegister(client, fqn);\n\tif (!available) {\n\t\tthrow new Error(`Name ${fqn} is not available for registration`);\n\t}\n\n\t// Get price\n\tconst price = await getNamePrice(client, fqn);\n\n\tconst bns = getBnsContract(client);\n\n\treturn bns.call.nameClaimFast(\n\t\t{\n\t\t\tname: stringToBytes(name),\n\t\t\tnamespace: stringToBytes(namespace),\n\t\t\tsendTo: recipient,\n\t\t},\n\t\t{\n\t\t\tpostConditions: [Pc.principal(recipient).willSendLte(price).ustx()],\n\t\t},\n\t);\n}\n\n/**\n * Transfer a name to a new owner.\n * @example\n * const txid = await transfer(client, {\n * name: \"alice.btc\",\n * recipient: \"SP3FBR...\",\n * });\n */\nexport async function transfer(\n\tclient: Client,\n\tparams: TransferParams,\n): Promise<string> {\n\tconst { name: nameInput, namespace: namespaceInput, recipient } = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst id = await getNameId(client, fqn);\n\tif (id === null) {\n\t\tthrow new Error(`Name ${fqn} does not exist`);\n\t}\n\n\tconst currentOwner = await resolveName(client, fqn);\n\tif (!currentOwner) {\n\t\tthrow new Error(`Cannot determine owner of ${fqn}`);\n\t}\n\n\tconst bns = getBnsContract(client);\n\tconst contract = resolveNetworkContract(client, BNS_CONTRACTS);\n\n\treturn bns.call.transfer(\n\t\t{\n\t\t\tid,\n\t\t\towner: currentOwner,\n\t\t\trecipient,\n\t\t},\n\t\t{\n\t\t\tpostConditions: [\n\t\t\t\tPc.principal(currentOwner)\n\t\t\t\t\t.willSendAsset()\n\t\t\t\t\t.nft(`${contract.address}.${contract.name}::BNS-V2`, Cl.uint(id)),\n\t\t\t],\n\t\t},\n\t);\n}\n\n/**\n * Set a name as your primary name.\n * @example\n * const txid = await setPrimary(client, {\n * name: \"alice.btc\",\n * });\n */\nexport async function setPrimary(\n\tclient: Client,\n\tparams: SetPrimaryParams,\n): Promise<string> {\n\tconst { name: nameInput, namespace: namespaceInput } = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst id = await getNameId(client, fqn);\n\tif (id === null) {\n\t\tthrow new Error(`Name ${fqn} does not exist`);\n\t}\n\n\tconst bns = getBnsContract(client);\n\n\treturn bns.call.setPrimaryName({ primaryNameId: id });\n}\n\n/**\n * Get the zonefile for a name.\n * Zonefiles contain DNS-like records (up to 8192 bytes).\n *\n * @example\n * const zonefile = await getZonefile(client, \"alice.btc\");\n * if (zonefile) {\n * console.log(new TextDecoder().decode(zonefile));\n * }\n */\nexport async function getZonefile(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<Uint8Array | null> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst zonefile = getZonefileContract(client);\n\n\ttry {\n\t\tconst result = (await zonefile.read.resolveName({\n\t\t\tname: stringToBytes(name),\n\t\t\tnamespace: stringToBytes(namespace),\n\t\t})) as Uint8Array | null;\n\n\t\treturn result;\n\t} catch {\n\t\t// Contract returns (err 101) when no zonefile is set\n\t\treturn null;\n\t}\n}\n\n/**\n * Update or clear the zonefile for a name.\n * Only the name owner can update the zonefile.\n *\n * @example\n * // Update zonefile\n * await updateZonefile(client, {\n * name: \"alice.btc\",\n * zonefile: \"$ORIGIN alice.btc\\n$TTL 3600\\n...\",\n * });\n *\n * // Clear zonefile\n * await updateZonefile(client, {\n * name: \"alice.btc\",\n * zonefile: null,\n * });\n */\nexport async function updateZonefile(\n\tclient: Client,\n\tparams: UpdateZonefileParams,\n): Promise<string> {\n\tconst { name: nameInput, namespace: namespaceInput, zonefile } = params;\n\tconst fqn = namespaceInput ? `${nameInput}.${namespaceInput}` : nameInput;\n\n\tif (!validateFQN(fqn)) {\n\t\tthrow new Error(`Invalid name format: ${fqn}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(fqn);\n\n\t// Verify ownership\n\tconst currentOwner = await resolveName(client, fqn);\n\tif (!currentOwner) {\n\t\tthrow new Error(`Name ${fqn} does not exist`);\n\t}\n\n\tconst zonefileContract = getZonefileContract(client);\n\n\t// Convert zonefile to Uint8Array or null\n\tlet zonefileBytes: Uint8Array | null = null;\n\tif (zonefile !== null) {\n\t\tzonefileBytes =\n\t\t\ttypeof zonefile === \"string\"\n\t\t\t\t? new TextEncoder().encode(zonefile)\n\t\t\t\t: zonefile;\n\n\t\tif (zonefileBytes.length > 8192) {\n\t\t\tthrow new Error(\n\t\t\t\t`Zonefile too large: ${zonefileBytes.length} bytes (max 8192)`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn zonefileContract.call.updateZonefile({\n\t\tname: stringToBytes(name),\n\t\tnamespace: stringToBytes(namespace),\n\t\tnewZonefile: zonefileBytes,\n\t});\n}\n\n/**\n * Revoke (clear) the zonefile for a name.\n * Alias for updateZonefile with zonefile: null.\n *\n * @example\n * await revokeZonefile(client, \"alice.btc\");\n */\nexport async function revokeZonefile(\n\tclient: Client,\n\tnameOrFQN: string,\n): Promise<string> {\n\tif (!validateFQN(nameOrFQN)) {\n\t\tthrow new Error(`Invalid name format: ${nameOrFQN}`);\n\t}\n\n\tconst { name, namespace } = parseFQN(nameOrFQN);\n\tconst zonefileContract = getZonefileContract(client);\n\n\treturn zonefileContract.call.revokeName({\n\t\tname: stringToBytes(name),\n\t\tnamespace: stringToBytes(namespace),\n\t});\n}\n",
10
10
  "import type { Client } from \"../clients/types.ts\";\nimport {\n\tcanRegister,\n\tclaimFast,\n\tgetNameId,\n\tgetNamePrice,\n\tgetPrimaryName,\n\tgetZonefile,\n\tpreorder,\n\tregister,\n\tresolveName,\n\trevokeZonefile,\n\tsetPrimary,\n\ttransfer,\n\tupdateZonefile,\n} from \"./actions.ts\";\nimport type {\n\tClaimFastParams,\n\tPreorderParams,\n\tRegisterParams,\n\tSetPrimaryParams,\n\tTransferParams,\n\tUpdateZonefileParams,\n} from \"./types.ts\";\n\nexport type {\n\tClaimFastParams,\n\tTransferParams,\n\tSetPrimaryParams,\n\tPreorderParams,\n\tRegisterParams,\n\tUpdateZonefileParams,\n};\n\n/** Actions provided by the BNS extension. */\nexport type BnsActions = {\n\tbns: {\n\t\tresolveName: (name: string) => Promise<string | null>;\n\t\tgetPrimaryName: (address: string) => Promise<string | null>;\n\t\tcanRegister: (name: string) => Promise<boolean>;\n\t\tgetNamePrice: (name: string) => Promise<bigint>;\n\t\tgetNameId: (name: string) => Promise<bigint | null>;\n\t\tpreorder: (\n\t\t\tparams: PreorderParams,\n\t\t) => Promise<{ txid: string; salt: Uint8Array }>;\n\t\tregister: (params: RegisterParams) => Promise<string>;\n\t\tclaimFast: (params: ClaimFastParams) => Promise<string>;\n\t\ttransfer: (params: TransferParams) => Promise<string>;\n\t\tsetPrimary: (params: SetPrimaryParams) => Promise<string>;\n\t\tgetZonefile: (name: string) => Promise<Uint8Array | null>;\n\t\tupdateZonefile: (params: UpdateZonefileParams) => Promise<string>;\n\t\trevokeZonefile: (name: string) => Promise<string>;\n\t};\n};\n\nexport { BNS_CONTRACTS, ZONEFILE_RESOLVER_CONTRACTS } from \"./constants.ts\";\nexport {\n\tparseFQN,\n\tformatFQN,\n\tvalidateName,\n\tvalidateNamespace,\n\tvalidateFQN,\n\tgenerateSalt,\n\thashPreorder,\n} from \"./utils.ts\";\n\n/**\n * BNS v2 extension for Stacks client.\n * Provides name resolution, registration, and management.\n *\n * @example\n * import { createWalletClient, http, mainnet } from \"stacks\";\n * import { bns } from \"stacks/bns\";\n * import { privateKeyToAccount } from \"stacks/accounts\";\n *\n * const account = privateKeyToAccount(\"0x...\");\n * const client = createWalletClient({\n * account,\n * chain: mainnet,\n * transport: http(),\n * }).extend(bns());\n *\n * // Resolve names\n * const owner = await client.bns.resolveName(\"alice.btc\");\n *\n * // Register names\n * const txid = await client.bns.claimFast({\n * name: \"bob.btc\",\n * recipient: account.address,\n * });\n *\n * // Transfer names\n * await client.bns.transfer({\n * name: \"alice.btc\",\n * recipient: \"SP3FBR...\",\n * });\n */\nexport function bns(): (client: Client) => BnsActions {\n\treturn (client: Client) => ({\n\t\tbns: {\n\t\t\t/**\n\t\t\t * Resolve a BNS name to its owner address.\n\t\t\t * @param name - Fully qualified name (e.g., \"alice.btc\" or \"alice\")\n\t\t\t * @returns Owner address or null if name doesn't exist\n\t\t\t */\n\t\t\tresolveName: (name: string) => resolveName(client, name),\n\n\t\t\t/**\n\t\t\t * Get the primary name for an address.\n\t\t\t * @param address - Stacks address\n\t\t\t * @returns Primary name or null if no primary set\n\t\t\t */\n\t\t\tgetPrimaryName: (address: string) => getPrimaryName(client, address),\n\n\t\t\t/**\n\t\t\t * Check if a name is available for registration.\n\t\t\t * @param name - Fully qualified name to check\n\t\t\t * @returns True if available, false otherwise\n\t\t\t */\n\t\t\tcanRegister: (name: string) => canRegister(client, name),\n\n\t\t\t/**\n\t\t\t * Get the price to register a name in microSTX.\n\t\t\t * @param name - Fully qualified name\n\t\t\t * @returns Price in microSTX\n\t\t\t */\n\t\t\tgetNamePrice: (name: string) => getNamePrice(client, name),\n\n\t\t\t/**\n\t\t\t * Get the NFT token ID for a name.\n\t\t\t * @param name - Fully qualified name\n\t\t\t * @returns Token ID or null if name doesn't exist\n\t\t\t */\n\t\t\tgetNameId: (name: string) => getNameId(client, name),\n\n\t\t\t/**\n\t\t\t * Preorder a name (step 1 of secure registration).\n\t\t\t * Commits to a name with a salted hash, preventing front-running.\n\t\t\t * Must wait 1 Bitcoin block (~10 min) before calling register().\n\t\t\t * Requires wallet client with account.\n\t\t\t * @param params - Preorder parameters\n\t\t\t * @returns Transaction ID and salt (save salt for register step!)\n\t\t\t */\n\t\t\tpreorder: (params: PreorderParams) => preorder(client, params),\n\n\t\t\t/**\n\t\t\t * Register a name (step 2 of secure registration).\n\t\t\t * Reveals the name after preorder. Must wait 1 Bitcoin block after preorder.\n\t\t\t * Requires wallet client with account.\n\t\t\t * @param params - Register parameters (must include salt from preorder)\n\t\t\t * @returns Transaction ID\n\t\t\t */\n\t\t\tregister: (params: RegisterParams) => register(client, params),\n\n\t\t\t/**\n\t\t\t * Claim a name instantly (fast but snipeable).\n\t\t\t * Burns STX to register the name immediately.\n\t\t\t * Requires wallet client with account.\n\t\t\t * @param params - Registration parameters\n\t\t\t * @returns Transaction ID\n\t\t\t */\n\t\t\tclaimFast: (params: ClaimFastParams) => claimFast(client, params),\n\n\t\t\t/**\n\t\t\t * Transfer a name to a new owner.\n\t\t\t * Requires wallet client with account.\n\t\t\t * @param params - Transfer parameters\n\t\t\t * @returns Transaction ID\n\t\t\t */\n\t\t\ttransfer: (params: TransferParams) => transfer(client, params),\n\n\t\t\t/**\n\t\t\t * Set a name as your primary name.\n\t\t\t * Requires wallet client with account.\n\t\t\t * @param params - Primary name parameters\n\t\t\t * @returns Transaction ID\n\t\t\t */\n\t\t\tsetPrimary: (params: SetPrimaryParams) => setPrimary(client, params),\n\n\t\t\t/**\n\t\t\t * Get the zonefile for a name.\n\t\t\t * Zonefiles contain DNS-like records (up to 8192 bytes).\n\t\t\t * @param name - Fully qualified name\n\t\t\t * @returns Zonefile bytes or null if not set\n\t\t\t */\n\t\t\tgetZonefile: (name: string) => getZonefile(client, name),\n\n\t\t\t/**\n\t\t\t * Update or clear the zonefile for a name.\n\t\t\t * Only the name owner can update the zonefile.\n\t\t\t * Requires wallet client with account.\n\t\t\t * @param params - Zonefile update parameters\n\t\t\t * @returns Transaction ID\n\t\t\t */\n\t\t\tupdateZonefile: (params: UpdateZonefileParams) =>\n\t\t\t\tupdateZonefile(client, params),\n\n\t\t\t/**\n\t\t\t * Revoke (clear) the zonefile for a name.\n\t\t\t * Requires wallet client with account.\n\t\t\t * @param name - Fully qualified name\n\t\t\t * @returns Transaction ID\n\t\t\t */\n\t\t\trevokeZonefile: (name: string) => revokeZonefile(client, name),\n\t\t},\n\t});\n}\n"
11
11
  ],
12
- "mappings": "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",
13
- "debugId": "E21D028A49F0309F64756E2164756E21",
12
+ "mappings": "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",
13
+ "debugId": "1820E533EB3DEA1064756E2164756E21",
14
14
  "names": []
15
15
  }
@@ -300,6 +300,45 @@ interface AbiContract {
300
300
  implemented_traits?: ReadonlyArray<string>;
301
301
  defined_traits?: ReadonlyArray<AbiTraitDefinition>;
302
302
  }
303
+ declare const abiTypes: unique symbol;
304
+ /**
305
+ * Phantom type bundle a codegen tool can fuse onto an as-const ABI literal.
306
+ *
307
+ * Function/map keys are camelCase (matching the runtime client's method names)
308
+ * and `args` is the named-args object each method accepts. `ret` is the raw
309
+ * output type before any response unwrapping.
310
+ */
311
+ type ContractTypes = {
312
+ functions: Record<string, {
313
+ args: object
314
+ ret: unknown
315
+ access: "public" | "read-only" | "private"
316
+ }>
317
+ maps?: Record<string, {
318
+ key: unknown
319
+ value: unknown
320
+ }>
321
+ };
322
+ /**
323
+ * An as-const ABI literal branded with named codegen types. The brand is a
324
+ * phantom optional property: it never exists at runtime, so any `TypedAbi`
325
+ * value is still a plain ABI object and works everywhere an `AbiContract`
326
+ * does. Typed consumers (e.g. `getContract`) resolve the brand to surface
327
+ * named type aliases in hovers and errors instead of expanded inline types.
328
+ */
329
+ type TypedAbi<
330
+ A extends AbiContract,
331
+ T extends ContractTypes
332
+ > = A & {
333
+ readonly [abiTypes]?: T
334
+ };
335
+ /**
336
+ * Resolve the brand off an ABI type. `never` for un-branded ABIs, which lets
337
+ * consumers fall back to structural inference.
338
+ */
339
+ type AbiTypesOf<C> = C extends {
340
+ readonly [abiTypes]?: infer T
341
+ } ? NonNullable<T> extends ContractTypes ? NonNullable<T> : never : never;
303
342
  type ExtractFunctionNames<
304
343
  C extends AbiContract,
305
344
  Access extends FunctionAccess = FunctionAccess
@@ -855,11 +894,21 @@ declare function classifyContract(abi: AbiContract): SipStandard[];
855
894
  */
856
895
  declare function parseDeclaredStandards(claritySource: string): SipStandard[];
857
896
  /**
897
+ * Duck-type check: is `value` already a built ClarityValue? Tag-only CVs
898
+ * (`true`/`false`/`none`) have no payload; every other tag carries `value`.
899
+ */
900
+ declare function isClarityValue(value: unknown): value is ClarityValue;
901
+ /**
858
902
  * Convert a JS value to a ClarityValue using ABI type information.
903
+ *
904
+ * Pre-built ClarityValues pass through unchanged (escape hatch for callers
905
+ * that already hold a CV). Buffer args additionally accept hex strings and
906
+ * tagged `{ type, value }` objects — matching the generated-client input
907
+ * contract.
859
908
  */
860
909
  declare function jsToClarityValue(abiType: AbiType, value: unknown): ClarityValue;
861
910
  /**
862
911
  * Convert a ClarityValue back to a typed JS value using ABI type information.
863
912
  */
864
913
  declare function clarityValueToJS<T extends AbiType>(abiType: T, cv: ClarityValue): AbiToTS<T>;
865
- export { validateArgsArray, validateArgs, uintCV, tupleCV, trueCV, toCamelCase, stringUtf8CV, stringAsciiCV, standardPrincipalCV, someCV, sip013Abi, sip010Abi, sip009Abi, serializeCVBytes, serializeCV, responseOkCV, responseErrorCV, prettyPrint, prepareArgs, parseDeclaredStandards, noneCV, listCV, jsToClarityValue, jsToClarity, isUint8Array, isUint128, isTraitReference, isString, isStandardPrincipal, isResponse, isPrincipal, isOptional, isOkResponse, isInt128, isErrResponse, isContractPrincipal, isBool, isArray, isAbiTuple, isAbiTraitReference, isAbiStringUtf8, isAbiStringAscii, isAbiResponse, isAbiOptional, isAbiList, isAbiBuffer, intCV, falseCV, deserializeCVBytes, deserializeCV, cvToValue, cvToJSON, contractPrincipalCV, classifyContract, clarityValueToJS, clarityTypeFromByte, bufferCV, boolCV, VariableAccess, UIntCV, TupleData, TupleCV, TrueCV, TraitFunctionAccess, ToCamelCase, TRAIT_STANDARDS, StringUtf8CV, StringAsciiCV, StandardPrincipalCV, SomeCV, SipStandard, SIP013_ABI, SIP010_ABI, SIP009_ABI, ResponseOkCV, ResponseOk, ResponseErrorCV, ResponseErr, ResponseCV, Response, PrincipalCV, OptionalCV, NoneCV, ListCV, IntCV, FunctionArg, FunctionAccess, FalseCV, ExtractVariableType, ExtractVariableNames, ExtractVariable, ExtractReadOnlyFunctions, ExtractPublicFunctions, ExtractPrivateFunctions, ExtractNonFungibleTokenNames, ExtractNFTAssetType, ExtractMapValue, ExtractMapNames, ExtractMapKey, ExtractMap, ExtractImplementedTraits, ExtractFungibleTokenNames, ExtractFunctionOutput, ExtractFunctionNames, ExtractFunctionArgs, ExtractFunction, ExtractDefinedTraitNames, ExtractDataVars, ExtractConstants, ContractPrincipalCV, ClarityWireType, ClarityValue, ClarityType, ClarityConversionError, Cl, CONTRACT_NAME_REGEX, BufferCV, BooleanCV, AbiVariable, AbiUInt128, AbiType, AbiTupleType, AbiTuple, AbiTraitReference, AbiTraitFunction, AbiTraitDefinition, AbiToTS, AbiStringUtf8, AbiStringAscii, AbiResponseType, AbiResponse, AbiPrincipal, AbiPrimitiveType, AbiOptionalType, AbiOptional, AbiNone, AbiNonFungibleToken, AbiMap, AbiListType, AbiList, AbiInt128, AbiFungibleToken, AbiFunction, AbiContract, AbiBuffer, AbiBool };
914
+ export { validateArgsArray, validateArgs, uintCV, tupleCV, trueCV, toCamelCase, stringUtf8CV, stringAsciiCV, standardPrincipalCV, someCV, sip013Abi, sip010Abi, sip009Abi, serializeCVBytes, serializeCV, responseOkCV, responseErrorCV, prettyPrint, prepareArgs, parseDeclaredStandards, noneCV, listCV, jsToClarityValue, jsToClarity, isUint8Array, isUint128, isTraitReference, isString, isStandardPrincipal, isResponse, isPrincipal, isOptional, isOkResponse, isInt128, isErrResponse, isContractPrincipal, isClarityValue, isBool, isArray, isAbiTuple, isAbiTraitReference, isAbiStringUtf8, isAbiStringAscii, isAbiResponse, isAbiOptional, isAbiList, isAbiBuffer, intCV, falseCV, deserializeCVBytes, deserializeCV, cvToValue, cvToJSON, contractPrincipalCV, classifyContract, clarityValueToJS, clarityTypeFromByte, bufferCV, boolCV, VariableAccess, UIntCV, TypedAbi, TupleData, TupleCV, TrueCV, TraitFunctionAccess, ToCamelCase, TRAIT_STANDARDS, StringUtf8CV, StringAsciiCV, StandardPrincipalCV, SomeCV, SipStandard, SIP013_ABI, SIP010_ABI, SIP009_ABI, ResponseOkCV, ResponseOk, ResponseErrorCV, ResponseErr, ResponseCV, Response, PrincipalCV, OptionalCV, NoneCV, ListCV, IntCV, FunctionArg, FunctionAccess, FalseCV, ExtractVariableType, ExtractVariableNames, ExtractVariable, ExtractReadOnlyFunctions, ExtractPublicFunctions, ExtractPrivateFunctions, ExtractNonFungibleTokenNames, ExtractNFTAssetType, ExtractMapValue, ExtractMapNames, ExtractMapKey, ExtractMap, ExtractImplementedTraits, ExtractFungibleTokenNames, ExtractFunctionOutput, ExtractFunctionNames, ExtractFunctionArgs, ExtractFunction, ExtractDefinedTraitNames, ExtractDataVars, ExtractConstants, ContractTypes, ContractPrincipalCV, ClarityWireType, ClarityValue, ClarityType, ClarityConversionError, Cl, CONTRACT_NAME_REGEX, BufferCV, BooleanCV, AbiVariable, AbiUInt128, AbiTypesOf, AbiType, AbiTupleType, AbiTuple, AbiTraitReference, AbiTraitFunction, AbiTraitDefinition, AbiToTS, AbiStringUtf8, AbiStringAscii, AbiResponseType, AbiResponse, AbiPrincipal, AbiPrimitiveType, AbiOptionalType, AbiOptional, AbiNone, AbiNonFungibleToken, AbiMap, AbiListType, AbiList, AbiInt128, AbiFungibleToken, AbiFunction, AbiContract, AbiBuffer, AbiBool };
@@ -300,6 +300,45 @@ interface AbiContract {
300
300
  implemented_traits?: ReadonlyArray<string>;
301
301
  defined_traits?: ReadonlyArray<AbiTraitDefinition>;
302
302
  }
303
+ declare const abiTypes: unique symbol;
304
+ /**
305
+ * Phantom type bundle a codegen tool can fuse onto an as-const ABI literal.
306
+ *
307
+ * Function/map keys are camelCase (matching the runtime client's method names)
308
+ * and `args` is the named-args object each method accepts. `ret` is the raw
309
+ * output type before any response unwrapping.
310
+ */
311
+ type ContractTypes = {
312
+ functions: Record<string, {
313
+ args: object
314
+ ret: unknown
315
+ access: "public" | "read-only" | "private"
316
+ }>
317
+ maps?: Record<string, {
318
+ key: unknown
319
+ value: unknown
320
+ }>
321
+ };
322
+ /**
323
+ * An as-const ABI literal branded with named codegen types. The brand is a
324
+ * phantom optional property: it never exists at runtime, so any `TypedAbi`
325
+ * value is still a plain ABI object and works everywhere an `AbiContract`
326
+ * does. Typed consumers (e.g. `getContract`) resolve the brand to surface
327
+ * named type aliases in hovers and errors instead of expanded inline types.
328
+ */
329
+ type TypedAbi<
330
+ A extends AbiContract,
331
+ T extends ContractTypes
332
+ > = A & {
333
+ readonly [abiTypes]?: T
334
+ };
335
+ /**
336
+ * Resolve the brand off an ABI type. `never` for un-branded ABIs, which lets
337
+ * consumers fall back to structural inference.
338
+ */
339
+ type AbiTypesOf<C> = C extends {
340
+ readonly [abiTypes]?: infer T
341
+ } ? NonNullable<T> extends ContractTypes ? NonNullable<T> : never : never;
303
342
  type ExtractFunctionNames<
304
343
  C extends AbiContract,
305
344
  Access extends FunctionAccess = FunctionAccess
@@ -855,11 +894,21 @@ declare function classifyContract(abi: AbiContract): SipStandard[];
855
894
  */
856
895
  declare function parseDeclaredStandards(claritySource: string): SipStandard[];
857
896
  /**
897
+ * Duck-type check: is `value` already a built ClarityValue? Tag-only CVs
898
+ * (`true`/`false`/`none`) have no payload; every other tag carries `value`.
899
+ */
900
+ declare function isClarityValue(value: unknown): value is ClarityValue;
901
+ /**
858
902
  * Convert a JS value to a ClarityValue using ABI type information.
903
+ *
904
+ * Pre-built ClarityValues pass through unchanged (escape hatch for callers
905
+ * that already hold a CV). Buffer args additionally accept hex strings and
906
+ * tagged `{ type, value }` objects — matching the generated-client input
907
+ * contract.
859
908
  */
860
909
  declare function jsToClarityValue(abiType: AbiType, value: unknown): ClarityValue;
861
910
  /**
862
911
  * Convert a ClarityValue back to a typed JS value using ABI type information.
863
912
  */
864
913
  declare function clarityValueToJS<T extends AbiType>(abiType: T, cv: ClarityValue): AbiToTS<T>;
865
- export { validateArgsArray, validateArgs, uintCV, tupleCV, trueCV, toCamelCase, stringUtf8CV, stringAsciiCV, standardPrincipalCV, someCV, sip013Abi, sip010Abi, sip009Abi, serializeCVBytes, serializeCV, responseOkCV, responseErrorCV, prettyPrint, prepareArgs, parseDeclaredStandards, noneCV, listCV, jsToClarityValue, jsToClarity, isUint8Array, isUint128, isTraitReference, isString, isStandardPrincipal, isResponse, isPrincipal, isOptional, isOkResponse, isInt128, isErrResponse, isContractPrincipal, isBool, isArray, isAbiTuple, isAbiTraitReference, isAbiStringUtf8, isAbiStringAscii, isAbiResponse, isAbiOptional, isAbiList, isAbiBuffer, intCV, falseCV, deserializeCVBytes, deserializeCV, cvToValue, cvToJSON, contractPrincipalCV, classifyContract, clarityValueToJS, clarityTypeFromByte, bufferCV, boolCV, VariableAccess, UIntCV, TupleData, TupleCV, TrueCV, TraitFunctionAccess, ToCamelCase, TRAIT_STANDARDS, StringUtf8CV, StringAsciiCV, StandardPrincipalCV, SomeCV, SipStandard, SIP013_ABI, SIP010_ABI, SIP009_ABI, ResponseOkCV, ResponseOk, ResponseErrorCV, ResponseErr, ResponseCV, Response, PrincipalCV, OptionalCV, NoneCV, ListCV, IntCV, FunctionArg, FunctionAccess, FalseCV, ExtractVariableType, ExtractVariableNames, ExtractVariable, ExtractReadOnlyFunctions, ExtractPublicFunctions, ExtractPrivateFunctions, ExtractNonFungibleTokenNames, ExtractNFTAssetType, ExtractMapValue, ExtractMapNames, ExtractMapKey, ExtractMap, ExtractImplementedTraits, ExtractFungibleTokenNames, ExtractFunctionOutput, ExtractFunctionNames, ExtractFunctionArgs, ExtractFunction, ExtractDefinedTraitNames, ExtractDataVars, ExtractConstants, ContractPrincipalCV, ClarityWireType, ClarityValue, ClarityType, ClarityConversionError, Cl, CONTRACT_NAME_REGEX, BufferCV, BooleanCV, AbiVariable, AbiUInt128, AbiType, AbiTupleType, AbiTuple, AbiTraitReference, AbiTraitFunction, AbiTraitDefinition, AbiToTS, AbiStringUtf8, AbiStringAscii, AbiResponseType, AbiResponse, AbiPrincipal, AbiPrimitiveType, AbiOptionalType, AbiOptional, AbiNone, AbiNonFungibleToken, AbiMap, AbiListType, AbiList, AbiInt128, AbiFungibleToken, AbiFunction, AbiContract, AbiBuffer, AbiBool };
914
+ export { validateArgsArray, validateArgs, uintCV, tupleCV, trueCV, toCamelCase, stringUtf8CV, stringAsciiCV, standardPrincipalCV, someCV, sip013Abi, sip010Abi, sip009Abi, serializeCVBytes, serializeCV, responseOkCV, responseErrorCV, prettyPrint, prepareArgs, parseDeclaredStandards, noneCV, listCV, jsToClarityValue, jsToClarity, isUint8Array, isUint128, isTraitReference, isString, isStandardPrincipal, isResponse, isPrincipal, isOptional, isOkResponse, isInt128, isErrResponse, isContractPrincipal, isClarityValue, isBool, isArray, isAbiTuple, isAbiTraitReference, isAbiStringUtf8, isAbiStringAscii, isAbiResponse, isAbiOptional, isAbiList, isAbiBuffer, intCV, falseCV, deserializeCVBytes, deserializeCV, cvToValue, cvToJSON, contractPrincipalCV, classifyContract, clarityValueToJS, clarityTypeFromByte, bufferCV, boolCV, VariableAccess, UIntCV, TypedAbi, TupleData, TupleCV, TrueCV, TraitFunctionAccess, ToCamelCase, TRAIT_STANDARDS, StringUtf8CV, StringAsciiCV, StandardPrincipalCV, SomeCV, SipStandard, SIP013_ABI, SIP010_ABI, SIP009_ABI, ResponseOkCV, ResponseOk, ResponseErrorCV, ResponseErr, ResponseCV, Response, PrincipalCV, OptionalCV, NoneCV, ListCV, IntCV, FunctionArg, FunctionAccess, FalseCV, ExtractVariableType, ExtractVariableNames, ExtractVariable, ExtractReadOnlyFunctions, ExtractPublicFunctions, ExtractPrivateFunctions, ExtractNonFungibleTokenNames, ExtractNFTAssetType, ExtractMapValue, ExtractMapNames, ExtractMapKey, ExtractMap, ExtractImplementedTraits, ExtractFungibleTokenNames, ExtractFunctionOutput, ExtractFunctionNames, ExtractFunctionArgs, ExtractFunction, ExtractDefinedTraitNames, ExtractDataVars, ExtractConstants, ContractTypes, ContractPrincipalCV, ClarityWireType, ClarityValue, ClarityType, ClarityConversionError, Cl, CONTRACT_NAME_REGEX, BufferCV, BooleanCV, AbiVariable, AbiUInt128, AbiTypesOf, AbiType, AbiTupleType, AbiTuple, AbiTraitReference, AbiTraitFunction, AbiTraitDefinition, AbiToTS, AbiStringUtf8, AbiStringAscii, AbiResponseType, AbiResponse, AbiPrincipal, AbiPrimitiveType, AbiOptionalType, AbiOptional, AbiNone, AbiNonFungibleToken, AbiMap, AbiListType, AbiList, AbiInt128, AbiFungibleToken, AbiFunction, AbiContract, AbiBuffer, AbiBool };
@@ -10,7 +10,7 @@ import {
10
10
  prettyPrint,
11
11
  validateArgs,
12
12
  validateArgsArray
13
- } from "../../shared/stacks-43cxvnr7.js";
13
+ } from "../../shared/stacks-jbmcwky5.js";
14
14
  import {
15
15
  SIP009_ABI,
16
16
  SIP010_ABI,
@@ -32,6 +32,7 @@ import {
32
32
  isAbiTuple,
33
33
  isArray,
34
34
  isBool,
35
+ isClarityValue,
35
36
  isContractPrincipal,
36
37
  isErrResponse,
37
38
  isInt128,
@@ -46,7 +47,7 @@ import {
46
47
  isUint8Array,
47
48
  jsToClarityValue,
48
49
  toCamelCase
49
- } from "../../shared/stacks-g7ffp8aj.js";
50
+ } from "../../shared/stacks-18jv9aen.js";
50
51
  import {
51
52
  Cl,
52
53
  ClarityWireType,
@@ -71,10 +72,9 @@ import {
71
72
  trueCV,
72
73
  tupleCV,
73
74
  uintCV
74
- } from "../../shared/stacks-0zysn74p.js";
75
- import"../../shared/stacks-v9jqcpd4.js";
76
- import"../../shared/stacks-6xmk24yw.js";
77
- import"../../shared/stacks-2h8d2y27.js";
75
+ } from "../../shared/stacks-2mm20wqf.js";
76
+ import"../../shared/stacks-azp00pve.js";
77
+ import"../../shared/stacks-qs5fzts5.js";
78
78
  import"../../shared/stacks-cfazrteq.js";
79
79
  export {
80
80
  validateArgsArray,
@@ -113,6 +113,7 @@ export {
113
113
  isInt128,
114
114
  isErrResponse,
115
115
  isContractPrincipal,
116
+ isClarityValue,
116
117
  isBool,
117
118
  isArray,
118
119
  isAbiTuple,
@@ -145,5 +146,5 @@ export {
145
146
  CONTRACT_NAME_REGEX
146
147
  };
147
148
 
148
- //# debugId=54EA4D1AFF16FB1B64756E2164756E21
149
+ //# debugId=7594A4C0BD32711764756E2164756E21
149
150
  //# sourceMappingURL=index.js.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "54EA4D1AFF16FB1B64756E2164756E21",
7
+ "debugId": "7594A4C0BD32711764756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -112,6 +112,7 @@ declare const ClarityVersion: {
112
112
  readonly Clarity3: 3
113
113
  readonly Clarity4: 4
114
114
  readonly Clarity5: 5
115
+ readonly Clarity6: 6
115
116
  };
116
117
  type ClarityVersion = (typeof ClarityVersion)[keyof typeof ClarityVersion];
117
118
  declare const AnchorMode: {
@@ -139,6 +140,12 @@ declare const PubKeyEncoding: {
139
140
  readonly Uncompressed: 0x01
140
141
  };
141
142
  type PubKeyEncoding = (typeof PubKeyEncoding)[keyof typeof PubKeyEncoding];
143
+ declare const PoxConditionCode: {
144
+ readonly WillNotPerform: 0x30
145
+ readonly MayPerform: 0x31
146
+ readonly WillPerform: 0x32
147
+ };
148
+ type PoxConditionCode = (typeof PoxConditionCode)[keyof typeof PoxConditionCode];
142
149
  declare const TenureChangeCause: {
143
150
  readonly BlockFound: 0x00
144
151
  readonly Extended: 0x01
@@ -241,7 +248,7 @@ type StacksTransaction = {
241
248
  postConditions: PostConditionWire[]
242
249
  payload: TransactionPayload
243
250
  };
244
- type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire;
251
+ type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire | StakingPostConditionWire | PoxPostConditionWire;
245
252
  type StxPostConditionWire = {
246
253
  type: "stx"
247
254
  principal: PostConditionPrincipalWire
@@ -262,6 +269,17 @@ type NftPostConditionWire = {
262
269
  conditionCode: number
263
270
  assetId: ClarityValue
264
271
  };
272
+ type StakingPostConditionWire = {
273
+ type: "staking"
274
+ principal: PostConditionPrincipalWire
275
+ conditionCode: number
276
+ amount: bigint
277
+ };
278
+ type PoxPostConditionWire = {
279
+ type: "pox"
280
+ principal: PostConditionPrincipalWire
281
+ conditionCode: PoxConditionCode
282
+ };
265
283
  type PostConditionPrincipalWire = {
266
284
  type: "origin"
267
285
  } | {
@@ -834,7 +852,19 @@ type NftPostCondition = {
834
852
  asset: string
835
853
  assetId: ClarityValue
836
854
  };
837
- type PostCondition = StxPostCondition | FtPostCondition | NftPostCondition;
855
+ type StakingPostCondition = {
856
+ type: "staking-postcondition"
857
+ address: string
858
+ condition: FungibleComparator
859
+ amount: string | bigint | number
860
+ };
861
+ type PoxComparator = "will-not-perform" | "may-perform" | "will-perform";
862
+ type PoxPostCondition = {
863
+ type: "pox-postcondition"
864
+ address: string
865
+ condition: PoxComparator
866
+ };
867
+ type PostCondition = StxPostCondition | FtPostCondition | NftPostCondition | StakingPostCondition | PoxPostCondition;
838
868
  type IntegerType = number | string | bigint | Uint8Array;
839
869
  type CallContractParams = {
840
870
  contract: string
@@ -112,6 +112,7 @@ declare const ClarityVersion: {
112
112
  readonly Clarity3: 3
113
113
  readonly Clarity4: 4
114
114
  readonly Clarity5: 5
115
+ readonly Clarity6: 6
115
116
  };
116
117
  type ClarityVersion = (typeof ClarityVersion)[keyof typeof ClarityVersion];
117
118
  declare const AnchorMode: {
@@ -139,6 +140,12 @@ declare const PubKeyEncoding: {
139
140
  readonly Uncompressed: 0x01
140
141
  };
141
142
  type PubKeyEncoding = (typeof PubKeyEncoding)[keyof typeof PubKeyEncoding];
143
+ declare const PoxConditionCode: {
144
+ readonly WillNotPerform: 0x30
145
+ readonly MayPerform: 0x31
146
+ readonly WillPerform: 0x32
147
+ };
148
+ type PoxConditionCode = (typeof PoxConditionCode)[keyof typeof PoxConditionCode];
142
149
  declare const TenureChangeCause: {
143
150
  readonly BlockFound: 0x00
144
151
  readonly Extended: 0x01
@@ -241,7 +248,7 @@ type StacksTransaction = {
241
248
  postConditions: PostConditionWire[]
242
249
  payload: TransactionPayload
243
250
  };
244
- type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire;
251
+ type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire | StakingPostConditionWire | PoxPostConditionWire;
245
252
  type StxPostConditionWire = {
246
253
  type: "stx"
247
254
  principal: PostConditionPrincipalWire
@@ -262,6 +269,17 @@ type NftPostConditionWire = {
262
269
  conditionCode: number
263
270
  assetId: ClarityValue
264
271
  };
272
+ type StakingPostConditionWire = {
273
+ type: "staking"
274
+ principal: PostConditionPrincipalWire
275
+ conditionCode: number
276
+ amount: bigint
277
+ };
278
+ type PoxPostConditionWire = {
279
+ type: "pox"
280
+ principal: PostConditionPrincipalWire
281
+ conditionCode: PoxConditionCode
282
+ };
265
283
  type PostConditionPrincipalWire = {
266
284
  type: "origin"
267
285
  } | {
@@ -834,7 +852,19 @@ type NftPostCondition = {
834
852
  asset: string
835
853
  assetId: ClarityValue
836
854
  };
837
- type PostCondition = StxPostCondition | FtPostCondition | NftPostCondition;
855
+ type StakingPostCondition = {
856
+ type: "staking-postcondition"
857
+ address: string
858
+ condition: FungibleComparator
859
+ amount: string | bigint | number
860
+ };
861
+ type PoxComparator = "will-not-perform" | "may-perform" | "will-perform";
862
+ type PoxPostCondition = {
863
+ type: "pox-postcondition"
864
+ address: string
865
+ condition: PoxComparator
866
+ };
867
+ type PostCondition = StxPostCondition | FtPostCondition | NftPostCondition | StakingPostCondition | PoxPostCondition;
838
868
  type IntegerType = number | string | bigint | Uint8Array;
839
869
  type CallContractParams = {
840
870
  contract: string
package/dist/src/index.js CHANGED
@@ -22,14 +22,14 @@ import {
22
22
  simulateCall,
23
23
  simulateTransaction,
24
24
  transferStx
25
- } from "../shared/stacks-53bjdb6p.js";
25
+ } from "../shared/stacks-7nvbv61d.js";
26
26
  import {
27
27
  callContract,
28
28
  getMapEntry
29
- } from "../shared/stacks-z1j5d6fd.js";
29
+ } from "../shared/stacks-v150hffx.js";
30
30
  import {
31
31
  readContract
32
- } from "../shared/stacks-q1mjkt15.js";
32
+ } from "../shared/stacks-msmgyerb.js";
33
33
  import {
34
34
  WebSocketError,
35
35
  watchAddress,
@@ -41,7 +41,7 @@ import {
41
41
  } from "../shared/stacks-tjjnkt3r.js";
42
42
  import {
43
43
  sponsorTransaction
44
- } from "../shared/stacks-1qmx9kt8.js";
44
+ } from "../shared/stacks-3kmj5yre.js";
45
45
  import {
46
46
  BroadcastError,
47
47
  SerializationError,
@@ -58,19 +58,19 @@ import {
58
58
  resolveNonce,
59
59
  sendTransaction,
60
60
  startNonceReconciler
61
- } from "../shared/stacks-ttbq8emk.js";
61
+ } from "../shared/stacks-502j0efj.js";
62
62
  import {
63
63
  BaseError
64
64
  } from "../shared/stacks-709tra19.js";
65
- import"../shared/stacks-wqgepfab.js";
65
+ import"../shared/stacks-g11v9a35.js";
66
66
  import {
67
67
  buildContractCall,
68
68
  buildContractDeploy,
69
69
  buildTokenTransfer,
70
70
  finalizeMultiSig,
71
71
  makeMultiSigAddress
72
- } from "../shared/stacks-4trgpb5a.js";
73
- import"../shared/stacks-0zysn74p.js";
72
+ } from "../shared/stacks-ssndnbbd.js";
73
+ import"../shared/stacks-2mm20wqf.js";
74
74
  import {
75
75
  formatStx,
76
76
  parseStx
@@ -79,16 +79,13 @@ import {
79
79
  AddressVersion,
80
80
  MICROSTX_PER_STX,
81
81
  TESTNET_ZERO_ADDRESS,
82
- ZERO_ADDRESS
83
- } from "../shared/stacks-v9jqcpd4.js";
84
- import"../shared/stacks-xxn5ma6g.js";
85
- import {
82
+ ZERO_ADDRESS,
86
83
  getContractAddress,
87
84
  isAddressEqual,
88
85
  isValidAddress,
89
86
  parseContractId
90
- } from "../shared/stacks-6xmk24yw.js";
91
- import"../shared/stacks-2h8d2y27.js";
87
+ } from "../shared/stacks-azp00pve.js";
88
+ import"../shared/stacks-qs5fzts5.js";
92
89
  import {
93
90
  __export
94
91
  } from "../shared/stacks-cfazrteq.js";
@@ -909,5 +906,5 @@ export {
909
906
  AddressVersion
910
907
  };
911
908
 
912
- //# debugId=8AC00A187A88EE2764756E2164756E21
909
+ //# debugId=B7DF783E926E825564756E2164756E21
913
910
  //# sourceMappingURL=index.js.map