@secondlayer/stacks 6.4.0 → 6.5.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 (48) hide show
  1. package/dist/shared/{stacks-esm-ss9ap75h.js → stacks-esm-47b3bb9e.js} +2 -2
  2. package/dist/shared/stacks-esm-51sysw9g.js +7 -0
  3. package/dist/shared/stacks-esm-51sysw9g.js.map +10 -0
  4. package/dist/shared/{stacks-esm-1mybf3yt.js → stacks-esm-7kb3t7ve.js} +62 -61
  5. package/dist/shared/{stacks-esm-1mybf3yt.js.map → stacks-esm-7kb3t7ve.js.map} +5 -5
  6. package/dist/shared/{stacks-esm-z0rq3ejt.js → stacks-esm-fb1gh99a.js} +4 -7
  7. package/dist/shared/{stacks-esm-z0rq3ejt.js.map → stacks-esm-fb1gh99a.js.map} +4 -5
  8. package/dist/shared/{stacks-esm-e2qhfgke.js → stacks-esm-ph2fd7hg.js} +8 -4
  9. package/dist/shared/{stacks-esm-e2qhfgke.js.map → stacks-esm-ph2fd7hg.js.map} +3 -3
  10. package/dist/shared/stacks-esm-zvpv6a06.js +28 -0
  11. package/dist/shared/stacks-esm-zvpv6a06.js.map +10 -0
  12. package/dist/src/accounts/index.cjs +7 -3
  13. package/dist/src/accounts/index.cjs.map +3 -3
  14. package/dist/src/accounts/index.js +1 -1
  15. package/dist/src/bitcoin/index.cjs +66 -61
  16. package/dist/src/bitcoin/index.cjs.map +5 -5
  17. package/dist/src/bitcoin/index.d.cts +6 -5
  18. package/dist/src/bitcoin/index.d.ts +6 -5
  19. package/dist/src/bitcoin/index.js +13 -24
  20. package/dist/src/bitcoin/index.js.map +3 -4
  21. package/dist/src/bns/index.cjs +60 -59
  22. package/dist/src/bns/index.cjs.map +4 -4
  23. package/dist/src/bns/index.js +1 -1
  24. package/dist/src/clarity/index.cjs +60 -59
  25. package/dist/src/clarity/index.cjs.map +4 -4
  26. package/dist/src/clarity/index.d.cts +2 -2
  27. package/dist/src/clarity/index.d.ts +2 -2
  28. package/dist/src/clarity/index.js +6 -6
  29. package/dist/src/clarity/index.js.map +1 -1
  30. package/dist/src/pox/index.cjs +7 -3
  31. package/dist/src/pox/index.cjs.map +3 -3
  32. package/dist/src/pox/index.js +2 -2
  33. package/dist/src/pox5/index.cjs +7 -3
  34. package/dist/src/pox5/index.cjs.map +3 -3
  35. package/dist/src/pox5/index.js +7 -5
  36. package/dist/src/pox5/index.js.map +2 -2
  37. package/dist/src/sbtc/index.cjs +173 -15
  38. package/dist/src/sbtc/index.cjs.map +10 -7
  39. package/dist/src/sbtc/index.d.cts +117 -5
  40. package/dist/src/sbtc/index.d.ts +117 -5
  41. package/dist/src/sbtc/index.js +152 -9
  42. package/dist/src/sbtc/index.js.map +7 -6
  43. package/dist/src/simnet/index.cjs +1 -1
  44. package/dist/src/simnet/index.cjs.map +3 -3
  45. package/dist/src/simnet/index.js +1 -1
  46. package/dist/src/simnet/index.js.map +3 -3
  47. package/package.json +1 -1
  48. /package/dist/shared/{stacks-esm-ss9ap75h.js.map → stacks-esm-47b3bb9e.js.map} +0 -0
@@ -0,0 +1,28 @@
1
+ import {
2
+ EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET2
3
+ } from "./stacks-esm-51sysw9g.js";
4
+ import {
5
+ MalformedResponseError2
6
+ } from "./stacks-esm-x8gjr2v6.js";
7
+
8
+ // src/bitcoin/activation.ts
9
+ async function getBurnBlockHeight2(client) {
10
+ const info = await client.request("/v2/info");
11
+ if (typeof info?.burn_block_height !== "number") {
12
+ throw new MalformedResponseError2('getBurnBlockHeight: /v2/info response is missing "burn_block_height"');
13
+ }
14
+ return info.burn_block_height;
15
+ }
16
+ async function isClarity6Active2(client, gate = {}) {
17
+ const activation = gate.activationBurnHeight ?? (client.chain?.network === "mainnet" ? EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET2 : undefined);
18
+ if (activation == null) {
19
+ throw new Error(`Clarity 6 (SIP-044 / Epoch 4.0) has no fixed activation height on ${client.chain?.network ?? "this network"} — pass { activationBurnHeight }`);
20
+ }
21
+ const current = await getBurnBlockHeight2(client);
22
+ return current >= activation;
23
+ }
24
+
25
+ export { getBurnBlockHeight2, isClarity6Active2 };
26
+
27
+ //# debugId=54CB93A3E662F0D564756E2164756E21
28
+ //# sourceMappingURL=stacks-esm-zvpv6a06.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/bitcoin/activation.ts"],
4
+ "sourcesContent": [
5
+ "import type { Client } from \"../clients/types.ts\";\nimport { EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET } from \"../epochs.ts\";\nimport { MalformedResponseError } from \"../errors/response.ts\";\n\n/**\n * SIP-044 (the native Bitcoin SPV built-ins) activates as part of the **Stacks\n * Epoch 4.0 hard fork** — the same fork that ships `pox-5` (SIP-045), so both\n * share one height: {@link EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET}.\n */\nexport interface Clarity6Gate {\n\t/**\n\t * Bitcoin burn block height at which Clarity 6 / Epoch 4.0 activates.\n\t * Optional on a mainnet client, which falls back to the known mainnet\n\t * height; required on every other network, where no fixed height exists.\n\t */\n\tactivationBurnHeight?: number;\n}\n\n/** Read the node's current Bitcoin burn block height from `/v2/info`. */\nexport async function getBurnBlockHeight(client: Client): Promise<number> {\n\tconst info = (await client.request(\"/v2/info\")) as {\n\t\tburn_block_height?: number;\n\t};\n\tif (typeof info?.burn_block_height !== \"number\") {\n\t\tthrow new MalformedResponseError(\n\t\t\t'getBurnBlockHeight: /v2/info response is missing \"burn_block_height\"',\n\t\t);\n\t}\n\treturn info.burn_block_height;\n}\n\n/**\n * Whether Clarity 6 (the native SPV built-ins) is active on the node behind\n * `client`. Compares the node's current burn height to the SIP-044 / Epoch 4.0\n * activation height: the known mainnet height when `client.chain` is mainnet,\n * otherwise the one you supply. `bitcoinVerifier` uses this to refuse calls\n * before activation rather than failing with an opaque contract error.\n */\nexport async function isClarity6Active(\n\tclient: Client,\n\tgate: Clarity6Gate = {},\n): Promise<boolean> {\n\tconst activation =\n\t\tgate.activationBurnHeight ??\n\t\t(client.chain?.network === \"mainnet\"\n\t\t\t? EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET\n\t\t\t: undefined);\n\tif (activation == null) {\n\t\tthrow new Error(\n\t\t\t`Clarity 6 (SIP-044 / Epoch 4.0) has no fixed activation height on ${client.chain?.network ?? \"this network\"} — pass { activationBurnHeight }`,\n\t\t);\n\t}\n\tconst current = await getBurnBlockHeight(client);\n\treturn current >= activation;\n}\n"
6
+ ],
7
+ "mappings": ";;;;;;;;AAmBA,eAAsB,mBAAkB,CAAC,QAAiC;AAAA,EACzE,MAAM,OAAQ,MAAM,OAAO,QAAQ,UAAU;AAAA,EAG7C,IAAI,OAAO,MAAM,sBAAsB,UAAU;AAAA,IAChD,MAAM,IAAI,wBACT,sEACD;AAAA,EACD;AAAA,EACA,OAAO,KAAK;AAAA;AAUb,eAAsB,iBAAgB,CACrC,QACA,OAAqB,CAAC,GACH;AAAA,EACnB,MAAM,aACL,KAAK,yBACJ,OAAO,OAAO,YAAY,YACxB,0CACA;AAAA,EACJ,IAAI,cAAc,MAAM;AAAA,IACvB,MAAM,IAAI,MACT,qEAAqE,OAAO,OAAO,WAAW,gDAC/F;AAAA,EACD;AAAA,EACA,MAAM,UAAU,MAAM,oBAAmB,MAAM;AAAA,EAC/C,OAAO,WAAW;AAAA;",
8
+ "debugId": "54CB93A3E662F0D564756E2164756E21",
9
+ "names": []
10
+ }
@@ -594,10 +594,12 @@ function formatBitcoinAddress(parsed, network = "mainnet") {
594
594
  function toPubkeyBytes(publicKey) {
595
595
  return typeof publicKey === "string" ? hexToBytes(publicKey) : publicKey;
596
596
  }
597
- function taprootTweakPubkey(xonly) {
597
+ function taprootTweakPubkey(xonly, merkleRoot) {
598
598
  if (xonly.length !== 32)
599
599
  throw new Error(`Expected 32-byte x-only pubkey, got ${xonly.length}`);
600
- const tweak = import_secp256k12.schnorr.utils.taggedHash("TapTweak", xonly);
600
+ if (merkleRoot && merkleRoot.length !== 32)
601
+ throw new Error(`Expected 32-byte merkle root, got ${merkleRoot.length}`);
602
+ const tweak = merkleRoot ? import_secp256k12.schnorr.utils.taggedHash("TapTweak", xonly, merkleRoot) : import_secp256k12.schnorr.utils.taggedHash("TapTweak", xonly);
601
603
  const t = BigInt(`0x${Array.from(tweak, (b) => b.toString(16).padStart(2, "0")).join("")}`);
602
604
  if (t >= import_secp256k12.secp256k1.Point.Fn.ORDER)
603
605
  throw new Error("Invalid tap tweak (exceeds curve order)");
@@ -617,6 +619,8 @@ function publicKeyToP2trAddress(publicKey, network = "mainnet") {
617
619
  const xonly = pubkey.length === 33 ? pubkey.slice(1) : pubkey.length === 32 ? pubkey : undefined;
618
620
  if (!xonly)
619
621
  throw new Error(`Expected 33-byte compressed or 32-byte x-only pubkey, got ${pubkey.length}`);
622
+ if (pubkey.length === 33 && pubkey[0] !== 2 && pubkey[0] !== 3)
623
+ throw new Error(`Expected a compressed pubkey prefix 0x02 or 0x03, got 0x${pubkey[0]?.toString(16).padStart(2, "0")}`);
620
624
  const params = NETWORK_PARAMS[network];
621
625
  const outputKey = taprootTweakPubkey(xonly);
622
626
  return import_base.bech32m.encode(params.hrp, [1, ...import_base.bech32m.toWords(outputKey)]);
@@ -670,5 +674,5 @@ async function providerToAccount(provider) {
670
674
  };
671
675
  }
672
676
 
673
- //# debugId=D26D50A7623A887C64756E2164756E21
677
+ //# debugId=AC397C7DBBF23A5964756E2164756E21
674
678
  //# sourceMappingURL=index.cjs.map
@@ -8,12 +8,12 @@
8
8
  "import { ripemd160 } from \"@noble/hashes/legacy.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { sha512_256 } from \"@noble/hashes/sha2.js\";\nimport { bytesToHex } from \"./encoding.ts\";\n\nexport { sha256, sha512_256, ripemd160 };\n\n/** RIPEMD160(SHA256(input)) — standard Bitcoin/Stacks address hash */\nexport function hash160(input: Uint8Array): Uint8Array {\n\treturn ripemd160(sha256(input));\n}\n\n/** Hash used for transaction IDs */\nexport function txidFromBytes(data: Uint8Array): string {\n\treturn bytesToHex(sha512_256(data));\n}\n\n/** hash160 as hex — used for P2PKH address derivation */\nexport function hashP2PKH(input: Uint8Array): string {\n\treturn bytesToHex(hash160(input));\n}\n",
9
9
  "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",
10
10
  "import { HDKey } from \"@scure/bip32\";\nimport { mnemonicToSeedSync } from \"@scure/bip39\";\nimport {\n\tpublicKeyToP2trAddress,\n\tpublicKeyToP2wpkhAddress,\n} from \"../bitcoin/address.ts\";\nimport type { BitcoinNetwork } from \"../bitcoin/constants.ts\";\nimport { bytesToHex } from \"../utils/encoding.ts\";\n\nexport type BitcoinKeyType = \"p2wpkh\" | \"p2tr\";\n\nexport type MnemonicToBitcoinKeysOptions = {\n\t/** `'p2wpkh'` (BIP84, `bc1q…`) or `'p2tr'` (BIP86, `bc1p…`). */\n\ttype: BitcoinKeyType;\n\tnetwork?: BitcoinNetwork;\n\taccountIndex?: number;\n\t/** 0 = receive chain, 1 = change chain. */\n\tchangeIndex?: number;\n\taddressIndex?: number;\n};\n\nexport type BitcoinKeys = {\n\t/** 32-byte private key, hex. */\n\tprivateKey: string;\n\t/** 33-byte compressed public key, hex. */\n\tpublicKey: string;\n\taddress: string;\n\t/** Full BIP84/BIP86 derivation path. */\n\tpath: string;\n};\n\nconst PURPOSE: Record<BitcoinKeyType, number> = { p2wpkh: 84, p2tr: 86 };\n\n/**\n * Derive Bitcoin keys + address from the same mnemonic that backs a Stacks\n * account — BIP84 (native segwit) or BIP86 (taproot) paths, matching what\n * Leather/Xverse derive for the paired BTC account. Pure derivation: no\n * Bitcoin transaction building or signing.\n *\n * @example\n * const btc = mnemonicToBitcoinKeys(mnemonic, { type: \"p2tr\" });\n * btc.address; // bc1p…\n * btc.path; // m/86'/0'/0'/0/0\n */\nexport function mnemonicToBitcoinKeys(\n\tmnemonic: string,\n\toptions: MnemonicToBitcoinKeysOptions,\n): BitcoinKeys {\n\tconst {\n\t\ttype,\n\t\tnetwork = \"mainnet\",\n\t\taccountIndex = 0,\n\t\tchangeIndex = 0,\n\t\taddressIndex = 0,\n\t} = options;\n\n\t// BIP44 coin type: 0' mainnet, 1' testnet/regtest.\n\tconst coinType = network === \"mainnet\" ? 0 : 1;\n\tconst path = `m/${PURPOSE[type]}'/${coinType}'/${accountIndex}'/${changeIndex}/${addressIndex}`;\n\n\tconst seed = mnemonicToSeedSync(mnemonic);\n\tconst child = HDKey.fromMasterSeed(seed).derive(path);\n\tif (!child.privateKey || !child.publicKey)\n\t\tthrow new Error(\"Failed to derive Bitcoin key\");\n\n\tconst address =\n\t\ttype === \"p2wpkh\"\n\t\t\t? publicKeyToP2wpkhAddress(child.publicKey, network)\n\t\t\t: publicKeyToP2trAddress(child.publicKey, network);\n\n\treturn {\n\t\tprivateKey: bytesToHex(child.privateKey),\n\t\tpublicKey: bytesToHex(child.publicKey),\n\t\taddress,\n\t\tpath,\n\t};\n}\n",
11
- "import { schnorr, secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { base58, bech32, bech32m } from \"@scure/base\";\nimport { concatBytes, hexToBytes } from \"../utils/encoding.ts\";\nimport { hash160 } from \"../utils/hash.ts\";\nimport type { ParsedOutputScript } from \"./codec.ts\";\nimport type { BitcoinNetwork } from \"./constants.ts\";\nimport { doubleSha256 } from \"./serialize.ts\";\n\n/** Address-encoding parameters (base58 version bytes + bech32 hrp) per network. */\nexport const BITCOIN_NETWORK_PARAMS = {\n\tmainnet: { p2pkh: 0x00, p2sh: 0x05, hrp: \"bc\" },\n\ttestnet: { p2pkh: 0x6f, p2sh: 0xc4, hrp: \"tb\" },\n\tregtest: { p2pkh: 0x6f, p2sh: 0xc4, hrp: \"bcrt\" },\n} as const;\n\nconst NETWORK_PARAMS = BITCOIN_NETWORK_PARAMS;\n\n/** Base58Check-encode a versioned 20-byte payload (legacy P2PKH / P2SH).\n * The one encoder for the package; pox5 and sbtc address code import it. */\nexport function base58CheckEncode(\n\tversion: number,\n\tpayload: Uint8Array,\n): string {\n\tconst data = concatBytes(Uint8Array.of(version), payload);\n\tconst checksum = doubleSha256(data).slice(0, 4);\n\treturn base58.encode(concatBytes(data, checksum));\n}\n\n/**\n * Render a parsed output script as a Bitcoin address for the given network.\n * Returns `undefined` for scripts without a standard address (OP_RETURN, P2PK,\n * unknown). Address encoding is network-dependent, which is why this is separate\n * from the pure `parseOutputScript` decoder.\n */\nexport function formatBitcoinAddress(\n\tparsed: ParsedOutputScript,\n\tnetwork: BitcoinNetwork = \"mainnet\",\n): string | undefined {\n\tconst params = NETWORK_PARAMS[network];\n\tconst hash = parsed.hash;\n\tif (!hash) return undefined;\n\tswitch (parsed.type) {\n\t\tcase \"p2pkh\":\n\t\t\treturn base58CheckEncode(params.p2pkh, hash);\n\t\tcase \"p2sh\":\n\t\t\treturn base58CheckEncode(params.p2sh, hash);\n\t\tcase \"p2wpkh\":\n\t\tcase \"p2wsh\":\n\t\t\treturn bech32.encode(params.hrp, [0, ...bech32.toWords(hash)]);\n\t\tcase \"p2tr\":\n\t\t\treturn bech32m.encode(params.hrp, [1, ...bech32m.toWords(hash)]);\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nfunction toPubkeyBytes(publicKey: Uint8Array | string): Uint8Array {\n\treturn typeof publicKey === \"string\" ? hexToBytes(publicKey) : publicKey;\n}\n\n/**\n * BIP341 key-path tweak: lift the x-only internal key to a point, add\n * `tapTweakHash(P)·G` (no script tree), and return the x-only output key.\n */\nexport function taprootTweakPubkey(xonly: Uint8Array): Uint8Array {\n\tif (xonly.length !== 32)\n\t\tthrow new Error(`Expected 32-byte x-only pubkey, got ${xonly.length}`);\n\tconst tweak = schnorr.utils.taggedHash(\"TapTweak\", xonly);\n\tconst t = BigInt(\n\t\t`0x${Array.from(tweak, (b) => b.toString(16).padStart(2, \"0\")).join(\"\")}`,\n\t);\n\tif (t >= secp256k1.Point.Fn.ORDER)\n\t\tthrow new Error(\"Invalid tap tweak (exceeds curve order)\");\n\tconst internal = secp256k1.Point.fromBytes(\n\t\tconcatBytes(Uint8Array.of(0x02), xonly),\n\t);\n\tconst output = internal.add(secp256k1.Point.BASE.multiply(t));\n\treturn output.toBytes(true).slice(1);\n}\n\n/**\n * Derive the native-segwit (P2WPKH, bech32 v0) address for a compressed\n * public key.\n */\nexport function publicKeyToP2wpkhAddress(\n\tpublicKey: Uint8Array | string,\n\tnetwork: BitcoinNetwork = \"mainnet\",\n): string {\n\tconst pubkey = toPubkeyBytes(publicKey);\n\tif (pubkey.length !== 33)\n\t\tthrow new Error(`Expected 33-byte compressed pubkey, got ${pubkey.length}`);\n\tconst params = NETWORK_PARAMS[network];\n\treturn bech32.encode(params.hrp, [0, ...bech32.toWords(hash160(pubkey))]);\n}\n\n/**\n * Derive the taproot (P2TR, bech32m v1) address for a public key — BIP341\n * key-path spend, no script tree. Accepts a 33-byte compressed key (the\n * parity byte is dropped) or a 32-byte x-only key.\n */\nexport function publicKeyToP2trAddress(\n\tpublicKey: Uint8Array | string,\n\tnetwork: BitcoinNetwork = \"mainnet\",\n): string {\n\tconst pubkey = toPubkeyBytes(publicKey);\n\tconst xonly =\n\t\tpubkey.length === 33\n\t\t\t? pubkey.slice(1)\n\t\t\t: pubkey.length === 32\n\t\t\t\t? pubkey\n\t\t\t\t: undefined;\n\tif (!xonly)\n\t\tthrow new Error(\n\t\t\t`Expected 33-byte compressed or 32-byte x-only pubkey, got ${pubkey.length}`,\n\t\t);\n\tconst params = NETWORK_PARAMS[network];\n\tconst outputKey = taprootTweakPubkey(xonly);\n\treturn bech32m.encode(params.hrp, [1, ...bech32m.toWords(outputKey)]);\n}\n",
11
+ "import { schnorr, secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { base58, bech32, bech32m } from \"@scure/base\";\nimport { concatBytes, hexToBytes } from \"../utils/encoding.ts\";\nimport { hash160 } from \"../utils/hash.ts\";\nimport type { ParsedOutputScript } from \"./codec.ts\";\nimport type { BitcoinNetwork } from \"./constants.ts\";\nimport { doubleSha256 } from \"./serialize.ts\";\n\n/** Address-encoding parameters (base58 version bytes + bech32 hrp) per network. */\nexport const BITCOIN_NETWORK_PARAMS = {\n\tmainnet: { p2pkh: 0x00, p2sh: 0x05, hrp: \"bc\" },\n\ttestnet: { p2pkh: 0x6f, p2sh: 0xc4, hrp: \"tb\" },\n\tregtest: { p2pkh: 0x6f, p2sh: 0xc4, hrp: \"bcrt\" },\n} as const;\n\nconst NETWORK_PARAMS = BITCOIN_NETWORK_PARAMS;\n\n/** Base58Check-encode a versioned 20-byte payload (legacy P2PKH / P2SH).\n * The one encoder for the package; pox5 and sbtc address code import it. */\nexport function base58CheckEncode(\n\tversion: number,\n\tpayload: Uint8Array,\n): string {\n\tconst data = concatBytes(Uint8Array.of(version), payload);\n\tconst checksum = doubleSha256(data).slice(0, 4);\n\treturn base58.encode(concatBytes(data, checksum));\n}\n\n/**\n * Render a parsed output script as a Bitcoin address for the given network.\n * Returns `undefined` for scripts without a standard address (OP_RETURN, P2PK,\n * unknown). Address encoding is network-dependent, which is why this is separate\n * from the pure `parseOutputScript` decoder.\n */\nexport function formatBitcoinAddress(\n\tparsed: ParsedOutputScript,\n\tnetwork: BitcoinNetwork = \"mainnet\",\n): string | undefined {\n\tconst params = NETWORK_PARAMS[network];\n\tconst hash = parsed.hash;\n\tif (!hash) return undefined;\n\tswitch (parsed.type) {\n\t\tcase \"p2pkh\":\n\t\t\treturn base58CheckEncode(params.p2pkh, hash);\n\t\tcase \"p2sh\":\n\t\t\treturn base58CheckEncode(params.p2sh, hash);\n\t\tcase \"p2wpkh\":\n\t\tcase \"p2wsh\":\n\t\t\treturn bech32.encode(params.hrp, [0, ...bech32.toWords(hash)]);\n\t\tcase \"p2tr\":\n\t\t\treturn bech32m.encode(params.hrp, [1, ...bech32m.toWords(hash)]);\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nfunction toPubkeyBytes(publicKey: Uint8Array | string): Uint8Array {\n\treturn typeof publicKey === \"string\" ? hexToBytes(publicKey) : publicKey;\n}\n\n/**\n * BIP341 output-key tweak: lift the x-only internal key to a point, add\n * `tapTweakHash(P || merkleRoot)·G`, and return the x-only output key. Leave\n * `merkleRoot` out for a key-path-only output (no script tree).\n */\nexport function taprootTweakPubkey(\n\txonly: Uint8Array,\n\tmerkleRoot?: Uint8Array,\n): Uint8Array {\n\tif (xonly.length !== 32)\n\t\tthrow new Error(`Expected 32-byte x-only pubkey, got ${xonly.length}`);\n\tif (merkleRoot && merkleRoot.length !== 32)\n\t\tthrow new Error(`Expected 32-byte merkle root, got ${merkleRoot.length}`);\n\tconst tweak = merkleRoot\n\t\t? schnorr.utils.taggedHash(\"TapTweak\", xonly, merkleRoot)\n\t\t: schnorr.utils.taggedHash(\"TapTweak\", xonly);\n\tconst t = BigInt(\n\t\t`0x${Array.from(tweak, (b) => b.toString(16).padStart(2, \"0\")).join(\"\")}`,\n\t);\n\tif (t >= secp256k1.Point.Fn.ORDER)\n\t\tthrow new Error(\"Invalid tap tweak (exceeds curve order)\");\n\tconst internal = secp256k1.Point.fromBytes(\n\t\tconcatBytes(Uint8Array.of(0x02), xonly),\n\t);\n\tconst output = internal.add(secp256k1.Point.BASE.multiply(t));\n\treturn output.toBytes(true).slice(1);\n}\n\n/**\n * Derive the native-segwit (P2WPKH, bech32 v0) address for a compressed\n * public key.\n */\nexport function publicKeyToP2wpkhAddress(\n\tpublicKey: Uint8Array | string,\n\tnetwork: BitcoinNetwork = \"mainnet\",\n): string {\n\tconst pubkey = toPubkeyBytes(publicKey);\n\tif (pubkey.length !== 33)\n\t\tthrow new Error(`Expected 33-byte compressed pubkey, got ${pubkey.length}`);\n\tconst params = NETWORK_PARAMS[network];\n\treturn bech32.encode(params.hrp, [0, ...bech32.toWords(hash160(pubkey))]);\n}\n\n/**\n * Derive the taproot (P2TR, bech32m v1) address for a public key — BIP341\n * key-path spend, no script tree. Accepts a 33-byte compressed key (prefix\n * `0x02`/`0x03`; the parity byte is dropped) or a 32-byte x-only key.\n */\nexport function publicKeyToP2trAddress(\n\tpublicKey: Uint8Array | string,\n\tnetwork: BitcoinNetwork = \"mainnet\",\n): string {\n\tconst pubkey = toPubkeyBytes(publicKey);\n\tconst xonly =\n\t\tpubkey.length === 33\n\t\t\t? pubkey.slice(1)\n\t\t\t: pubkey.length === 32\n\t\t\t\t? pubkey\n\t\t\t\t: undefined;\n\tif (!xonly)\n\t\tthrow new Error(\n\t\t\t`Expected 33-byte compressed or 32-byte x-only pubkey, got ${pubkey.length}`,\n\t\t);\n\tif (pubkey.length === 33 && pubkey[0] !== 0x02 && pubkey[0] !== 0x03)\n\t\tthrow new Error(\n\t\t\t`Expected a compressed pubkey prefix 0x02 or 0x03, got 0x${pubkey[0]?.toString(16).padStart(2, \"0\")}`,\n\t\t);\n\tconst params = NETWORK_PARAMS[network];\n\tconst outputKey = taprootTweakPubkey(xonly);\n\treturn bech32m.encode(params.hrp, [1, ...bech32m.toWords(outputKey)]);\n}\n",
12
12
  "import { concatBytes } from \"../utils/encoding.ts\";\nimport { sha256 } from \"../utils/hash.ts\";\n\n/**\n * Bitcoin double-SHA256: `sha256(sha256(bytes))`. This is the hash Bitcoin uses\n * for txids, block headers, and merkle nodes — NOT the same as the Stacks\n * `txidFromBytes` (which uses sha512_256), so it lives here, not in `utils/hash`.\n */\nexport function doubleSha256(bytes: Uint8Array): Uint8Array {\n\treturn sha256(sha256(bytes));\n}\n\n/**\n * Reverse a byte array. Bitcoin hashes are computed and stored in *internal*\n * (little-endian) order but *displayed* big-endian, so the two differ by a\n * reversal. The SIP-044 built-ins consume internal order; only reverse for\n * display / when matching an explorer value.\n */\nexport function reverseBytes(bytes: Uint8Array): Uint8Array {\n\tconst out = new Uint8Array(bytes.length);\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tout[i] = bytes[bytes.length - 1 - i] as number;\n\t}\n\treturn out;\n}\n\n/**\n * A little-endian, varint-aware byte reader for Bitcoin serialization. The\n * shared `utils/BytesReader` is big-endian only; Bitcoin tx fields are\n * little-endian with compact-size (varint) length prefixes.\n */\nexport class BtcReader {\n\tprivate readonly data: Uint8Array;\n\tprivate readonly view: DataView;\n\tpublic offset = 0;\n\n\tconstructor(data: Uint8Array) {\n\t\tthis.data = data;\n\t\tthis.view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\t}\n\n\tget length(): number {\n\t\treturn this.data.length;\n\t}\n\n\treadUInt8(): number {\n\t\tconst v = this.view.getUint8(this.offset);\n\t\tthis.offset += 1;\n\t\treturn v;\n\t}\n\n\t/** Read the next byte without advancing. */\n\tpeekUInt8(): number {\n\t\treturn this.view.getUint8(this.offset);\n\t}\n\n\treadUInt32LE(): number {\n\t\tconst v = this.view.getUint32(this.offset, true);\n\t\tthis.offset += 4;\n\t\treturn v;\n\t}\n\n\treadUInt64LE(): bigint {\n\t\tconst v = this.view.getBigUint64(this.offset, true);\n\t\tthis.offset += 8;\n\t\treturn v;\n\t}\n\n\treadBytes(n: number): Uint8Array {\n\t\tif (this.offset + n > this.data.length) {\n\t\t\tthrow new Error(\n\t\t\t\t`Bitcoin tx underflow: need ${n} bytes at offset ${this.offset}, have ${this.data.length}`,\n\t\t\t);\n\t\t}\n\t\tconst slice = this.data.slice(this.offset, this.offset + n);\n\t\tthis.offset += n;\n\t\treturn slice;\n\t}\n\n\t/** Read a Bitcoin compact-size unsigned integer (varint). */\n\treadVarInt(): number {\n\t\tconst first = this.readUInt8();\n\t\tif (first < 0xfd) return first;\n\t\tif (first === 0xfd) {\n\t\t\tconst v = this.view.getUint16(this.offset, true);\n\t\t\tthis.offset += 2;\n\t\t\treturn v;\n\t\t}\n\t\tif (first === 0xfe) {\n\t\t\treturn this.readUInt32LE();\n\t\t}\n\t\tconst big = this.readUInt64LE();\n\t\tif (big > BigInt(Number.MAX_SAFE_INTEGER)) {\n\t\t\tthrow new Error(\"Bitcoin varint exceeds safe integer range\");\n\t\t}\n\t\treturn Number(big);\n\t}\n}\n\nexport interface BitcoinTxInput {\n\t/** Previous output txid, in serialized (internal) byte order. */\n\tprevTxid: Uint8Array;\n\tvout: number;\n\tscriptSig: Uint8Array;\n\tsequence: number;\n}\n\nexport interface BitcoinTxOutput {\n\t/** Output value in satoshis. */\n\tvalue: bigint;\n\tscriptPubKey: Uint8Array;\n}\n\nexport interface ParsedBitcoinTx {\n\tversion: number;\n\thasWitness: boolean;\n\tinputs: BitcoinTxInput[];\n\toutputs: BitcoinTxOutput[];\n\tlocktime: number;\n\t/**\n\t * The legacy txid as the raw double-SHA256 in *internal* byte order — ready\n\t * to pass as the leaf to `verify-merkle-proof`. Witness data is excluded\n\t * (the txid is computed over the legacy serialization), so this is stable for\n\t * both legacy and SegWit txs. Use `reverseBytes` for the displayed form.\n\t */\n\ttxidInternal: Uint8Array;\n}\n\ninterface ScanResult {\n\tversion: number;\n\thasWitness: boolean;\n\tinputs: BitcoinTxInput[];\n\toutputs: BitcoinTxOutput[];\n\tlocktime: number;\n\t/** The legacy (witness-stripped) serialization — what the txid is hashed over. */\n\tlegacy: Uint8Array;\n}\n\n/**\n * Single-pass scan of a raw Bitcoin tx. Captures the inputs/outputs slice and\n * reassembles the legacy serialization so both `parseBitcoinTx` and\n * `stripWitness` share one parser (and one set of foot-guns).\n */\nfunction scanTx(rawTx: Uint8Array): ScanResult {\n\tconst r = new BtcReader(rawTx);\n\tconst version = r.readUInt32LE();\n\n\t// SegWit marker (0x00) + flag (0x01) sit immediately after the version. A\n\t// legacy tx can never have a zero input count, so 0x00 here is unambiguous.\n\tlet hasWitness = false;\n\tif (r.peekUInt8() === 0x00) {\n\t\tr.readUInt8(); // marker\n\t\tconst flag = r.readUInt8();\n\t\tif (flag !== 0x01) {\n\t\t\tthrow new Error(`Unexpected SegWit flag 0x${flag.toString(16)}`);\n\t\t}\n\t\thasWitness = true;\n\t}\n\n\tconst bodyStart = r.offset;\n\tconst inputCount = r.readVarInt();\n\tconst inputs: BitcoinTxInput[] = [];\n\tfor (let i = 0; i < inputCount; i++) {\n\t\tconst prevTxid = r.readBytes(32);\n\t\tconst vout = r.readUInt32LE();\n\t\tconst scriptSig = r.readBytes(r.readVarInt());\n\t\tconst sequence = r.readUInt32LE();\n\t\tinputs.push({ prevTxid, vout, scriptSig, sequence });\n\t}\n\n\tconst outputCount = r.readVarInt();\n\tconst outputs: BitcoinTxOutput[] = [];\n\tfor (let i = 0; i < outputCount; i++) {\n\t\tconst value = r.readUInt64LE();\n\t\tconst scriptPubKey = r.readBytes(r.readVarInt());\n\t\toutputs.push({ value, scriptPubKey });\n\t}\n\tconst bodyEnd = r.offset;\n\n\tif (hasWitness) {\n\t\tfor (let i = 0; i < inputCount; i++) {\n\t\t\tconst itemCount = r.readVarInt();\n\t\t\tfor (let j = 0; j < itemCount; j++) {\n\t\t\t\tr.readBytes(r.readVarInt());\n\t\t\t}\n\t\t}\n\t}\n\n\tconst locktime = r.readUInt32LE();\n\n\tconst legacy = concatBytes(\n\t\trawTx.slice(0, 4),\n\t\trawTx.slice(bodyStart, bodyEnd),\n\t\trawTx.slice(r.offset - 4, r.offset),\n\t);\n\n\treturn { version, hasWitness, inputs, outputs, locktime, legacy };\n}\n\n/** Parse a serialized Bitcoin tx (legacy or SegWit) into its fields + txid. */\nexport function parseBitcoinTx(rawTx: Uint8Array): ParsedBitcoinTx {\n\tconst s = scanTx(rawTx);\n\treturn {\n\t\tversion: s.version,\n\t\thasWitness: s.hasWitness,\n\t\tinputs: s.inputs,\n\t\toutputs: s.outputs,\n\t\tlocktime: s.locktime,\n\t\ttxidInternal: doubleSha256(s.legacy),\n\t};\n}\n\n/**\n * Return the legacy (witness-stripped) serialization of a tx. For a legacy tx\n * this is the input unchanged; for a SegWit tx the marker, flag, and witness\n * stack are removed. This is the byte string the txid is hashed over.\n */\nexport function stripWitness(rawTx: Uint8Array): Uint8Array {\n\treturn scanTx(rawTx).legacy;\n}\n\n/**\n * Compute a tx's id from its raw serialization. Internal byte order by default\n * (the merkle leaf / built-in input); pass `{ display: true }` for the\n * explorer-style big-endian form.\n */\nexport function bitcoinTxid(\n\trawTx: Uint8Array,\n\t{ display = false }: { display?: boolean } = {},\n): Uint8Array {\n\tconst txid = doubleSha256(scanTx(rawTx).legacy);\n\treturn display ? reverseBytes(txid) : txid;\n}\n\nexport interface BlockHeader {\n\tversion: number;\n\t/** Previous block hash, internal byte order. */\n\tprevBlock: Uint8Array;\n\t/** Merkle root, internal byte order — pairs with `verify-merkle-proof`. */\n\tmerkleRoot: Uint8Array;\n\ttimestamp: number;\n\tbits: number;\n\tnonce: number;\n}\n\n/** Parse an 80-byte Bitcoin block header into its fields (hashes internal order). */\nexport function parseBlockHeader(header: Uint8Array): BlockHeader {\n\tif (header.length !== 80) {\n\t\tthrow new Error(\n\t\t\t`Bitcoin block header must be 80 bytes, got ${header.length}`,\n\t\t);\n\t}\n\tconst r = new BtcReader(header);\n\tconst version = r.readUInt32LE();\n\tconst prevBlock = r.readBytes(32);\n\tconst merkleRoot = r.readBytes(32);\n\tconst timestamp = r.readUInt32LE();\n\tconst bits = r.readUInt32LE();\n\tconst nonce = r.readUInt32LE();\n\treturn { version, prevBlock, merkleRoot, timestamp, bits, nonce };\n}\n\n/**\n * Hash an 80-byte block header (double-SHA256). Internal byte order by default;\n * `{ display: true }` for the explorer-style block hash.\n */\nexport function blockHash(\n\theader: Uint8Array,\n\t{ display = false }: { display?: boolean } = {},\n): Uint8Array {\n\tconst hash = doubleSha256(header);\n\treturn display ? reverseBytes(hash) : hash;\n}\n",
13
13
  "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",
14
14
  "import type { ProviderAccount, StacksProvider } from \"./types.ts\";\n\n/** Create a ProviderAccount by querying the wallet for addresses */\nexport async function providerToAccount(\n\tprovider: StacksProvider,\n): Promise<ProviderAccount> {\n\tconst result = await provider.request(\"stx_getAddresses\");\n\n\tconst entry = result?.addresses?.[0];\n\tif (!entry?.address || !entry?.publicKey) {\n\t\tthrow new Error(\"Provider did not return a valid address\");\n\t}\n\n\treturn {\n\t\ttype: \"provider\",\n\t\taddress: entry.address,\n\t\tpublicKey: entry.publicKey,\n\t\tprovider,\n\t};\n}\n"
15
15
  ],
16
- "mappings": "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",
17
- "debugId": "D26D50A7623A887C64756E2164756E21",
16
+ "mappings": "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",
17
+ "debugId": "AC397C7DBBF23A5964756E2164756E21",
18
18
  "names": []
19
19
  }
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  publicKeyToP2wpkhAddress2,
10
10
  publicKeyToP2trAddress2
11
- } from "../../shared/stacks-esm-e2qhfgke.js";
11
+ } from "../../shared/stacks-esm-ph2fd7hg.js";
12
12
  import {
13
13
  providerToAccount2
14
14
  } from "../../shared/stacks-esm-k108pemv.js";
@@ -1998,64 +1998,6 @@ var SIP013_ABI = {
1998
1998
  var sip010Abi = SIP010_ABI;
1999
1999
  var sip009Abi = SIP009_ABI;
2000
2000
  var sip013Abi = SIP013_ABI;
2001
- // src/clarity/abi/classify.ts
2002
- var TRAIT_STANDARDS = ["sip-009", "sip-010", "sip-013"];
2003
- var STANDARDS = [
2004
- { id: "sip-010", abi: SIP010_ABI, optional: new Set(["get-token-uri"]) },
2005
- { id: "sip-009", abi: SIP009_ABI, optional: new Set(["get-token-uri"]) },
2006
- {
2007
- id: "sip-013",
2008
- abi: SIP013_ABI,
2009
- optional: new Set([
2010
- "transfer-memo",
2011
- "transfer-many",
2012
- "transfer-many-memo",
2013
- "get-token-uri",
2014
- "get-overall-balance",
2015
- "get-overall-supply"
2016
- ])
2017
- }
2018
- ];
2019
- function indexByName(abi) {
2020
- const m = new Map;
2021
- for (const f of abi.functions)
2022
- m.set(f.name, f);
2023
- return m;
2024
- }
2025
- function conformsTo(candidate, spec) {
2026
- const fns = indexByName(candidate);
2027
- for (const required of spec.abi.functions) {
2028
- if (spec.optional.has(required.name))
2029
- continue;
2030
- const got = fns.get(required.name);
2031
- if (!got)
2032
- return false;
2033
- if (got.access !== required.access)
2034
- return false;
2035
- if (got.args.length !== required.args.length)
2036
- return false;
2037
- }
2038
- return true;
2039
- }
2040
- function classifyContract(abi) {
2041
- if (!abi || !Array.isArray(abi.functions))
2042
- return [];
2043
- return STANDARDS.filter((s) => conformsTo(abi, s)).map((s) => s.id);
2044
- }
2045
- function parseDeclaredStandards(claritySource) {
2046
- const out = new Set;
2047
- const matches = claritySource.matchAll(/\(impl-trait\s+[^)]+\)/gi);
2048
- for (const m of matches) {
2049
- const ref = m[0].toLowerCase();
2050
- if (ref.includes("sip-010") || ref.includes(".ft-trait"))
2051
- out.add("sip-010");
2052
- if (ref.includes("sip-009") || ref.includes("nft-trait"))
2053
- out.add("sip-009");
2054
- if (ref.includes("sip-013") || ref.includes("semi-fungible"))
2055
- out.add("sip-013");
2056
- }
2057
- return [...out];
2058
- }
2059
2001
  // src/clarity/abi/normalize.ts
2060
2002
  function normalizeAccess(access) {
2061
2003
  if (access === "read_only")
@@ -2262,6 +2204,65 @@ function normalizeAbi(abi) {
2262
2204
  defined_traits: definedTraits.length > 0 ? definedTraits : undefined
2263
2205
  };
2264
2206
  }
2207
+
2208
+ // src/clarity/abi/classify.ts
2209
+ var TRAIT_STANDARDS = ["sip-009", "sip-010", "sip-013"];
2210
+ var STANDARDS = [
2211
+ { id: "sip-010", abi: SIP010_ABI, optional: new Set(["get-token-uri"]) },
2212
+ { id: "sip-009", abi: SIP009_ABI, optional: new Set(["get-token-uri"]) },
2213
+ {
2214
+ id: "sip-013",
2215
+ abi: SIP013_ABI,
2216
+ optional: new Set([
2217
+ "transfer-memo",
2218
+ "transfer-many",
2219
+ "transfer-many-memo",
2220
+ "get-token-uri",
2221
+ "get-overall-balance",
2222
+ "get-overall-supply"
2223
+ ])
2224
+ }
2225
+ ];
2226
+ function indexByName(abi) {
2227
+ const m = new Map;
2228
+ for (const f of abi.functions)
2229
+ m.set(f.name, f);
2230
+ return m;
2231
+ }
2232
+ function conformsTo(candidate, spec) {
2233
+ const fns = indexByName(candidate);
2234
+ for (const required of spec.abi.functions) {
2235
+ if (spec.optional.has(required.name))
2236
+ continue;
2237
+ const got = fns.get(required.name);
2238
+ if (!got)
2239
+ return false;
2240
+ if (normalizeAccess(got.access) !== required.access)
2241
+ return false;
2242
+ if (got.args.length !== required.args.length)
2243
+ return false;
2244
+ }
2245
+ return true;
2246
+ }
2247
+ function classifyContract(abi) {
2248
+ if (!abi || !Array.isArray(abi.functions))
2249
+ return [];
2250
+ return STANDARDS.filter((s) => conformsTo(abi, s)).map((s) => s.id);
2251
+ }
2252
+ function parseDeclaredStandards(claritySource) {
2253
+ const out = new Set;
2254
+ const matches = claritySource.matchAll(/\(impl-trait\s+[^)]+\)/gi);
2255
+ for (const m of matches) {
2256
+ const ref = m[0].toLowerCase();
2257
+ if (ref.includes("sip-010") || ref.includes(".ft-trait"))
2258
+ out.add("sip-010");
2259
+ if (ref.includes("sip-009") || ref.includes("nft-trait"))
2260
+ out.add("sip-009");
2261
+ if (ref.includes("sip-013") || ref.includes("semi-fungible"))
2262
+ out.add("sip-013");
2263
+ }
2264
+ return [...out];
2265
+ }
2265
2266
  // src/clarity/bridge.ts
2266
2267
  var CV_TYPE_TAGS = new Set([
2267
2268
  "int",
@@ -2757,10 +2758,12 @@ function formatBitcoinAddress(parsed, network = "mainnet") {
2757
2758
  function toPubkeyBytes(publicKey) {
2758
2759
  return typeof publicKey === "string" ? hexToBytes(publicKey) : publicKey;
2759
2760
  }
2760
- function taprootTweakPubkey(xonly) {
2761
+ function taprootTweakPubkey(xonly, merkleRoot) {
2761
2762
  if (xonly.length !== 32)
2762
2763
  throw new Error(`Expected 32-byte x-only pubkey, got ${xonly.length}`);
2763
- const tweak = import_secp256k1.schnorr.utils.taggedHash("TapTweak", xonly);
2764
+ if (merkleRoot && merkleRoot.length !== 32)
2765
+ throw new Error(`Expected 32-byte merkle root, got ${merkleRoot.length}`);
2766
+ const tweak = merkleRoot ? import_secp256k1.schnorr.utils.taggedHash("TapTweak", xonly, merkleRoot) : import_secp256k1.schnorr.utils.taggedHash("TapTweak", xonly);
2764
2767
  const t = BigInt(`0x${Array.from(tweak, (b) => b.toString(16).padStart(2, "0")).join("")}`);
2765
2768
  if (t >= import_secp256k1.secp256k1.Point.Fn.ORDER)
2766
2769
  throw new Error("Invalid tap tweak (exceeds curve order)");
@@ -2780,6 +2783,8 @@ function publicKeyToP2trAddress(publicKey, network = "mainnet") {
2780
2783
  const xonly = pubkey.length === 33 ? pubkey.slice(1) : pubkey.length === 32 ? pubkey : undefined;
2781
2784
  if (!xonly)
2782
2785
  throw new Error(`Expected 33-byte compressed or 32-byte x-only pubkey, got ${pubkey.length}`);
2786
+ if (pubkey.length === 33 && pubkey[0] !== 2 && pubkey[0] !== 3)
2787
+ throw new Error(`Expected a compressed pubkey prefix 0x02 or 0x03, got 0x${pubkey[0]?.toString(16).padStart(2, "0")}`);
2783
2788
  const params = NETWORK_PARAMS[network];
2784
2789
  const outputKey = taprootTweakPubkey(xonly);
2785
2790
  return import_base3.bech32m.encode(params.hrp, [1, ...import_base3.bech32m.toWords(outputKey)]);
@@ -2825,5 +2830,5 @@ async function verifyBitcoinPayment(client, params) {
2825
2830
  return { verified, mined, output, proof };
2826
2831
  }
2827
2832
 
2828
- //# debugId=1D0CF391F783188564756E2164756E21
2833
+ //# debugId=AA8E61CBB35480A064756E2164756E21
2829
2834
  //# sourceMappingURL=index.cjs.map