{
  "version": 3,
  "sources": ["../src/clarity/types.ts", "../src/utils/c32.ts", "../src/utils/encoding.ts", "../src/utils/constants.ts", "../src/utils/hash.ts", "../src/utils/address.ts", "../src/errors/base.ts", "../src/errors/transaction.ts", "../src/utils/bytes-reader.ts", "../src/clarity/deserialize.ts", "../src/clarity/serialize.ts", "../src/clarity/values.ts", "../src/clarity/structuredData.ts", "../src/clarity/prettyPrint.ts", "../src/clarity/abi/guards.ts", "../src/clarity/abi/utils.ts", "../src/clarity/abi/converters.ts", "../src/clarity/abi/standards.ts", "../src/clarity/abi/classify.ts", "../src/clarity/abi/normalize.ts", "../src/clarity/bridge.ts"],
  "sourcesContent": [
    "export type ClarityType =\n\t| \"int\"\n\t| \"uint\"\n\t| \"buffer\"\n\t| \"true\"\n\t| \"false\"\n\t| \"address\"\n\t| \"contract\"\n\t| \"ok\"\n\t| \"err\"\n\t| \"none\"\n\t| \"some\"\n\t| \"list\"\n\t| \"tuple\"\n\t| \"ascii\"\n\t| \"utf8\";\n\n/** Wire type IDs matching the Stacks binary format (SIP-005) */\nexport const ClarityWireType = {\n\tint: 0x00,\n\tuint: 0x01,\n\tbuffer: 0x02,\n\ttrue: 0x03,\n\tfalse: 0x04,\n\taddress: 0x05,\n\tcontract: 0x06,\n\tok: 0x07,\n\terr: 0x08,\n\tnone: 0x09,\n\tsome: 0x0a,\n\tlist: 0x0b,\n\ttuple: 0x0c,\n\tascii: 0x0d,\n\tutf8: 0x0e,\n} as const satisfies Record<ClarityType, number>;\n\n/** Reverse lookup: wire byte → ClarityType string */\nconst wireTypeToClarity = Object.fromEntries(\n\tObject.entries(ClarityWireType).map(([k, v]) => [v, k]),\n) as Record<number, ClarityType>;\n\nexport function clarityTypeFromByte(byte: number): ClarityType {\n\tconst type = wireTypeToClarity[byte];\n\tif (!type) throw new Error(`Unknown clarity wire type: ${byte}`);\n\treturn type;\n}\n\n// CV types\n\nexport type IntCV = { readonly type: \"int\"; readonly value: bigint };\nexport type UIntCV = { readonly type: \"uint\"; readonly value: bigint };\nexport type BooleanCV = TrueCV | FalseCV;\nexport type TrueCV = { readonly type: \"true\" };\nexport type FalseCV = { readonly type: \"false\" };\nexport type BufferCV = { readonly type: \"buffer\"; readonly value: string }; // hex\nexport type NoneCV = { readonly type: \"none\" };\nexport type SomeCV = {\n\treadonly type: \"some\";\n\treadonly value: ClarityValue;\n};\nexport type OptionalCV = NoneCV | SomeCV;\nexport type ResponseOkCV = {\n\treadonly type: \"ok\";\n\treadonly value: ClarityValue;\n};\nexport type ResponseErrorCV = {\n\treadonly type: \"err\";\n\treadonly value: ClarityValue;\n};\nexport type ResponseCV = ResponseOkCV | ResponseErrorCV;\nexport type StandardPrincipalCV = {\n\treadonly type: \"address\";\n\treadonly value: string;\n};\nexport type ContractPrincipalCV = {\n\treadonly type: \"contract\";\n\treadonly value: string; // \"address.name\"\n};\nexport type PrincipalCV = StandardPrincipalCV | ContractPrincipalCV;\nexport type ListCV = {\n\ttype: \"list\";\n\tvalue: ClarityValue[];\n};\nexport type TupleData = {\n\t[key: string]: ClarityValue;\n};\nexport type TupleCV = {\n\ttype: \"tuple\";\n\tvalue: TupleData;\n};\nexport type StringAsciiCV = {\n\treadonly type: \"ascii\";\n\treadonly value: string;\n};\nexport type StringUtf8CV = {\n\treadonly type: \"utf8\";\n\treadonly value: string;\n};\n\nexport type ClarityValue =\n\t| IntCV\n\t| UIntCV\n\t| BooleanCV\n\t| BufferCV\n\t| NoneCV\n\t| SomeCV\n\t| ResponseOkCV\n\t| ResponseErrorCV\n\t| StandardPrincipalCV\n\t| ContractPrincipalCV\n\t| ListCV\n\t| TupleCV\n\t| StringAsciiCV\n\t| StringUtf8CV;\n",
    "import { sha256 } from \"@noble/hashes/sha2.js\";\nimport { bytesToHex, hexToBytes } from \"./encoding.ts\";\n\nconst C32 = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\";\nconst HEX = \"0123456789abcdef\";\n\nfunction c32normalize(input: string): string {\n\treturn input.toUpperCase().replace(/O/g, \"0\").replace(/L|I/g, \"1\");\n}\n\nfunction c32encode(inputHex: string): string {\n\tlet hex = inputHex;\n\tif (hex.length % 2 !== 0) hex = `0${hex}`;\n\thex = hex.toLowerCase();\n\n\tconst res: string[] = [];\n\tlet carry = 0;\n\tfor (let i = hex.length - 1; i >= 0; i--) {\n\t\tif (carry < 4) {\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tconst currentCode = HEX.indexOf(hex[i]!) >> carry;\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tconst nextCode = i !== 0 ? HEX.indexOf(hex[i - 1]!) : 0;\n\t\t\tconst nextBits = 1 + carry;\n\t\t\tconst nextLowBits = (nextCode % (1 << nextBits)) << (5 - nextBits);\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tres.unshift(C32[currentCode + nextLowBits]!);\n\t\t\tcarry = nextBits;\n\t\t} else {\n\t\t\tcarry = 0;\n\t\t}\n\t}\n\n\t// Strip leading c32 zeros\n\tlet leadingZeros = 0;\n\twhile (leadingZeros < res.length && res[leadingZeros] === \"0\") leadingZeros++;\n\tconst stripped = res.slice(leadingZeros);\n\n\t// Preserve leading zero bytes from hex\n\tconst bytes = hexToBytes(hex);\n\tlet zeroBytesCount = 0;\n\twhile (zeroBytesCount < bytes.length && bytes[zeroBytesCount] === 0)\n\t\tzeroBytesCount++;\n\tconst prefix = Array(zeroBytesCount).fill(C32[0]) as string[];\n\n\treturn [...prefix, ...stripped].join(\"\");\n}\n\nfunction c32decode(c32input: string): string {\n\tconst input = c32normalize(c32input);\n\tif (!input.match(`^[${C32}]*$`)) throw new Error(\"Not a c32-encoded string\");\n\n\tconst zeroPrefix = input.match(`^${C32[0]}*`);\n\tconst numLeadingZeroBytes = zeroPrefix ? zeroPrefix[0]?.length : 0;\n\n\tconst res: string[] = [];\n\tlet carry = 0;\n\tlet carryBits = 0;\n\tfor (let i = input.length - 1; i >= 0; i--) {\n\t\tif (carryBits === 4) {\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tres.unshift(HEX[carry]!);\n\t\t\tcarryBits = 0;\n\t\t\tcarry = 0;\n\t\t}\n\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\tconst currentValue = (C32.indexOf(input[i]!) << carryBits) + carry;\n\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\tres.unshift(HEX[currentValue % 16]!);\n\t\tcarryBits += 1;\n\t\tcarry = currentValue >> 4;\n\t\tif (carry > 1 << carryBits) throw new Error(\"Panic error in c32 decoding\");\n\t}\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\tres.unshift(HEX[carry]!);\n\n\tif (res.length % 2 === 1) res.unshift(\"0\");\n\n\t// Strip leading hex zeros\n\tlet hexLeadingZeros = 0;\n\twhile (hexLeadingZeros < res.length && res[hexLeadingZeros] === \"0\")\n\t\thexLeadingZeros++;\n\tlet hexStr = res.slice(hexLeadingZeros - (hexLeadingZeros % 2)).join(\"\");\n\n\tfor (let i = 0; i < numLeadingZeroBytes; i++) hexStr = `00${hexStr}`;\n\n\treturn hexStr;\n}\n\nfunction c32checksum(dataHex: string): string {\n\treturn bytesToHex(sha256(sha256(hexToBytes(dataHex))).slice(0, 4));\n}\n\nfunction c32checkEncode(version: number, data: string): string {\n\tif (version < 0 || version >= 32)\n\t\tthrow new Error(\"Invalid version (must be between 0 and 31)\");\n\tif (!data.match(/^[0-9a-fA-F]*$/))\n\t\tthrow new Error(\"Invalid data (not a hex string)\");\n\n\tlet d = data.toLowerCase();\n\tif (d.length % 2 !== 0) d = `0${d}`;\n\n\tlet versionHex = version.toString(16);\n\tif (versionHex.length === 1) versionHex = `0${versionHex}`;\n\n\tconst checksumHex = c32checksum(`${versionHex}${d}`);\n\treturn `${C32[version]}${c32encode(`${d}${checksumHex}`)}`;\n}\n\nfunction c32checkDecode(c32data: string): [number, string] {\n\tconst normalized = c32normalize(c32data);\n\tconst dataHex = c32decode(normalized.slice(1));\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\tconst version = C32.indexOf(normalized[0]!);\n\tconst checksum = dataHex.slice(-8);\n\n\tlet versionHex = version.toString(16);\n\tif (versionHex.length === 1) versionHex = `0${versionHex}`;\n\n\tif (\n\t\tc32checksum(`${versionHex}${dataHex.substring(0, dataHex.length - 8)}`) !==\n\t\tchecksum\n\t) {\n\t\tthrow new Error(\"Invalid c32check string: checksum mismatch\");\n\t}\n\n\treturn [version, dataHex.substring(0, dataHex.length - 8)];\n}\n\nexport function c32address(version: number, hash160hex: string): string {\n\tif (!hash160hex.match(/^[0-9a-fA-F]{40}$/)) {\n\t\tthrow new Error(\"Invalid argument: not a hash160 hex string\");\n\t}\n\treturn `S${c32checkEncode(version, hash160hex)}`;\n}\n\nexport function c32addressDecode(c32addr: string): [number, string] {\n\tif (c32addr.length <= 5)\n\t\tthrow new Error(\"Invalid c32 address: invalid length\");\n\tif (c32addr[0] !== \"S\")\n\t\tthrow new Error('Invalid c32 address: must start with \"S\"');\n\treturn c32checkDecode(c32addr.slice(1));\n}\n",
    "const hexes = Array.from({ length: 256 }, (_, i) =>\n\ti.toString(16).padStart(2, \"0\"),\n);\n\nexport function bytesToHex(bytes: Uint8Array): string {\n\tlet hex = \"\";\n\tfor (const b of bytes) {\n\t\thex += hexes[b];\n\t}\n\treturn hex;\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n\tlet h = without0x(hex);\n\tif (h.length % 2) h = `0${h}`;\n\n\tconst array = new Uint8Array(h.length / 2);\n\tfor (let i = 0; i < array.length; i++) {\n\t\tconst j = i * 2;\n\t\tconst byte = Number.parseInt(h.slice(j, j + 2), 16);\n\t\tif (Number.isNaN(byte) || byte < 0)\n\t\t\tthrow new Error(\"Invalid byte sequence\");\n\t\tarray[i] = byte;\n\t}\n\treturn array;\n}\n\nexport function with0x(value: string): string {\n\treturn /^0x/i.test(value) ? value : `0x${value}`;\n}\n\nexport function without0x(value: string): string {\n\treturn /^0x/i.test(value) ? value.slice(2) : value;\n}\n\nexport function utf8ToBytes(str: string): Uint8Array {\n\treturn new TextEncoder().encode(str);\n}\n\nexport function bytesToUtf8(bytes: Uint8Array): string {\n\treturn new TextDecoder().decode(bytes);\n}\n\nexport function asciiToBytes(str: string): Uint8Array {\n\tconst bytes = new Uint8Array(str.length);\n\tfor (let i = 0; i < str.length; i++) {\n\t\tbytes[i] = str.charCodeAt(i) & 0xff;\n\t}\n\treturn bytes;\n}\n\nexport function bytesToAscii(bytes: Uint8Array): string {\n\treturn String.fromCharCode(...bytes);\n}\n\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\tif (arrays.length === 1) return arrays[0]!;\n\tconst length = arrays.reduce((a, arr) => a + arr.length, 0);\n\tconst result = new Uint8Array(length);\n\tlet pad = 0;\n\tfor (const arr of arrays) {\n\t\tresult.set(arr, pad);\n\t\tpad += arr.length;\n\t}\n\treturn result;\n}\n\nexport type IntegerType = number | string | bigint | Uint8Array;\n\nexport function intToBigInt(value: IntegerType): bigint {\n\tif (typeof value === \"bigint\") return value;\n\tif (typeof value === \"string\") return BigInt(value);\n\tif (typeof value === \"number\") {\n\t\tif (!Number.isInteger(value))\n\t\t\tthrow new RangeError(\"Values of type 'number' must be an integer.\");\n\t\tif (value > Number.MAX_SAFE_INTEGER)\n\t\t\tthrow new RangeError(\n\t\t\t\t`Values of type 'number' must be <= ${Number.MAX_SAFE_INTEGER}. Use BigInt instead.`,\n\t\t\t);\n\t\treturn BigInt(value);\n\t}\n\tif (value instanceof Uint8Array) return BigInt(`0x${bytesToHex(value)}`);\n\tthrow new TypeError(\"Must be a number, bigint, string, or Uint8Array.\");\n}\n\nexport function intToBytes(value: IntegerType, byteLength: number): Uint8Array {\n\treturn bigIntToBytes(intToBigInt(value), byteLength);\n}\n\nexport function bigIntToBytes(value: bigint, length = 16): Uint8Array {\n\tconst hex = value.toString(16).padStart(length * 2, \"0\");\n\treturn hexToBytes(hex);\n}\n\nexport function intToHex(integer: IntegerType, byteLength = 8): string {\n\tconst value = typeof integer === \"bigint\" ? integer : intToBigInt(integer);\n\treturn value.toString(16).padStart(byteLength * 2, \"0\");\n}\n\nexport function toTwos(value: bigint, width: bigint): bigint {\n\tconst limit = BigInt(1) << (width - BigInt(1));\n\tif (value < -limit || value > limit - BigInt(1)) {\n\t\tthrow new Error(`Unable to represent integer in width: ${width}`);\n\t}\n\tif (value >= BigInt(0)) return value;\n\treturn value + (BigInt(1) << width);\n}\n\nexport function fromTwos(value: bigint, width: bigint): bigint {\n\tif (value & (BigInt(1) << (width - BigInt(1)))) {\n\t\treturn value - (BigInt(1) << width);\n\t}\n\treturn value;\n}\n\nexport function bytesToTwosBigInt(bytes: Uint8Array): bigint {\n\tif (bytes.length === 0) return 0n;\n\tconst hex = bytesToHex(bytes);\n\tif (hex.length === 0) return 0n;\n\treturn fromTwos(BigInt(`0x${hex}`), BigInt(bytes.byteLength * 8));\n}\n\nexport function writeUInt32BE(value: number): Uint8Array {\n\tconst buf = new Uint8Array(4);\n\tbuf[0] = (value >>> 24) & 0xff;\n\tbuf[1] = (value >>> 16) & 0xff;\n\tbuf[2] = (value >>> 8) & 0xff;\n\tbuf[3] = value & 0xff;\n\treturn buf;\n}\n\nexport function readUInt32BE(bytes: Uint8Array, offset = 0): number {\n\treturn (\n\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t((bytes[offset]! << 24) |\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\t(bytes[offset + 1]! << 16) |\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\t(bytes[offset + 2]! << 8) |\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\t\t\tbytes[offset + 3]!) >>>\n\t\t0\n\t);\n}\n\nexport function writeUInt16BE(value: number): Uint8Array {\n\tconst buf = new Uint8Array(2);\n\tbuf[0] = (value >>> 8) & 0xff;\n\tbuf[1] = value & 0xff;\n\treturn buf;\n}\n\nexport function readUInt16BE(bytes: Uint8Array, offset = 0): number {\n\t// biome-ignore lint/style/noNonNullAssertion: bit-encoding routine where index is provably bounded by surrounding loop/length checks\n\treturn ((bytes[offset]! << 8) | bytes[offset + 1]!) >>> 0;\n}\n\nexport function writeUInt8(value: number): Uint8Array {\n\treturn new Uint8Array([value & 0xff]);\n}\n",
    "// Clarity integer bounds\nexport const MAX_U128: bigint = (1n << 128n) - 1n;\nexport const MAX_I128: bigint = (1n << 127n) - 1n;\nexport const MIN_I128: bigint = -(1n << 127n);\n\n/** C32-encoded address version bytes for single-sig and multi-sig on each network. */\nexport const AddressVersion = {\n\tMainnetSingleSig: 22,\n\tMainnetMultiSig: 20,\n\tTestnetSingleSig: 26,\n\tTestnetMultiSig: 21,\n} as const;\nexport type AddressVersion =\n\t(typeof AddressVersion)[keyof typeof AddressVersion];\n\n/** Mainnet burn address (all-zero hash160). */\nexport const ZERO_ADDRESS = \"SP000000000000000000002Q6VF78\";\n/** Testnet burn address (all-zero hash160). */\nexport const TESTNET_ZERO_ADDRESS = \"ST000000000000000000002AMW42H\";\n\n/** Number of microSTX per 1 STX (10^6). */\nexport const MICROSTX_PER_STX = 1_000_000n;\n",
    "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",
    "import { c32address, c32addressDecode } from \"./c32.ts\";\nimport { AddressVersion } from \"./constants.ts\";\nimport { bytesToHex, hexToBytes, without0x } from \"./encoding.ts\";\nimport { hash160 } from \"./hash.ts\";\n\nexport { c32address, c32addressDecode };\n\n/**\n * Derive the single-sig Stacks address for a compressed public key.\n */\nexport function publicKeyToAddress(\n\tpublicKey: string | Uint8Array,\n\tnetwork: \"mainnet\" | \"testnet\" = \"mainnet\",\n): string {\n\tconst bytes =\n\t\ttypeof publicKey === \"string\"\n\t\t\t? hexToBytes(without0x(publicKey))\n\t\t\t: publicKey;\n\tconst version =\n\t\tnetwork === \"mainnet\"\n\t\t\t? AddressVersion.MainnetSingleSig\n\t\t\t: AddressVersion.TestnetSingleSig;\n\treturn c32address(version, bytesToHex(hash160(bytes)));\n}\n\n/** Clarity contract-name grammar: leading letter, then letters/digits/`-`/`_`.\n *  Underscore is legal (SIP-002) and deployed contracts use it — matches the\n *  pattern the Index API already accepts for contract ids. */\nexport const CONTRACT_NAME_REGEX: RegExp = /^[a-zA-Z][a-zA-Z0-9_-]{0,127}$/;\n\nexport function validateStacksAddress(address: string): boolean {\n\ttry {\n\t\tc32addressDecode(address);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/** Alias for validateStacksAddress — matches future.md naming. */\nexport const isValidAddress: (address: string) => boolean =\n\tvalidateStacksAddress;\n\n/** Parse a principal into its parts, or null when malformed. The single\n *  definition of \"valid principal\" for this package: exactly one optional\n *  `.name` segment (never two), a c32-decodable address, and a contract name\n *  matching the Clarity grammar. */\nexport function parsePrincipal(\n\tvalue: string,\n): { address: string; contractName?: string } | null {\n\tconst parts = value.split(\".\");\n\tif (parts.length > 2) return null;\n\tconst [address, contractName] = parts as [string, string | undefined];\n\tif (!validateStacksAddress(address)) return null;\n\tif (contractName === undefined) return { address };\n\tif (!CONTRACT_NAME_REGEX.test(contractName)) return null;\n\treturn { address, contractName };\n}\n\n/** Split `address.name` into its parts. Throws on anything `parsePrincipal`\n *  rejects, and on a bare address with no contract name. */\nexport function parseContractId(contractId: string): [string, string] {\n\tconst parsed = parsePrincipal(contractId);\n\tif (!parsed?.contractName)\n\t\tthrow new Error(`Invalid contract identifier: ${contractId}`);\n\treturn [parsed.address, parsed.contractName];\n}\n\nexport function isClarityName(name: string): boolean {\n\tconst regex = /^[a-zA-Z]([a-zA-Z0-9]|[-_!?+<>=/*])*$|^[-+=/*]$|^[<>]=?$/;\n\treturn regex.test(name) && name.length < 128;\n}\n\n/**\n * Compare two Stacks addresses for equality (case-insensitive, version-aware).\n * Throws if either address is invalid.\n */\nexport function isAddressEqual(a: string, b: string): boolean {\n\tconst [versionA, hashA] = c32addressDecode(a);\n\tconst [versionB, hashB] = c32addressDecode(b);\n\treturn versionA === versionB && hashA.toLowerCase() === hashB.toLowerCase();\n}\n\n/** Extract the version byte from a Stacks address (22, 20, 26, or 21). */\nexport function addressToVersion(address: string): number {\n\treturn c32addressDecode(address)[0];\n}\n\n/**\n * Build a contract address from deployer + contract name.\n * Validates both parts; returns `deployer.contractName`.\n */\nexport function getContractAddress(\n\tdeployer: string,\n\tcontractName: string,\n): string {\n\tif (!validateStacksAddress(deployer)) {\n\t\tthrow new Error(`Invalid deployer address: ${deployer}`);\n\t}\n\tif (!isClarityName(contractName)) {\n\t\tthrow new Error(`Invalid contract name: ${contractName}`);\n\t}\n\treturn `${deployer}.${contractName}`;\n}\n",
    "/**\n * Derive a stable machine-readable code from an error's `name` field:\n * `HttpRequestError` becomes `HTTP_REQUEST_ERROR`. `name` is a string\n * literal each class sets, so the code survives a bundler that mangles\n * class names. Branch on `code` instead of parsing `message`, which is\n * free to change.\n */\nfunction codeFromName(name: string): string {\n\treturn name\n\t\t.replace(/([a-z0-9])([A-Z])/g, \"$1_$2\")\n\t\t.replace(/([A-Z]+)([A-Z][a-z])/g, \"$1_$2\")\n\t\t.toUpperCase();\n}\n\nexport class BaseError extends Error {\n\toverride name = \"StacksError\";\n\t#code?: string;\n\tshortMessage: string;\n\tdetails?: string;\n\n\tconstructor(\n\t\tshortMessage: string,\n\t\toptions?: { cause?: Error; details?: string; code?: string },\n\t) {\n\t\tconst message = [\n\t\t\tshortMessage,\n\t\t\toptions?.details ? `\\n${options.details}` : \"\",\n\t\t].join(\"\");\n\n\t\tsuper(message, { cause: options?.cause });\n\t\tif (options?.code !== undefined) this.#code = options.code;\n\t\tthis.shortMessage = shortMessage;\n\t\tthis.details = options?.details;\n\t}\n\n\t/**\n\t * Stable identifier for programmatic handling; survives message\n\t * rewording and minification. An explicit `code` option wins, else it\n\t * is derived from `name` (`TimeoutError` gives `TIMEOUT_ERROR`).\n\t */\n\tget code(): string {\n\t\treturn this.#code ?? codeFromName(this.name);\n\t}\n\n\tset code(value: string) {\n\t\tthis.#code = value;\n\t}\n\n\ttoJSON(): {\n\t\tname: string;\n\t\tcode: string;\n\t\tmessage: string;\n\t\tshortMessage: string;\n\t\tdetails: string | undefined;\n\t\tcause: string | undefined;\n\t} {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tcode: this.code,\n\t\t\tmessage: this.message,\n\t\t\tshortMessage: this.shortMessage,\n\t\t\tdetails: this.details,\n\t\t\tcause: this.cause instanceof Error ? this.cause.message : undefined,\n\t\t};\n\t}\n}\n",
    "import { BaseError } from \"./base.ts\";\n\nexport class TransactionError extends BaseError {\n\toverride name = \"TransactionError\";\n}\n\n/**\n * Rejection reasons a stacks-node returns from `POST /v2/transactions`.\n * Wire strings from stacks-core `MemPoolRejection::into_json`\n * (`stackslib/src/chainstate/stacks/db/blocks.rs`).\n */\nexport type TxRejectionReason =\n\t| \"Serialization\"\n\t| \"Deserialization\"\n\t| \"SignatureValidation\"\n\t| \"BadNonce\"\n\t| \"ConflictingNonceInMempool\"\n\t| \"TooMuchChaining\"\n\t| \"FeeTooLow\"\n\t| \"NotEnoughFunds\"\n\t| \"NoSuchContract\"\n\t| \"NoSuchPublicFunction\"\n\t| \"BadFunctionArgument\"\n\t| \"ContractAlreadyExists\"\n\t| \"BadTransactionVersion\"\n\t| \"TransferRecipientCannotEqualSender\"\n\t| \"TransferAmountMustBePositive\"\n\t| \"PoisonMicroblocksDoNotConflict\"\n\t| \"PoisonMicroblockHasUnknownPubKeyHash\"\n\t| \"PoisonMicroblockIsInvalid\"\n\t| \"BadAddressVersionByte\"\n\t| \"NoCoinbaseViaMempool\"\n\t| \"NoTenureChangeViaMempool\"\n\t| \"EstimatorError\"\n\t| \"TemporarilyBlacklisted\"\n\t| \"ServerFailureNoSuchChainTip\"\n\t| \"ServerFailureDatabase\"\n\t| \"ServerFailureOther\";\n\nexport class BroadcastError extends BaseError {\n\toverride name = \"BroadcastError\";\n\ttxid?: string;\n\t// `(string & {})` keeps forward-compat with reasons newer nodes may add\n\t// while preserving literal-union completions.\n\treason?: TxRejectionReason | (string & {});\n\t/** Node-provided detail; shape varies per reason (see stacks-core RPC docs). */\n\treasonData?: unknown;\n\n\tconstructor(\n\t\tmessage: string,\n\t\toptions?: {\n\t\t\tcause?: Error;\n\t\t\ttxid?: string;\n\t\t\treason?: string;\n\t\t\treasonData?: unknown;\n\t\t},\n\t) {\n\t\tsuper(message, options);\n\t\tthis.txid = options?.txid;\n\t\tthis.reason = options?.reason;\n\t\tthis.reasonData = options?.reasonData;\n\t}\n}\n\n/** The transaction was mined but its execution aborted (runtime error or failed post-condition). */\nexport class TransactionAbortedError extends BaseError {\n\toverride name = \"TransactionAbortedError\";\n\t/** The abort receipt (status, block info, raw source response). */\n\treceipt: unknown;\n\n\tconstructor(message: string, options: { receipt: unknown; cause?: Error }) {\n\t\tsuper(message, options);\n\t\tthis.receipt = options.receipt;\n\t}\n}\n\n/** The transaction left the mempool without being mined (dropped/replaced). */\nexport class TransactionDroppedError extends BaseError {\n\toverride name = \"TransactionDroppedError\";\n\ttxid: string;\n\n\tconstructor(message: string, options: { txid: string; cause?: Error }) {\n\t\tsuper(message, options);\n\t\tthis.txid = options.txid;\n\t}\n}\n\n/** waitForTransactionReceipt gave up before the tx reached the requested state. */\nexport class WaitForTransactionTimeoutError extends BaseError {\n\toverride name = \"WaitForTransactionTimeoutError\";\n\ttxid: string;\n\n\tconstructor(message: string, options: { txid: string; cause?: Error }) {\n\t\tsuper(message, options);\n\t\tthis.txid = options.txid;\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",
    "import { SerializationError } from \"../errors/transaction.ts\";\nimport { bytesToHex } from \"./encoding.ts\";\n\nexport class BytesReader {\n\tprivate data: Uint8Array;\n\tpublic offset = 0;\n\n\tconstructor(data: Uint8Array) {\n\t\tthis.data = data;\n\t}\n\n\t/** Bytes left after the cursor. */\n\tremaining(): number {\n\t\treturn this.data.length - this.offset;\n\t}\n\n\tprivate ensure(length: number): void {\n\t\tif (this.offset + length > this.data.length) {\n\t\t\tthrow new SerializationError(\n\t\t\t\t`Buffer underflow: need ${length} bytes at offset ${this.offset}, have ${this.data.length}`,\n\t\t\t);\n\t\t}\n\t}\n\n\treadUInt8(): number {\n\t\tthis.ensure(1);\n\t\t// biome-ignore lint/style/noNonNullAssertion: bounds checked by ensure()\n\t\treturn this.data[this.offset++]!;\n\t}\n\n\treadUInt16BE(): number {\n\t\tthis.ensure(2);\n\t\tconst val =\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bounds checked by ensure()\n\t\t\t((this.data[this.offset]! << 8) | this.data[this.offset + 1]!) >>> 0;\n\t\tthis.offset += 2;\n\t\treturn val;\n\t}\n\n\treadUInt32BE(): number {\n\t\tthis.ensure(4);\n\t\tconst val =\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: bounds checked by ensure()\n\t\t\t((this.data[this.offset]! << 24) |\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: bounds checked by ensure()\n\t\t\t\t(this.data[this.offset + 1]! << 16) |\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: bounds checked by ensure()\n\t\t\t\t(this.data[this.offset + 2]! << 8) |\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: bounds checked by ensure()\n\t\t\t\tthis.data[this.offset + 3]!) >>>\n\t\t\t0;\n\t\tthis.offset += 4;\n\t\treturn val;\n\t}\n\n\treadBytes(length: number): Uint8Array {\n\t\tthis.ensure(length);\n\t\tconst slice = this.data.slice(this.offset, this.offset + length);\n\t\tthis.offset += length;\n\t\treturn slice;\n\t}\n\n\treadBigUInt64BE(): bigint {\n\t\tconst hex = bytesToHex(this.readBytes(8));\n\t\treturn hex.length > 0 ? BigInt(`0x${hex}`) : 0n;\n\t}\n}\n",
    "import { SerializationError } from \"../errors/transaction.ts\";\nimport { BytesReader } from \"../utils/bytes-reader.ts\";\nimport { c32address } from \"../utils/c32.ts\";\nimport {\n\tbytesToAscii,\n\tbytesToHex,\n\tbytesToTwosBigInt,\n\tbytesToUtf8,\n\thexToBytes,\n\twithout0x,\n} from \"../utils/encoding.ts\";\nimport { type ClarityValue, clarityTypeFromByte } from \"./types.ts\";\nimport {\n\tbufferCV,\n\tcontractPrincipalCV,\n\tfalseCV,\n\tintCV,\n\tlistCV,\n\tnoneCV,\n\tresponseErrorCV,\n\tresponseOkCV,\n\tsomeCV,\n\tstandardPrincipalCV,\n\tstringAsciiCV,\n\tstringUtf8CV,\n\ttrueCV,\n\ttupleCV,\n\tuintCV,\n} from \"./values.ts\";\n\nexport function readAddress(reader: BytesReader): string {\n\tconst version = reader.readUInt8();\n\tconst hash160 = bytesToHex(reader.readBytes(20));\n\treturn c32address(version, hash160);\n}\n\nexport function readLPString(reader: BytesReader, prefixBytes = 1): string {\n\tlet length = 0;\n\tfor (let i = 0; i < prefixBytes; i++) {\n\t\tlength = (length << 8) | reader.readUInt8();\n\t}\n\treturn bytesToUtf8(reader.readBytes(length));\n}\n\n/** Deepest nesting the deserializer follows before refusing the input. Clarity\n *  itself caps value nesting far below this, so honest data never hits it;\n *  hostile bytes that repeat `some`/`ok`/`list` would otherwise blow the stack. */\nexport const MAX_CV_DEPTH = 64;\n\n/** Every list item and tuple entry costs at least this many bytes on the wire\n *  (a type byte, plus a name-length byte for tuple entries), so a declared\n *  count that outruns the remaining bytes is corrupt before any allocation. */\nconst MIN_LIST_ITEM_BYTES = 1;\nconst MIN_TUPLE_ENTRY_BYTES = 2;\n\nfunction checkCount(reader: BytesReader, count: number, minBytes: number) {\n\tif (count * minBytes > reader.remaining()) {\n\t\tthrow new SerializationError(\n\t\t\t`Clarity value declares ${count} elements but only ${reader.remaining()} bytes remain`,\n\t\t);\n\t}\n}\n\nexport function readCV(reader: BytesReader, depth = 0): ClarityValue {\n\tif (depth > MAX_CV_DEPTH) {\n\t\tthrow new SerializationError(\n\t\t\t`Clarity value nests deeper than ${MAX_CV_DEPTH} levels`,\n\t\t);\n\t}\n\tconst typeByte = reader.readUInt8();\n\tconst type = clarityTypeFromByte(typeByte);\n\n\tswitch (type) {\n\t\tcase \"int\":\n\t\t\treturn intCV(bytesToTwosBigInt(reader.readBytes(16)));\n\n\t\tcase \"uint\":\n\t\t\treturn uintCV(reader.readBytes(16));\n\n\t\tcase \"true\":\n\t\t\treturn trueCV();\n\n\t\tcase \"false\":\n\t\t\treturn falseCV();\n\n\t\tcase \"buffer\": {\n\t\t\tconst len = reader.readUInt32BE();\n\t\t\treturn bufferCV(reader.readBytes(len));\n\t\t}\n\n\t\tcase \"none\":\n\t\t\treturn noneCV();\n\n\t\tcase \"some\":\n\t\t\treturn someCV(readCV(reader, depth + 1));\n\n\t\tcase \"ok\":\n\t\t\treturn responseOkCV(readCV(reader, depth + 1));\n\n\t\tcase \"err\":\n\t\t\treturn responseErrorCV(readCV(reader, depth + 1));\n\n\t\tcase \"address\":\n\t\t\treturn standardPrincipalCV(readAddress(reader));\n\n\t\tcase \"contract\": {\n\t\t\tconst addr = readAddress(reader);\n\t\t\tconst name = readLPString(reader);\n\t\t\treturn contractPrincipalCV(addr, name);\n\t\t}\n\n\t\tcase \"list\": {\n\t\t\tconst len = reader.readUInt32BE();\n\t\t\tcheckCount(reader, len, MIN_LIST_ITEM_BYTES);\n\t\t\tconst items: ClarityValue[] = [];\n\t\t\tfor (let i = 0; i < len; i++) {\n\t\t\t\titems.push(readCV(reader, depth + 1));\n\t\t\t}\n\t\t\treturn listCV(items);\n\t\t}\n\n\t\tcase \"tuple\": {\n\t\t\tconst len = reader.readUInt32BE();\n\t\t\tcheckCount(reader, len, MIN_TUPLE_ENTRY_BYTES);\n\t\t\tconst data: Record<string, ClarityValue> = {};\n\t\t\tfor (let i = 0; i < len; i++) {\n\t\t\t\tconst key = readLPString(reader);\n\t\t\t\tdata[key] = readCV(reader, depth + 1);\n\t\t\t}\n\t\t\treturn tupleCV(data);\n\t\t}\n\n\t\tcase \"ascii\": {\n\t\t\tconst len = reader.readUInt32BE();\n\t\t\treturn stringAsciiCV(bytesToAscii(reader.readBytes(len)));\n\t\t}\n\n\t\tcase \"utf8\": {\n\t\t\tconst len = reader.readUInt32BE();\n\t\t\treturn stringUtf8CV(bytesToUtf8(reader.readBytes(len)));\n\t\t}\n\n\t\tdefault:\n\t\t\tthrow new SerializationError(\n\t\t\t\t`Cannot deserialize unknown clarity type: ${type}`,\n\t\t\t);\n\t}\n}\n\nexport function deserializeCVBytes<T extends ClarityValue = ClarityValue>(\n\tinput: Uint8Array | string,\n): T {\n\tconst bytes =\n\t\ttypeof input === \"string\" ? hexToBytes(without0x(input)) : input;\n\treturn readCV(new BytesReader(bytes)) as T;\n}\n\nexport function deserializeCV<T extends ClarityValue = ClarityValue>(\n\tinput: Uint8Array | string,\n): T {\n\treturn deserializeCVBytes(input);\n}\n",
    "import { c32addressDecode } from \"../utils/c32.ts\";\nimport {\n\tasciiToBytes,\n\tbigIntToBytes,\n\tbytesToHex,\n\tconcatBytes,\n\thexToBytes,\n\tintToHex,\n\ttoTwos,\n\tutf8ToBytes,\n\twriteUInt32BE,\n} from \"../utils/encoding.ts\";\nimport {\n\ttype ClarityType,\n\ttype ClarityValue,\n\tClarityWireType,\n} from \"./types.ts\";\n\nconst CLARITY_INT_SIZE = 128n;\nconst CLARITY_INT_BYTE_SIZE = 16;\n\nfunction typeIdByte(type: ClarityType): number {\n\treturn ClarityWireType[type];\n}\n\nfunction withTypeId(type: ClarityType, bytes: Uint8Array): Uint8Array {\n\treturn concatBytes(new Uint8Array([typeIdByte(type)]), bytes);\n}\n\nfunction serializeAddress(c32Address: string): Uint8Array {\n\tconst [version, hash160] = c32addressDecode(c32Address);\n\treturn concatBytes(new Uint8Array([version]), hexToBytes(hash160));\n}\n\nfunction serializeLPString(str: string, prefixBytes = 1): Uint8Array {\n\tconst content = utf8ToBytes(str);\n\tconst lengthPrefix = hexToBytes(intToHex(content.byteLength, prefixBytes));\n\treturn concatBytes(lengthPrefix, content);\n}\n\nexport function serializeCVBytes(value: ClarityValue): Uint8Array {\n\tswitch (value.type) {\n\t\tcase \"true\":\n\t\tcase \"false\":\n\t\t\treturn new Uint8Array([typeIdByte(value.type)]);\n\n\t\tcase \"int\": {\n\t\t\tconst bytes = bigIntToBytes(\n\t\t\t\ttoTwos(BigInt(value.value), CLARITY_INT_SIZE),\n\t\t\t\tCLARITY_INT_BYTE_SIZE,\n\t\t\t);\n\t\t\treturn withTypeId(value.type, bytes);\n\t\t}\n\n\t\tcase \"uint\": {\n\t\t\tconst bytes = bigIntToBytes(BigInt(value.value), CLARITY_INT_BYTE_SIZE);\n\t\t\treturn withTypeId(value.type, bytes);\n\t\t}\n\n\t\tcase \"buffer\": {\n\t\t\tconst bufBytes = hexToBytes(value.value);\n\t\t\treturn withTypeId(\n\t\t\t\tvalue.type,\n\t\t\t\tconcatBytes(writeUInt32BE(bufBytes.length), bufBytes),\n\t\t\t);\n\t\t}\n\n\t\tcase \"none\":\n\t\t\treturn new Uint8Array([typeIdByte(value.type)]);\n\n\t\tcase \"some\":\n\t\t\treturn withTypeId(value.type, serializeCVBytes(value.value));\n\n\t\tcase \"ok\":\n\t\tcase \"err\":\n\t\t\treturn withTypeId(value.type, serializeCVBytes(value.value));\n\n\t\tcase \"address\":\n\t\t\treturn withTypeId(value.type, serializeAddress(value.value));\n\n\t\tcase \"contract\": {\n\t\t\tconst [addr, name] = value.value.split(\".\");\n\t\t\tif (!addr || !name)\n\t\t\t\tthrow new Error(`Invalid contract principal: ${value.value}`);\n\t\t\treturn withTypeId(\n\t\t\t\tvalue.type,\n\t\t\t\tconcatBytes(serializeAddress(addr), serializeLPString(name)),\n\t\t\t);\n\t\t}\n\n\t\tcase \"list\": {\n\t\t\tconst parts: Uint8Array[] = [writeUInt32BE(value.value.length)];\n\t\t\tfor (const item of value.value) {\n\t\t\t\tparts.push(serializeCVBytes(item));\n\t\t\t}\n\t\t\treturn withTypeId(value.type, concatBytes(...parts));\n\t\t}\n\n\t\tcase \"tuple\": {\n\t\t\t// Clarity orders tuple fields as a BTreeMap over the raw name bytes.\n\t\t\t// Code-unit comparison equals byte order for the ASCII name grammar;\n\t\t\t// localeCompare does not, and would change the SIP-018 hash.\n\t\t\tconst keys = Object.keys(value.value).sort((a, b) =>\n\t\t\t\ta < b ? -1 : a > b ? 1 : 0,\n\t\t\t);\n\t\t\tconst parts: Uint8Array[] = [writeUInt32BE(keys.length)];\n\t\t\tfor (const key of keys) {\n\t\t\t\tparts.push(serializeLPString(key));\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tparts.push(serializeCVBytes(value.value[key]!));\n\t\t\t}\n\t\t\treturn withTypeId(value.type, concatBytes(...parts));\n\t\t}\n\n\t\tcase \"ascii\": {\n\t\t\tconst strBytes = asciiToBytes(value.value);\n\t\t\treturn withTypeId(\n\t\t\t\tvalue.type,\n\t\t\t\tconcatBytes(writeUInt32BE(strBytes.length), strBytes),\n\t\t\t);\n\t\t}\n\n\t\tcase \"utf8\": {\n\t\t\tconst strBytes = utf8ToBytes(value.value);\n\t\t\treturn withTypeId(\n\t\t\t\tvalue.type,\n\t\t\t\tconcatBytes(writeUInt32BE(strBytes.length), strBytes),\n\t\t\t);\n\t\t}\n\n\t\tdefault:\n\t\t\tthrow new Error(\"Cannot serialize unknown clarity type\");\n\t}\n}\n\nexport function serializeCV(value: ClarityValue): string {\n\treturn bytesToHex(serializeCVBytes(value));\n}\n",
    "import { isClarityName, parsePrincipal } from \"../utils/address.ts\";\nimport { c32address, c32addressDecode } from \"../utils/c32.ts\";\nimport {\n\ttype IntegerType,\n\tasciiToBytes,\n\tbytesToHex,\n\tbytesToTwosBigInt,\n\thexToBytes,\n\tintToBigInt,\n\tutf8ToBytes,\n} from \"../utils/encoding.ts\";\nimport { deserializeCVBytes } from \"./deserialize.ts\";\nimport { serializeCVBytes } from \"./serialize.ts\";\nimport type {\n\tBooleanCV,\n\tBufferCV,\n\tClarityValue,\n\tContractPrincipalCV,\n\tFalseCV,\n\tIntCV,\n\tListCV,\n\tNoneCV,\n\tResponseErrorCV,\n\tResponseOkCV,\n\tSomeCV,\n\tStandardPrincipalCV,\n\tStringAsciiCV,\n\tStringUtf8CV,\n\tTrueCV,\n\tTupleCV,\n\tTupleData,\n\tUIntCV,\n} from \"./types.ts\";\n\nconst MAX_U128 = BigInt(\"0xffffffffffffffffffffffffffffffff\");\nconst MIN_I128 = BigInt(\"-170141183460469231731687303715884105728\");\nconst MAX_I128 = BigInt(\"0x7fffffffffffffffffffffffffffffff\");\n\n// Primitives\n\nexport function intCV(value: IntegerType): IntCV {\n\tlet v: IntegerType = value;\n\tif (typeof v === \"string\" && v.toLowerCase().startsWith(\"0x\")) {\n\t\tv = bytesToTwosBigInt(hexToBytes(v));\n\t}\n\tif (v instanceof Uint8Array) v = bytesToTwosBigInt(v);\n\tconst n = intToBigInt(v);\n\tif (n > MAX_I128) throw new RangeError(`Int exceeds max i128: ${MAX_I128}`);\n\tif (n < MIN_I128) throw new RangeError(`Int below min i128: ${MIN_I128}`);\n\treturn { type: \"int\", value: n };\n}\n\nexport function uintCV(value: IntegerType): UIntCV {\n\tconst n = intToBigInt(value);\n\tif (n < 0n)\n\t\tthrow new RangeError(\"Cannot construct unsigned int from negative value\");\n\tif (n > MAX_U128) throw new RangeError(`UInt exceeds max u128: ${MAX_U128}`);\n\treturn { type: \"uint\", value: n };\n}\n\nexport const trueCV = (): TrueCV => ({ type: \"true\" });\nexport const falseCV = (): FalseCV => ({ type: \"false\" });\nexport const boolCV = (v: boolean): BooleanCV => (v ? trueCV() : falseCV());\n\nexport function bufferCV(buffer: Uint8Array): BufferCV {\n\tif (buffer.byteLength > 1_048_576) {\n\t\tthrow new Error(\"Buffer exceeds max size of 1MB\");\n\t}\n\treturn { type: \"buffer\", value: bytesToHex(buffer) };\n}\n\nexport function standardPrincipalCV(address: string): StandardPrincipalCV {\n\t// Validate by decoding\n\tconst [version, hash160] = c32addressDecode(address);\n\tconst normalized = c32address(version, hash160);\n\treturn { type: \"address\", value: normalized };\n}\n\nexport function contractPrincipalCV(\n\taddress: string,\n\tcontractName: string,\n): ContractPrincipalCV {\n\tconst [version, hash160] = c32addressDecode(address);\n\tconst normalized = c32address(version, hash160);\n\tif (utf8ToBytes(contractName).byteLength >= 128) {\n\t\tthrow new Error(\"Contract name must be less than 128 bytes\");\n\t}\n\treturn { type: \"contract\", value: `${normalized}.${contractName}` };\n}\n\nexport function noneCV(): NoneCV {\n\treturn { type: \"none\" };\n}\n\nexport function someCV(value: ClarityValue): SomeCV {\n\treturn { type: \"some\", value };\n}\n\nexport function responseOkCV(value: ClarityValue): ResponseOkCV {\n\treturn { type: \"ok\", value };\n}\n\nexport function responseErrorCV(value: ClarityValue): ResponseErrorCV {\n\treturn { type: \"err\", value };\n}\n\nexport function listCV(values: ClarityValue[]): ListCV {\n\treturn { type: \"list\", value: values };\n}\n\nexport function tupleCV(data: TupleData): TupleCV {\n\tfor (const key in data) {\n\t\tif (!isClarityName(key)) {\n\t\t\tthrow new Error(`\"${key}\" is not a valid Clarity name`);\n\t\t}\n\t}\n\treturn { type: \"tuple\", value: data };\n}\n\nexport function stringAsciiCV(value: string): StringAsciiCV {\n\treturn { type: \"ascii\", value };\n}\n\nexport function stringUtf8CV(value: string): StringUtf8CV {\n\treturn { type: \"utf8\", value };\n}\n\n// Cl namespace — clean API\n\nexport const Cl: {\n\treadonly int: (value: IntegerType) => IntCV;\n\treadonly uint: (value: IntegerType) => UIntCV;\n\treadonly bool: (v: boolean) => BooleanCV;\n\tprincipal(address: string): StandardPrincipalCV | ContractPrincipalCV;\n\taddress(address: string): StandardPrincipalCV | ContractPrincipalCV;\n\treadonly contractPrincipal: (\n\t\taddress: string,\n\t\tcontractName: string,\n\t) => ContractPrincipalCV;\n\treadonly standardPrincipal: (address: string) => StandardPrincipalCV;\n\treadonly buffer: (buffer: Uint8Array) => BufferCV;\n\treadonly bufferFromHex: (hex: string) => BufferCV;\n\treadonly bufferFromAscii: (ascii: string) => BufferCV;\n\treadonly bufferFromUtf8: (utf8: string) => BufferCV;\n\treadonly none: () => NoneCV;\n\treadonly some: (value: ClarityValue) => SomeCV;\n\treadonly ok: (value: ClarityValue) => ResponseOkCV;\n\treadonly error: (value: ClarityValue) => ResponseErrorCV;\n\treadonly list: (values: ClarityValue[]) => ListCV;\n\treadonly tuple: (data: TupleData) => TupleCV;\n\treadonly stringAscii: (value: string) => StringAsciiCV;\n\treadonly stringUtf8: (value: string) => StringUtf8CV;\n\tserialize(value: ClarityValue): string;\n\treadonly deserialize: (bytes: Uint8Array) => ClarityValue;\n} = {\n\tint: intCV,\n\tuint: uintCV,\n\tbool: boolCV,\n\tprincipal(address: string): StandardPrincipalCV | ContractPrincipalCV {\n\t\tconst parsed = parsePrincipal(address);\n\t\tif (!parsed) throw new Error(`Invalid principal: ${address}`);\n\t\treturn parsed.contractName\n\t\t\t? contractPrincipalCV(parsed.address, parsed.contractName)\n\t\t\t: standardPrincipalCV(parsed.address);\n\t},\n\taddress(address: string): StandardPrincipalCV | ContractPrincipalCV {\n\t\treturn Cl.principal(address);\n\t},\n\tcontractPrincipal: contractPrincipalCV,\n\tstandardPrincipal: standardPrincipalCV,\n\tbuffer: bufferCV,\n\tbufferFromHex: (hex: string): BufferCV => bufferCV(hexToBytes(hex)),\n\tbufferFromAscii: (ascii: string): BufferCV => bufferCV(asciiToBytes(ascii)),\n\tbufferFromUtf8: (utf8: string): BufferCV => bufferCV(utf8ToBytes(utf8)),\n\tnone: noneCV,\n\tsome: someCV,\n\tok: responseOkCV,\n\terror: responseErrorCV,\n\tlist: listCV,\n\ttuple: tupleCV,\n\tstringAscii: stringAsciiCV,\n\tstringUtf8: stringUtf8CV,\n\tserialize(value: ClarityValue): string {\n\t\treturn bytesToHex(serializeCVBytes(value));\n\t},\n\tdeserialize: deserializeCVBytes,\n} as const;\n",
    "import { sha256 } from \"@noble/hashes/sha2.js\";\nimport type { LocalAccount } from \"../accounts/types.ts\";\nimport { bytesToHex, concatBytes } from \"../utils/encoding.ts\";\nimport { serializeCVBytes } from \"./serialize.ts\";\nimport type { ClarityValue, TupleCV } from \"./types.ts\";\n\n/** asciiToBytes(\"SIP018\") */\nexport const SIP018_PREFIX: Uint8Array = new Uint8Array([\n\t0x53, 0x49, 0x50, 0x30, 0x31, 0x38,\n]);\n\n/** sha256(serialize(cv)) — inner hash used by SIP-018. */\nexport function hashStructuredData(structuredData: ClarityValue): Uint8Array {\n\treturn sha256(serializeCVBytes(structuredData));\n}\n\nfunction isDomain(value: ClarityValue): value is TupleCV {\n\tif (value.type !== \"tuple\") return false;\n\tconst { name, version, \"chain-id\": chainId } = value.value;\n\treturn (\n\t\tname?.type === \"ascii\" &&\n\t\tversion?.type === \"ascii\" &&\n\t\tchainId?.type === \"uint\"\n\t);\n}\n\n/**\n * SIP-018 encoding: `\"SIP018\" || sha256(serialize(domain)) || sha256(serialize(message))`.\n * The signature is over `sha256` of this buffer.\n */\nexport function encodeStructuredData(opts: {\n\tmessage: ClarityValue;\n\tdomain: ClarityValue;\n}): Uint8Array {\n\tif (!isDomain(opts.domain)) {\n\t\tthrow new Error(\n\t\t\t\"domain must be a tuple { name: ascii, version: ascii, chain-id: uint }\",\n\t\t);\n\t}\n\treturn concatBytes(\n\t\tSIP018_PREFIX,\n\t\thashStructuredData(opts.domain),\n\t\thashStructuredData(opts.message),\n\t);\n}\n\n/** SIP-018 message hash: sha256(encodeStructuredData(...)). */\nexport function structuredDataHash(opts: {\n\tmessage: ClarityValue;\n\tdomain: ClarityValue;\n}): Uint8Array {\n\treturn sha256(encodeStructuredData(opts));\n}\n\n/**\n * Sign a SIP-018 structured message. Returns a 65-byte recoverable signature\n * in RSV order (recovery byte last) — the layout contracts expect.\n */\nexport async function signStructuredData(\n\taccount: LocalAccount,\n\topts: { message: ClarityValue; domain: ClarityValue },\n): Promise<string> {\n\tconst vrs = await account.sign(structuredDataHash(opts));\n\tif (vrs.length !== 65) {\n\t\tthrow new Error(\n\t\t\t`Expected 65-byte recoverable signature, got ${vrs.length}`,\n\t\t);\n\t}\n\treturn bytesToHex(concatBytes(vrs.slice(1), vrs.slice(0, 1)));\n}\n",
    "import {\n\tasciiToBytes,\n\tbytesToAscii,\n\thexToBytes,\n\tutf8ToBytes,\n\twithout0x,\n} from \"../utils/encoding.ts\";\nimport type { ClarityValue } from \"./types.ts\";\n\nexport function prettyPrint(\n\tval: ClarityValue,\n\tencoding: \"tryAscii\" | \"hex\" = \"hex\",\n): string | undefined {\n\tswitch (val.type) {\n\t\tcase \"true\":\n\t\t\treturn \"true\";\n\t\tcase \"false\":\n\t\t\treturn \"false\";\n\t\tcase \"int\":\n\t\t\treturn val.value.toString();\n\t\tcase \"uint\":\n\t\t\treturn `u${val.value.toString()}`;\n\t\tcase \"buffer\":\n\t\t\tif (encoding === \"tryAscii\") {\n\t\t\t\tconst str = bytesToAscii(hexToBytes(val.value));\n\t\t\t\tif (/^[ -~]*$/.test(str)) return JSON.stringify(str);\n\t\t\t}\n\t\t\treturn `0x${val.value}`;\n\t\tcase \"none\":\n\t\t\treturn \"none\";\n\t\tcase \"some\":\n\t\t\treturn `(some ${prettyPrint(val.value, encoding)})`;\n\t\tcase \"ok\":\n\t\t\treturn `(ok ${prettyPrint(val.value, encoding)})`;\n\t\tcase \"err\":\n\t\t\treturn `(err ${prettyPrint(val.value, encoding)})`;\n\t\tcase \"address\":\n\t\tcase \"contract\":\n\t\t\treturn val.value;\n\t\tcase \"list\":\n\t\t\treturn `(list ${val.value.map((v) => prettyPrint(v, encoding)).join(\" \")})`;\n\t\tcase \"tuple\":\n\t\t\treturn `(tuple ${Object.keys(val.value)\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\t.map((key) => `(${key} ${prettyPrint(val.value[key]!, encoding)})`)\n\t\t\t\t.join(\" \")})`;\n\t\tcase \"ascii\":\n\t\t\treturn `\"${val.value}\"`;\n\t\tcase \"utf8\":\n\t\t\treturn `u\"${val.value}\"`;\n\t}\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\nexport function cvToJSON(val: ClarityValue): any {\n\tswitch (val.type) {\n\t\tcase \"true\":\n\t\t\treturn { type: \"bool\", value: true };\n\t\tcase \"false\":\n\t\t\treturn { type: \"bool\", value: false };\n\t\tcase \"int\":\n\t\t\treturn { type: \"int\", value: val.value.toString() };\n\t\tcase \"uint\":\n\t\t\treturn { type: \"uint\", value: val.value.toString() };\n\t\tcase \"buffer\": {\n\t\t\tconst hex = without0x(val.value);\n\t\t\treturn {\n\t\t\t\ttype: `(buff ${Math.ceil(hex.length / 2)})`,\n\t\t\t\tvalue: `0x${hex}`,\n\t\t\t};\n\t\t}\n\t\tcase \"none\":\n\t\t\treturn { type: \"(optional none)\", value: null };\n\t\tcase \"some\":\n\t\t\treturn { type: \"(optional)\", value: cvToJSON(val.value) };\n\t\tcase \"ok\":\n\t\t\treturn { type: \"(response)\", value: cvToJSON(val.value), success: true };\n\t\tcase \"err\":\n\t\t\treturn { type: \"(response)\", value: cvToJSON(val.value), success: false };\n\t\tcase \"address\":\n\t\tcase \"contract\":\n\t\t\treturn { type: \"principal\", value: val.value };\n\t\tcase \"list\":\n\t\t\treturn { type: \"(list)\", value: val.value.map(cvToJSON) };\n\t\tcase \"tuple\": {\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\tconst result: Record<string, any> = {};\n\t\t\tfor (const key of Object.keys(val.value)) {\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tresult[key] = cvToJSON(val.value[key]!);\n\t\t\t}\n\t\t\treturn { type: \"(tuple)\", value: result };\n\t\t}\n\t\tcase \"ascii\":\n\t\t\treturn {\n\t\t\t\ttype: `(string-ascii ${asciiToBytes(val.value).length})`,\n\t\t\t\tvalue: val.value,\n\t\t\t};\n\t\tcase \"utf8\":\n\t\t\treturn {\n\t\t\t\ttype: `(string-utf8 ${utf8ToBytes(val.value).length})`,\n\t\t\t\tvalue: val.value,\n\t\t\t};\n\t}\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\nexport function cvToValue(val: ClarityValue): any {\n\tswitch (val.type) {\n\t\tcase \"true\":\n\t\t\treturn true;\n\t\tcase \"false\":\n\t\t\treturn false;\n\t\tcase \"int\":\n\t\tcase \"uint\":\n\t\t\treturn val.value;\n\t\tcase \"buffer\":\n\t\t\treturn `0x${val.value}`;\n\t\tcase \"none\":\n\t\t\treturn null;\n\t\tcase \"some\":\n\t\t\treturn cvToValue(val.value);\n\t\tcase \"ok\":\n\t\tcase \"err\":\n\t\t\treturn cvToValue(val.value);\n\t\tcase \"address\":\n\t\tcase \"contract\":\n\t\t\treturn val.value;\n\t\tcase \"list\":\n\t\t\treturn val.value.map(cvToValue);\n\t\tcase \"tuple\": {\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\tconst result: Record<string, any> = {};\n\t\t\tfor (const key of Object.keys(val.value)) {\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tresult[key] = cvToValue(val.value[key]!);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\tcase \"ascii\":\n\t\tcase \"utf8\":\n\t\t\treturn val.value;\n\t}\n}\n\n/** Narrow to bigint; throws unless `val` is an int or uint. */\nexport function cvToBigInt(val: ClarityValue): bigint {\n\tif (val.type !== \"int\" && val.type !== \"uint\") {\n\t\tthrow new Error(`cvToBigInt: expected int or uint, got ${val.type}`);\n\t}\n\treturn val.value;\n}\n\n/** Narrow to string; throws unless `val` is an ascii or utf8 string. */\nexport function cvToString(val: ClarityValue): string {\n\tif (val.type !== \"ascii\" && val.type !== \"utf8\") {\n\t\tthrow new Error(`cvToString: expected ascii or utf8, got ${val.type}`);\n\t}\n\treturn val.value;\n}\n\n/** Narrow to hex string (no 0x prefix); throws unless `val` is a buffer. */\nexport function cvToBuffer(val: ClarityValue): string {\n\tif (val.type !== \"buffer\") {\n\t\tthrow new Error(`cvToBuffer: expected buffer, got ${val.type}`);\n\t}\n\treturn val.value;\n}\n\n/** Narrow to boolean; throws unless `val` is a bool. */\nexport function cvToBoolean(val: ClarityValue): boolean {\n\tif (val.type !== \"true\" && val.type !== \"false\") {\n\t\tthrow new Error(`cvToBoolean: expected bool, got ${val.type}`);\n\t}\n\treturn val.type === \"true\";\n}\n\n/** Narrow to principal string; throws unless `val` is a standard or contract principal. */\nexport function cvToPrincipal(val: ClarityValue): string {\n\tif (val.type !== \"address\" && val.type !== \"contract\") {\n\t\tthrow new Error(\n\t\t\t`cvToPrincipal: expected principal or contract, got ${val.type}`,\n\t\t);\n\t}\n\treturn val.value;\n}\n",
    "import { parsePrincipal } from \"../../utils/address.ts\";\nimport type { ResponseErr, ResponseOk } from \"./mappings.ts\";\nimport { MAX_I128, MAX_U128, MIN_I128 } from \"./types.ts\";\nimport type {\n\tAbiBuffer,\n\tAbiListType,\n\tAbiOptionalType,\n\tAbiResponseType,\n\tAbiStringAscii,\n\tAbiStringUtf8,\n\tAbiTraitReference,\n\tAbiTupleType,\n\tAbiType,\n} from \"./types.ts\";\n\n// Value guards\n\nexport function isUint128(value: unknown): value is bigint {\n\treturn typeof value === \"bigint\" && value >= 0n && value <= MAX_U128;\n}\n\nexport function isInt128(value: unknown): value is bigint {\n\treturn typeof value === \"bigint\" && value >= MIN_I128 && value <= MAX_I128;\n}\n\nexport function isBool(value: unknown): value is boolean {\n\treturn typeof value === \"boolean\";\n}\n\nexport function isPrincipal(value: unknown): value is string {\n\treturn typeof value === \"string\" && parsePrincipal(value) !== null;\n}\n\nexport function isStandardPrincipal(value: unknown): value is string {\n\tif (typeof value !== \"string\") return false;\n\tconst parsed = parsePrincipal(value);\n\t// Explicit null check: `null?.contractName === undefined` is also true.\n\treturn parsed !== null && parsed.contractName === undefined;\n}\n\nexport function isContractPrincipal(value: unknown): value is string {\n\tif (typeof value !== \"string\") return false;\n\tconst parsed = parsePrincipal(value);\n\treturn parsed !== null && parsed.contractName !== undefined;\n}\n\nexport function isTraitReference(value: unknown): value is string {\n\treturn isContractPrincipal(value);\n}\n\nexport function isString(value: unknown): value is string {\n\treturn typeof value === \"string\";\n}\n\nexport function isUint8Array(value: unknown): value is Uint8Array {\n\treturn value instanceof Uint8Array;\n}\n\nexport function isArray<T>(\n\tvalue: unknown,\n\titemGuard: (item: unknown) => item is T,\n): value is T[] {\n\treturn Array.isArray(value) && value.every(itemGuard);\n}\n\nexport function isOptional<T>(\n\tvalue: unknown,\n\tguard: (val: unknown) => val is T,\n): value is T | null {\n\treturn value === null || guard(value);\n}\n\nexport function isOkResponse<T>(\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tresponse: { ok: T } | { err: any },\n): response is ResponseOk<T> {\n\treturn \"ok\" in response && !(\"err\" in response);\n}\n\nexport function isErrResponse<E>(\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tresponse: { ok: any } | { err: E },\n): response is ResponseErr<E> {\n\treturn \"err\" in response && !(\"ok\" in response);\n}\n\nexport function isResponse<T, E>(\n\tvalue: unknown,\n\tokGuard: (val: unknown) => val is T,\n\terrGuard: (val: unknown) => val is E,\n): value is ResponseOk<T> | ResponseErr<E> {\n\tif (typeof value !== \"object\" || value === null) return false;\n\tconst obj = value as Record<string, unknown>;\n\tif (\"ok\" in value && !(\"err\" in value)) return okGuard(obj.ok);\n\tif (\"err\" in value && !(\"ok\" in value)) return errGuard(obj.err);\n\treturn false;\n}\n\n// ABI type definition guards\n\nexport function isAbiList(type: AbiType): type is AbiListType {\n\treturn typeof type === \"object\" && type !== null && \"list\" in type;\n}\n\nexport function isAbiTuple(type: AbiType): type is AbiTupleType {\n\treturn typeof type === \"object\" && type !== null && \"tuple\" in type;\n}\n\nexport function isAbiOptional(type: AbiType): type is AbiOptionalType {\n\treturn typeof type === \"object\" && type !== null && \"optional\" in type;\n}\n\nexport function isAbiResponse(type: AbiType): type is AbiResponseType {\n\treturn typeof type === \"object\" && type !== null && \"response\" in type;\n}\n\nexport function isAbiBuffer(type: AbiType): type is AbiBuffer {\n\treturn typeof type === \"object\" && type !== null && \"buff\" in type;\n}\n\nexport function isAbiStringAscii(type: AbiType): type is AbiStringAscii {\n\treturn typeof type === \"object\" && type !== null && \"string-ascii\" in type;\n}\n\nexport function isAbiStringUtf8(type: AbiType): type is AbiStringUtf8 {\n\treturn typeof type === \"object\" && type !== null && \"string-utf8\" in type;\n}\n\nexport function isAbiTraitReference(type: AbiType): type is AbiTraitReference {\n\treturn type === \"trait_reference\";\n}\n",
    "type CamelCaseInner<S extends string> =\n\tS extends `${infer P1}-${infer P2}${infer P3}`\n\t\t? `${P1}${Capitalize<CamelCaseInner<`${P2}${P3}`>>}`\n\t\t: S;\n\nexport type ToCamelCase<S extends string> =\n\tCamelCaseInner<S> extends `${number}${string}`\n\t\t? `_${CamelCaseInner<S>}`\n\t\t: CamelCaseInner<S>;\n\nexport function toCamelCase(str: string): string {\n\treturn str\n\t\t.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())\n\t\t.replace(/-([A-Z])/g, (_, letter) => letter)\n\t\t.replace(/-(\\d)/g, (_, digit) => digit)\n\t\t.replace(/-/g, \"\")\n\t\t.replace(/^\\d/, \"_$&\");\n}\n",
    "import type { AbiFunction } from \"./contract.ts\";\nimport {\n\tisAbiBuffer,\n\tisAbiList,\n\tisAbiOptional,\n\tisAbiResponse,\n\tisAbiStringAscii,\n\tisAbiStringUtf8,\n\tisAbiTuple,\n\tisBool,\n\tisInt128,\n\tisPrincipal,\n\tisString,\n\tisUint8Array,\n\tisUint128,\n} from \"./guards.ts\";\nimport type { AbiType } from \"./types.ts\";\nimport { toCamelCase } from \"./utils.ts\";\n\nexport class ClarityConversionError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly type: AbiType,\n\t\tpublic readonly value: unknown,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"ClarityConversionError\";\n\t}\n}\n\nexport function jsToClarity(type: AbiType, value: unknown): unknown {\n\tif (type === \"none\") return null;\n\n\tif (type === \"uint128\") {\n\t\tif (!isUint128(value))\n\t\t\tthrow new ClarityConversionError(\"Invalid uint128 value\", type, value);\n\t\treturn value;\n\t}\n\n\tif (type === \"int128\") {\n\t\tif (!isInt128(value))\n\t\t\tthrow new ClarityConversionError(\"Invalid int128 value\", type, value);\n\t\treturn value;\n\t}\n\n\tif (type === \"bool\") {\n\t\tif (!isBool(value))\n\t\t\tthrow new ClarityConversionError(\"Invalid bool value\", type, value);\n\t\treturn value;\n\t}\n\n\tif (type === \"principal\") {\n\t\tif (!isPrincipal(value))\n\t\t\tthrow new ClarityConversionError(\"Invalid principal value\", type, value);\n\t\treturn value;\n\t}\n\n\tif (type === \"trait_reference\") {\n\t\tif (!isPrincipal(value))\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t\"Invalid trait_reference value\",\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t);\n\t\treturn value;\n\t}\n\n\tif (isAbiStringAscii(type)) {\n\t\tif (!isString(value))\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t\"Invalid string-ascii value\",\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t);\n\t\tconst str = value as string;\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\tif (str.charCodeAt(i) > 127) {\n\t\t\t\tthrow new ClarityConversionError(\n\t\t\t\t\t`Non-ASCII character at position ${i}: '${str[i]}' (code ${str.charCodeAt(i)})`,\n\t\t\t\t\ttype,\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (str.length > type[\"string-ascii\"].length) {\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t`String length ${str.length} exceeds max ${type[\"string-ascii\"].length}`,\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t);\n\t\t}\n\t\treturn value;\n\t}\n\n\tif (isAbiStringUtf8(type)) {\n\t\tif (!isString(value))\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t\"Invalid string-utf8 value\",\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t);\n\t\tconst str = value as string;\n\t\tconst byteLength = new TextEncoder().encode(str).length;\n\t\tif (byteLength > type[\"string-utf8\"].length) {\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t`String byte length ${byteLength} exceeds max ${type[\"string-utf8\"].length}`,\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t);\n\t\t}\n\t\treturn value;\n\t}\n\n\tif (isAbiBuffer(type)) {\n\t\tif (!isUint8Array(value))\n\t\t\tthrow new ClarityConversionError(\"Invalid buffer value\", type, value);\n\t\tconst buff = value as Uint8Array;\n\t\tif (buff.length > type.buff.length) {\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t`Buffer length ${buff.length} exceeds max ${type.buff.length}`,\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t);\n\t\t}\n\t\treturn value;\n\t}\n\n\tif (isAbiList(type)) {\n\t\tif (!Array.isArray(value))\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t\"Expected array for list type\",\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t);\n\t\tif (value.length > type.list.length) {\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t`List length ${value.length} exceeds max ${type.list.length}`,\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t);\n\t\t}\n\t\treturn value.map((item) => jsToClarity(type.list.type, item));\n\t}\n\n\tif (isAbiTuple(type)) {\n\t\tif (typeof value !== \"object\" || value === null)\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t\"Expected object for tuple type\",\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t);\n\t\tconst result: Record<string, unknown> = {};\n\t\tfor (const field of type.tuple) {\n\t\t\tconst camelKey = toCamelCase(field.name);\n\t\t\tconst hasOriginal = field.name in (value as object);\n\t\t\tconst hasCamel = camelKey in (value as object);\n\t\t\tif (!hasOriginal && !hasCamel) {\n\t\t\t\tthrow new ClarityConversionError(\n\t\t\t\t\t`Missing tuple field: ${field.name}`,\n\t\t\t\t\ttype,\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst fieldValue = hasOriginal\n\t\t\t\t? (value as Record<string, unknown>)[field.name]\n\t\t\t\t: (value as Record<string, unknown>)[camelKey];\n\t\t\tresult[field.name] = jsToClarity(field.type, fieldValue);\n\t\t}\n\t\treturn result;\n\t}\n\n\tif (isAbiOptional(type)) {\n\t\tif (value === null || value === undefined) return null;\n\t\treturn jsToClarity(type.optional, value);\n\t}\n\n\tif (isAbiResponse(type)) {\n\t\tif (typeof value !== \"object\" || value === null)\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t\"Expected object for response type\",\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t);\n\t\tconst hasOk = \"ok\" in value;\n\t\tconst hasErr = \"err\" in value;\n\t\tif (hasOk && !hasErr) {\n\t\t\treturn {\n\t\t\t\tok: jsToClarity(type.response.ok, (value as { ok: unknown }).ok),\n\t\t\t};\n\t\t}\n\t\tif (hasErr && !hasOk) {\n\t\t\treturn {\n\t\t\t\terr: jsToClarity(type.response.error, (value as { err: unknown }).err),\n\t\t\t};\n\t\t}\n\t\tthrow new ClarityConversionError(\n\t\t\t\"Response must have exactly 'ok' or 'err' property\",\n\t\t\ttype,\n\t\t\tvalue,\n\t\t);\n\t}\n\n\tthrow new ClarityConversionError(\"Unknown Clarity type\", type, value);\n}\n\nexport function prepareArgs<F extends AbiFunction>(\n\tfunc: F,\n\targs: Record<string, unknown>,\n): unknown[] {\n\treturn func.args.map((arg) => {\n\t\tif (!(arg.name in args)) {\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t`Missing argument: ${arg.name}`,\n\t\t\t\targ.type,\n\t\t\t\tundefined,\n\t\t\t);\n\t\t}\n\t\treturn jsToClarity(arg.type, args[arg.name]);\n\t});\n}\n\nexport function validateArgs<F extends AbiFunction>(\n\tfunc: F,\n\targs: Record<string, unknown>,\n): void {\n\tfor (const arg of func.args) {\n\t\tif (!(arg.name in args)) {\n\t\t\tthrow new ClarityConversionError(\n\t\t\t\t`Missing argument: ${arg.name}`,\n\t\t\t\targ.type,\n\t\t\t\tundefined,\n\t\t\t);\n\t\t}\n\t\tjsToClarity(arg.type, args[arg.name]);\n\t}\n}\n\nexport function validateArgsArray<F extends AbiFunction>(\n\tfunc: F,\n\targs: unknown[],\n): void {\n\tif (args.length !== func.args.length) {\n\t\tthrow new ClarityConversionError(\n\t\t\t`Expected ${func.args.length} arguments, got ${args.length}`,\n\t\t\tfunc.args[0]?.type ?? \"bool\",\n\t\t\targs,\n\t\t);\n\t}\n\tfunc.args.forEach((arg, i) => {\n\t\tjsToClarity(arg.type, args[i]);\n\t});\n}\n",
    "import type { AbiContract } from \"./contract.ts\";\n\nexport const SIP010_ABI = {\n\tfunctions: [\n\t\t{\n\t\t\tname: \"transfer\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"amount\", type: \"uint128\" },\n\t\t\t\t{ name: \"sender\", type: \"principal\" },\n\t\t\t\t{ name: \"recipient\", type: \"principal\" },\n\t\t\t\t{ name: \"memo\", type: { optional: { buff: { length: 34 } } } },\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-balance\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"account\", type: \"principal\" }],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-total-supply\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-name\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: { \"string-ascii\": { length: 32 } },\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-symbol\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: { \"string-ascii\": { length: 10 } },\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-decimals\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-token-uri\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: { optional: { \"string-utf8\": { length: 256 } } },\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n\tfungible_tokens: [{ name: \"token\" }],\n} as const satisfies AbiContract;\n\nexport const SIP009_ABI = {\n\tfunctions: [\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: \"sender\", 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: \"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: { ok: { optional: \"principal\" }, error: \"uint128\" },\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get-last-token-id\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-token-uri\",\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: { \"string-utf8\": { length: 256 } } },\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n\tnon_fungible_tokens: [{ name: \"nft\", type: \"uint128\" }],\n} as const satisfies AbiContract;\n\nexport const SIP013_ABI = {\n\tfunctions: [\n\t\t{\n\t\t\tname: \"transfer\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"token-id\", type: \"uint128\" },\n\t\t\t\t{ name: \"amount\", type: \"uint128\" },\n\t\t\t\t{ name: \"sender\", 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: \"transfer-memo\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"token-id\", type: \"uint128\" },\n\t\t\t\t{ name: \"amount\", type: \"uint128\" },\n\t\t\t\t{ name: \"sender\", type: \"principal\" },\n\t\t\t\t{ name: \"recipient\", type: \"principal\" },\n\t\t\t\t{ name: \"memo\", type: { buff: { length: 34 } } },\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"transfer-many\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: \"transfers\",\n\t\t\t\t\ttype: {\n\t\t\t\t\t\tlist: {\n\t\t\t\t\t\t\ttype: {\n\t\t\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t\t\t{ name: \"token-id\", type: \"uint128\" },\n\t\t\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint128\" },\n\t\t\t\t\t\t\t\t\t{ name: \"sender\", type: \"principal\" },\n\t\t\t\t\t\t\t\t\t{ name: \"recipient\", type: \"principal\" },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlength: 200,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\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: \"transfer-many-memo\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: \"transfers\",\n\t\t\t\t\ttype: {\n\t\t\t\t\t\tlist: {\n\t\t\t\t\t\t\ttype: {\n\t\t\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t\t\t{ name: \"token-id\", type: \"uint128\" },\n\t\t\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint128\" },\n\t\t\t\t\t\t\t\t\t{ name: \"sender\", type: \"principal\" },\n\t\t\t\t\t\t\t\t\t{ name: \"recipient\", type: \"principal\" },\n\t\t\t\t\t\t\t\t\t{ name: \"memo\", type: { buff: { length: 34 } } },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlength: 200,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\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: \"get-balance\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"token-id\", type: \"uint128\" },\n\t\t\t\t{ name: \"account\", 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: \"get-overall-balance\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"account\", type: \"principal\" }],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-total-supply\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"token-id\", type: \"uint128\" }],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-overall-supply\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-decimals\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"token-id\", type: \"uint128\" }],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-token-uri\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"token-id\", type: \"uint128\" }],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: { optional: { \"string-utf8\": { length: 256 } } },\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n\tfungible_tokens: [],\n\tnon_fungible_tokens: [],\n} as const satisfies AbiContract;\n\n// Camel-case aliases for better DX\nexport const sip010Abi: AbiContract = SIP010_ABI;\nexport const sip009Abi: AbiContract = SIP009_ABI;\nexport const sip013Abi: AbiContract = SIP013_ABI;\n",
    "import type { AbiContract, AbiFunction } from \"./contract.ts\";\nimport { SIP009_ABI, SIP010_ABI, SIP013_ABI } from \"./standards.ts\";\n\n/**\n * Static conformance classification — \"does this contract's ABI look like a\n * SIP-009/010/013 token?\". Powers trait-based discovery for the (many) contracts\n * that conform to a standard without declaring its trait. Lean match: every\n * REQUIRED standard function must be present with the same access + arg arity\n * (optional functions like get-token-uri are ignored). Loose on exact arg/return\n * types to catch real-world variants; consumers wanting certainty use the\n * `declared` traits parsed from source instead.\n */\n\n/** The canonical SIP trait standards this package can classify/scaffold against.\n *  Single source of truth — the `SipStandard` type, CLI `--trait` validation, and\n *  the MCP traits resource all derive from this so the vocabulary can't drift. */\nexport const TRAIT_STANDARDS = [\"sip-009\", \"sip-010\", \"sip-013\"] as const;\n\nexport type SipStandard = (typeof TRAIT_STANDARDS)[number];\n\ninterface StandardSpec {\n\tid: SipStandard;\n\tabi: AbiContract;\n\t/** Functions in the reference ABI that real tokens may omit. */\n\toptional: ReadonlySet<string>;\n}\n\nconst STANDARDS: ReadonlyArray<StandardSpec> = [\n\t{ id: \"sip-010\", abi: SIP010_ABI, optional: new Set([\"get-token-uri\"]) },\n\t{ id: \"sip-009\", abi: SIP009_ABI, optional: new Set([\"get-token-uri\"]) },\n\t{\n\t\tid: \"sip-013\",\n\t\tabi: SIP013_ABI,\n\t\toptional: new Set([\n\t\t\t\"transfer-memo\",\n\t\t\t\"transfer-many\",\n\t\t\t\"transfer-many-memo\",\n\t\t\t\"get-token-uri\",\n\t\t\t\"get-overall-balance\",\n\t\t\t\"get-overall-supply\",\n\t\t]),\n\t},\n];\n\nfunction indexByName(abi: AbiContract): Map<string, AbiFunction> {\n\tconst m = new Map<string, AbiFunction>();\n\tfor (const f of abi.functions) m.set(f.name, f);\n\treturn m;\n}\n\nfunction conformsTo(candidate: AbiContract, spec: StandardSpec): boolean {\n\tconst fns = indexByName(candidate);\n\tfor (const required of spec.abi.functions) {\n\t\tif (spec.optional.has(required.name)) continue;\n\t\tconst got = fns.get(required.name);\n\t\tif (!got) return false;\n\t\tif (got.access !== required.access) return false;\n\t\tif (got.args.length !== required.args.length) return false;\n\t}\n\treturn true;\n}\n\n/** Return the SIP standards a contract's ABI statically conforms to. */\nexport function classifyContract(abi: AbiContract): SipStandard[] {\n\tif (!abi || !Array.isArray(abi.functions)) return [];\n\treturn STANDARDS.filter((s) => conformsTo(abi, s)).map((s) => s.id);\n}\n\n/**\n * Parse the standards a contract *declares* via `(impl-trait …)` in its Clarity\n * source. Matched heuristically on the trait-reference name (robust across\n * mainnet/testnet principals + community variants) rather than an exact principal\n * allowlist. The ABI/RPC doesn't carry trait info, so source is the only declared\n * signal. `declared` is the high-confidence signal; `classifyContract` is the\n * catch-all for conforming-but-undeclared contracts.\n */\nexport function parseDeclaredStandards(claritySource: string): SipStandard[] {\n\tconst out = new Set<SipStandard>();\n\tconst matches = claritySource.matchAll(/\\(impl-trait\\s+[^)]+\\)/gi);\n\tfor (const m of matches) {\n\t\tconst ref = m[0].toLowerCase();\n\t\tif (ref.includes(\"sip-010\") || ref.includes(\".ft-trait\"))\n\t\t\tout.add(\"sip-010\");\n\t\tif (ref.includes(\"sip-009\") || ref.includes(\"nft-trait\"))\n\t\t\tout.add(\"sip-009\");\n\t\tif (ref.includes(\"sip-013\") || ref.includes(\"semi-fungible\"))\n\t\t\tout.add(\"sip-013\");\n\t}\n\treturn [...out];\n}\n",
    "/**\n * Normalize a Clarity ABI from any source into the canonical `AbiContract`\n * shape this package's type extractors expect.\n *\n * Sources differ in small, load-bearing ways: the Hiro API and Clarinet SDK\n * emit `buffer`/`read_only` and wrap function outputs as `{ type: … }`, while\n * the canonical shape uses `buff`/`read-only` and a bare `AbiType`. Passing a\n * raw ABI straight through produces a value that LOOKS right and silently\n * fails the `AbiContract` constraint, so `event.input` / `.read.x()` typing\n * quietly degrades. Run it through here first.\n *\n * Lives in `@secondlayer/stacks/clarity` (not the CLI) so a raw ABI can be\n * normalized anywhere — scaffolds, MCP, a user's own script — without the CLI\n * installed.\n */\n\nimport type {\n\tAbiContract,\n\tAbiFunction,\n\tAbiFungibleToken,\n\tAbiMap,\n\tAbiNonFungibleToken,\n\tAbiTraitDefinition,\n\tAbiTraitFunction,\n\tAbiVariable,\n} from \"./contract.ts\";\nimport type { AbiType } from \"./types.ts\";\n\n/**\n * Normalize function access type from various formats to internal format\n */\nexport function normalizeAccess(\n\taccess: string,\n): \"public\" | \"read-only\" | \"private\" {\n\tif (access === \"read_only\") return \"read-only\";\n\treturn access as \"public\" | \"read-only\" | \"private\";\n}\n\n/**\n * Normalize a Clarity type from API format to internal format\n * Handles buffer vs buff, and recursively normalizes nested types\n */\nexport function normalizeType(type: unknown): AbiType {\n\tif (typeof type === \"string\") {\n\t\t// Handle string primitive types\n\t\tswitch (type) {\n\t\t\tcase \"uint128\":\n\t\t\tcase \"int128\":\n\t\t\tcase \"bool\":\n\t\t\tcase \"principal\":\n\t\t\tcase \"trait_reference\":\n\t\t\t\treturn type;\n\t\t\tdefault:\n\t\t\t\t// Unknown string type, return as-is\n\t\t\t\treturn type as AbiType;\n\t\t}\n\t}\n\n\tif (typeof type !== \"object\" || type === null) {\n\t\tthrow new Error(`Invalid ABI type: expected object, got ${typeof type}`);\n\t}\n\n\tconst typeObj = type as Record<string, unknown>;\n\n\t// Handle buffer vs buff (API uses buffer, we use buff)\n\tif (\"buffer\" in typeObj) {\n\t\tconst buffer = typeObj.buffer as { length?: number };\n\t\treturn {\n\t\t\tbuff: {\n\t\t\t\tlength: buffer?.length ?? 32,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Already in internal format\n\tif (\"buff\" in typeObj) {\n\t\tconst buff = typeObj.buff as { length?: number };\n\t\treturn {\n\t\t\tbuff: {\n\t\t\t\tlength: buff?.length ?? 32,\n\t\t\t},\n\t\t};\n\t}\n\n\t// String types\n\tif (\"string-ascii\" in typeObj) {\n\t\tconst strAscii = typeObj[\"string-ascii\"] as { length?: number };\n\t\treturn {\n\t\t\t\"string-ascii\": {\n\t\t\t\tlength: strAscii?.length ?? 256,\n\t\t\t},\n\t\t};\n\t}\n\n\tif (\"string-utf8\" in typeObj) {\n\t\tconst strUtf8 = typeObj[\"string-utf8\"] as { length?: number };\n\t\treturn {\n\t\t\t\"string-utf8\": {\n\t\t\t\tlength: strUtf8?.length ?? 256,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Response type - recursively normalize ok and error types\n\tif (\"response\" in typeObj) {\n\t\tconst response = typeObj.response as { ok?: unknown; error?: unknown };\n\t\treturn {\n\t\t\tresponse: {\n\t\t\t\tok: normalizeType(response?.ok ?? \"bool\"),\n\t\t\t\terror: normalizeType(response?.error ?? \"uint128\"),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Optional type - recursively normalize inner type\n\tif (\"optional\" in typeObj) {\n\t\treturn {\n\t\t\toptional: normalizeType(typeObj.optional),\n\t\t};\n\t}\n\n\t// List type - recursively normalize element type\n\tif (\"list\" in typeObj) {\n\t\tconst list = typeObj.list as { type?: unknown; length?: number };\n\t\treturn {\n\t\t\tlist: {\n\t\t\t\ttype: normalizeType(list?.type ?? \"uint128\"),\n\t\t\t\tlength: list?.length ?? 100,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Tuple type - recursively normalize field types\n\tif (\"tuple\" in typeObj) {\n\t\tconst tuple = typeObj.tuple as Array<{ name: string; type: unknown }>;\n\t\treturn {\n\t\t\ttuple: tuple.map((field) => ({\n\t\t\t\tname: field.name,\n\t\t\t\ttype: normalizeType(field.type),\n\t\t\t})),\n\t\t};\n\t}\n\n\t// Unknown type - fail explicitly\n\tthrow new Error(`Unknown ABI type structure: ${JSON.stringify(type)}`);\n}\n\n/**\n * Normalize a function definition from API format to internal format\n */\nexport function normalizeFunction(func: Record<string, unknown>): AbiFunction {\n\tconst access = normalizeAccess(func.access as string);\n\tconst args = (func.args as Array<{ name: string; type: unknown }>) ?? [];\n\tconst outputs = func.outputs as { type?: unknown } | unknown;\n\n\treturn {\n\t\tname: func.name as string,\n\t\taccess,\n\t\targs: args.map((arg) => ({\n\t\t\tname: arg.name,\n\t\t\ttype: normalizeType(arg.type),\n\t\t})),\n\t\toutputs: normalizeType(\n\t\t\ttypeof outputs === \"object\" && outputs !== null && \"type\" in outputs\n\t\t\t\t? (outputs as { type: unknown }).type\n\t\t\t\t: outputs,\n\t\t),\n\t};\n}\n\n/**\n * Normalize a map definition from API format to internal format\n */\nexport function normalizeMap(map: Record<string, unknown>): AbiMap {\n\treturn {\n\t\tname: map.name as string,\n\t\tkey: normalizeType(map.key),\n\t\tvalue: normalizeType(map.value),\n\t};\n}\n\n/**\n * Normalize a variable definition from API format to internal format\n */\nexport function normalizeVariable(\n\tvariable: Record<string, unknown>,\n): AbiVariable {\n\treturn {\n\t\tname: variable.name as string,\n\t\ttype: normalizeType(variable.type),\n\t\taccess: variable.access as \"constant\" | \"variable\",\n\t};\n}\n\n/**\n * Normalize a fungible-token definition. Only the name is carried on the wire.\n */\nexport function normalizeFungibleToken(\n\ttoken: Record<string, unknown>,\n): AbiFungibleToken {\n\treturn { name: token.name as string };\n}\n\n/**\n * Normalize a non-fungible-token definition, including its identifier type.\n */\nexport function normalizeNonFungibleToken(\n\ttoken: Record<string, unknown>,\n): AbiNonFungibleToken {\n\treturn { name: token.name as string, type: normalizeType(token.type) };\n}\n\n/**\n * Normalize a `define-trait` definition. A trait cannot declare private\n * functions, so any that show up are dropped rather than cast through.\n */\nexport function normalizeTraitDefinition(\n\ttrait: Record<string, unknown>,\n): AbiTraitDefinition {\n\tconst rawFunctions = Array.isArray(trait.functions) ? trait.functions : [];\n\tconst functions: AbiTraitFunction[] = [];\n\n\tfor (const func of rawFunctions) {\n\t\tif (typeof func !== \"object\" || func === null) continue;\n\t\tconst normalized = normalizeFunction(func as Record<string, unknown>);\n\t\tif (normalized.access === \"private\") continue;\n\t\tfunctions.push(normalized as AbiTraitFunction);\n\t}\n\n\treturn { name: trait.name as string, functions };\n}\n\n/**\n * Normalize an entire ABI from various sources to consistent internal format\n *\n * This handles ABIs from:\n * - Hiro API responses\n * - Clarinet SDK\n * - Upstream @secondlayer/stacks types\n */\nexport function normalizeAbi(abi: unknown): AbiContract {\n\tif (typeof abi !== \"object\" || abi === null) {\n\t\treturn { functions: [] };\n\t}\n\n\tconst abiObj = abi as Record<string, unknown>;\n\n\tconst functions: AbiFunction[] = [];\n\tconst maps: AbiMap[] = [];\n\tconst variables: AbiVariable[] = [];\n\tconst fungibleTokens: AbiFungibleToken[] = [];\n\tconst nonFungibleTokens: AbiNonFungibleToken[] = [];\n\tconst implementedTraits: string[] = [];\n\tconst definedTraits: AbiTraitDefinition[] = [];\n\n\t// Normalize functions\n\tif (Array.isArray(abiObj.functions)) {\n\t\tfor (const func of abiObj.functions) {\n\t\t\tif (typeof func === \"object\" && func !== null) {\n\t\t\t\tfunctions.push(normalizeFunction(func as Record<string, unknown>));\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize maps\n\tif (Array.isArray(abiObj.maps)) {\n\t\tfor (const map of abiObj.maps) {\n\t\t\tif (typeof map === \"object\" && map !== null) {\n\t\t\t\tmaps.push(normalizeMap(map as Record<string, unknown>));\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize variables\n\tif (Array.isArray(abiObj.variables)) {\n\t\tfor (const variable of abiObj.variables) {\n\t\t\tif (typeof variable === \"object\" && variable !== null) {\n\t\t\t\tvariables.push(normalizeVariable(variable as Record<string, unknown>));\n\t\t\t}\n\t\t}\n\t}\n\n\t// Token and trait definitions are declarations, not shapes to convert — but\n\t// dropping them makes a normalized ABI lossy, and callers do read them (an\n\t// `ft_transfer` filter needs `contract::asset`, not just the contract).\n\tif (Array.isArray(abiObj.fungible_tokens)) {\n\t\tfor (const token of abiObj.fungible_tokens) {\n\t\t\tif (typeof token === \"object\" && token !== null) {\n\t\t\t\tfungibleTokens.push(\n\t\t\t\t\tnormalizeFungibleToken(token as Record<string, unknown>),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (Array.isArray(abiObj.non_fungible_tokens)) {\n\t\tfor (const token of abiObj.non_fungible_tokens) {\n\t\t\tif (typeof token === \"object\" && token !== null) {\n\t\t\t\tnonFungibleTokens.push(\n\t\t\t\t\tnormalizeNonFungibleToken(token as Record<string, unknown>),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Neither the Clarinet SDK's `IContractInterface` nor the Hiro interface\n\t// response carries traits today; these two branches keep an ABI that does\n\t// have them (a hand-written config, a source-read ABI) round-tripping.\n\tif (Array.isArray(abiObj.implemented_traits)) {\n\t\tfor (const trait of abiObj.implemented_traits) {\n\t\t\tif (typeof trait === \"string\") implementedTraits.push(trait);\n\t\t}\n\t}\n\n\tif (Array.isArray(abiObj.defined_traits)) {\n\t\tfor (const trait of abiObj.defined_traits) {\n\t\t\tif (typeof trait === \"object\" && trait !== null) {\n\t\t\t\tdefinedTraits.push(\n\t\t\t\t\tnormalizeTraitDefinition(trait as Record<string, unknown>),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tfunctions,\n\t\tmaps: maps.length > 0 ? maps : undefined,\n\t\tvariables: variables.length > 0 ? variables : undefined,\n\t\tfungible_tokens: fungibleTokens.length > 0 ? fungibleTokens : undefined,\n\t\tnon_fungible_tokens:\n\t\t\tnonFungibleTokens.length > 0 ? nonFungibleTokens : undefined,\n\t\timplemented_traits:\n\t\t\timplementedTraits.length > 0 ? implementedTraits : undefined,\n\t\tdefined_traits: definedTraits.length > 0 ? definedTraits : undefined,\n\t};\n}\n",
    "import {\n\tisAbiBuffer,\n\tisAbiList,\n\tisAbiOptional,\n\tisAbiResponse,\n\tisAbiStringAscii,\n\tisAbiStringUtf8,\n\tisAbiTuple,\n} from \"./abi/guards.ts\";\nimport type { AbiToTS } from \"./abi/mappings.ts\";\nimport type { AbiType } from \"./abi/types.ts\";\nimport { toCamelCase } from \"./abi/utils.ts\";\nimport type { ClarityValue } from \"./types.ts\";\nimport {\n\tboolCV,\n\tbufferCV,\n\tintCV,\n\tlistCV,\n\tnoneCV,\n\tresponseErrorCV,\n\tresponseOkCV,\n\tsomeCV,\n\tstringAsciiCV,\n\tstringUtf8CV,\n\ttupleCV,\n\tuintCV,\n} from \"./values.ts\";\nimport { Cl } from \"./values.ts\";\n\n/** CV type tags — mirrors the discriminants of `ClarityValue`. */\nconst CV_TYPE_TAGS = new Set([\n\t\"int\",\n\t\"uint\",\n\t\"true\",\n\t\"false\",\n\t\"address\",\n\t\"contract\",\n\t\"ascii\",\n\t\"utf8\",\n\t\"buffer\",\n\t\"list\",\n\t\"tuple\",\n\t\"none\",\n\t\"some\",\n\t\"ok\",\n\t\"err\",\n]);\n\n/**\n * Duck-type check: is `value` already a built ClarityValue? Tag-only CVs\n * (`true`/`false`/`none`) have no payload; every other tag carries `value`.\n */\nexport function isClarityValue(value: unknown): value is ClarityValue {\n\tif (typeof value !== \"object\" || value === null) return false;\n\tconst type = (value as { type?: unknown }).type;\n\tif (typeof type !== \"string\" || !CV_TYPE_TAGS.has(type)) return false;\n\tif (type === \"true\" || type === \"false\" || type === \"none\") return true;\n\treturn \"value\" in value;\n}\n\nconst HEX_PAIRS_REGEX = /^(?:[0-9a-fA-F]{2})+$/;\n\n/**\n * Coerce a flexible buffer input to a BufferCV. Accepts `Uint8Array`, a\n * pre-built `BufferCV`, a tagged `{ type: 'ascii' | 'utf8' | 'hex', value }`\n * object, or a bare string (even-length hex — optionally 0x-prefixed — is\n * decoded as hex; anything else is UTF-8 encoded).\n */\nfunction coerceBuffer(value: unknown): ClarityValue {\n\tif (value instanceof Uint8Array) return bufferCV(value);\n\tif (typeof value === \"object\" && value !== null && \"type\" in value) {\n\t\tconst tagged = value as { type: string; value?: unknown };\n\t\tif (tagged.type === \"buffer\" && isClarityValue(value)) return value;\n\t\tif (typeof tagged.value === \"string\") {\n\t\t\tif (tagged.type === \"ascii\") return Cl.bufferFromAscii(tagged.value);\n\t\t\tif (tagged.type === \"utf8\") return Cl.bufferFromUtf8(tagged.value);\n\t\t\tif (tagged.type === \"hex\") return Cl.bufferFromHex(tagged.value);\n\t\t}\n\t\tthrow new Error(`Unsupported buffer input: ${JSON.stringify(value)}`);\n\t}\n\tif (typeof value === \"string\") {\n\t\tconst hex = value.startsWith(\"0x\") ? value.slice(2) : value;\n\t\tif (HEX_PAIRS_REGEX.test(hex)) return Cl.bufferFromHex(hex);\n\t\treturn Cl.bufferFromUtf8(value);\n\t}\n\tthrow new Error(\n\t\t\"buffer arg expects Uint8Array, hex string, { type, value }, or BufferCV\",\n\t);\n}\n\n/**\n * Convert a JS value to a ClarityValue using ABI type information.\n *\n * Pre-built ClarityValues pass through unchanged (escape hatch for callers\n * that already hold a CV). Buffer args additionally accept hex strings and\n * tagged `{ type, value }` objects — matching the generated-client input\n * contract.\n */\nexport function jsToClarityValue(\n\tabiType: AbiType,\n\tvalue: unknown,\n): ClarityValue {\n\t// Buffers first: the tagged `{ type: 'ascii', value }` input form is\n\t// shape-identical to StringAsciiCV, so buffer coercion wins for buff args.\n\tif (isAbiBuffer(abiType)) return coerceBuffer(value);\n\n\tif (isClarityValue(value)) return value;\n\n\tif (abiType === \"uint128\") return uintCV(value as bigint | number);\n\tif (abiType === \"int128\") return intCV(value as bigint | number);\n\tif (abiType === \"bool\") return boolCV(value as boolean);\n\tif (abiType === \"principal\" || abiType === \"trait_reference\")\n\t\treturn Cl.principal(value as string);\n\n\tif (isAbiStringAscii(abiType)) return stringAsciiCV(value as string);\n\tif (isAbiStringUtf8(abiType)) return stringUtf8CV(value as string);\n\n\tif (isAbiList(abiType)) {\n\t\tconst arr = value as unknown[];\n\t\treturn listCV(arr.map((item) => jsToClarityValue(abiType.list.type, item)));\n\t}\n\n\tif (isAbiTuple(abiType)) {\n\t\tconst obj = value as Record<string, unknown>;\n\t\tconst data: Record<string, ClarityValue> = {};\n\t\tfor (const field of abiType.tuple) {\n\t\t\tconst camelKey = toCamelCase(field.name);\n\t\t\tconst hasOriginal = field.name in obj;\n\t\t\tconst hasCamel = camelKey in obj;\n\t\t\tconst fieldValue = hasOriginal\n\t\t\t\t? obj[field.name]\n\t\t\t\t: hasCamel\n\t\t\t\t\t? obj[camelKey]\n\t\t\t\t\t: undefined;\n\t\t\tif (fieldValue === undefined && !isAbiOptional(field.type)) {\n\t\t\t\tthrow new Error(`Missing tuple field: ${field.name}`);\n\t\t\t}\n\t\t\tdata[field.name] = jsToClarityValue(field.type, fieldValue);\n\t\t}\n\t\treturn tupleCV(data);\n\t}\n\n\tif (isAbiOptional(abiType)) {\n\t\tif (value === null || value === undefined) return noneCV();\n\t\treturn someCV(jsToClarityValue(abiType.optional, value));\n\t}\n\n\tif (isAbiResponse(abiType)) {\n\t\tconst obj = value as Record<string, unknown>;\n\t\tif (\"ok\" in obj && !(\"err\" in obj))\n\t\t\treturn responseOkCV(jsToClarityValue(abiType.response.ok, obj.ok));\n\t\tif (\"err\" in obj && !(\"ok\" in obj))\n\t\t\treturn responseErrorCV(jsToClarityValue(abiType.response.error, obj.err));\n\t\tthrow new Error(\"Response must have exactly 'ok' or 'err' property\");\n\t}\n\n\tthrow new Error(`Unknown ABI type: ${JSON.stringify(abiType)}`);\n}\n\n/**\n * Convert a ClarityValue back to a typed JS value using ABI type information.\n */\nexport function clarityValueToJS<T extends AbiType>(\n\tabiType: T,\n\tcv: ClarityValue,\n): AbiToTS<T> {\n\treturn clarityValueToJSInner(abiType, cv) as AbiToTS<T>;\n}\n\n/** Non-generic version for internal use — avoids deep type instantiation. */\nexport function clarityValueToJSUntyped(\n\tabiType: AbiType,\n\tcv: ClarityValue,\n): unknown {\n\treturn clarityValueToJSInner(abiType, cv);\n}\n\nfunction clarityValueToJSInner(abiType: AbiType, cv: ClarityValue): unknown {\n\tif (abiType === \"uint128\" || abiType === \"int128\") {\n\t\tif (cv.type !== \"int\" && cv.type !== \"uint\")\n\t\t\tthrow new Error(`Expected int/uint CV, got ${cv.type}`);\n\t\treturn cv.value;\n\t}\n\n\tif (abiType === \"bool\") {\n\t\tif (cv.type === \"true\") return true;\n\t\tif (cv.type === \"false\") return false;\n\t\tthrow new Error(`Expected bool CV, got ${cv.type}`);\n\t}\n\n\tif (abiType === \"principal\" || abiType === \"trait_reference\") {\n\t\tif (cv.type !== \"address\" && cv.type !== \"contract\")\n\t\t\tthrow new Error(`Expected principal CV, got ${cv.type}`);\n\t\treturn cv.value;\n\t}\n\n\tif (isAbiStringAscii(abiType) || isAbiStringUtf8(abiType)) {\n\t\tif (cv.type !== \"ascii\" && cv.type !== \"utf8\")\n\t\t\tthrow new Error(`Expected string CV, got ${cv.type}`);\n\t\treturn cv.value;\n\t}\n\n\tif (isAbiBuffer(abiType)) {\n\t\tif (cv.type !== \"buffer\")\n\t\t\tthrow new Error(`Expected buffer CV, got ${cv.type}`);\n\t\t// BufferCV stores hex string; convert back to Uint8Array\n\t\tconst hex = cv.value;\n\t\tconst bytes = new Uint8Array(hex.length / 2);\n\t\tfor (let i = 0; i < bytes.length; i++) {\n\t\t\tbytes[i] = Number.parseInt(hex.substring(i * 2, i * 2 + 2), 16);\n\t\t}\n\t\treturn bytes;\n\t}\n\n\tif (isAbiList(abiType)) {\n\t\tif (cv.type !== \"list\") throw new Error(`Expected list CV, got ${cv.type}`);\n\t\treturn cv.value.map((item) =>\n\t\t\tclarityValueToJSInner(abiType.list.type, item),\n\t\t);\n\t}\n\n\tif (isAbiTuple(abiType)) {\n\t\tif (cv.type !== \"tuple\")\n\t\t\tthrow new Error(`Expected tuple CV, got ${cv.type}`);\n\t\tconst result: Record<string, unknown> = {};\n\t\tfor (const field of abiType.tuple) {\n\t\t\tconst fieldCV = cv.value[field.name];\n\t\t\tif (!fieldCV) throw new Error(`Missing tuple field in CV: ${field.name}`);\n\t\t\tconst camelKey = toCamelCase(field.name);\n\t\t\tresult[camelKey] = clarityValueToJSInner(field.type, fieldCV);\n\t\t}\n\t\treturn result;\n\t}\n\n\tif (isAbiOptional(abiType)) {\n\t\tif (cv.type === \"none\") return null;\n\t\tif (cv.type === \"some\")\n\t\t\treturn clarityValueToJSInner(abiType.optional, cv.value);\n\t\tthrow new Error(`Expected optional CV, got ${cv.type}`);\n\t}\n\n\tif (isAbiResponse(abiType)) {\n\t\tif (cv.type === \"ok\")\n\t\t\treturn { ok: clarityValueToJSInner(abiType.response.ok, cv.value) };\n\t\tif (cv.type === \"err\")\n\t\t\treturn { err: clarityValueToJSInner(abiType.response.error, cv.value) };\n\t\tthrow new Error(`Expected response CV, got ${cv.type}`);\n\t}\n\n\tthrow new Error(`Unknown ABI type: ${JSON.stringify(abiType)}`);\n}\n"
  ],
  "mappings": "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",
  "debugId": "6928F0553B6E61DA64756E2164756E21",
  "names": []
}