@secondlayer/stacks 2.0.0 → 2.1.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 (99) hide show
  1. package/dist/shared/{stacks-0nfexv24.cjs → stacks-0jk7vd8r.cjs} +9 -8
  2. package/dist/shared/{stacks-0nfexv24.cjs.map → stacks-0jk7vd8r.cjs.map} +5 -5
  3. package/dist/shared/{stacks-wjem3xw9.js → stacks-0zysn74p.js} +11 -10
  4. package/dist/shared/{stacks-wjem3xw9.js.map → stacks-0zysn74p.js.map} +5 -5
  5. package/dist/shared/stacks-14pgpkrr.cjs.map +6 -6
  6. package/dist/shared/{stacks-s7z5q8be.js → stacks-2h8d2y27.js} +29 -28
  7. package/dist/shared/stacks-2h8d2y27.js.map +11 -0
  8. package/dist/shared/{stacks-96d6m1zy.js → stacks-3erxq8wh.js} +6 -6
  9. package/dist/shared/{stacks-96d6m1zy.js.map → stacks-3erxq8wh.js.map} +4 -4
  10. package/dist/shared/{stacks-ra02bpny.cjs → stacks-3y058qda.cjs} +29 -28
  11. package/dist/shared/stacks-3y058qda.cjs.map +11 -0
  12. package/dist/shared/{stacks-s10yb9gz.js → stacks-6xmk24yw.js} +2 -2
  13. package/dist/shared/{stacks-70p84bgg.js → stacks-7tn3zsbe.js} +3 -3
  14. package/dist/shared/stacks-7tn3zsbe.js.map +10 -0
  15. package/dist/shared/{stacks-y5262j0z.cjs → stacks-8e4k5qnm.cjs} +4 -4
  16. package/dist/shared/{stacks-y5262j0z.cjs.map → stacks-8e4k5qnm.cjs.map} +4 -4
  17. package/dist/shared/stacks-9z833ww5.js +409 -0
  18. package/dist/shared/stacks-9z833ww5.js.map +10 -0
  19. package/dist/shared/{stacks-5tprhns9.cjs → stacks-dpxnxhqb.cjs} +2 -5
  20. package/dist/shared/{stacks-5tprhns9.cjs.map → stacks-dpxnxhqb.cjs.map} +3 -3
  21. package/dist/shared/{stacks-4x2bcc2k.js → stacks-fy5h5qyx.js} +7 -7
  22. package/dist/shared/{stacks-4x2bcc2k.js.map → stacks-fy5h5qyx.js.map} +6 -6
  23. package/dist/shared/{stacks-zf7rbpzp.js → stacks-g7ffp8aj.js} +3 -3
  24. package/dist/shared/{stacks-zf7rbpzp.js.map → stacks-g7ffp8aj.js.map} +2 -2
  25. package/dist/shared/{stacks-1s5w4ncf.js → stacks-g7ys594x.js} +7 -7
  26. package/dist/shared/{stacks-1s5w4ncf.js.map → stacks-g7ys594x.js.map} +4 -4
  27. package/dist/shared/{stacks-09wa7ewe.js → stacks-kmnthgj7.js} +12 -12
  28. package/dist/shared/stacks-kmnthgj7.js.map +15 -0
  29. package/dist/shared/{stacks-je937aas.js → stacks-kmshch4q.js} +3 -3
  30. package/dist/shared/stacks-mnnhpex3.cjs +407 -0
  31. package/dist/shared/stacks-mnnhpex3.cjs.map +10 -0
  32. package/dist/shared/{stacks-y3dh7hv1.js → stacks-tjjnkt3r.js} +2 -5
  33. package/dist/shared/{stacks-y3dh7hv1.js.map → stacks-tjjnkt3r.js.map} +3 -3
  34. package/dist/shared/stacks-vdfag81a.cjs.map +2 -2
  35. package/dist/shared/stacks-wyxj879g.cjs.map +2 -2
  36. package/dist/shared/{stacks-rwfgts3s.js → stacks-xxn5ma6g.js} +2 -2
  37. package/dist/shared/{stacks-17sdtaxg.cjs → stacks-xxvz1x0f.cjs} +8 -8
  38. package/dist/shared/stacks-xxvz1x0f.cjs.map +15 -0
  39. package/dist/shared/{stacks-s30kkvm8.js → stacks-y2p4h5ks.js} +4 -4
  40. package/dist/shared/{stacks-znrb59ce.cjs → stacks-y3nbm8bw.cjs} +3 -3
  41. package/dist/shared/{stacks-znrb59ce.cjs.map → stacks-y3nbm8bw.cjs.map} +4 -4
  42. package/dist/src/accounts/index.cjs +3 -2
  43. package/dist/src/accounts/index.cjs.map +3 -3
  44. package/dist/src/accounts/index.js +5 -4
  45. package/dist/src/accounts/index.js.map +3 -3
  46. package/dist/src/actions/index.js +11 -11
  47. package/dist/src/bns/index.cjs +2 -4
  48. package/dist/src/bns/index.cjs.map +4 -4
  49. package/dist/src/bns/index.js +12 -14
  50. package/dist/src/bns/index.js.map +4 -4
  51. package/dist/src/clarity/index.js +5 -5
  52. package/dist/src/connect/index.cjs +17 -17
  53. package/dist/src/connect/index.cjs.map +7 -7
  54. package/dist/src/connect/index.js +17 -17
  55. package/dist/src/connect/index.js.map +7 -7
  56. package/dist/src/connect/walletconnect/index.cjs +16 -13
  57. package/dist/src/connect/walletconnect/index.cjs.map +9 -9
  58. package/dist/src/connect/walletconnect/index.js +16 -13
  59. package/dist/src/connect/walletconnect/index.js.map +9 -9
  60. package/dist/src/index.cjs +4 -4
  61. package/dist/src/index.cjs.map +8 -8
  62. package/dist/src/index.d.cts +0 -4
  63. package/dist/src/index.d.ts +0 -4
  64. package/dist/src/index.js +13 -13
  65. package/dist/src/index.js.map +8 -8
  66. package/dist/src/postconditions/index.js +3 -3
  67. package/dist/src/pox/index.cjs +3 -408
  68. package/dist/src/pox/index.cjs.map +4 -5
  69. package/dist/src/pox/index.js +16 -417
  70. package/dist/src/pox/index.js.map +4 -5
  71. package/dist/src/sbtc/index.cjs +270 -0
  72. package/dist/src/sbtc/index.cjs.map +14 -0
  73. package/dist/src/sbtc/index.d.cts +399 -0
  74. package/dist/src/sbtc/index.d.ts +399 -0
  75. package/dist/src/sbtc/index.js +286 -0
  76. package/dist/src/sbtc/index.js.map +14 -0
  77. package/dist/src/stackingdao/index.cjs +7 -7
  78. package/dist/src/stackingdao/index.cjs.map +3 -3
  79. package/dist/src/stackingdao/index.js +16 -16
  80. package/dist/src/stackingdao/index.js.map +3 -3
  81. package/dist/src/subscriptions/index.js +1 -1
  82. package/dist/src/tools/btc/index.cjs.map +2 -2
  83. package/dist/src/tools/btc/index.js.map +2 -2
  84. package/dist/src/tools/index.cjs +42 -43
  85. package/dist/src/tools/index.cjs.map +23 -23
  86. package/dist/src/tools/index.js +42 -43
  87. package/dist/src/tools/index.js.map +23 -23
  88. package/dist/src/transactions/index.js +6 -6
  89. package/dist/src/utils/index.js +3 -3
  90. package/package.json +6 -1
  91. package/dist/shared/stacks-09wa7ewe.js.map +0 -15
  92. package/dist/shared/stacks-17sdtaxg.cjs.map +0 -15
  93. package/dist/shared/stacks-70p84bgg.js.map +0 -10
  94. package/dist/shared/stacks-ra02bpny.cjs.map +0 -11
  95. package/dist/shared/stacks-s7z5q8be.js.map +0 -11
  96. /package/dist/shared/{stacks-s10yb9gz.js.map → stacks-6xmk24yw.js.map} +0 -0
  97. /package/dist/shared/{stacks-je937aas.js.map → stacks-kmshch4q.js.map} +0 -0
  98. /package/dist/shared/{stacks-rwfgts3s.js.map → stacks-xxn5ma6g.js.map} +0 -0
  99. /package/dist/shared/{stacks-s30kkvm8.js.map → stacks-y2p4h5ks.js.map} +0 -0
@@ -2,16 +2,16 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/actions/public/estimateFee.ts", "../src/actions/public/getMapEntry.ts", "../src/actions/public/getNonce.ts", "../src/actions/public/readContract.ts", "../src/errors/transaction.ts", "../src/actions/wallet/sendTransaction.ts", "../src/actions/wallet/utils.ts", "../src/actions/wallet/callContract.ts"],
4
4
  "sourcesContent": [
5
- "import type { Client } from \"../../clients/types.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport {\n\tserializePayload,\n\tserializeTransaction,\n} from \"../../transactions/wire/serialize.ts\";\nimport { bytesToHex } from \"../../utils/encoding.ts\";\n\nexport type EstimateFeeParams = {\n\ttransaction: StacksTransaction;\n};\n\nexport type FeeEstimation = {\n\tfeeRate: number;\n\tfee: number;\n};\n\nexport async function estimateFee(\n\tclient: Client,\n\tparams: EstimateFeeParams,\n): Promise<FeeEstimation[]> {\n\tconst payloadHex = bytesToHex(serializePayload(params.transaction.payload));\n\tconst txHex = bytesToHex(serializeTransaction(params.transaction));\n\n\tconst data = await client.request(\"/v2/fees/transaction\", {\n\t\tmethod: \"POST\",\n\t\tbody: {\n\t\t\testimated_len: Math.ceil(txHex.length / 2),\n\t\t\ttransaction_payload: \"0x\" + payloadHex,\n\t\t},\n\t});\n\n\treturn (data.estimations ?? []).map((e: any) => ({\n\t\tfeeRate: e.fee_rate,\n\t\tfee: e.fee,\n\t}));\n}\n",
5
+ "import type { Client } from \"../../clients/types.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport {\n\tserializePayload,\n\tserializeTransaction,\n} from \"../../transactions/wire/serialize.ts\";\nimport { bytesToHex } from \"../../utils/encoding.ts\";\n\nexport type EstimateFeeParams = {\n\ttransaction: StacksTransaction;\n};\n\nexport type FeeEstimation = {\n\tfeeRate: number;\n\tfee: number;\n};\n\nexport async function estimateFee(\n\tclient: Client,\n\tparams: EstimateFeeParams,\n): Promise<FeeEstimation[]> {\n\tconst payloadHex = bytesToHex(serializePayload(params.transaction.payload));\n\tconst txHex = bytesToHex(serializeTransaction(params.transaction));\n\n\tconst data = await client.request(\"/v2/fees/transaction\", {\n\t\tmethod: \"POST\",\n\t\tbody: {\n\t\t\testimated_len: Math.ceil(txHex.length / 2),\n\t\t\ttransaction_payload: `0x${payloadHex}`,\n\t\t},\n\t});\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\treturn (data.estimations ?? []).map((e: any) => ({\n\t\tfeeRate: e.fee_rate,\n\t\tfee: e.fee,\n\t}));\n}\n",
6
6
  "import { deserializeCVBytes } from \"../../clarity/deserialize.ts\";\nimport { serializeCVBytes } from \"../../clarity/serialize.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { Client } from \"../../clients/types.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport { bytesToHex, with0x } from \"../../utils/encoding.ts\";\n\nexport type GetMapEntryParams = {\n\tcontract: string; // \"address.name\"\n\tmapName: string;\n\tkey: ClarityValue;\n};\n\nexport async function getMapEntry<T extends ClarityValue = ClarityValue>(\n\tclient: Client,\n\tparams: GetMapEntryParams,\n): Promise<T> {\n\tconst [address, name] = parseContractId(params.contract);\n\tconst serializedKey = with0x(bytesToHex(serializeCVBytes(params.key)));\n\n\tconst data = await client.request(\n\t\t`/v2/map_entry/${address}/${name}/${params.mapName}`,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tbody: serializedKey,\n\t\t},\n\t);\n\n\treturn deserializeCVBytes<T>(data.data);\n}\n",
7
7
  "import type { Client } from \"../../clients/types.ts\";\n\nexport type GetNonceParams = {\n\taddress: string;\n};\n\nexport type GetNonceResult = {\n\tnonce: bigint;\n\tpossibleNextNonce: bigint;\n};\n\nexport async function getNonce(\n\tclient: Client,\n\tparams: GetNonceParams,\n): Promise<bigint> {\n\tconst data = await client.request(`/v2/accounts/${params.address}`, {\n\t\tmethod: \"GET\",\n\t});\n\treturn BigInt(data.nonce);\n}\n",
8
8
  "import { deserializeCVBytes } from \"../../clarity/deserialize.ts\";\nimport { serializeCVBytes } from \"../../clarity/serialize.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { Client } from \"../../clients/types.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport { bytesToHex, with0x } from \"../../utils/encoding.ts\";\n\nexport type ReadContractParams = {\n\tcontract: string; // \"address.name\"\n\tfunctionName: string;\n\targs?: ClarityValue[];\n\tsender?: string;\n};\n\nexport async function readContract<T extends ClarityValue = ClarityValue>(\n\tclient: Client,\n\tparams: ReadContractParams,\n): Promise<T> {\n\tconst [address, name] = parseContractId(params.contract);\n\tconst sender = params.sender ?? address;\n\n\tconst serializedArgs = (params.args ?? []).map((arg) =>\n\t\twith0x(bytesToHex(serializeCVBytes(arg))),\n\t);\n\n\tconst data = await client.request(\n\t\t`/v2/contracts/call-read/${address}/${name}/${params.functionName}`,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\tbody: {\n\t\t\t\tsender,\n\t\t\t\targuments: serializedArgs,\n\t\t\t},\n\t\t},\n\t);\n\n\tif (data.okay) {\n\t\treturn deserializeCVBytes<T>(data.result);\n\t}\n\tthrow new Error(data.cause ?? \"Read-only call failed\");\n}\n",
9
9
  "import { BaseError } from \"./base.ts\";\n\nexport class TransactionError extends BaseError {\n\toverride name = \"TransactionError\";\n}\n\nexport class BroadcastError extends BaseError {\n\toverride name = \"BroadcastError\";\n\ttxid?: string;\n\treason?: string;\n\n\tconstructor(\n\t\tmessage: string,\n\t\toptions?: { cause?: Error; txid?: string; reason?: string },\n\t) {\n\t\tsuper(message, options);\n\t\tthis.txid = options?.txid;\n\t\tthis.reason = options?.reason;\n\t}\n}\n\nexport class SerializationError extends BaseError {\n\toverride name = \"SerializationError\";\n}\n\nexport class SigningError extends BaseError {\n\toverride name = \"SigningError\";\n}\n",
10
10
  "import type { Client } from \"../../clients/types.ts\";\nimport { BroadcastError } from \"../../errors/transaction.ts\";\nimport { getTransactionId } from \"../../transactions/signer.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport { serializeTransaction } from \"../../transactions/wire/serialize.ts\";\nimport { bytesToHex } from \"../../utils/encoding.ts\";\n\nexport type SendTransactionParams = {\n\ttransaction: StacksTransaction;\n\tattachment?: Uint8Array | string;\n};\n\nexport type SendTransactionResult = {\n\ttxid: string;\n};\n\n/** Broadcast a signed transaction to the network */\nexport async function sendTransaction(\n\tclient: Client,\n\tparams: SendTransactionParams,\n): Promise<SendTransactionResult> {\n\tconst hex = bytesToHex(serializeTransaction(params.transaction));\n\n\tconst body: Record<string, string> = { tx: hex };\n\tif (params.attachment) {\n\t\tbody.attachment =\n\t\t\ttypeof params.attachment === \"string\"\n\t\t\t\t? params.attachment\n\t\t\t\t: bytesToHex(params.attachment);\n\t}\n\n\tconst data = await client.request(\"/v2/transactions\", {\n\t\tmethod: \"POST\",\n\t\tbody,\n\t});\n\n\tif (data.error) {\n\t\tthrow new BroadcastError(data.reason ?? data.error, {\n\t\t\treason: data.reason,\n\t\t});\n\t}\n\n\tconst txid =\n\t\ttypeof data === \"string\"\n\t\t\t? data.replace(/\"/g, \"\")\n\t\t\t: (data.txid ?? getTransactionId(params.transaction));\n\n\treturn { txid };\n}\n",
11
11
  "import type { ProviderAccount } from \"../../accounts/types.ts\";\nimport type { Account } from \"../../clients/types.ts\";\n\nexport function isProviderAccount(\n\taccount: Account,\n): account is ProviderAccount {\n\treturn account.type === \"provider\";\n}\n",
12
- "import type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { Client } from \"../../clients/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport { buildContractCall } from \"../../transactions/build.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { sendTransaction } from \"./sendTransaction.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type CallContractParams = {\n\tcontract: string; // \"address.name\"\n\tfunctionName: string;\n\tfunctionArgs?: ClarityValue[];\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\n/** Build, sign, and broadcast a contract call */\nexport async function callContract(\n\tclient: Client,\n\tparams: CallContractParams,\n): Promise<string> {\n\tconst account = client.account;\n\tif (!account) throw new Error(\"Account required\");\n\n\t// Provider: delegate to wallet\n\tif (isProviderAccount(account)) {\n\t\tconst result = await account.provider.request(\"stx_callContract\", {\n\t\t\tcontract: params.contract,\n\t\t\tfunctionName: params.functionName,\n\t\t\tfunctionArgs: params.functionArgs ?? [],\n\t\t});\n\t\treturn result.txid;\n\t}\n\n\t// Local/Custom: build → sign → broadcast\n\tconst [contractAddress, contractName] = parseContractId(params.contract);\n\n\tconst nonce =\n\t\tparams.nonce ?? (await getNonce(client, { address: account.address }));\n\n\tconst unsigned = buildContractCall({\n\t\tcontractAddress,\n\t\tcontractName,\n\t\tfunctionName: params.functionName,\n\t\tfunctionArgs: params.functionArgs ?? [],\n\t\tfee: params.fee ?? 0n,\n\t\tnonce,\n\t\tpublicKey: account.publicKey,\n\t\tchain: client.chain,\n\t\tpostConditionMode: params.postConditionMode,\n\t\tpostConditions: params.postConditions,\n\t});\n\n\tif (params.fee === undefined) {\n\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\tconst mid = estimates[1] ?? estimates[0];\n\t\tif (mid) {\n\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t}\n\t}\n\n\tconst signed = await signTransactionWithAccount(unsigned, account);\n\tconst result = await sendTransaction(client, { transaction: signed });\n\treturn result.txid;\n}\n"
12
+ "import type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { Client } from \"../../clients/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport { buildContractCall } from \"../../transactions/build.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { sendTransaction } from \"./sendTransaction.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type CallContractParams = {\n\tcontract: string; // \"address.name\"\n\tfunctionName: string;\n\tfunctionArgs?: ClarityValue[];\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\n/** Build, sign, and broadcast a contract call */\nexport async function callContract(\n\tclient: Client,\n\tparams: CallContractParams,\n): Promise<string> {\n\tconst account = client.account;\n\tif (!account) throw new Error(\"Account required\");\n\n\t// Provider: delegate to wallet\n\tif (isProviderAccount(account)) {\n\t\tconst result = await account.provider.request(\"stx_callContract\", {\n\t\t\tcontract: params.contract,\n\t\t\tfunctionName: params.functionName,\n\t\t\tfunctionArgs: params.functionArgs ?? [],\n\t\t});\n\t\treturn result.txid;\n\t}\n\n\t// Local/Custom: build → sign → broadcast\n\tconst [contractAddress, contractName] = parseContractId(params.contract);\n\n\tconst nonce =\n\t\tparams.nonce ?? (await getNonce(client, { address: account.address }));\n\n\tconst unsigned = buildContractCall({\n\t\tcontractAddress,\n\t\tcontractName,\n\t\tfunctionName: params.functionName,\n\t\tfunctionArgs: params.functionArgs ?? [],\n\t\tfee: params.fee ?? 0n,\n\t\tnonce,\n\t\tpublicKey: account.publicKey,\n\t\tchain: client.chain,\n\t\tpostConditionMode: params.postConditionMode,\n\t\tpostConditions: params.postConditions,\n\t});\n\n\tif (params.fee === undefined) {\n\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\tconst mid = estimates[1] ?? estimates[0];\n\t\tif (mid) {\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t}\n\t}\n\n\tconst signed = await signTransactionWithAccount(unsigned, account);\n\tconst result = await sendTransaction(client, { transaction: signed });\n\treturn result.txid;\n}\n"
13
13
  ],
14
- "mappings": "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",
15
- "debugId": "BE1E5B637739D1BE64756E2164756E21",
14
+ "mappings": "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",
15
+ "debugId": "671528527234595C64756E2164756E21",
16
16
  "names": []
17
17
  }
@@ -17,7 +17,8 @@ function ensureSyncSigning() {
17
17
  if (!import_secp256k1.etc.hmacSha256Sync) {
18
18
  import_secp256k1.etc.hmacSha256Sync = (key, ...msgs) => {
19
19
  const h = import_hmac.hmac.create(import_sha2.sha256, key);
20
- msgs.forEach((msg) => h.update(msg));
20
+ for (const msg of msgs)
21
+ h.update(msg);
21
22
  return h.digest();
22
23
  };
23
24
  }
@@ -86,5 +87,5 @@ function toAccount(source) {
86
87
  };
87
88
  }
88
89
 
89
- //# debugId=7A61E0D86E2E8DC764756E2164756E21
90
+ //# debugId=6B90BA85222D9A8264756E2164756E21
90
91
  //# sourceMappingURL=index.cjs.map
@@ -2,11 +2,11 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/accounts/privateKeyToAccount.ts", "../src/accounts/mnemonicToAccount.ts", "../src/accounts/toAccount.ts"],
4
4
  "sourcesContent": [
5
- "import { hmac } from \"@noble/hashes/hmac.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { etc, getPublicKey as nobleGetPublicKey, sign } from \"@noble/secp256k1\";\nimport { c32address } from \"../utils/c32.ts\";\nimport { bytesToHex, hexToBytes, without0x } from \"../utils/encoding.ts\";\nimport { hash160 } from \"../utils/hash.ts\";\nimport type { LocalAccount } from \"./types.ts\";\n\nfunction ensureSyncSigning() {\n\tif (!etc.hmacSha256Sync) {\n\t\tetc.hmacSha256Sync = (key: Uint8Array, ...msgs: Uint8Array[]) => {\n\t\t\tconst h = hmac.create(sha256, key);\n\t\t\tmsgs.forEach((msg) => h.update(msg));\n\t\t\treturn h.digest();\n\t\t};\n\t}\n}\n\nconst PRIVATE_KEY_COMPRESSED_LENGTH = 33;\n\nexport function privateKeyToAccount(\n\tprivateKey: string | Uint8Array,\n\toptions?: { addressVersion?: number },\n): LocalAccount {\n\tensureSyncSigning();\n\tconst keyBytes = normalizePrivateKey(privateKey);\n\tconst rawKey = keyBytes.slice(0, 32);\n\n\t// Always derive compressed public key\n\tconst publicKeyBytes = nobleGetPublicKey(rawKey, true);\n\tconst publicKeyHex = bytesToHex(publicKeyBytes);\n\n\t// Default to mainnet single-sig (22)\n\tconst addressVersion = options?.addressVersion ?? 22;\n\tconst address = c32address(\n\t\taddressVersion,\n\t\tbytesToHex(hash160(publicKeyBytes)),\n\t);\n\n\treturn {\n\t\ttype: \"local\",\n\t\taddress,\n\t\tpublicKey: publicKeyHex,\n\n\t\tsign(hash: Uint8Array): Uint8Array {\n\t\t\tconst sig = sign(hash, rawKey, { lowS: true });\n\t\t\tconst result = new Uint8Array(65);\n\t\t\tresult[0] = sig.recovery;\n\t\t\tresult.set(sig.toCompactRawBytes(), 1);\n\t\t\treturn result;\n\t\t},\n\n\t\tsignMessage(message: string | Uint8Array): string {\n\t\t\tconst msgBytes =\n\t\t\t\ttypeof message === \"string\"\n\t\t\t\t\t? new TextEncoder().encode(message)\n\t\t\t\t\t: message;\n\t\t\tconst msgHash = sha256(msgBytes);\n\t\t\tconst sigBytes = this.sign(msgHash);\n\t\t\treturn bytesToHex(sigBytes);\n\t\t},\n\t};\n}\n\nfunction normalizePrivateKey(key: string | Uint8Array): Uint8Array {\n\tif (typeof key === \"string\") {\n\t\treturn hexToBytes(without0x(key));\n\t}\n\treturn key;\n}\n\n/** Append 0x01 suffix if not already compressed */\nexport function compressPrivateKey(key: string | Uint8Array): string {\n\tconst hex = typeof key === \"string\" ? without0x(key) : bytesToHex(key);\n\tif (hex.length === PRIVATE_KEY_COMPRESSED_LENGTH * 2) return hex;\n\treturn `${hex}01`;\n}\n",
5
+ "import { hmac } from \"@noble/hashes/hmac.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { etc, getPublicKey as nobleGetPublicKey, sign } from \"@noble/secp256k1\";\nimport { c32address } from \"../utils/c32.ts\";\nimport { bytesToHex, hexToBytes, without0x } from \"../utils/encoding.ts\";\nimport { hash160 } from \"../utils/hash.ts\";\nimport type { LocalAccount } from \"./types.ts\";\n\nfunction ensureSyncSigning() {\n\tif (!etc.hmacSha256Sync) {\n\t\tetc.hmacSha256Sync = (key: Uint8Array, ...msgs: Uint8Array[]) => {\n\t\t\tconst h = hmac.create(sha256, key);\n\t\t\tfor (const msg of msgs) h.update(msg);\n\t\t\treturn h.digest();\n\t\t};\n\t}\n}\n\nconst PRIVATE_KEY_COMPRESSED_LENGTH = 33;\n\nexport function privateKeyToAccount(\n\tprivateKey: string | Uint8Array,\n\toptions?: { addressVersion?: number },\n): LocalAccount {\n\tensureSyncSigning();\n\tconst keyBytes = normalizePrivateKey(privateKey);\n\tconst rawKey = keyBytes.slice(0, 32);\n\n\t// Always derive compressed public key\n\tconst publicKeyBytes = nobleGetPublicKey(rawKey, true);\n\tconst publicKeyHex = bytesToHex(publicKeyBytes);\n\n\t// Default to mainnet single-sig (22)\n\tconst addressVersion = options?.addressVersion ?? 22;\n\tconst address = c32address(\n\t\taddressVersion,\n\t\tbytesToHex(hash160(publicKeyBytes)),\n\t);\n\n\treturn {\n\t\ttype: \"local\",\n\t\taddress,\n\t\tpublicKey: publicKeyHex,\n\n\t\tsign(hash: Uint8Array): Uint8Array {\n\t\t\tconst sig = sign(hash, rawKey, { lowS: true });\n\t\t\tconst result = new Uint8Array(65);\n\t\t\tresult[0] = sig.recovery;\n\t\t\tresult.set(sig.toCompactRawBytes(), 1);\n\t\t\treturn result;\n\t\t},\n\n\t\tsignMessage(message: string | Uint8Array): string {\n\t\t\tconst msgBytes =\n\t\t\t\ttypeof message === \"string\"\n\t\t\t\t\t? new TextEncoder().encode(message)\n\t\t\t\t\t: message;\n\t\t\tconst msgHash = sha256(msgBytes);\n\t\t\tconst sigBytes = this.sign(msgHash);\n\t\t\treturn bytesToHex(sigBytes);\n\t\t},\n\t};\n}\n\nfunction normalizePrivateKey(key: string | Uint8Array): Uint8Array {\n\tif (typeof key === \"string\") {\n\t\treturn hexToBytes(without0x(key));\n\t}\n\treturn key;\n}\n\n/** Append 0x01 suffix if not already compressed */\nexport function compressPrivateKey(key: string | Uint8Array): string {\n\tconst hex = typeof key === \"string\" ? without0x(key) : bytesToHex(key);\n\tif (hex.length === PRIVATE_KEY_COMPRESSED_LENGTH * 2) return hex;\n\treturn `${hex}01`;\n}\n",
6
6
  "import { HDKey } from \"@scure/bip32\";\nimport { mnemonicToSeedSync } from \"@scure/bip39\";\nimport { bytesToHex } from \"../utils/encoding.ts\";\nimport {\n\tcompressPrivateKey,\n\tprivateKeyToAccount,\n} from \"./privateKeyToAccount.ts\";\nimport type { LocalAccount } from \"./types.ts\";\n\nconst STX_DERIVATION_PATH = \"m/44'/5757'/0'/0\";\n\nexport function mnemonicToAccount(\n\tmnemonic: string,\n\toptions?: {\n\t\taccountIndex?: number;\n\t\taddressVersion?: number;\n\t},\n): LocalAccount {\n\tconst { accountIndex = 0, addressVersion } = options ?? {};\n\n\tconst seed = mnemonicToSeedSync(mnemonic);\n\tconst root = HDKey.fromMasterSeed(seed);\n\tconst child = root.derive(`${STX_DERIVATION_PATH}/${accountIndex}`);\n\n\tif (!child.privateKey) throw new Error(\"Failed to derive private key\");\n\n\tconst privateKeyHex = compressPrivateKey(bytesToHex(child.privateKey));\n\treturn privateKeyToAccount(privateKeyHex, { addressVersion });\n}\n",
7
7
  "import type { AccountSource, CustomAccount } from \"./types.ts\";\n\nexport function toAccount(source: AccountSource): CustomAccount {\n\treturn {\n\t\ttype: \"custom\",\n\t\taddress: source.address,\n\t\tpublicKey: source.publicKey,\n\t\tsign: source.sign,\n\t};\n}\n"
8
8
  ],
9
- "mappings": ";;;;;;;;;;;;AAAqB,IAArB;AACuB,IAAvB;AAC6D,IAA7D;AAMA,SAAS,iBAAiB,GAAG;AAAA,EAC5B,IAAI,CAAC,qBAAI,gBAAgB;AAAA,IACxB,qBAAI,iBAAiB,CAAC,QAAoB,SAAuB;AAAA,MAChE,MAAM,IAAI,iBAAK,OAAO,oBAAQ,GAAG;AAAA,MACjC,KAAK,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,CAAC;AAAA,MACnC,OAAO,EAAE,OAAO;AAAA;AAAA,EAElB;AAAA;AAGD,IAAM,gCAAgC;AAE/B,SAAS,mBAAmB,CAClC,YACA,SACe;AAAA,EACf,kBAAkB;AAAA,EAClB,MAAM,WAAW,oBAAoB,UAAU;AAAA,EAC/C,MAAM,SAAS,SAAS,MAAM,GAAG,EAAE;AAAA,EAGnC,MAAM,iBAAiB,8BAAkB,QAAQ,IAAI;AAAA,EACrD,MAAM,eAAe,WAAW,cAAc;AAAA,EAG9C,MAAM,iBAAiB,SAAS,kBAAkB;AAAA,EAClD,MAAM,UAAU,WACf,gBACA,WAAW,QAAQ,cAAc,CAAC,CACnC;AAAA,EAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IAEX,IAAI,CAAC,MAA8B;AAAA,MAClC,MAAM,MAAM,sBAAK,MAAM,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7C,MAAM,SAAS,IAAI,WAAW,EAAE;AAAA,MAChC,OAAO,KAAK,IAAI;AAAA,MAChB,OAAO,IAAI,IAAI,kBAAkB,GAAG,CAAC;AAAA,MACrC,OAAO;AAAA;AAAA,IAGR,WAAW,CAAC,SAAsC;AAAA,MACjD,MAAM,WACL,OAAO,YAAY,WAChB,IAAI,YAAY,EAAE,OAAO,OAAO,IAChC;AAAA,MACJ,MAAM,UAAU,mBAAO,QAAQ;AAAA,MAC/B,MAAM,WAAW,KAAK,KAAK,OAAO;AAAA,MAClC,OAAO,WAAW,QAAQ;AAAA;AAAA,EAE5B;AAAA;AAGD,SAAS,mBAAmB,CAAC,KAAsC;AAAA,EAClE,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC5B,OAAO,WAAW,UAAU,GAAG,CAAC;AAAA,EACjC;AAAA,EACA,OAAO;AAAA;AAID,SAAS,kBAAkB,CAAC,KAAkC;AAAA,EACpE,MAAM,MAAM,OAAO,QAAQ,WAAW,UAAU,GAAG,IAAI,WAAW,GAAG;AAAA,EACrE,IAAI,IAAI,WAAW,gCAAgC;AAAA,IAAG,OAAO;AAAA,EAC7D,OAAO,GAAG;AAAA;;AC3EW,IAAtB;AACmC,IAAnC;AAQA,IAAM,sBAAsB;AAErB,SAAS,iBAAiB,CAChC,UACA,SAIe;AAAA,EACf,QAAQ,eAAe,GAAG,mBAAmB,WAAW,CAAC;AAAA,EAEzD,MAAM,OAAO,gCAAmB,QAAQ;AAAA,EACxC,MAAM,OAAO,mBAAM,eAAe,IAAI;AAAA,EACtC,MAAM,QAAQ,KAAK,OAAO,GAAG,uBAAuB,cAAc;AAAA,EAElE,IAAI,CAAC,MAAM;AAAA,IAAY,MAAM,IAAI,MAAM,8BAA8B;AAAA,EAErE,MAAM,gBAAgB,mBAAmB,WAAW,MAAM,UAAU,CAAC;AAAA,EACrE,OAAO,oBAAoB,eAAe,EAAE,eAAe,CAAC;AAAA;;ACzBtD,SAAS,SAAS,CAAC,QAAsC;AAAA,EAC/D,OAAO;AAAA,IACN,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,MAAM,OAAO;AAAA,EACd;AAAA;",
10
- "debugId": "7A61E0D86E2E8DC764756E2164756E21",
9
+ "mappings": ";;;;;;;;;;;;AAAqB,IAArB;AACuB,IAAvB;AAC6D,IAA7D;AAMA,SAAS,iBAAiB,GAAG;AAAA,EAC5B,IAAI,CAAC,qBAAI,gBAAgB;AAAA,IACxB,qBAAI,iBAAiB,CAAC,QAAoB,SAAuB;AAAA,MAChE,MAAM,IAAI,iBAAK,OAAO,oBAAQ,GAAG;AAAA,MACjC,WAAW,OAAO;AAAA,QAAM,EAAE,OAAO,GAAG;AAAA,MACpC,OAAO,EAAE,OAAO;AAAA;AAAA,EAElB;AAAA;AAGD,IAAM,gCAAgC;AAE/B,SAAS,mBAAmB,CAClC,YACA,SACe;AAAA,EACf,kBAAkB;AAAA,EAClB,MAAM,WAAW,oBAAoB,UAAU;AAAA,EAC/C,MAAM,SAAS,SAAS,MAAM,GAAG,EAAE;AAAA,EAGnC,MAAM,iBAAiB,8BAAkB,QAAQ,IAAI;AAAA,EACrD,MAAM,eAAe,WAAW,cAAc;AAAA,EAG9C,MAAM,iBAAiB,SAAS,kBAAkB;AAAA,EAClD,MAAM,UAAU,WACf,gBACA,WAAW,QAAQ,cAAc,CAAC,CACnC;AAAA,EAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IAEX,IAAI,CAAC,MAA8B;AAAA,MAClC,MAAM,MAAM,sBAAK,MAAM,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7C,MAAM,SAAS,IAAI,WAAW,EAAE;AAAA,MAChC,OAAO,KAAK,IAAI;AAAA,MAChB,OAAO,IAAI,IAAI,kBAAkB,GAAG,CAAC;AAAA,MACrC,OAAO;AAAA;AAAA,IAGR,WAAW,CAAC,SAAsC;AAAA,MACjD,MAAM,WACL,OAAO,YAAY,WAChB,IAAI,YAAY,EAAE,OAAO,OAAO,IAChC;AAAA,MACJ,MAAM,UAAU,mBAAO,QAAQ;AAAA,MAC/B,MAAM,WAAW,KAAK,KAAK,OAAO;AAAA,MAClC,OAAO,WAAW,QAAQ;AAAA;AAAA,EAE5B;AAAA;AAGD,SAAS,mBAAmB,CAAC,KAAsC;AAAA,EAClE,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC5B,OAAO,WAAW,UAAU,GAAG,CAAC;AAAA,EACjC;AAAA,EACA,OAAO;AAAA;AAID,SAAS,kBAAkB,CAAC,KAAkC;AAAA,EACpE,MAAM,MAAM,OAAO,QAAQ,WAAW,UAAU,GAAG,IAAI,WAAW,GAAG;AAAA,EACrE,IAAI,IAAI,WAAW,gCAAgC;AAAA,IAAG,OAAO;AAAA,EAC7D,OAAO,GAAG;AAAA;;AC3EW,IAAtB;AACmC,IAAnC;AAQA,IAAM,sBAAsB;AAErB,SAAS,iBAAiB,CAChC,UACA,SAIe;AAAA,EACf,QAAQ,eAAe,GAAG,mBAAmB,WAAW,CAAC;AAAA,EAEzD,MAAM,OAAO,gCAAmB,QAAQ;AAAA,EACxC,MAAM,OAAO,mBAAM,eAAe,IAAI;AAAA,EACtC,MAAM,QAAQ,KAAK,OAAO,GAAG,uBAAuB,cAAc;AAAA,EAElE,IAAI,CAAC,MAAM;AAAA,IAAY,MAAM,IAAI,MAAM,8BAA8B;AAAA,EAErE,MAAM,gBAAgB,mBAAmB,WAAW,MAAM,UAAU,CAAC;AAAA,EACrE,OAAO,oBAAoB,eAAe,EAAE,eAAe,CAAC;AAAA;;ACzBtD,SAAS,SAAS,CAAC,QAAsC;AAAA,EAC/D,OAAO;AAAA,IACN,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,MAAM,OAAO;AAAA,EACd;AAAA;",
10
+ "debugId": "6B90BA85222D9A8264756E2164756E21",
11
11
  "names": []
12
12
  }
@@ -3,13 +3,13 @@ import {
3
3
  } from "../../shared/stacks-qcae5852.js";
4
4
  import {
5
5
  hash160
6
- } from "../../shared/stacks-rwfgts3s.js";
6
+ } from "../../shared/stacks-xxn5ma6g.js";
7
7
  import {
8
8
  bytesToHex,
9
9
  c32address,
10
10
  hexToBytes,
11
11
  without0x
12
- } from "../../shared/stacks-s7z5q8be.js";
12
+ } from "../../shared/stacks-2h8d2y27.js";
13
13
 
14
14
  // src/accounts/privateKeyToAccount.ts
15
15
  import { hmac } from "@noble/hashes/hmac.js";
@@ -19,7 +19,8 @@ function ensureSyncSigning() {
19
19
  if (!etc.hmacSha256Sync) {
20
20
  etc.hmacSha256Sync = (key, ...msgs) => {
21
21
  const h = hmac.create(sha256, key);
22
- msgs.forEach((msg) => h.update(msg));
22
+ for (const msg of msgs)
23
+ h.update(msg);
23
24
  return h.digest();
24
25
  };
25
26
  }
@@ -95,5 +96,5 @@ export {
95
96
  compressPrivateKey
96
97
  };
97
98
 
98
- //# debugId=73E71BA0E076678C64756E2164756E21
99
+ //# debugId=81B9C022A5C58A5064756E2164756E21
99
100
  //# sourceMappingURL=index.js.map
@@ -2,11 +2,11 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/accounts/privateKeyToAccount.ts", "../src/accounts/mnemonicToAccount.ts", "../src/accounts/toAccount.ts"],
4
4
  "sourcesContent": [
5
- "import { hmac } from \"@noble/hashes/hmac.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { etc, getPublicKey as nobleGetPublicKey, sign } from \"@noble/secp256k1\";\nimport { c32address } from \"../utils/c32.ts\";\nimport { bytesToHex, hexToBytes, without0x } from \"../utils/encoding.ts\";\nimport { hash160 } from \"../utils/hash.ts\";\nimport type { LocalAccount } from \"./types.ts\";\n\nfunction ensureSyncSigning() {\n\tif (!etc.hmacSha256Sync) {\n\t\tetc.hmacSha256Sync = (key: Uint8Array, ...msgs: Uint8Array[]) => {\n\t\t\tconst h = hmac.create(sha256, key);\n\t\t\tmsgs.forEach((msg) => h.update(msg));\n\t\t\treturn h.digest();\n\t\t};\n\t}\n}\n\nconst PRIVATE_KEY_COMPRESSED_LENGTH = 33;\n\nexport function privateKeyToAccount(\n\tprivateKey: string | Uint8Array,\n\toptions?: { addressVersion?: number },\n): LocalAccount {\n\tensureSyncSigning();\n\tconst keyBytes = normalizePrivateKey(privateKey);\n\tconst rawKey = keyBytes.slice(0, 32);\n\n\t// Always derive compressed public key\n\tconst publicKeyBytes = nobleGetPublicKey(rawKey, true);\n\tconst publicKeyHex = bytesToHex(publicKeyBytes);\n\n\t// Default to mainnet single-sig (22)\n\tconst addressVersion = options?.addressVersion ?? 22;\n\tconst address = c32address(\n\t\taddressVersion,\n\t\tbytesToHex(hash160(publicKeyBytes)),\n\t);\n\n\treturn {\n\t\ttype: \"local\",\n\t\taddress,\n\t\tpublicKey: publicKeyHex,\n\n\t\tsign(hash: Uint8Array): Uint8Array {\n\t\t\tconst sig = sign(hash, rawKey, { lowS: true });\n\t\t\tconst result = new Uint8Array(65);\n\t\t\tresult[0] = sig.recovery;\n\t\t\tresult.set(sig.toCompactRawBytes(), 1);\n\t\t\treturn result;\n\t\t},\n\n\t\tsignMessage(message: string | Uint8Array): string {\n\t\t\tconst msgBytes =\n\t\t\t\ttypeof message === \"string\"\n\t\t\t\t\t? new TextEncoder().encode(message)\n\t\t\t\t\t: message;\n\t\t\tconst msgHash = sha256(msgBytes);\n\t\t\tconst sigBytes = this.sign(msgHash);\n\t\t\treturn bytesToHex(sigBytes);\n\t\t},\n\t};\n}\n\nfunction normalizePrivateKey(key: string | Uint8Array): Uint8Array {\n\tif (typeof key === \"string\") {\n\t\treturn hexToBytes(without0x(key));\n\t}\n\treturn key;\n}\n\n/** Append 0x01 suffix if not already compressed */\nexport function compressPrivateKey(key: string | Uint8Array): string {\n\tconst hex = typeof key === \"string\" ? without0x(key) : bytesToHex(key);\n\tif (hex.length === PRIVATE_KEY_COMPRESSED_LENGTH * 2) return hex;\n\treturn `${hex}01`;\n}\n",
5
+ "import { hmac } from \"@noble/hashes/hmac.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { etc, getPublicKey as nobleGetPublicKey, sign } from \"@noble/secp256k1\";\nimport { c32address } from \"../utils/c32.ts\";\nimport { bytesToHex, hexToBytes, without0x } from \"../utils/encoding.ts\";\nimport { hash160 } from \"../utils/hash.ts\";\nimport type { LocalAccount } from \"./types.ts\";\n\nfunction ensureSyncSigning() {\n\tif (!etc.hmacSha256Sync) {\n\t\tetc.hmacSha256Sync = (key: Uint8Array, ...msgs: Uint8Array[]) => {\n\t\t\tconst h = hmac.create(sha256, key);\n\t\t\tfor (const msg of msgs) h.update(msg);\n\t\t\treturn h.digest();\n\t\t};\n\t}\n}\n\nconst PRIVATE_KEY_COMPRESSED_LENGTH = 33;\n\nexport function privateKeyToAccount(\n\tprivateKey: string | Uint8Array,\n\toptions?: { addressVersion?: number },\n): LocalAccount {\n\tensureSyncSigning();\n\tconst keyBytes = normalizePrivateKey(privateKey);\n\tconst rawKey = keyBytes.slice(0, 32);\n\n\t// Always derive compressed public key\n\tconst publicKeyBytes = nobleGetPublicKey(rawKey, true);\n\tconst publicKeyHex = bytesToHex(publicKeyBytes);\n\n\t// Default to mainnet single-sig (22)\n\tconst addressVersion = options?.addressVersion ?? 22;\n\tconst address = c32address(\n\t\taddressVersion,\n\t\tbytesToHex(hash160(publicKeyBytes)),\n\t);\n\n\treturn {\n\t\ttype: \"local\",\n\t\taddress,\n\t\tpublicKey: publicKeyHex,\n\n\t\tsign(hash: Uint8Array): Uint8Array {\n\t\t\tconst sig = sign(hash, rawKey, { lowS: true });\n\t\t\tconst result = new Uint8Array(65);\n\t\t\tresult[0] = sig.recovery;\n\t\t\tresult.set(sig.toCompactRawBytes(), 1);\n\t\t\treturn result;\n\t\t},\n\n\t\tsignMessage(message: string | Uint8Array): string {\n\t\t\tconst msgBytes =\n\t\t\t\ttypeof message === \"string\"\n\t\t\t\t\t? new TextEncoder().encode(message)\n\t\t\t\t\t: message;\n\t\t\tconst msgHash = sha256(msgBytes);\n\t\t\tconst sigBytes = this.sign(msgHash);\n\t\t\treturn bytesToHex(sigBytes);\n\t\t},\n\t};\n}\n\nfunction normalizePrivateKey(key: string | Uint8Array): Uint8Array {\n\tif (typeof key === \"string\") {\n\t\treturn hexToBytes(without0x(key));\n\t}\n\treturn key;\n}\n\n/** Append 0x01 suffix if not already compressed */\nexport function compressPrivateKey(key: string | Uint8Array): string {\n\tconst hex = typeof key === \"string\" ? without0x(key) : bytesToHex(key);\n\tif (hex.length === PRIVATE_KEY_COMPRESSED_LENGTH * 2) return hex;\n\treturn `${hex}01`;\n}\n",
6
6
  "import { HDKey } from \"@scure/bip32\";\nimport { mnemonicToSeedSync } from \"@scure/bip39\";\nimport { bytesToHex } from \"../utils/encoding.ts\";\nimport {\n\tcompressPrivateKey,\n\tprivateKeyToAccount,\n} from \"./privateKeyToAccount.ts\";\nimport type { LocalAccount } from \"./types.ts\";\n\nconst STX_DERIVATION_PATH = \"m/44'/5757'/0'/0\";\n\nexport function mnemonicToAccount(\n\tmnemonic: string,\n\toptions?: {\n\t\taccountIndex?: number;\n\t\taddressVersion?: number;\n\t},\n): LocalAccount {\n\tconst { accountIndex = 0, addressVersion } = options ?? {};\n\n\tconst seed = mnemonicToSeedSync(mnemonic);\n\tconst root = HDKey.fromMasterSeed(seed);\n\tconst child = root.derive(`${STX_DERIVATION_PATH}/${accountIndex}`);\n\n\tif (!child.privateKey) throw new Error(\"Failed to derive private key\");\n\n\tconst privateKeyHex = compressPrivateKey(bytesToHex(child.privateKey));\n\treturn privateKeyToAccount(privateKeyHex, { addressVersion });\n}\n",
7
7
  "import type { AccountSource, CustomAccount } from \"./types.ts\";\n\nexport function toAccount(source: AccountSource): CustomAccount {\n\treturn {\n\t\ttype: \"custom\",\n\t\taddress: source.address,\n\t\tpublicKey: source.publicKey,\n\t\tsign: source.sign,\n\t};\n}\n"
8
8
  ],
9
- "mappings": ";;;;;;;;;;;;;;AAAA;AACA;AACA,8BAAc;AAMd,SAAS,iBAAiB,GAAG;AAAA,EAC5B,IAAI,CAAC,IAAI,gBAAgB;AAAA,IACxB,IAAI,iBAAiB,CAAC,QAAoB,SAAuB;AAAA,MAChE,MAAM,IAAI,KAAK,OAAO,QAAQ,GAAG;AAAA,MACjC,KAAK,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,CAAC;AAAA,MACnC,OAAO,EAAE,OAAO;AAAA;AAAA,EAElB;AAAA;AAGD,IAAM,gCAAgC;AAE/B,SAAS,mBAAmB,CAClC,YACA,SACe;AAAA,EACf,kBAAkB;AAAA,EAClB,MAAM,WAAW,oBAAoB,UAAU;AAAA,EAC/C,MAAM,SAAS,SAAS,MAAM,GAAG,EAAE;AAAA,EAGnC,MAAM,iBAAiB,kBAAkB,QAAQ,IAAI;AAAA,EACrD,MAAM,eAAe,WAAW,cAAc;AAAA,EAG9C,MAAM,iBAAiB,SAAS,kBAAkB;AAAA,EAClD,MAAM,UAAU,WACf,gBACA,WAAW,QAAQ,cAAc,CAAC,CACnC;AAAA,EAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IAEX,IAAI,CAAC,MAA8B;AAAA,MAClC,MAAM,MAAM,KAAK,MAAM,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7C,MAAM,SAAS,IAAI,WAAW,EAAE;AAAA,MAChC,OAAO,KAAK,IAAI;AAAA,MAChB,OAAO,IAAI,IAAI,kBAAkB,GAAG,CAAC;AAAA,MACrC,OAAO;AAAA;AAAA,IAGR,WAAW,CAAC,SAAsC;AAAA,MACjD,MAAM,WACL,OAAO,YAAY,WAChB,IAAI,YAAY,EAAE,OAAO,OAAO,IAChC;AAAA,MACJ,MAAM,UAAU,OAAO,QAAQ;AAAA,MAC/B,MAAM,WAAW,KAAK,KAAK,OAAO;AAAA,MAClC,OAAO,WAAW,QAAQ;AAAA;AAAA,EAE5B;AAAA;AAGD,SAAS,mBAAmB,CAAC,KAAsC;AAAA,EAClE,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC5B,OAAO,WAAW,UAAU,GAAG,CAAC;AAAA,EACjC;AAAA,EACA,OAAO;AAAA;AAID,SAAS,kBAAkB,CAAC,KAAkC;AAAA,EACpE,MAAM,MAAM,OAAO,QAAQ,WAAW,UAAU,GAAG,IAAI,WAAW,GAAG;AAAA,EACrE,IAAI,IAAI,WAAW,gCAAgC;AAAA,IAAG,OAAO;AAAA,EAC7D,OAAO,GAAG;AAAA;;AC3EX;AACA;AAQA,IAAM,sBAAsB;AAErB,SAAS,iBAAiB,CAChC,UACA,SAIe;AAAA,EACf,QAAQ,eAAe,GAAG,mBAAmB,WAAW,CAAC;AAAA,EAEzD,MAAM,OAAO,mBAAmB,QAAQ;AAAA,EACxC,MAAM,OAAO,MAAM,eAAe,IAAI;AAAA,EACtC,MAAM,QAAQ,KAAK,OAAO,GAAG,uBAAuB,cAAc;AAAA,EAElE,IAAI,CAAC,MAAM;AAAA,IAAY,MAAM,IAAI,MAAM,8BAA8B;AAAA,EAErE,MAAM,gBAAgB,mBAAmB,WAAW,MAAM,UAAU,CAAC;AAAA,EACrE,OAAO,oBAAoB,eAAe,EAAE,eAAe,CAAC;AAAA;;ACzBtD,SAAS,SAAS,CAAC,QAAsC;AAAA,EAC/D,OAAO;AAAA,IACN,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,MAAM,OAAO;AAAA,EACd;AAAA;",
10
- "debugId": "73E71BA0E076678C64756E2164756E21",
9
+ "mappings": ";;;;;;;;;;;;;;AAAA;AACA;AACA,8BAAc;AAMd,SAAS,iBAAiB,GAAG;AAAA,EAC5B,IAAI,CAAC,IAAI,gBAAgB;AAAA,IACxB,IAAI,iBAAiB,CAAC,QAAoB,SAAuB;AAAA,MAChE,MAAM,IAAI,KAAK,OAAO,QAAQ,GAAG;AAAA,MACjC,WAAW,OAAO;AAAA,QAAM,EAAE,OAAO,GAAG;AAAA,MACpC,OAAO,EAAE,OAAO;AAAA;AAAA,EAElB;AAAA;AAGD,IAAM,gCAAgC;AAE/B,SAAS,mBAAmB,CAClC,YACA,SACe;AAAA,EACf,kBAAkB;AAAA,EAClB,MAAM,WAAW,oBAAoB,UAAU;AAAA,EAC/C,MAAM,SAAS,SAAS,MAAM,GAAG,EAAE;AAAA,EAGnC,MAAM,iBAAiB,kBAAkB,QAAQ,IAAI;AAAA,EACrD,MAAM,eAAe,WAAW,cAAc;AAAA,EAG9C,MAAM,iBAAiB,SAAS,kBAAkB;AAAA,EAClD,MAAM,UAAU,WACf,gBACA,WAAW,QAAQ,cAAc,CAAC,CACnC;AAAA,EAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IAEX,IAAI,CAAC,MAA8B;AAAA,MAClC,MAAM,MAAM,KAAK,MAAM,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7C,MAAM,SAAS,IAAI,WAAW,EAAE;AAAA,MAChC,OAAO,KAAK,IAAI;AAAA,MAChB,OAAO,IAAI,IAAI,kBAAkB,GAAG,CAAC;AAAA,MACrC,OAAO;AAAA;AAAA,IAGR,WAAW,CAAC,SAAsC;AAAA,MACjD,MAAM,WACL,OAAO,YAAY,WAChB,IAAI,YAAY,EAAE,OAAO,OAAO,IAChC;AAAA,MACJ,MAAM,UAAU,OAAO,QAAQ;AAAA,MAC/B,MAAM,WAAW,KAAK,KAAK,OAAO;AAAA,MAClC,OAAO,WAAW,QAAQ;AAAA;AAAA,EAE5B;AAAA;AAGD,SAAS,mBAAmB,CAAC,KAAsC;AAAA,EAClE,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC5B,OAAO,WAAW,UAAU,GAAG,CAAC;AAAA,EACjC;AAAA,EACA,OAAO;AAAA;AAID,SAAS,kBAAkB,CAAC,KAAkC;AAAA,EACpE,MAAM,MAAM,OAAO,QAAQ,WAAW,UAAU,GAAG,IAAI,WAAW,GAAG;AAAA,EACrE,IAAI,IAAI,WAAW,gCAAgC;AAAA,IAAG,OAAO;AAAA,EAC7D,OAAO,GAAG;AAAA;;AC3EX;AACA;AAQA,IAAM,sBAAsB;AAErB,SAAS,iBAAiB,CAChC,UACA,SAIe;AAAA,EACf,QAAQ,eAAe,GAAG,mBAAmB,WAAW,CAAC;AAAA,EAEzD,MAAM,OAAO,mBAAmB,QAAQ;AAAA,EACxC,MAAM,OAAO,MAAM,eAAe,IAAI;AAAA,EACtC,MAAM,QAAQ,KAAK,OAAO,GAAG,uBAAuB,cAAc;AAAA,EAElE,IAAI,CAAC,MAAM;AAAA,IAAY,MAAM,IAAI,MAAM,8BAA8B;AAAA,EAErE,MAAM,gBAAgB,mBAAmB,WAAW,MAAM,UAAU,CAAC;AAAA,EACrE,OAAO,oBAAoB,eAAe,EAAE,eAAe,CAAC;AAAA;;ACzBtD,SAAS,SAAS,CAAC,QAAsC;AAAA,EAC/D,OAAO;AAAA,IACN,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,MAAM,OAAO;AAAA,EACd;AAAA;",
10
+ "debugId": "81B9C022A5C58A5064756E2164756E21",
11
11
  "names": []
12
12
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ContractResponseError,
3
3
  getContract
4
- } from "../../shared/stacks-70p84bgg.js";
4
+ } from "../../shared/stacks-7tn3zsbe.js";
5
5
  import {
6
6
  deployContract,
7
7
  getAccountInfo,
@@ -16,7 +16,7 @@ import {
16
16
  simulateTransaction,
17
17
  sponsorTransaction,
18
18
  transferStx
19
- } from "../../shared/stacks-4x2bcc2k.js";
19
+ } from "../../shared/stacks-fy5h5qyx.js";
20
20
  import {
21
21
  callContract,
22
22
  estimateFee,
@@ -25,7 +25,7 @@ import {
25
25
  isProviderAccount,
26
26
  readContract,
27
27
  sendTransaction
28
- } from "../../shared/stacks-1s5w4ncf.js";
28
+ } from "../../shared/stacks-g7ys594x.js";
29
29
  import {
30
30
  watchAddress,
31
31
  watchAddressBalance,
@@ -33,16 +33,16 @@ import {
33
33
  watchMempool,
34
34
  watchNftEvent,
35
35
  watchTransaction
36
- } from "../../shared/stacks-y3dh7hv1.js";
36
+ } from "../../shared/stacks-tjjnkt3r.js";
37
37
  import"../../shared/stacks-709tra19.js";
38
- import"../../shared/stacks-zf7rbpzp.js";
39
- import"../../shared/stacks-s30kkvm8.js";
40
- import"../../shared/stacks-09wa7ewe.js";
41
- import"../../shared/stacks-wjem3xw9.js";
38
+ import"../../shared/stacks-g7ffp8aj.js";
39
+ import"../../shared/stacks-y2p4h5ks.js";
40
+ import"../../shared/stacks-kmnthgj7.js";
41
+ import"../../shared/stacks-0zysn74p.js";
42
42
  import"../../shared/stacks-v9jqcpd4.js";
43
- import"../../shared/stacks-rwfgts3s.js";
44
- import"../../shared/stacks-s10yb9gz.js";
45
- import"../../shared/stacks-s7z5q8be.js";
43
+ import"../../shared/stacks-xxn5ma6g.js";
44
+ import"../../shared/stacks-6xmk24yw.js";
45
+ import"../../shared/stacks-2h8d2y27.js";
46
46
  export {
47
47
  watchTransaction,
48
48
  watchNftEvent,
@@ -457,9 +457,7 @@ async function preorder(client, params) {
457
457
  hashedSaltedFqn,
458
458
  stxToBurn: price
459
459
  }, {
460
- postConditions: [
461
- Pc.principal(client.account.address).willSendLte(price).ustx()
462
- ]
460
+ postConditions: client.account?.address ? [Pc.principal(client.account.address).willSendLte(price).ustx()] : []
463
461
  });
464
462
  return { txid, salt };
465
463
  }
@@ -615,5 +613,5 @@ function bns() {
615
613
  });
616
614
  }
617
615
 
618
- //# debugId=788A7C34582E286F64756E2164756E21
616
+ //# debugId=00C422C776C9864864756E2164756E21
619
617
  //# sourceMappingURL=index.cjs.map
@@ -4,12 +4,12 @@
4
4
  "sourcesContent": [
5
5
  "import type { AbiContract } from \"../clarity/abi/contract.ts\";\n\nexport const BNS_ABI = {\n\tfunctions: [\n\t\t// Name resolution (read-only)\n\t\t{\n\t\t\tname: \"get-owner-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: \"principal\" },\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: \"get-id-from-bns\",\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: { optional: \"uint128\" },\n\t\t},\n\t\t{\n\t\t\tname: \"get-bns-from-id\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"id\", type: \"uint128\" }],\n\t\t\toutputs: {\n\t\t\t\toptional: {\n\t\t\t\t\ttuple: [\n\t\t\t\t\t\t{ name: \"name\", type: { buff: { length: 48 } } },\n\t\t\t\t\t\t{ name: \"namespace\", type: { buff: { length: 20 } } },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get-owner\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"id\", type: \"uint128\" }],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: { optional: \"principal\" },\n\t\t\t\t\terror: \"none\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get-primary\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"owner\", type: \"principal\" }],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\toptional: {\n\t\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t\t{ name: \"name\", type: { buff: { length: 48 } } },\n\t\t\t\t\t\t\t\t{ name: \"namespace\", type: { buff: { length: 20 } } },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\terror: \"none\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"can-resolve-name\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"namespace\", type: { buff: { length: 20 } } },\n\t\t\t\t{ name: \"name\", type: { buff: { length: 48 } } },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"renewal\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"owner\", type: \"principal\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\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: \"get-renewal-height\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"id\", type: \"uint128\" }],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-name-price\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"namespace\", type: { buff: { length: 20 } } },\n\t\t\t\t{ name: \"name\", type: { buff: { length: 48 } } },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: { response: { ok: \"uint128\", error: \"uint128\" } },\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: \"get-bns-info\",\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\toptional: {\n\t\t\t\t\ttuple: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"hashed-salted-fqn-preorder\",\n\t\t\t\t\t\t\ttype: { optional: { buff: { length: 20 } } },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ name: \"imported-at\", type: { optional: \"uint128\" } },\n\t\t\t\t\t\t{ name: \"owner\", type: \"principal\" },\n\t\t\t\t\t\t{ name: \"preordered-by\", type: { optional: \"principal\" } },\n\t\t\t\t\t\t{ name: \"registered-at\", type: { optional: \"uint128\" } },\n\t\t\t\t\t\t{ name: \"renewal-height\", type: \"uint128\" },\n\t\t\t\t\t\t{ name: \"stx-burn\", type: \"uint128\" },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t// Name registration (public)\n\t\t{\n\t\t\tname: \"name-preorder\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"hashed-salted-fqn\", type: { buff: { length: 20 } } },\n\t\t\t\t{ name: \"stx-to-burn\", type: \"uint128\" },\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"name-register\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"namespace\", type: { buff: { length: 20 } } },\n\t\t\t\t{ name: \"name\", type: { buff: { length: 48 } } },\n\t\t\t\t{ name: \"salt\", type: { buff: { length: 20 } } },\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"name-claim-fast\",\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{ name: \"send-to\", type: \"principal\" },\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"name-renewal\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"namespace\", type: { buff: { length: 20 } } },\n\t\t\t\t{ name: \"name\", type: { buff: { length: 48 } } },\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\n\t\t// Name management (public)\n\t\t{\n\t\t\tname: \"transfer\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"id\", type: \"uint128\" },\n\t\t\t\t{ name: \"owner\", type: \"principal\" },\n\t\t\t\t{ name: \"recipient\", type: \"principal\" },\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"set-primary-name\",\n\t\t\taccess: \"public\",\n\t\t\targs: [{ name: \"primary-name-id\", type: \"uint128\" }],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\t],\n\tnon_fungible_tokens: [{ name: \"BNS-V2\", type: \"uint128\" }],\n} as const satisfies AbiContract;\n",
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
- "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\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\tname: parts[0]!,\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",
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: [\n\t\t\t\tPc.principal(client.account!.address).willSendLte(price).ustx(),\n\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 } 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",
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": "788A7C34582E286F64756E2164756E21",
12
+ "mappings": "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",
13
+ "debugId": "00C422C776C9864864756E2164756E21",
14
14
  "names": []
15
15
  }
@@ -1,25 +1,25 @@
1
- import"../../shared/stacks-96d6m1zy.js";
1
+ import"../../shared/stacks-3erxq8wh.js";
2
2
  import"../../shared/stacks-kg1npstf.js";
3
3
  import {
4
4
  ContractResponseError,
5
5
  getContract
6
- } from "../../shared/stacks-70p84bgg.js";
7
- import"../../shared/stacks-1s5w4ncf.js";
6
+ } from "../../shared/stacks-7tn3zsbe.js";
7
+ import"../../shared/stacks-g7ys594x.js";
8
8
  import"../../shared/stacks-709tra19.js";
9
- import"../../shared/stacks-zf7rbpzp.js";
9
+ import"../../shared/stacks-g7ffp8aj.js";
10
10
  import {
11
11
  Pc
12
- } from "../../shared/stacks-je937aas.js";
13
- import"../../shared/stacks-09wa7ewe.js";
12
+ } from "../../shared/stacks-kmshch4q.js";
13
+ import"../../shared/stacks-kmnthgj7.js";
14
14
  import {
15
15
  Cl
16
- } from "../../shared/stacks-wjem3xw9.js";
16
+ } from "../../shared/stacks-0zysn74p.js";
17
17
  import"../../shared/stacks-v9jqcpd4.js";
18
18
  import {
19
19
  hash160
20
- } from "../../shared/stacks-rwfgts3s.js";
21
- import"../../shared/stacks-s10yb9gz.js";
22
- import"../../shared/stacks-s7z5q8be.js";
20
+ } from "../../shared/stacks-xxn5ma6g.js";
21
+ import"../../shared/stacks-6xmk24yw.js";
22
+ import"../../shared/stacks-2h8d2y27.js";
23
23
 
24
24
  // src/bns/abi.ts
25
25
  var BNS_ABI = {
@@ -464,9 +464,7 @@ async function preorder(client, params) {
464
464
  hashedSaltedFqn,
465
465
  stxToBurn: price
466
466
  }, {
467
- postConditions: [
468
- Pc.principal(client.account.address).willSendLte(price).ustx()
469
- ]
467
+ postConditions: client.account?.address ? [Pc.principal(client.account.address).willSendLte(price).ustx()] : []
470
468
  });
471
469
  return { txid, salt };
472
470
  }
@@ -634,5 +632,5 @@ export {
634
632
  BNS_CONTRACTS
635
633
  };
636
634
 
637
- //# debugId=9953957C4305093964756E2164756E21
635
+ //# debugId=1A4987F445A3D6FD64756E2164756E21
638
636
  //# sourceMappingURL=index.js.map