@secondlayer/stacks 2.17.0 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/stacks-rdgg7mj3.js +7 -0
- package/dist/shared/stacks-rdgg7mj3.js.map +10 -0
- package/dist/shared/stacks-wscmfs7q.cjs +5 -0
- package/dist/shared/stacks-wscmfs7q.cjs.map +10 -0
- package/dist/src/bitcoin/index.cjs +13 -6
- package/dist/src/bitcoin/index.cjs.map +5 -5
- package/dist/src/bitcoin/index.d.cts +33 -16
- package/dist/src/bitcoin/index.d.ts +33 -16
- package/dist/src/bitcoin/index.js +16 -6
- package/dist/src/bitcoin/index.js.map +5 -5
- package/dist/src/pox5/index.cjs +26 -2
- package/dist/src/pox5/index.cjs.map +4 -4
- package/dist/src/pox5/index.d.cts +21 -11
- package/dist/src/pox5/index.d.ts +21 -11
- package/dist/src/pox5/index.js +29 -2
- package/dist/src/pox5/index.js.map +4 -4
- package/package.json +1 -1
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
"import { concatBytes } from \"../utils/encoding.ts\";\nimport { doubleSha256 } from \"./serialize.ts\";\n\n/**\n * A Bitcoin merkle inclusion proof, shaped for the SIP-044 `verify-merkle-proof`\n * built-in: `(leaf-hash, root-hash, tx-index, tx-count, sibling-hashes)`.\n *\n * - `siblings` are the sibling node hashes from the leaf up to (excluding) the\n * root, in *internal* byte order — never reversed.\n * - `txCount` (not tree-depth) pins the canonical tree shape; the built-in\n * rejects any proof whose length differs from `ceil(log2(tx-count))`.\n */\nexport interface MerkleProof {\n\tsiblings: Uint8Array[];\n\ttxIndex: number;\n\ttxCount: number;\n}\n\n/** Combine an ordered pair of nodes into their parent hash. */\nfunction hashPair(left: Uint8Array, right: Uint8Array): Uint8Array {\n\treturn doubleSha256(concatBytes(left, right));\n}\n\n/** Collapse one merkle level into the next, duplicating the last node if odd. */\nfunction nextLevel(level: Uint8Array[]): Uint8Array[] {\n\tconst next: Uint8Array[] = [];\n\tfor (let i = 0; i < level.length; i += 2) {\n\t\tconst left = level[i];\n\t\tif (left === undefined) throw new Error(\"merkle: missing left node\");\n\t\t// Bitcoin duplicates the final node when a level has an odd count.\n\t\tconst right = level[i + 1] ?? left;\n\t\tnext.push(hashPair(left, right));\n\t}\n\treturn next;\n}\n\n/**\n * Compute the merkle root over txids in *internal* byte order. The result is\n * also internal order — it matches the `merkle-root` field read straight out of\n * an 80-byte block header, so it can be cross-checked against the header before\n * a proof is trusted.\n */\nexport function merkleRoot(txidsInternal: Uint8Array[]): Uint8Array {\n\tif (txidsInternal.length === 0) {\n\t\tthrow new Error(\"merkleRoot: empty tx list\");\n\t}\n\tlet level = txidsInternal.slice();\n\twhile (level.length > 1) {\n\t\tlevel = nextLevel(level);\n\t}\n\tconst root = level[0];\n\tif (root === undefined) throw new Error(\"merkleRoot: no root\");\n\treturn root;\n}\n\n/**\n * Build the merkle inclusion proof for the tx at `txIndex`. Sibling count is\n * exactly `ceil(log2(txCount))`, as the SIP-044 built-in requires.\n */\nexport function buildMerkleProof(\n\ttxidsInternal: Uint8Array[],\n\ttxIndex: number,\n): MerkleProof {\n\tconst txCount = txidsInternal.length;\n\tif (txCount === 0) {\n\t\tthrow new Error(\"buildMerkleProof: empty tx list\");\n\t}\n\tif (txIndex < 0 || txIndex >= txCount) {\n\t\tthrow new Error(\n\t\t\t`buildMerkleProof: txIndex ${txIndex} out of range for ${txCount} txs`,\n\t\t);\n\t}\n\n\tconst siblings: Uint8Array[] = [];\n\tlet index = txIndex;\n\tlet level = txidsInternal.slice();\n\twhile (level.length > 1) {\n\t\tconst isRight = index % 2 === 1;\n\t\tconst siblingIndex = isRight ? index - 1 : index + 1;\n\t\tconst self = level[index];\n\t\tif (self === undefined) throw new Error(\"buildMerkleProof: missing node\");\n\t\t// When the node is the last of an odd level, it is paired with itself.\n\t\tsiblings.push(level[siblingIndex] ?? self);\n\t\tlevel = nextLevel(level);\n\t\tindex = Math.floor(index / 2);\n\t}\n\n\treturn { siblings, txIndex, txCount };\n}\n\n/**\n * Recompute the merkle root from a leaf + its proof — the same fold the on-chain\n * `verify-merkle-proof` performs. Use it off-chain to self-check a constructed\n * proof against the header's merkle root before submitting a contract call.\n */\nexport function rootFromProof(\n\tleafInternal: Uint8Array,\n\tproof: MerkleProof,\n): Uint8Array {\n\tlet hash = leafInternal;\n\tlet index = proof.txIndex;\n\tfor (const sibling of proof.siblings) {\n\t\thash = index % 2 === 1 ? hashPair(sibling, hash) : hashPair(hash, sibling);\n\t\tindex = Math.floor(index / 2);\n\t}\n\treturn hash;\n}\n",
|
|
6
6
|
"import { bytesToHex, hexToBytes, without0x } from \"../utils/encoding.ts\";\nimport { type MerkleProof, buildMerkleProof, rootFromProof } from \"./merkle.ts\";\nimport { parseBitcoinTx, parseBlockHeader, reverseBytes } from \"./serialize.ts\";\n\n/**\n * A self-contained Bitcoin SPV proof: everything the SIP-044 built-ins need to\n * prove a tx (and one of its outputs) is committed in a confirmed block. Hashes\n * are internal byte order throughout.\n */\nexport interface SpvProof {\n\trawTx: Uint8Array;\n\t/** The tx's txid, internal order — the merkle leaf. */\n\ttxidInternal: Uint8Array;\n\t/** Output index of interest, if the proof targets a specific output. */\n\tvout?: number;\n\tmerkle: MerkleProof;\n\t/** The 80-byte block header that commits the tx. */\n\theader: Uint8Array;\n\t/** Bitcoin block height. */\n\theight: number;\n}\n\n/** The block context a `ProofSource` resolves for a confirmed tx. */\nexport interface BlockForTx {\n\t/** 80-byte block header. */\n\theader: Uint8Array;\n\theight: number;\n\t/** All of the block's txids, internal order, in block order. */\n\ttxidsInternal: Uint8Array[];\n\t/** Index of the target tx within the block. */\n\ttxIndex: number;\n}\n\n/**\n * Where proof inputs come from. The default is the integrator's own Bitcoin node\n * (`bitcoinRpcSource`) — trustless; a hosted Esplora-compatible endpoint\n * (`esploraSource`) is the fallback. `buildTxProof` independently re-checks\n * whatever a source returns, so a wrong or hostile source fails loudly rather\n * than producing a bad proof.\n */\nexport interface ProofSource {\n\t/** Raw (serialized) tx bytes for a txid (display-order hex). */\n\tgetRawTx(txid: string): Promise<Uint8Array>;\n\t/** The confirming block's header, height, and txid set for a txid. */\n\tgetBlockForTx(txid: string): Promise<BlockForTx>;\n}\n\nfunction normalizeTxid(txid: string): string {\n\treturn without0x(txid).toLowerCase();\n}\n\n/**\n * Locate `txid` in a block's txid set and assemble its `BlockForTx`. Owns the\n * display→internal byte-order reversal (`reverseBytes`) so the ProofSources\n * can't drift on the one operation a silent merkle-root mismatch would hide.\n * `txidsDisplay` are display-order hex txids as returned by Core / Esplora.\n */\nfunction assembleBlockForTx(args: {\n\ttxid: string;\n\tblockId: string;\n\theaderHex: string;\n\theight: number;\n\ttxidsDisplay: string[];\n}): BlockForTx {\n\tconst txIndex = args.txidsDisplay.indexOf(normalizeTxid(args.txid));\n\tif (txIndex < 0) {\n\t\tthrow new Error(`tx ${args.txid} not found in block ${args.blockId}`);\n\t}\n\treturn {\n\t\theader: hexToBytes(args.headerHex),\n\t\theight: args.height,\n\t\ttxidsInternal: args.txidsDisplay.map((t) => reverseBytes(hexToBytes(t))),\n\t\ttxIndex,\n\t};\n}\n\n/**\n * Assemble an `SpvProof` for a txid from a `ProofSource`, validating every claim\n * the source makes:\n * - the returned raw tx actually hashes to the requested txid,\n * - the claimed `txIndex` points at that txid in the block, and\n * - the resulting merkle proof folds back to the block header's merkle root.\n * Any mismatch throws — the proof is never returned half-trusted.\n */\nexport async function buildTxProof(\n\tsource: ProofSource,\n\tparams: { txid: string; vout?: number },\n): Promise<SpvProof> {\n\tconst { txid, vout } = params;\n\tconst want = normalizeTxid(txid);\n\n\tconst [rawTx, block] = await Promise.all([\n\t\tsource.getRawTx(txid),\n\t\tsource.getBlockForTx(txid),\n\t]);\n\n\tconst parsed = parseBitcoinTx(rawTx);\n\tconst gotDisplay = bytesToHex(reverseBytes(parsed.txidInternal));\n\tif (gotDisplay !== want) {\n\t\tthrow new Error(\n\t\t\t`source returned a tx whose id ${gotDisplay} does not match requested ${want}`,\n\t\t);\n\t}\n\n\tconst atIndex = block.txidsInternal[block.txIndex];\n\tif (!atIndex || bytesToHex(atIndex) !== bytesToHex(parsed.txidInternal)) {\n\t\tthrow new Error(\n\t\t\t`source txIndex ${block.txIndex} does not point at tx ${want}`,\n\t\t);\n\t}\n\n\tconst merkle = buildMerkleProof(block.txidsInternal, block.txIndex);\n\n\tconst headerRoot = parseBlockHeader(block.header).merkleRoot;\n\tconst computed = rootFromProof(parsed.txidInternal, merkle);\n\tif (bytesToHex(computed) !== bytesToHex(headerRoot)) {\n\t\tthrow new Error(\n\t\t\t\"constructed merkle proof does not reconcile with the block header merkle root\",\n\t\t);\n\t}\n\n\treturn {\n\t\trawTx,\n\t\ttxidInternal: parsed.txidInternal,\n\t\tvout,\n\t\tmerkle,\n\t\theader: block.header,\n\t\theight: block.height,\n\t};\n}\n\n/**\n * Compose sources into an ordered fallback chain: each call tries them in turn\n * and returns the first success, throwing the last error if all fail. Put the\n * trustless integrator node first and a hosted endpoint last.\n */\nexport function fallbackProofSource(sources: ProofSource[]): ProofSource {\n\tif (sources.length === 0) {\n\t\tthrow new Error(\"fallbackProofSource: at least one source is required\");\n\t}\n\tasync function firstSuccess<T>(\n\t\tfn: (s: ProofSource) => Promise<T>,\n\t): Promise<T> {\n\t\tlet lastError: unknown;\n\t\tfor (const source of sources) {\n\t\t\ttry {\n\t\t\t\treturn await fn(source);\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error;\n\t\t\t}\n\t\t}\n\t\tthrow lastError;\n\t}\n\treturn {\n\t\tgetRawTx: (txid) => firstSuccess((s) => s.getRawTx(txid)),\n\t\tgetBlockForTx: (txid) => firstSuccess((s) => s.getBlockForTx(txid)),\n\t};\n}\n\nexport interface BitcoinRpcConfig {\n\t/** Bitcoin Core JSON-RPC endpoint URL. */\n\turl: string;\n\t/** Basic auth — `{ username, password }` or a pre-encoded base64 string. */\n\tauth?: { username: string; password: string } | string;\n\t/** Override the fetch implementation (testing / custom agents). */\n\tfetch?: typeof fetch;\n}\n\n/**\n * A `ProofSource` backed by the integrator's own Bitcoin Core node over\n * JSON-RPC. This is the trustless default. The node must run with `-txindex`\n * (or the tx must be in the mempool's block view) so `getrawtransaction` can\n * resolve the confirming block.\n */\nexport function bitcoinRpcSource(config: BitcoinRpcConfig): ProofSource {\n\tconst doFetch = config.fetch ?? fetch;\n\n\tasync function rpc<T>(method: string, rpcParams: unknown[]): Promise<T> {\n\t\tconst headers: Record<string, string> = {\n\t\t\t\"content-type\": \"application/json\",\n\t\t};\n\t\tif (config.auth) {\n\t\t\tconst basic =\n\t\t\t\ttypeof config.auth === \"string\"\n\t\t\t\t\t? config.auth\n\t\t\t\t\t: btoa(`${config.auth.username}:${config.auth.password}`);\n\t\t\theaders.authorization = `Basic ${basic}`;\n\t\t}\n\t\tconst res = await doFetch(config.url, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody: JSON.stringify({\n\t\t\t\tjsonrpc: \"1.0\",\n\t\t\t\tid: \"secondlayer\",\n\t\t\t\tmethod,\n\t\t\t\tparams: rpcParams,\n\t\t\t}),\n\t\t});\n\t\tif (!res.ok) {\n\t\t\tthrow new Error(`bitcoin rpc ${method} failed: HTTP ${res.status}`);\n\t\t}\n\t\tconst json = (await res.json()) as {\n\t\t\tresult: T;\n\t\t\terror: { message: string } | null;\n\t\t};\n\t\tif (json.error) {\n\t\t\tthrow new Error(`bitcoin rpc ${method} error: ${json.error.message}`);\n\t\t}\n\t\treturn json.result;\n\t}\n\n\treturn {\n\t\tasync getRawTx(txid) {\n\t\t\treturn hexToBytes(await rpc<string>(\"getrawtransaction\", [txid, false]));\n\t\t},\n\t\tasync getBlockForTx(txid) {\n\t\t\tconst tx = await rpc<{ blockhash?: string }>(\"getrawtransaction\", [\n\t\t\t\ttxid,\n\t\t\t\ttrue,\n\t\t\t]);\n\t\t\tif (!tx.blockhash) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`tx ${txid} is not in a block (node needs -txindex, or the tx is unconfirmed)`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst block = await rpc<{ tx: string[]; height: number }>(\"getblock\", [\n\t\t\t\ttx.blockhash,\n\t\t\t\t1,\n\t\t\t]);\n\t\t\tconst header = await rpc<string>(\"getblockheader\", [tx.blockhash, false]);\n\t\t\treturn assembleBlockForTx({\n\t\t\t\ttxid,\n\t\t\t\tblockId: tx.blockhash,\n\t\t\t\theaderHex: header,\n\t\t\t\theight: block.height,\n\t\t\t\ttxidsDisplay: block.tx,\n\t\t\t});\n\t\t},\n\t};\n}\n\nexport interface EsploraConfig {\n\t/** Esplora REST base URL, e.g. `https://blockstream.info/api` or a self-hosted instance. */\n\turl: string;\n\t/** Override the fetch implementation. */\n\tfetch?: typeof fetch;\n}\n\n/**\n * A `ProofSource` backed by an Esplora REST API (self-hosted, or a hosted\n * provider as a fallback). Provider-agnostic: any Esplora-compatible endpoint\n * works. Use as the hosted fallback behind `bitcoinRpcSource`.\n */\nexport function esploraSource(config: EsploraConfig): ProofSource {\n\tconst doFetch = config.fetch ?? fetch;\n\tconst base = config.url.replace(/\\/+$/, \"\");\n\n\tasync function get(path: string): Promise<Response> {\n\t\tconst res = await doFetch(`${base}${path}`);\n\t\tif (!res.ok) {\n\t\t\tthrow new Error(`esplora GET ${path} failed: HTTP ${res.status}`);\n\t\t}\n\t\treturn res;\n\t}\n\n\treturn {\n\t\tasync getRawTx(txid) {\n\t\t\treturn hexToBytes((await (await get(`/tx/${txid}/hex`)).text()).trim());\n\t\t},\n\t\tasync getBlockForTx(txid) {\n\t\t\tconst status = (await (await get(`/tx/${txid}`)).json()) as {\n\t\t\t\tstatus: {\n\t\t\t\t\tconfirmed: boolean;\n\t\t\t\t\tblock_height: number;\n\t\t\t\t\tblock_hash: string;\n\t\t\t\t};\n\t\t\t};\n\t\t\tif (!status.status.confirmed) {\n\t\t\t\tthrow new Error(`tx ${txid} is unconfirmed`);\n\t\t\t}\n\t\t\tconst blockHashHex = status.status.block_hash;\n\t\t\tconst header = (\n\t\t\t\tawait (await get(`/block/${blockHashHex}/header`)).text()\n\t\t\t).trim();\n\t\t\tconst txids = (await (\n\t\t\t\tawait get(`/block/${blockHashHex}/txids`)\n\t\t\t).json()) as string[];\n\t\t\treturn assembleBlockForTx({\n\t\t\t\ttxid,\n\t\t\t\tblockId: blockHashHex,\n\t\t\t\theaderHex: header,\n\t\t\t\theight: status.status.block_height,\n\t\t\t\ttxidsDisplay: txids,\n\t\t\t});\n\t\t},\n\t};\n}\n",
|
|
7
7
|
"import {\n\ttype BufferCV,\n\ttype ClarityValue,\n\ttype ListCV,\n\ttype TupleCV,\n\ttype UIntCV,\n\tbufferCV,\n\tlistCV,\n\tuintCV,\n} from \"../clarity/index.ts\";\nimport { hexToBytes } from \"../utils/encoding.ts\";\nimport type { MerkleProof } from \"./merkle.ts\";\n\n/**\n * Number of merkle levels for a tree of `txCount` leaves — i.e. the exact\n * sibling count the SIP-044 `verify-merkle-proof` built-in expects\n * (`ceil(log2(tx-count))`). Computed by repeated halving to avoid float error\n * at exact powers of two.\n */\nfunction merkleDepth(txCount: number): number {\n\tlet depth = 0;\n\tlet n = txCount;\n\twhile (n > 1) {\n\t\tn = Math.ceil(n / 2);\n\t\tdepth++;\n\t}\n\treturn depth;\n}\n\n/** Max siblings the native `verify-merkle-proof` accepts: `(list 24 (buff 32))`. */\nconst MAX_SIBLINGS = 24;\n\nfunction assertHash32(bytes: Uint8Array, label: string): void {\n\tif (bytes.length !== 32) {\n\t\tthrow new Error(`${label} must be 32 bytes, got ${bytes.length}`);\n\t}\n}\n\n/**\n * Encode the argument vector for the SIP-044 native built-in\n * `(verify-merkle-proof leaf-hash root-hash tx-index tx-count sibling-hashes)`.\n *\n * Returns the five args in order: `[leaf, root, tx-index, tx-count, siblings]`.\n * All hashes are passed in *internal* (raw) byte order — the built-in does NOT\n * reverse, and neither does this. The leaf is the tx's `txidInternal`; the root\n * is the block header's merkle root in internal order.\n *\n * Throws on shapes the built-in would reject, so a caller fails locally with a\n * clear message instead of an opaque on-chain `false`.\n */\nexport function encodeMerkleProofArgs(params: {\n\tleaf: Uint8Array;\n\troot: Uint8Array;\n\tproof: MerkleProof;\n}): [BufferCV, BufferCV, UIntCV, UIntCV, ListCV] {\n\tconst { leaf, root, proof } = params;\n\tassertHash32(leaf, \"merkle leaf\");\n\tassertHash32(root, \"merkle root\");\n\n\tif (proof.txIndex < 0 || proof.txIndex >= proof.txCount) {\n\t\tthrow new Error(\n\t\t\t`tx-index ${proof.txIndex} out of range for tx-count ${proof.txCount}`,\n\t\t);\n\t}\n\tif (proof.siblings.length > MAX_SIBLINGS) {\n\t\tthrow new Error(\n\t\t\t`proof has ${proof.siblings.length} siblings, native verify-merkle-proof caps at ${MAX_SIBLINGS}`,\n\t\t);\n\t}\n\tconst expectedDepth = merkleDepth(proof.txCount);\n\tif (proof.siblings.length !== expectedDepth) {\n\t\tthrow new Error(\n\t\t\t`proof has ${proof.siblings.length} siblings but tx-count ${proof.txCount} requires exactly ${expectedDepth}`,\n\t\t);\n\t}\n\tfor (const [i, sibling] of proof.siblings.entries()) {\n\t\tassertHash32(sibling, `sibling ${i}`);\n\t}\n\n\treturn [\n\t\tbufferCV(leaf),\n\t\tbufferCV(root),\n\t\tuintCV(proof.txIndex),\n\t\tuintCV(proof.txCount),\n\t\tlistCV(proof.siblings.map((s) => bufferCV(s))),\n\t];\n}\n\nexport interface DecodedTxOutput {\n\t/** scriptPubKey bytes. */\n\tscript: Uint8Array;\n\t/** Output value in satoshis. */\n\tamount: bigint;\n\t/** The tx's txid in internal byte order — ready as a merkle leaf. */\n\ttxid: Uint8Array;\n}\n\nfunction expectBuffer(cv: ClarityValue | undefined, label: string): Uint8Array {\n\tif (cv?.type !== \"buffer\") {\n\t\tthrow new Error(`expected ${label} to be a buffer, got ${cv?.type}`);\n\t}\n\treturn hexToBytes(cv.value);\n}\n\n/**\n * Decode the tuple returned by `get-bitcoin-tx-output?`:\n * `(tuple (script (buff 1024)) (amount uint) (txid (buff 32)))`.\n *\n * Accepts either the bare tuple or a `(response ok ...)` wrapping it, so it\n * works whether or not the caller has already unwrapped the response.\n */\nexport function decodeTxOutput(cv: ClarityValue): DecodedTxOutput {\n\tconst tuple: ClarityValue = cv.type === \"ok\" ? cv.value : cv;\n\tif (tuple.type !== \"tuple\") {\n\t\tthrow new Error(`expected a tuple, got ${tuple.type}`);\n\t}\n\tconst fields = (tuple as TupleCV).value;\n\tconst amount = fields.amount;\n\tif (amount?.type !== \"uint\") {\n\t\tthrow new Error(\n\t\t\t`expected tuple field \"amount\" to be uint, got ${amount?.type}`,\n\t\t);\n\t}\n\treturn {\n\t\tscript: expectBuffer(fields.script, 'tuple field \"script\"'),\n\t\tamount: amount.value,\n\t\ttxid: expectBuffer(fields.txid, 'tuple field \"txid\"'),\n\t};\n}\n\nexport type OutputScriptType =\n\t| \"p2pkh\"\n\t| \"p2sh\"\n\t| \"p2wpkh\"\n\t| \"p2wsh\"\n\t| \"p2tr\"\n\t| \"op_return\"\n\t| \"unknown\";\n\nexport interface ParsedOutputScript {\n\ttype: OutputScriptType;\n\t/**\n\t * The hash / witness program for the recognized output types: the 20-byte\n\t * pubkey-hash (p2pkh), 20-byte script-hash (p2sh), or the 20/32-byte witness\n\t * program (p2wpkh/p2wsh/p2tr). Undefined for op_return / unknown.\n\t *\n\t * Address formatting is intentionally left to the caller — base58/bech32 HRPs\n\t * and version bytes are network-dependent, so it belongs where the network is\n\t * known (see `verifyBitcoinPayment`), not in this pure decoder.\n\t */\n\thash?: Uint8Array;\n\t/** OP_RETURN payload (the pushed data after the OP_RETURN opcode). */\n\tdata?: Uint8Array;\n}\n\nconst OP_DUP = 0x76;\nconst OP_HASH160 = 0xa9;\nconst OP_EQUALVERIFY = 0x88;\nconst OP_CHECKSIG = 0xac;\nconst OP_EQUAL = 0x87;\nconst OP_RETURN = 0x6a;\nconst OP_0 = 0x00;\nconst OP_1 = 0x51;\n\n/**\n * Classify a Bitcoin output scriptPubKey by its standard template and surface\n * the embedded hash / witness program. Recognizes P2PKH, P2SH, P2WPKH, P2WSH,\n * P2TR, and OP_RETURN; anything else is `unknown`.\n */\nexport function parseOutputScript(script: Uint8Array): ParsedOutputScript {\n\tconst n = script.length;\n\n\t// P2PKH: OP_DUP OP_HASH160 <20> ... OP_EQUALVERIFY OP_CHECKSIG\n\tif (\n\t\tn === 25 &&\n\t\tscript[0] === OP_DUP &&\n\t\tscript[1] === OP_HASH160 &&\n\t\tscript[2] === 0x14 &&\n\t\tscript[23] === OP_EQUALVERIFY &&\n\t\tscript[24] === OP_CHECKSIG\n\t) {\n\t\treturn { type: \"p2pkh\", hash: script.slice(3, 23) };\n\t}\n\n\t// P2SH: OP_HASH160 <20> ... OP_EQUAL\n\tif (\n\t\tn === 23 &&\n\t\tscript[0] === OP_HASH160 &&\n\t\tscript[1] === 0x14 &&\n\t\tscript[22] === OP_EQUAL\n\t) {\n\t\treturn { type: \"p2sh\", hash: script.slice(2, 22) };\n\t}\n\n\t// P2WPKH: OP_0 <20>\n\tif (n === 22 && script[0] === OP_0 && script[1] === 0x14) {\n\t\treturn { type: \"p2wpkh\", hash: script.slice(2, 22) };\n\t}\n\n\t// P2WSH: OP_0 <32>\n\tif (n === 34 && script[0] === OP_0 && script[1] === 0x20) {\n\t\treturn { type: \"p2wsh\", hash: script.slice(2, 34) };\n\t}\n\n\t// P2TR: OP_1 <32>\n\tif (n === 34 && script[0] === OP_1 && script[1] === 0x20) {\n\t\treturn { type: \"p2tr\", hash: script.slice(2, 34) };\n\t}\n\n\t// OP_RETURN: data carrier\n\tif (n >= 1 && script[0] === OP_RETURN) {\n\t\treturn { type: \"op_return\", data: script.slice(1) };\n\t}\n\n\treturn { type: \"unknown\" };\n}\n",
|
|
8
|
-
"export type BitcoinNetwork = \"mainnet\" | \"testnet\" | \"regtest\";\n\nexport interface SpvAdapterRef {\n\t/** Deployer principal. */\n\taddress: string;\n\t/** Contract name. */\n\tname: string;\n}\n\n/**\n * Reference `spv-adapter` deployments (the read-only wrapper around the SIP-044\n * built-ins) — the single source of truth for the published adapter principal.\n *
|
|
8
|
+
"export type BitcoinNetwork = \"mainnet\" | \"testnet\" | \"regtest\";\n\nexport interface SpvAdapterRef {\n\t/** Deployer principal. */\n\taddress: string;\n\t/** Contract name. */\n\tname: string;\n}\n\n/**\n * Reference `spv-adapter` deployments (the read-only wrapper around the SIP-044\n * built-ins) — the single source of truth for the published adapter principal.\n * A network is listed only once its adapter is deployed AND verified against a\n * real Bitcoin header; `verifyBitcoinPayment` requires an explicit `contract`\n * for any network absent here (deploy recipe: `contracts/README.md`).\n *\n * `testnet` is absent because Stacks testnet has no Epoch 4.0 — the SIP-044\n * built-ins do not exist there, so the contract cannot be deployed.\n */\nexport const SPV_ADAPTER_CONTRACTS: Partial<\n\tRecord<BitcoinNetwork, SpvAdapterRef>\n> = {\n\tmainnet: {\n\t\taddress: \"SP2M1DE95TS0QBM4K893X6ST49FFJ53CCX9CYWNVY\",\n\t\tname: \"spv-adapter\",\n\t},\n};\n\n/** Resolve the reference adapter for a network, or `undefined` if none is deployed yet. */\nexport function getSpvAdapter(\n\tnetwork: BitcoinNetwork,\n): SpvAdapterRef | undefined {\n\treturn SPV_ADAPTER_CONTRACTS[network];\n}\n\n/** A `\"address.name\"` contract principal from an adapter ref. */\nexport function spvAdapterPrincipal(ref: SpvAdapterRef): string {\n\treturn `${ref.address}.${ref.name}`;\n}\n",
|
|
9
9
|
"import type { AbiContract } from \"../../clarity/abi/index.ts\";\n\n/**\n * ABI for the reference `spv-adapter` contract — a thin, read-only wrapper that\n * exposes the SIP-044 Bitcoin built-ins (callable only from within a Clarity\n * contract) over read-only RPC. Plan 013 deploys a contract matching this shape;\n * `bitcoinVerifier` binds to it (or to an integrator's own contract with the\n * same surface).\n *\n * Hashes are internal (raw) byte order — the same as the built-ins. Do NOT\n * reverse before calling.\n */\nexport const SPV_ADAPTER_ABI = {\n\tfunctions: [\n\t\t{\n\t\t\t// (get-bitcoin-tx-output? tx vout)\n\t\t\tname: \"get-tx-output\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"tx\", type: { buff: { length: 4096 } } },\n\t\t\t\t{ name: \"vout\", type: \"uint128\" },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"script\", type: { buff: { length: 1024 } } },\n\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"txid\", type: { buff: { length: 32 } } },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// (verify-merkle-proof leaf-hash root-hash tx-index tx-count sibling-hashes)\n\t\t\tname: \"verify-merkle\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"leaf\", type: { buff: { length: 32 } } },\n\t\t\t\t{ name: \"root\", type: { buff: { length: 32 } } },\n\t\t\t\t{ name: \"tx-index\", type: \"uint128\" },\n\t\t\t\t{ name: \"tx-count\", type: \"uint128\" },\n\t\t\t\t{\n\t\t\t\t\tname: \"siblings\",\n\t\t\t\t\ttype: { list: { type: { buff: { length: 32 } }, length: 24 } },\n\t\t\t\t},\n\t\t\t],\n\t\t\toutputs: \"bool\",\n\t\t},\n\t\t{\n\t\t\t// Composed SPV check: authenticate the caller-supplied header against\n\t\t\t// `(get-burn-block-info? header-hash height)`, extract its merkle root,\n\t\t\t// and `verify-merkle-proof` tx inclusion under it — atomically on-chain.\n\t\t\t// (ok true) = mined, (ok false) = header valid but tx not included,\n\t\t\t// (err ...) = header not authentic at that height.\n\t\t\tname: \"was-tx-mined\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"header\", type: { buff: { length: 80 } } },\n\t\t\t\t{ name: \"height\", type: \"uint128\" },\n\t\t\t\t{ name: \"leaf\", type: { buff: { length: 32 } } },\n\t\t\t\t{ name: \"tx-index\", type: \"uint128\" },\n\t\t\t\t{ name: \"tx-count\", type: \"uint128\" },\n\t\t\t\t{\n\t\t\t\t\tname: \"siblings\",\n\t\t\t\t\ttype: { list: { type: { buff: { length: 32 } }, length: 24 } },\n\t\t\t\t},\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\t],\n} as const satisfies AbiContract;\n",
|
|
10
|
-
"import type { Client } from \"../clients/types.ts\";\nimport { MalformedResponseError } from \"../errors/response.ts\";\n\n/**\n * SIP-044 (the native Bitcoin SPV built-ins) activates as part of the **Stacks\n * Epoch 4.0 hard fork
|
|
10
|
+
"import type { Client } from \"../clients/types.ts\";\nimport { EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET } from \"../epochs.ts\";\nimport { MalformedResponseError } from \"../errors/response.ts\";\n\n/**\n * SIP-044 (the native Bitcoin SPV built-ins) activates as part of the **Stacks\n * Epoch 4.0 hard fork** — the same fork that ships `pox-5` (SIP-045), so both\n * share one height: {@link EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET}.\n */\nexport interface Clarity6Gate {\n\t/**\n\t * Bitcoin burn block height at which Clarity 6 / Epoch 4.0 activates.\n\t * Optional on a mainnet client, which falls back to the known mainnet\n\t * height; required on every other network, where no fixed height exists.\n\t */\n\tactivationBurnHeight?: number;\n}\n\n/** Read the node's current Bitcoin burn block height from `/v2/info`. */\nexport async function getBurnBlockHeight(client: Client): Promise<number> {\n\tconst info = (await client.request(\"/v2/info\")) as {\n\t\tburn_block_height?: number;\n\t};\n\tif (typeof info?.burn_block_height !== \"number\") {\n\t\tthrow new MalformedResponseError(\n\t\t\t'getBurnBlockHeight: /v2/info response is missing \"burn_block_height\"',\n\t\t);\n\t}\n\treturn info.burn_block_height;\n}\n\n/**\n * Whether Clarity 6 (the native SPV built-ins) is active on the node behind\n * `client`. Compares the node's current burn height to the SIP-044 / Epoch 4.0\n * activation height: the known mainnet height when `client.chain` is mainnet,\n * otherwise the one you supply. `bitcoinVerifier` uses this to refuse calls\n * before activation rather than failing with an opaque contract error.\n */\nexport async function isClarity6Active(\n\tclient: Client,\n\tgate: Clarity6Gate = {},\n): Promise<boolean> {\n\tconst activation =\n\t\tgate.activationBurnHeight ??\n\t\t(client.chain?.network === \"mainnet\"\n\t\t\t? EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET\n\t\t\t: undefined);\n\tif (activation == null) {\n\t\tthrow new Error(\n\t\t\t`Clarity 6 (SIP-044 / Epoch 4.0) has no fixed activation height on ${client.chain?.network ?? \"this network\"} — pass { activationBurnHeight }`,\n\t\t);\n\t}\n\tconst current = await getBurnBlockHeight(client);\n\treturn current >= activation;\n}\n",
|
|
11
11
|
"import { readContract } from \"../actions/public/readContract.ts\";\nimport {\n\ttype ClarityValue,\n\tbufferCV,\n\tlistCV,\n\tuintCV,\n} from \"../clarity/index.ts\";\nimport type { Client } from \"../clients/types.ts\";\nimport {\n\ttype DecodedTxOutput,\n\tdecodeTxOutput,\n\tencodeMerkleProofArgs,\n} from \"./codec.ts\";\nimport type { MerkleProof } from \"./merkle.ts\";\nimport type { SpvProof } from \"./proof.ts\";\nimport { parseBlockHeader } from \"./serialize.ts\";\n\nexport interface BitcoinVerifierConfig {\n\t/** Adapter contract principal, `\"address.name\"` (the reference `spv-adapter` or an integrator's own). */\n\tcontract: string;\n\t/** Optional read-only call sender; defaults to the contract address. */\n\tsender?: string;\n}\n\nexport interface BitcoinVerifier {\n\t/**\n\t * Verify a merkle inclusion proof against a supplied root via the adapter's\n\t * `verify-merkle` (the native `verify-merkle-proof`). This proves membership\n\t * under `root`; authenticating that `root` belongs to a canonical Bitcoin\n\t * block is a separate step (header → height), composed in `verifyBitcoinPayment`.\n\t */\n\tverifyMerkleProof(input: {\n\t\tleaf: Uint8Array;\n\t\troot: Uint8Array;\n\t\tproof: MerkleProof;\n\t}): Promise<boolean>;\n\t/** Verify an `SpvProof`'s merkle inclusion against its own header root (membership only — not chain-authenticated). */\n\tverifySpvProof(proof: SpvProof): Promise<boolean>;\n\t/**\n\t * Full header-authenticated SPV check via the adapter's `was-tx-mined`: the\n\t * contract authenticates the proof's header against the chain\n\t * (`get-burn-block-info? header-hash`), extracts its root, and proves\n\t * inclusion — atomically. Returns `false` if the header isn't canonical at\n\t * its height or the tx isn't included. This is the real \"is it on Bitcoin\" check.\n\t */\n\twasTxMined(proof: SpvProof): Promise<boolean>;\n\t/**\n\t * Decode one output of a serialized Bitcoin tx via the adapter's\n\t * `get-tx-output` (the native `get-bitcoin-tx-output?`).\n\t */\n\tgetTxOutput(rawTx: Uint8Array, vout: number): Promise<DecodedTxOutput>;\n}\n\nfunction clarityToBool(cv: ClarityValue): boolean {\n\tconst value = cv.type === \"ok\" ? cv.value : cv;\n\tif (value.type === \"true\") return true;\n\tif (value.type === \"false\") return false;\n\tthrow new Error(`expected a boolean result, got ${value.type}`);\n}\n\n/**\n * Bind a `BitcoinVerifier` to a deployed adapter contract. There is a single,\n * native target — no caps and no legacy `clarity-bitcoin` path. The built-ins do\n * not exist until Clarity 6 / Epoch 4.0 activates, so read-only calls only\n * succeed on a node at that epoch (a local Clarity-6 devnet, or mainnet after\n * activation); guard with `isClarity6Active` when in doubt.\n */\nexport function bitcoinVerifier(\n\tclient: Client,\n\tconfig: BitcoinVerifierConfig,\n): BitcoinVerifier {\n\tconst { contract, sender } = config;\n\n\tasync function verifyMerkleProof(input: {\n\t\tleaf: Uint8Array;\n\t\troot: Uint8Array;\n\t\tproof: MerkleProof;\n\t}): Promise<boolean> {\n\t\tconst args = encodeMerkleProofArgs(input);\n\t\tconst result = await readContract(client, {\n\t\t\tcontract,\n\t\t\tfunctionName: \"verify-merkle\",\n\t\t\targs,\n\t\t\tsender,\n\t\t});\n\t\treturn clarityToBool(result);\n\t}\n\n\treturn {\n\t\tverifyMerkleProof,\n\t\tverifySpvProof(proof) {\n\t\t\tconst root = parseBlockHeader(proof.header).merkleRoot;\n\t\t\treturn verifyMerkleProof({\n\t\t\t\tleaf: proof.txidInternal,\n\t\t\t\troot,\n\t\t\t\tproof: proof.merkle,\n\t\t\t});\n\t\t},\n\t\tasync wasTxMined(proof) {\n\t\t\tconst result = await readContract(client, {\n\t\t\t\tcontract,\n\t\t\t\tfunctionName: \"was-tx-mined\",\n\t\t\t\targs: [\n\t\t\t\t\tbufferCV(proof.header),\n\t\t\t\t\tuintCV(proof.height),\n\t\t\t\t\tbufferCV(proof.txidInternal),\n\t\t\t\t\tuintCV(proof.merkle.txIndex),\n\t\t\t\t\tuintCV(proof.merkle.txCount),\n\t\t\t\t\tlistCV(proof.merkle.siblings.map((s) => bufferCV(s))),\n\t\t\t\t],\n\t\t\t\tsender,\n\t\t\t});\n\t\t\t// (response bool uint): (ok true) mined, (ok false) not, (err) bad header → fail closed.\n\t\t\tif (result.type === \"err\") return false;\n\t\t\treturn clarityToBool(result);\n\t\t},\n\t\tasync getTxOutput(rawTx, vout) {\n\t\t\tconst result = await readContract(client, {\n\t\t\t\tcontract,\n\t\t\t\tfunctionName: \"get-tx-output\",\n\t\t\t\targs: [bufferCV(rawTx), uintCV(vout)],\n\t\t\t\tsender,\n\t\t\t});\n\t\t\tif (result.type === \"err\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`get-tx-output failed on-chain: ${JSON.stringify(result.value)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn decodeTxOutput(result);\n\t\t},\n\t};\n}\n",
|
|
12
|
-
"import type { Client } from \"../clients/types.ts\";\nimport { formatBitcoinAddress } from \"./address.ts\";\nimport { type OutputScriptType, parseOutputScript } from \"./codec.ts\";\nimport {\n\ttype BitcoinNetwork,\n\tgetSpvAdapter,\n\tspvAdapterPrincipal,\n} from \"./constants.ts\";\nimport { type ProofSource, type SpvProof, buildTxProof } from \"./proof.ts\";\nimport { parseBitcoinTx } from \"./serialize.ts\";\nimport { bitcoinVerifier } from \"./verifier.ts\";\n\nexport interface BitcoinPaymentOutput {\n\tvout: number;\n\t/** scriptPubKey bytes. */\n\tscript: Uint8Array;\n\t/** Value in satoshis. */\n\tamount: bigint;\n\ttype: OutputScriptType;\n\t/** Address for the configured network, if the script has a standard one. */\n\taddress?: string;\n}\n\nexport interface VerifyBitcoinPaymentResult {\n\t/** `mined` AND every supplied `expect` constraint holds. */\n\tverified: boolean;\n\t/**\n\t * On-chain proof that the tx is committed in a Bitcoin block. With\n\t * `authenticateHeader` (default), this is the adapter's `was-tx-mined` —\n\t * header authenticated against the chain AND merkle inclusion. With it off,\n\t * it is merkle inclusion against the proof's own (unauthenticated) header.\n\t */\n\tmined: boolean;\n\t/** The decoded output at `vout`. */\n\toutput: BitcoinPaymentOutput;\n\t/** The proof used (built or supplied). */\n\tproof: SpvProof;\n}\n\nexport type VerifyBitcoinPaymentParams = (\n\t| { proof: SpvProof }\n\t| { txid: string; source: ProofSource }\n) & {\n\t/**\n\t * Adapter contract principal, `\"address.name\"`. Optional
|
|
12
|
+
"import type { Client } from \"../clients/types.ts\";\nimport { formatBitcoinAddress } from \"./address.ts\";\nimport { type OutputScriptType, parseOutputScript } from \"./codec.ts\";\nimport {\n\ttype BitcoinNetwork,\n\tgetSpvAdapter,\n\tspvAdapterPrincipal,\n} from \"./constants.ts\";\nimport { type ProofSource, type SpvProof, buildTxProof } from \"./proof.ts\";\nimport { parseBitcoinTx } from \"./serialize.ts\";\nimport { bitcoinVerifier } from \"./verifier.ts\";\n\nexport interface BitcoinPaymentOutput {\n\tvout: number;\n\t/** scriptPubKey bytes. */\n\tscript: Uint8Array;\n\t/** Value in satoshis. */\n\tamount: bigint;\n\ttype: OutputScriptType;\n\t/** Address for the configured network, if the script has a standard one. */\n\taddress?: string;\n}\n\nexport interface VerifyBitcoinPaymentResult {\n\t/** `mined` AND every supplied `expect` constraint holds. */\n\tverified: boolean;\n\t/**\n\t * On-chain proof that the tx is committed in a Bitcoin block. With\n\t * `authenticateHeader` (default), this is the adapter's `was-tx-mined` —\n\t * header authenticated against the chain AND merkle inclusion. With it off,\n\t * it is merkle inclusion against the proof's own (unauthenticated) header.\n\t */\n\tmined: boolean;\n\t/** The decoded output at `vout`. */\n\toutput: BitcoinPaymentOutput;\n\t/** The proof used (built or supplied). */\n\tproof: SpvProof;\n}\n\nexport type VerifyBitcoinPaymentParams = (\n\t| { proof: SpvProof }\n\t| { txid: string; source: ProofSource }\n) & {\n\t/**\n\t * Adapter contract principal, `\"address.name\"`. Optional on networks with a\n\t * published reference adapter (see `SPV_ADAPTER_CONTRACTS` — mainnet only);\n\t * required everywhere else.\n\t */\n\tcontract?: string;\n\t/** Output index to decode and assert against. */\n\tvout: number;\n\t/** Network for address formatting. Defaults to mainnet. */\n\tnetwork?: BitcoinNetwork;\n\t/** Optional expectations; each supplied field must match for `verified`. */\n\texpect?: { address?: string; amount?: bigint };\n\t/**\n\t * Confirm the proof's header is the canonical block at its height via\n\t * `get-header-merkle-root` (default true). Turn off only when the caller has\n\t * already authenticated the header.\n\t */\n\tauthenticateHeader?: boolean;\n\tsender?: string;\n};\n\n/**\n * Verify that a Bitcoin payment is committed on-chain and (optionally) matches\n * an expected recipient/amount. Composes the whole SPV flow:\n * 1. build the proof from a `ProofSource` (or accept a prepared `SpvProof`),\n * 2. prove the tx is mined — `was-tx-mined` (header authenticated against the\n * chain + merkle inclusion) by default, or membership-only when\n * `authenticateHeader` is off,\n * 3. decode the target output and assert any `expect` constraints.\n *\n * The output is decoded off-chain from the proof's raw tx, which is sound: the\n * raw tx is pinned to the proven txid (`buildTxProof` checks it hashes to the\n * leaf), so its bytes are committed.\n */\nexport async function verifyBitcoinPayment(\n\tclient: Client,\n\tparams: VerifyBitcoinPaymentParams,\n): Promise<VerifyBitcoinPaymentResult> {\n\tconst {\n\t\tcontract,\n\t\tvout,\n\t\tnetwork = \"mainnet\",\n\t\texpect,\n\t\tauthenticateHeader = true,\n\t\tsender,\n\t} = params;\n\n\tconst adapter = getSpvAdapter(network);\n\tconst resolvedContract =\n\t\tcontract ?? (adapter ? spvAdapterPrincipal(adapter) : undefined);\n\tif (!resolvedContract) {\n\t\tthrow new Error(\n\t\t\t`No spv-adapter deployed for ${network} — pass an explicit \\`contract\\`. Only mainnet has a published reference adapter; the SIP-044 built-ins require Clarity 6 / Epoch 4.0 (deploy recipe: contracts/README.md).`,\n\t\t);\n\t}\n\n\tconst proof =\n\t\t\"proof\" in params\n\t\t\t? params.proof\n\t\t\t: await buildTxProof(params.source, { txid: params.txid, vout });\n\n\tconst verifier = bitcoinVerifier(client, {\n\t\tcontract: resolvedContract,\n\t\tsender,\n\t});\n\tconst mined = authenticateHeader\n\t\t? await verifier.wasTxMined(proof)\n\t\t: await verifier.verifySpvProof(proof);\n\n\tconst parsedTx = parseBitcoinTx(proof.rawTx);\n\tconst out = parsedTx.outputs[vout];\n\tif (!out) {\n\t\tthrow new Error(\n\t\t\t`vout ${vout} out of range (tx has ${parsedTx.outputs.length} outputs)`,\n\t\t);\n\t}\n\tconst parsedScript = parseOutputScript(out.scriptPubKey);\n\tconst address = formatBitcoinAddress(parsedScript, network);\n\tconst output: BitcoinPaymentOutput = {\n\t\tvout,\n\t\tscript: out.scriptPubKey,\n\t\tamount: out.value,\n\t\ttype: parsedScript.type,\n\t\taddress,\n\t};\n\n\tconst amountOk = expect?.amount === undefined || out.value === expect.amount;\n\tconst addressOk = expect?.address === undefined || address === expect.address;\n\tconst verified = mined && amountOk && addressOk;\n\n\treturn { verified, mined, output, proof };\n}\n"
|
|
13
13
|
],
|
|
14
|
-
"mappings": "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",
|
|
15
|
-
"debugId": "
|
|
14
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,SAAS,QAAQ,CAAC,MAAkB,OAA+B;AAAA,EAClE,OAAO,aAAa,YAAY,MAAM,KAAK,CAAC;AAAA;AAI7C,SAAS,SAAS,CAAC,OAAmC;AAAA,EACrD,MAAM,OAAqB,CAAC;AAAA,EAC5B,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACzC,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,SAAS;AAAA,MAAW,MAAM,IAAI,MAAM,2BAA2B;AAAA,IAEnE,MAAM,QAAQ,MAAM,IAAI,MAAM;AAAA,IAC9B,KAAK,KAAK,SAAS,MAAM,KAAK,CAAC;AAAA,EAChC;AAAA,EACA,OAAO;AAAA;AASD,SAAS,UAAU,CAAC,eAAyC;AAAA,EACnE,IAAI,cAAc,WAAW,GAAG;AAAA,IAC/B,MAAM,IAAI,MAAM,2BAA2B;AAAA,EAC5C;AAAA,EACA,IAAI,QAAQ,cAAc,MAAM;AAAA,EAChC,OAAO,MAAM,SAAS,GAAG;AAAA,IACxB,QAAQ,UAAU,KAAK;AAAA,EACxB;AAAA,EACA,MAAM,OAAO,MAAM;AAAA,EACnB,IAAI,SAAS;AAAA,IAAW,MAAM,IAAI,MAAM,qBAAqB;AAAA,EAC7D,OAAO;AAAA;AAOD,SAAS,gBAAgB,CAC/B,eACA,SACc;AAAA,EACd,MAAM,UAAU,cAAc;AAAA,EAC9B,IAAI,YAAY,GAAG;AAAA,IAClB,MAAM,IAAI,MAAM,iCAAiC;AAAA,EAClD;AAAA,EACA,IAAI,UAAU,KAAK,WAAW,SAAS;AAAA,IACtC,MAAM,IAAI,MACT,6BAA6B,4BAA4B,aAC1D;AAAA,EACD;AAAA,EAEA,MAAM,WAAyB,CAAC;AAAA,EAChC,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ,cAAc,MAAM;AAAA,EAChC,OAAO,MAAM,SAAS,GAAG;AAAA,IACxB,MAAM,UAAU,QAAQ,MAAM;AAAA,IAC9B,MAAM,eAAe,UAAU,QAAQ,IAAI,QAAQ;AAAA,IACnD,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,SAAS;AAAA,MAAW,MAAM,IAAI,MAAM,gCAAgC;AAAA,IAExE,SAAS,KAAK,MAAM,iBAAiB,IAAI;AAAA,IACzC,QAAQ,UAAU,KAAK;AAAA,IACvB,QAAQ,KAAK,MAAM,QAAQ,CAAC;AAAA,EAC7B;AAAA,EAEA,OAAO,EAAE,UAAU,SAAS,QAAQ;AAAA;AAQ9B,SAAS,aAAa,CAC5B,cACA,OACa;AAAA,EACb,IAAI,OAAO;AAAA,EACX,IAAI,QAAQ,MAAM;AAAA,EAClB,WAAW,WAAW,MAAM,UAAU;AAAA,IACrC,OAAO,QAAQ,MAAM,IAAI,SAAS,SAAS,IAAI,IAAI,SAAS,MAAM,OAAO;AAAA,IACzE,QAAQ,KAAK,MAAM,QAAQ,CAAC;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA;;;AC1DR,SAAS,aAAa,CAAC,MAAsB;AAAA,EAC5C,OAAO,UAAU,IAAI,EAAE,YAAY;AAAA;AASpC,SAAS,kBAAkB,CAAC,MAMb;AAAA,EACd,MAAM,UAAU,KAAK,aAAa,QAAQ,cAAc,KAAK,IAAI,CAAC;AAAA,EAClE,IAAI,UAAU,GAAG;AAAA,IAChB,MAAM,IAAI,MAAM,MAAM,KAAK,2BAA2B,KAAK,SAAS;AAAA,EACrE;AAAA,EACA,OAAO;AAAA,IACN,QAAQ,WAAW,KAAK,SAAS;AAAA,IACjC,QAAQ,KAAK;AAAA,IACb,eAAe,KAAK,aAAa,IAAI,CAAC,MAAM,aAAa,WAAW,CAAC,CAAC,CAAC;AAAA,IACvE;AAAA,EACD;AAAA;AAWD,eAAsB,YAAY,CACjC,QACA,QACoB;AAAA,EACpB,QAAQ,MAAM,SAAS;AAAA,EACvB,MAAM,OAAO,cAAc,IAAI;AAAA,EAE/B,OAAO,OAAO,SAAS,MAAM,QAAQ,IAAI;AAAA,IACxC,OAAO,SAAS,IAAI;AAAA,IACpB,OAAO,cAAc,IAAI;AAAA,EAC1B,CAAC;AAAA,EAED,MAAM,SAAS,eAAe,KAAK;AAAA,EACnC,MAAM,aAAa,WAAW,aAAa,OAAO,YAAY,CAAC;AAAA,EAC/D,IAAI,eAAe,MAAM;AAAA,IACxB,MAAM,IAAI,MACT,iCAAiC,uCAAuC,MACzE;AAAA,EACD;AAAA,EAEA,MAAM,UAAU,MAAM,cAAc,MAAM;AAAA,EAC1C,IAAI,CAAC,WAAW,WAAW,OAAO,MAAM,WAAW,OAAO,YAAY,GAAG;AAAA,IACxE,MAAM,IAAI,MACT,kBAAkB,MAAM,gCAAgC,MACzD;AAAA,EACD;AAAA,EAEA,MAAM,SAAS,iBAAiB,MAAM,eAAe,MAAM,OAAO;AAAA,EAElE,MAAM,aAAa,iBAAiB,MAAM,MAAM,EAAE;AAAA,EAClD,MAAM,WAAW,cAAc,OAAO,cAAc,MAAM;AAAA,EAC1D,IAAI,WAAW,QAAQ,MAAM,WAAW,UAAU,GAAG;AAAA,IACpD,MAAM,IAAI,MACT,+EACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN;AAAA,IACA,cAAc,OAAO;AAAA,IACrB;AAAA,IACA;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,QAAQ,MAAM;AAAA,EACf;AAAA;AAQM,SAAS,mBAAmB,CAAC,SAAqC;AAAA,EACxE,IAAI,QAAQ,WAAW,GAAG;AAAA,IACzB,MAAM,IAAI,MAAM,sDAAsD;AAAA,EACvE;AAAA,EACA,eAAe,YAAe,CAC7B,IACa;AAAA,IACb,IAAI;AAAA,IACJ,WAAW,UAAU,SAAS;AAAA,MAC7B,IAAI;AAAA,QACH,OAAO,MAAM,GAAG,MAAM;AAAA,QACrB,OAAO,OAAO;AAAA,QACf,YAAY;AAAA;AAAA,IAEd;AAAA,IACA,MAAM;AAAA;AAAA,EAEP,OAAO;AAAA,IACN,UAAU,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC;AAAA,IACxD,eAAe,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,cAAc,IAAI,CAAC;AAAA,EACnE;AAAA;AAkBM,SAAS,gBAAgB,CAAC,QAAuC;AAAA,EACvE,MAAM,UAAU,OAAO,SAAS;AAAA,EAEhC,eAAe,GAAM,CAAC,QAAgB,WAAkC;AAAA,IACvE,MAAM,UAAkC;AAAA,MACvC,gBAAgB;AAAA,IACjB;AAAA,IACA,IAAI,OAAO,MAAM;AAAA,MAChB,MAAM,QACL,OAAO,OAAO,SAAS,WACpB,OAAO,OACP,KAAK,GAAG,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU;AAAA,MAC1D,QAAQ,gBAAgB,SAAS;AAAA,IAClC;AAAA,IACA,MAAM,MAAM,MAAM,QAAQ,OAAO,KAAK;AAAA,MACrC,QAAQ;AAAA,MACR;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACpB,SAAS;AAAA,QACT,IAAI;AAAA,QACJ;AAAA,QACA,QAAQ;AAAA,MACT,CAAC;AAAA,IACF,CAAC;AAAA,IACD,IAAI,CAAC,IAAI,IAAI;AAAA,MACZ,MAAM,IAAI,MAAM,eAAe,uBAAuB,IAAI,QAAQ;AAAA,IACnE;AAAA,IACA,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,IAI7B,IAAI,KAAK,OAAO;AAAA,MACf,MAAM,IAAI,MAAM,eAAe,iBAAiB,KAAK,MAAM,SAAS;AAAA,IACrE;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,EAGb,OAAO;AAAA,SACA,SAAQ,CAAC,MAAM;AAAA,MACpB,OAAO,WAAW,MAAM,IAAY,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC;AAAA;AAAA,SAElE,cAAa,CAAC,MAAM;AAAA,MACzB,MAAM,KAAK,MAAM,IAA4B,qBAAqB;AAAA,QACjE;AAAA,QACA;AAAA,MACD,CAAC;AAAA,MACD,IAAI,CAAC,GAAG,WAAW;AAAA,QAClB,MAAM,IAAI,MACT,MAAM,wEACP;AAAA,MACD;AAAA,MACA,MAAM,QAAQ,MAAM,IAAsC,YAAY;AAAA,QACrE,GAAG;AAAA,QACH;AAAA,MACD,CAAC;AAAA,MACD,MAAM,SAAS,MAAM,IAAY,kBAAkB,CAAC,GAAG,WAAW,KAAK,CAAC;AAAA,MACxE,OAAO,mBAAmB;AAAA,QACzB;AAAA,QACA,SAAS,GAAG;AAAA,QACZ,WAAW;AAAA,QACX,QAAQ,MAAM;AAAA,QACd,cAAc,MAAM;AAAA,MACrB,CAAC;AAAA;AAAA,EAEH;AAAA;AAeM,SAAS,aAAa,CAAC,QAAoC;AAAA,EACjE,MAAM,UAAU,OAAO,SAAS;AAAA,EAChC,MAAM,OAAO,OAAO,IAAI,QAAQ,QAAQ,EAAE;AAAA,EAE1C,eAAe,GAAG,CAAC,MAAiC;AAAA,IACnD,MAAM,MAAM,MAAM,QAAQ,GAAG,OAAO,MAAM;AAAA,IAC1C,IAAI,CAAC,IAAI,IAAI;AAAA,MACZ,MAAM,IAAI,MAAM,eAAe,qBAAqB,IAAI,QAAQ;AAAA,IACjE;AAAA,IACA,OAAO;AAAA;AAAA,EAGR,OAAO;AAAA,SACA,SAAQ,CAAC,MAAM;AAAA,MACpB,OAAO,YAAY,OAAO,MAAM,IAAI,OAAO,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;AAAA;AAAA,SAEjE,cAAa,CAAC,MAAM;AAAA,MACzB,MAAM,SAAU,OAAO,MAAM,IAAI,OAAO,MAAM,GAAG,KAAK;AAAA,MAOtD,IAAI,CAAC,OAAO,OAAO,WAAW;AAAA,QAC7B,MAAM,IAAI,MAAM,MAAM,qBAAqB;AAAA,MAC5C;AAAA,MACA,MAAM,eAAe,OAAO,OAAO;AAAA,MACnC,MAAM,UACL,OAAO,MAAM,IAAI,UAAU,qBAAqB,GAAG,KAAK,GACvD,KAAK;AAAA,MACP,MAAM,QAAS,OACd,MAAM,IAAI,UAAU,oBAAoB,GACvC,KAAK;AAAA,MACP,OAAO,mBAAmB;AAAA,QACzB;AAAA,QACA,SAAS;AAAA,QACT,WAAW;AAAA,QACX,QAAQ,OAAO,OAAO;AAAA,QACtB,cAAc;AAAA,MACf,CAAC;AAAA;AAAA,EAEH;AAAA;;ACpRD,SAAS,WAAW,CAAC,SAAyB;AAAA,EAC7C,IAAI,QAAQ;AAAA,EACZ,IAAI,IAAI;AAAA,EACR,OAAO,IAAI,GAAG;AAAA,IACb,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,IACnB;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAIR,IAAM,eAAe;AAErB,SAAS,YAAY,CAAC,OAAmB,OAAqB;AAAA,EAC7D,IAAI,MAAM,WAAW,IAAI;AAAA,IACxB,MAAM,IAAI,MAAM,GAAG,+BAA+B,MAAM,QAAQ;AAAA,EACjE;AAAA;AAeM,SAAS,qBAAqB,CAAC,QAIW;AAAA,EAChD,QAAQ,MAAM,MAAM,UAAU;AAAA,EAC9B,aAAa,MAAM,aAAa;AAAA,EAChC,aAAa,MAAM,aAAa;AAAA,EAEhC,IAAI,MAAM,UAAU,KAAK,MAAM,WAAW,MAAM,SAAS;AAAA,IACxD,MAAM,IAAI,MACT,YAAY,MAAM,qCAAqC,MAAM,SAC9D;AAAA,EACD;AAAA,EACA,IAAI,MAAM,SAAS,SAAS,cAAc;AAAA,IACzC,MAAM,IAAI,MACT,aAAa,MAAM,SAAS,uDAAuD,cACpF;AAAA,EACD;AAAA,EACA,MAAM,gBAAgB,YAAY,MAAM,OAAO;AAAA,EAC/C,IAAI,MAAM,SAAS,WAAW,eAAe;AAAA,IAC5C,MAAM,IAAI,MACT,aAAa,MAAM,SAAS,gCAAgC,MAAM,4BAA4B,eAC/F;AAAA,EACD;AAAA,EACA,YAAY,GAAG,YAAY,MAAM,SAAS,QAAQ,GAAG;AAAA,IACpD,aAAa,SAAS,WAAW,GAAG;AAAA,EACrC;AAAA,EAEA,OAAO;AAAA,IACN,SAAS,IAAI;AAAA,IACb,SAAS,IAAI;AAAA,IACb,OAAO,MAAM,OAAO;AAAA,IACpB,OAAO,MAAM,OAAO;AAAA,IACpB,OAAO,MAAM,SAAS,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;AAAA,EAC9C;AAAA;AAYD,SAAS,YAAY,CAAC,IAA8B,OAA2B;AAAA,EAC9E,IAAI,IAAI,SAAS,UAAU;AAAA,IAC1B,MAAM,IAAI,MAAM,YAAY,6BAA6B,IAAI,MAAM;AAAA,EACpE;AAAA,EACA,OAAO,WAAW,GAAG,KAAK;AAAA;AAUpB,SAAS,cAAc,CAAC,IAAmC;AAAA,EACjE,MAAM,QAAsB,GAAG,SAAS,OAAO,GAAG,QAAQ;AAAA,EAC1D,IAAI,MAAM,SAAS,SAAS;AAAA,IAC3B,MAAM,IAAI,MAAM,yBAAyB,MAAM,MAAM;AAAA,EACtD;AAAA,EACA,MAAM,SAAU,MAAkB;AAAA,EAClC,MAAM,SAAS,OAAO;AAAA,EACtB,IAAI,QAAQ,SAAS,QAAQ;AAAA,IAC5B,MAAM,IAAI,MACT,iDAAiD,QAAQ,MAC1D;AAAA,EACD;AAAA,EACA,OAAO;AAAA,IACN,QAAQ,aAAa,OAAO,QAAQ,sBAAsB;AAAA,IAC1D,QAAQ,OAAO;AAAA,IACf,MAAM,aAAa,OAAO,MAAM,oBAAoB;AAAA,EACrD;AAAA;AA4BD,IAAM,SAAS;AACf,IAAM,aAAa;AACnB,IAAM,iBAAiB;AACvB,IAAM,cAAc;AACpB,IAAM,WAAW;AACjB,IAAM,YAAY;AAClB,IAAM,OAAO;AACb,IAAM,OAAO;AAON,SAAS,iBAAiB,CAAC,QAAwC;AAAA,EACzE,MAAM,IAAI,OAAO;AAAA,EAGjB,IACC,MAAM,MACN,OAAO,OAAO,UACd,OAAO,OAAO,cACd,OAAO,OAAO,MACd,OAAO,QAAQ,kBACf,OAAO,QAAQ,aACd;AAAA,IACD,OAAO,EAAE,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,EAAE,EAAE;AAAA,EACnD;AAAA,EAGA,IACC,MAAM,MACN,OAAO,OAAO,cACd,OAAO,OAAO,MACd,OAAO,QAAQ,UACd;AAAA,IACD,OAAO,EAAE,MAAM,QAAQ,MAAM,OAAO,MAAM,GAAG,EAAE,EAAE;AAAA,EAClD;AAAA,EAGA,IAAI,MAAM,MAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,IAAM;AAAA,IACzD,OAAO,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM,GAAG,EAAE,EAAE;AAAA,EACpD;AAAA,EAGA,IAAI,MAAM,MAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,IAAM;AAAA,IACzD,OAAO,EAAE,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,EAAE,EAAE;AAAA,EACnD;AAAA,EAGA,IAAI,MAAM,MAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,IAAM;AAAA,IACzD,OAAO,EAAE,MAAM,QAAQ,MAAM,OAAO,MAAM,GAAG,EAAE,EAAE;AAAA,EAClD;AAAA,EAGA,IAAI,KAAK,KAAK,OAAO,OAAO,WAAW;AAAA,IACtC,OAAO,EAAE,MAAM,aAAa,MAAM,OAAO,MAAM,CAAC,EAAE;AAAA,EACnD;AAAA,EAEA,OAAO,EAAE,MAAM,UAAU;AAAA;;ACnMnB,IAAM,wBAET;AAAA,EACH,SAAS;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,EACP;AACD;AAGO,SAAS,aAAa,CAC5B,SAC4B;AAAA,EAC5B,OAAO,sBAAsB;AAAA;AAIvB,SAAS,mBAAmB,CAAC,KAA4B;AAAA,EAC/D,OAAO,GAAG,IAAI,WAAW,IAAI;AAAA;;ACzBvB,IAAM,kBAAkB;AAAA,EAC9B,WAAW;AAAA,IACV;AAAA,MAEC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACL,EAAE,MAAM,MAAM,MAAM,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE,EAAE;AAAA,QAC/C,EAAE,MAAM,QAAQ,MAAM,UAAU;AAAA,MACjC;AAAA,MACA,SAAS;AAAA,QACR,UAAU;AAAA,UACT,IAAI;AAAA,YACH,OAAO;AAAA,cACN,EAAE,MAAM,UAAU,MAAM,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE,EAAE;AAAA,cACnD,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,cAClC,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,YAChD;AAAA,UACD;AAAA,UACA,OAAO;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA,IACA;AAAA,MAEC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACL,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,QAC/C,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,QAC/C,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC;AAAA,UACC,MAAM;AAAA,UACN,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE;AAAA,QAC9D;AAAA,MACD;AAAA,MACA,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MAMC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACL,EAAE,MAAM,UAAU,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,QACjD,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,QAClC,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,QAC/C,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC;AAAA,UACC,MAAM;AAAA,UACN,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE;AAAA,QAC9D;AAAA,MACD;AAAA,MACA,SAAS,EAAE,UAAU,EAAE,IAAI,QAAQ,OAAO,UAAU,EAAE;AAAA,IACvD;AAAA,EACD;AACD;;ACtDA,eAAsB,kBAAkB,CAAC,QAAiC;AAAA,EACzE,MAAM,OAAQ,MAAM,OAAO,QAAQ,UAAU;AAAA,EAG7C,IAAI,OAAO,MAAM,sBAAsB,UAAU;AAAA,IAChD,MAAM,IAAI,uBACT,sEACD;AAAA,EACD;AAAA,EACA,OAAO,KAAK;AAAA;AAUb,eAAsB,gBAAgB,CACrC,QACA,OAAqB,CAAC,GACH;AAAA,EACnB,MAAM,aACL,KAAK,yBACJ,OAAO,OAAO,YAAY,YACxB,yCACA;AAAA,EACJ,IAAI,cAAc,MAAM;AAAA,IACvB,MAAM,IAAI,MACT,qEAAqE,OAAO,OAAO,WAAW,gDAC/F;AAAA,EACD;AAAA,EACA,MAAM,UAAU,MAAM,mBAAmB,MAAM;AAAA,EAC/C,OAAO,WAAW;AAAA;;ACAnB,SAAS,aAAa,CAAC,IAA2B;AAAA,EACjD,MAAM,QAAQ,GAAG,SAAS,OAAO,GAAG,QAAQ;AAAA,EAC5C,IAAI,MAAM,SAAS;AAAA,IAAQ,OAAO;AAAA,EAClC,IAAI,MAAM,SAAS;AAAA,IAAS,OAAO;AAAA,EACnC,MAAM,IAAI,MAAM,kCAAkC,MAAM,MAAM;AAAA;AAUxD,SAAS,eAAe,CAC9B,QACA,QACkB;AAAA,EAClB,QAAQ,UAAU,WAAW;AAAA,EAE7B,eAAe,iBAAiB,CAAC,OAIZ;AAAA,IACpB,MAAM,OAAO,sBAAsB,KAAK;AAAA,IACxC,MAAM,SAAS,MAAM,aAAa,QAAQ;AAAA,MACzC;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACD,OAAO,cAAc,MAAM;AAAA;AAAA,EAG5B,OAAO;AAAA,IACN;AAAA,IACA,cAAc,CAAC,OAAO;AAAA,MACrB,MAAM,OAAO,iBAAiB,MAAM,MAAM,EAAE;AAAA,MAC5C,OAAO,kBAAkB;AAAA,QACxB,MAAM,MAAM;AAAA,QACZ;AAAA,QACA,OAAO,MAAM;AAAA,MACd,CAAC;AAAA;AAAA,SAEI,WAAU,CAAC,OAAO;AAAA,MACvB,MAAM,SAAS,MAAM,aAAa,QAAQ;AAAA,QACzC;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,UACL,SAAS,MAAM,MAAM;AAAA,UACrB,OAAO,MAAM,MAAM;AAAA,UACnB,SAAS,MAAM,YAAY;AAAA,UAC3B,OAAO,MAAM,OAAO,OAAO;AAAA,UAC3B,OAAO,MAAM,OAAO,OAAO;AAAA,UAC3B,OAAO,MAAM,OAAO,SAAS,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;AAAA,QACrD;AAAA,QACA;AAAA,MACD,CAAC;AAAA,MAED,IAAI,OAAO,SAAS;AAAA,QAAO,OAAO;AAAA,MAClC,OAAO,cAAc,MAAM;AAAA;AAAA,SAEtB,YAAW,CAAC,OAAO,MAAM;AAAA,MAC9B,MAAM,SAAS,MAAM,aAAa,QAAQ;AAAA,QACzC;AAAA,QACA,cAAc;AAAA,QACd,MAAM,CAAC,SAAS,KAAK,GAAG,OAAO,IAAI,CAAC;AAAA,QACpC;AAAA,MACD,CAAC;AAAA,MACD,IAAI,OAAO,SAAS,OAAO;AAAA,QAC1B,MAAM,IAAI,MACT,kCAAkC,KAAK,UAAU,OAAO,KAAK,GAC9D;AAAA,MACD;AAAA,MACA,OAAO,eAAe,MAAM;AAAA;AAAA,EAE9B;AAAA;;ACrDD,eAAsB,oBAAoB,CACzC,QACA,QACsC;AAAA,EACtC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,qBAAqB;AAAA,IACrB;AAAA,MACG;AAAA,EAEJ,MAAM,UAAU,cAAc,OAAO;AAAA,EACrC,MAAM,mBACL,aAAa,UAAU,oBAAoB,OAAO,IAAI;AAAA,EACvD,IAAI,CAAC,kBAAkB;AAAA,IACtB,MAAM,IAAI,MACT,+BAA+B,oLAChC;AAAA,EACD;AAAA,EAEA,MAAM,QACL,WAAW,SACR,OAAO,QACP,MAAM,aAAa,OAAO,QAAQ,EAAE,MAAM,OAAO,MAAM,KAAK,CAAC;AAAA,EAEjE,MAAM,WAAW,gBAAgB,QAAQ;AAAA,IACxC,UAAU;AAAA,IACV;AAAA,EACD,CAAC;AAAA,EACD,MAAM,QAAQ,qBACX,MAAM,SAAS,WAAW,KAAK,IAC/B,MAAM,SAAS,eAAe,KAAK;AAAA,EAEtC,MAAM,WAAW,eAAe,MAAM,KAAK;AAAA,EAC3C,MAAM,MAAM,SAAS,QAAQ;AAAA,EAC7B,IAAI,CAAC,KAAK;AAAA,IACT,MAAM,IAAI,MACT,QAAQ,6BAA6B,SAAS,QAAQ,iBACvD;AAAA,EACD;AAAA,EACA,MAAM,eAAe,kBAAkB,IAAI,YAAY;AAAA,EACvD,MAAM,UAAU,qBAAqB,cAAc,OAAO;AAAA,EAC1D,MAAM,SAA+B;AAAA,IACpC;AAAA,IACA,QAAQ,IAAI;AAAA,IACZ,QAAQ,IAAI;AAAA,IACZ,MAAM,aAAa;AAAA,IACnB;AAAA,EACD;AAAA,EAEA,MAAM,WAAW,QAAQ,WAAW,aAAa,IAAI,UAAU,OAAO;AAAA,EACtE,MAAM,YAAY,QAAQ,YAAY,aAAa,YAAY,OAAO;AAAA,EACtE,MAAM,WAAW,SAAS,YAAY;AAAA,EAEtC,OAAO,EAAE,UAAU,OAAO,QAAQ,MAAM;AAAA;",
|
|
15
|
+
"debugId": "55A60A5D16744F0264756E2164756E21",
|
|
16
16
|
"names": []
|
|
17
17
|
}
|
package/dist/src/pox5/index.cjs
CHANGED
|
@@ -27,7 +27,9 @@ __export(exports_pox5, {
|
|
|
27
27
|
bondPeriodToBurnHeight: () => bondPeriodToBurnHeight,
|
|
28
28
|
assertPox5Active: () => assertPox5Active,
|
|
29
29
|
POX5_SIGNER_DOMAIN: () => POX5_SIGNER_DOMAIN,
|
|
30
|
+
POX5_EVENT_TOPICS: () => POX5_EVENT_TOPICS,
|
|
30
31
|
POX5_CONTRACT_NAME: () => POX5_CONTRACT_NAME,
|
|
32
|
+
POX5_CONTRACT_ID_MAINNET: () => POX5_CONTRACT_ID_MAINNET,
|
|
31
33
|
POX5_ACTIVATION_BURN_HEIGHT_MAINNET: () => POX5_ACTIVATION_BURN_HEIGHT_MAINNET,
|
|
32
34
|
MAX_NUM_CYCLES: () => MAX_NUM_CYCLES,
|
|
33
35
|
C_SCRIPT_NUM_MAX: () => C_SCRIPT_NUM_MAX,
|
|
@@ -39,7 +41,29 @@ module.exports = __toCommonJS(exports_pox5);
|
|
|
39
41
|
|
|
40
42
|
// src/pox5/constants.ts
|
|
41
43
|
var POX5_CONTRACT_NAME = "pox-5";
|
|
42
|
-
var
|
|
44
|
+
var POX5_CONTRACT_ID_MAINNET = `SP000000000000000000002Q6VF78.${POX5_CONTRACT_NAME}`;
|
|
45
|
+
var POX5_EVENT_TOPICS = [
|
|
46
|
+
"set-bond-admin",
|
|
47
|
+
"set-pause-admin",
|
|
48
|
+
"pause-rewards",
|
|
49
|
+
"setup-bond",
|
|
50
|
+
"add-to-allowlist",
|
|
51
|
+
"register-for-bond",
|
|
52
|
+
"update-bond-registration",
|
|
53
|
+
"register-signer",
|
|
54
|
+
"stake",
|
|
55
|
+
"stake-update",
|
|
56
|
+
"announce-l1-early-exit",
|
|
57
|
+
"unstake-sbtc",
|
|
58
|
+
"unstake",
|
|
59
|
+
"calculate-rewards",
|
|
60
|
+
"bond-distribution",
|
|
61
|
+
"claim-rewards",
|
|
62
|
+
"claim-staker-rewards-for-signer",
|
|
63
|
+
"grant-signer-key",
|
|
64
|
+
"revoke-signer-grant"
|
|
65
|
+
];
|
|
66
|
+
var POX5_ACTIVATION_BURN_HEIGHT_MAINNET = EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET;
|
|
43
67
|
var BOND_LENGTH_CYCLES = 12;
|
|
44
68
|
var BOND_GAP_CYCLES = 2;
|
|
45
69
|
var MAX_NUM_CYCLES = 96;
|
|
@@ -1047,5 +1071,5 @@ function pox5() {
|
|
|
1047
1071
|
});
|
|
1048
1072
|
}
|
|
1049
1073
|
|
|
1050
|
-
//# debugId=
|
|
1074
|
+
//# debugId=978790117B98779D64756E2164756E21
|
|
1051
1075
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/pox5/constants.ts", "../src/pox5/activation.ts", "../src/pox5/cycles.ts", "../src/pox5/script.ts", "../src/pox5/grants.ts", "../src/pox5/abi.ts", "../src/pox5/actions.ts", "../src/pox5/extension.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * PoX-5 (SIP-045 Bitcoin Staking) constants, pinned against the final\n * contract shipped in stacks-core 4.0.
|
|
5
|
+
"/**\n * PoX-5 (SIP-045 Bitcoin Staking) constants, pinned against the final\n * contract shipped in stacks-core 4.0.1 (`stackslib/.../boot/pox-5.clar`);\n * `scripts/ci/check-pox5-pin.ts` holds the pinned tag + content hash.\n */\n\nimport { EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET } from \"../epochs.ts\";\n\n/** Boot contract name; deployer is the chain's boot address. */\nexport const POX5_CONTRACT_NAME = \"pox-5\";\n\n/** Fully-qualified mainnet contract id (boot address + `pox-5`). */\nexport const POX5_CONTRACT_ID_MAINNET: string = `SP000000000000000000002Q6VF78.${POX5_CONTRACT_NAME}`;\n\n/**\n * All print-event topic strings emitted by `pox-5.clar`. Unlike pox-2/3/4,\n * pox-5 has NO node-synthesized events — every event is a real `(print ...)`\n * with these `topic` values and the remaining tuple fields flattened at the\n * top level via `merge` (not nested under a `data` key).\n *\n * `add-to-allowlist` and `bond-distribution` are emitted per-item inside\n * folds (`setup-bond` / `calculate-rewards`), so one transaction can carry\n * many prints.\n */\nexport const POX5_EVENT_TOPICS = [\n\t\"set-bond-admin\",\n\t\"set-pause-admin\",\n\t\"pause-rewards\",\n\t\"setup-bond\",\n\t\"add-to-allowlist\",\n\t\"register-for-bond\",\n\t\"update-bond-registration\",\n\t\"register-signer\",\n\t\"stake\",\n\t\"stake-update\",\n\t\"announce-l1-early-exit\",\n\t\"unstake-sbtc\",\n\t\"unstake\",\n\t\"calculate-rewards\",\n\t\"bond-distribution\",\n\t\"claim-rewards\",\n\t\"claim-staker-rewards-for-signer\",\n\t\"grant-signer-key\",\n\t\"revoke-signer-grant\",\n] as const;\n\nexport type Pox5EventTopic = (typeof POX5_EVENT_TOPICS)[number];\n\n/**\n * Epoch 4.0 hard-fork activation height on mainnet — see\n * {@link EPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET}. Prefer the runtime gate in\n * `activation.ts` (`getPox5Activation`), which reads the node's `/v2/pox` and\n * works on every network.\n */\nexport const POX5_ACTIVATION_BURN_HEIGHT_MAINNET =\n\tEPOCH_4_ACTIVATION_BURN_HEIGHT_MAINNET;\n\n/** Length of a paired-BTC bond, in reward cycles (`BOND_LENGTH_CYCLES`). */\nexport const BOND_LENGTH_CYCLES = 12;\n\n/** Gap between consecutive bond starts, in reward cycles (`BOND_GAP_CYCLES`). */\nexport const BOND_GAP_CYCLES = 2;\n\n/** Hard cap for STX-only stake duration, in cycles (`MAX_NUM_CYCLES`). */\nexport const MAX_NUM_CYCLES = 96;\n\n/** SIP-018 domain for signer-key grants (`POX_5_SIGNER_DOMAIN`). */\nexport const POX5_SIGNER_DOMAIN = {\n\tname: \"pox-5-signer\",\n\tversion: \"1.0.0\",\n} as const;\n\n/**\n * `serialize-c-script-num` rejects values at or above 2^39 — the ceiling of a\n * 5-byte minimally-encoded ScriptNum (`ERR_INVALID_UNLOCK_HEIGHT`).\n */\nexport const C_SCRIPT_NUM_MAX = 549_755_813_888n; // 2^39\n\n/**\n * Bitcoin treats CLTV values >= 500,000,000 as Unix timestamps (BIP-65); the\n * contract rejects unlock heights at or above this so a lockup can never\n * commit a height Bitcoin would reinterpret.\n */\nexport const BITCOIN_LOCKTIME_THRESHOLD = 500_000_000n;\n",
|
|
6
6
|
"import type { Client } from \"../clients/types.ts\";\nimport { POX5_CONTRACT_NAME } from \"./constants.ts\";\n\n/**\n * Chain-reported PoX-5 activation facts, read from the node's `/v2/pox`\n * `contract_versions[]`. Present the moment nodes run stacks-core >= 4.0.0 —\n * no hardcoded heights, works on any network.\n */\nexport type Pox5Activation = {\n\t/** Fully-qualified `pox-5` contract id (boot address differs per network). */\n\tcontractId: string;\n\t/** Bitcoin block height at which Epoch 4.0 (and pox-5) activates. */\n\tactivationBurnchainBlockHeight: number;\n\t/** First reward cycle in which pox-5 governs PoX. */\n\tfirstRewardCycleId: number;\n};\n\ntype PoxInfoResponse = {\n\tcurrent_burnchain_block_height?: number;\n\tcontract_versions?: Array<{\n\t\tcontract_id: string;\n\t\tactivation_burnchain_block_height: number;\n\t\tfirst_reward_cycle_id: number;\n\t}>;\n};\n\n/**\n * Read pox-5's activation entry from the node. Returns `undefined` when the\n * node doesn't know about pox-5 yet (pre-4.0.0 node software).\n */\nexport async function getPox5Activation(\n\tclient: Client,\n): Promise<Pox5Activation | undefined> {\n\tconst info = (await client.request(\"/v2/pox\", {\n\t\tmethod: \"GET\",\n\t})) as PoxInfoResponse;\n\tconst entry = info.contract_versions?.find((v) =>\n\t\tv.contract_id.endsWith(`.${POX5_CONTRACT_NAME}`),\n\t);\n\tif (!entry) return undefined;\n\treturn {\n\t\tcontractId: entry.contract_id,\n\t\tactivationBurnchainBlockHeight: entry.activation_burnchain_block_height,\n\t\tfirstRewardCycleId: entry.first_reward_cycle_id,\n\t};\n}\n\n/**\n * Whether pox-5 is live on the node's chain: the node software knows the\n * contract AND the burnchain has reached its activation height. One request.\n */\nexport async function isPox5Active(client: Client): Promise<boolean> {\n\tconst info = (await client.request(\"/v2/pox\", {\n\t\tmethod: \"GET\",\n\t})) as PoxInfoResponse;\n\tconst entry = info.contract_versions?.find((v) =>\n\t\tv.contract_id.endsWith(`.${POX5_CONTRACT_NAME}`),\n\t);\n\tif (!entry || typeof info.current_burnchain_block_height !== \"number\")\n\t\treturn false;\n\treturn (\n\t\tinfo.current_burnchain_block_height >=\n\t\tentry.activation_burnchain_block_height\n\t);\n}\n\n/** Throw a descriptive error unless pox-5 is active on the client's chain. */\nexport async function assertPox5Active(client: Client): Promise<void> {\n\tif (!(await isPox5Active(client))) {\n\t\tthrow new Error(\n\t\t\t\"pox-5 is not active on this chain yet (Epoch 4.0 activates at Bitcoin block 960,230 on mainnet, ~2026-07-29). \" +\n\t\t\t\t\"Check getPox5Activation(client) for this network's activation height.\",\n\t\t);\n\t}\n}\n",
|
|
7
7
|
"import { BOND_GAP_CYCLES, BOND_LENGTH_CYCLES } from \"./constants.ts\";\n\n/**\n * Pure cycle/height math, mirroring the pox-5 helper read-onlys byte-for-byte\n * (`burn-height-to-reward-cycle`, `reward-cycle-to-burn-height`,\n * `bond-period-to-reward-cycle`, `burn-height-to-distribution-index`).\n *\n * All functions anchor on chain-reported parameters — pass values from\n * `/v2/pox` (`first_burnchain_block_height`, `reward_cycle_length`,\n * `prepare_cycle_length`) and `getPox5Activation` (`firstRewardCycleId` =\n * the contract's `first-bond-period-cycle`). Nothing is hardcoded, so the\n * math is correct on mainnet, testnet, and devnet alike.\n */\nexport type PoxCycleParams = {\n\t/** `/v2/pox` `first_burnchain_block_height`. */\n\tfirstBurnchainBlockHeight: number;\n\t/** `/v2/pox` `reward_cycle_length` (mainnet 2100). */\n\trewardCycleLength: number;\n};\n\nexport type BondCycleParams = PoxCycleParams & {\n\t/** pox-5's first bond-period cycle (`getPox5Activation().firstRewardCycleId`). */\n\tfirstBondPeriodCycle: number;\n};\n\n/** Reward cycle containing `burnHeight`. Mirrors `burn-height-to-reward-cycle`. */\nexport function burnHeightToRewardCycle(\n\tburnHeight: number,\n\tparams: PoxCycleParams,\n): number {\n\tif (burnHeight < params.firstBurnchainBlockHeight) {\n\t\tthrow new Error(\n\t\t\t`burnHeight ${burnHeight} precedes first burnchain block ${params.firstBurnchainBlockHeight}`,\n\t\t);\n\t}\n\treturn Math.floor(\n\t\t(burnHeight - params.firstBurnchainBlockHeight) / params.rewardCycleLength,\n\t);\n}\n\n/** Burn height at the start of `cycle`. Mirrors `reward-cycle-to-burn-height`. */\nexport function rewardCycleToBurnHeight(\n\tcycle: number,\n\tparams: PoxCycleParams,\n): number {\n\treturn params.firstBurnchainBlockHeight + cycle * params.rewardCycleLength;\n}\n\n/** Reward cycle at which bond period `bondIndex` starts. Mirrors `bond-period-to-reward-cycle`. */\nexport function bondPeriodToRewardCycle(\n\tbondIndex: number,\n\tparams: BondCycleParams,\n): number {\n\treturn params.firstBondPeriodCycle + bondIndex * BOND_GAP_CYCLES;\n}\n\n/** Burn height at which bond period `bondIndex` starts. Mirrors `bond-period-to-burn-height`. */\nexport function bondPeriodToBurnHeight(\n\tbondIndex: number,\n\tparams: BondCycleParams,\n): number {\n\treturn rewardCycleToBurnHeight(\n\t\tbondPeriodToRewardCycle(bondIndex, params),\n\t\tparams,\n\t);\n}\n\n/** First reward cycle in which bond `bondIndex`'s STX unlock (start + 12 cycles). */\nexport function bondUnlockCycle(\n\tbondIndex: number,\n\tparams: BondCycleParams,\n): number {\n\treturn bondPeriodToRewardCycle(bondIndex, params) + BOND_LENGTH_CYCLES;\n}\n\n/**\n * Distribution-cycle index at `burnHeight` — distribution cycles are half a\n * reward cycle long. Mirrors `burn-height-to-distribution-index`.\n */\nexport function burnHeightToDistributionIndex(\n\tburnHeight: number,\n\tparams: PoxCycleParams,\n): number {\n\treturn Math.floor(\n\t\t(burnHeight - params.firstBurnchainBlockHeight) /\n\t\t\tMath.floor(params.rewardCycleLength / 2),\n\t);\n}\n\n/**\n * Whether `burnHeight` falls in a cycle's prepare phase (the final\n * `prepareCycleLength` blocks). pox-5 rejects `unstake-sbtc` and\n * `announce-l1-early-exit` during a prepare phase.\n */\nexport function isInPreparePhase(\n\tburnHeight: number,\n\tparams: PoxCycleParams & { prepareCycleLength: number },\n): boolean {\n\tconst offset =\n\t\t(burnHeight - params.firstBurnchainBlockHeight) % params.rewardCycleLength;\n\treturn offset >= params.rewardCycleLength - params.prepareCycleLength;\n}\n\nexport type BondPhase = \"too-early\" | \"open\" | \"locked\" | \"unlocked\";\n\n/**\n * Coarse lifecycle phase of bond `bondIndex` at `burnHeight`: `too-early`\n * (before the bond's start is registerable), `open`/`locked` while active,\n * `unlocked` after 12 cycles.\n */\nexport function bondPhaseAtHeight(\n\tbondIndex: number,\n\tburnHeight: number,\n\tparams: BondCycleParams,\n): BondPhase {\n\tconst cycle = burnHeightToRewardCycle(burnHeight, params);\n\tconst start = bondPeriodToRewardCycle(bondIndex, params);\n\tconst unlock = bondUnlockCycle(bondIndex, params);\n\tif (cycle < start - BOND_GAP_CYCLES) return \"too-early\";\n\tif (cycle < start) return \"open\";\n\tif (cycle < unlock) return \"locked\";\n\treturn \"unlocked\";\n}\n",
|
|
8
|
-
"import { sha256 } from \"@noble/hashes/sha2.js\";\nimport { bech32 } from \"@scure/base\";\nimport { BITCOIN_NETWORK_PARAMS } from \"../bitcoin/address.ts\";\nimport type { BitcoinNetwork } from \"../bitcoin/constants.ts\";\nimport { serializeCVBytes } from \"../clarity/serialize.ts\";\nimport { Cl } from \"../clarity/values.ts\";\nimport { concatBytes, hexToBytes } from \"../utils/encoding.ts\";\nimport { BITCOIN_LOCKTIME_THRESHOLD, C_SCRIPT_NUM_MAX } from \"./constants.ts\";\n\n/**\n * Byte-for-byte TypeScript mirrors of pox-5's Bitcoin-script helpers\n * (`serialize-c-script-num`, `push-c-script-num`, `push-script-bytes`,\n * `construct-lockup-script`, `construct-lockup-output-script`), pinned\n * against the final contract in stacks-core 4.0.
|
|
8
|
+
"import { sha256 } from \"@noble/hashes/sha2.js\";\nimport { bech32 } from \"@scure/base\";\nimport { BITCOIN_NETWORK_PARAMS } from \"../bitcoin/address.ts\";\nimport type { BitcoinNetwork } from \"../bitcoin/constants.ts\";\nimport { serializeCVBytes } from \"../clarity/serialize.ts\";\nimport { Cl } from \"../clarity/values.ts\";\nimport { concatBytes, hexToBytes } from \"../utils/encoding.ts\";\nimport { BITCOIN_LOCKTIME_THRESHOLD, C_SCRIPT_NUM_MAX } from \"./constants.ts\";\n\n/**\n * Byte-for-byte TypeScript mirrors of pox-5's Bitcoin-script helpers\n * (`serialize-c-script-num`, `push-c-script-num`, `push-script-bytes`,\n * `construct-lockup-script`, `construct-lockup-output-script`), pinned\n * against the final contract in stacks-core 4.0.1. The contract validates a\n * staker's L1 lockup output against exactly these bytes, so any divergence\n * means a rejected registration — the read-onlys on-chain double as a\n * cross-check oracle for these functions.\n */\n\n/**\n * Minimal little-endian ScriptNum encoding of a non-negative integer\n * (`0` → empty; a `0x00` sign byte is appended when the top byte's high bit\n * is set). Mirrors `serialize-c-script-num`, including its 2^39 ceiling.\n */\nexport function serializeCScriptNum(n: number | bigint): Uint8Array {\n\tconst big = typeof n === \"bigint\" ? n : BigInt(n);\n\tif (big < 0n) throw new Error(\"serializeCScriptNum: negative value\");\n\tif (big >= C_SCRIPT_NUM_MAX) {\n\t\tthrow new Error(\n\t\t\t\"serializeCScriptNum: n >= 2^39 (contract rejects with ERR_INVALID_UNLOCK_HEIGHT)\",\n\t\t);\n\t}\n\tif (big === 0n) return new Uint8Array(0);\n\tconst out: number[] = [];\n\tlet v = big;\n\twhile (v > 0n) {\n\t\tout.push(Number(v & 0xffn));\n\t\tv >>= 8n;\n\t}\n\tif ((out[out.length - 1] as number) & 0x80) out.push(0x00);\n\treturn Uint8Array.from(out);\n}\n\n/**\n * Push arbitrary bytes onto a Bitcoin script: direct length byte under 76,\n * `OP_PUSHDATA1` under 256, `OP_PUSHDATA2` otherwise. Mirrors\n * `push-script-bytes`.\n */\nexport function pushScriptBytes(bytes: Uint8Array): Uint8Array {\n\tconst len = bytes.length;\n\tif (len > 0xffff)\n\t\tthrow new Error(`pushScriptBytes: payload too large (${len} > 65535)`);\n\tlet prefix: Uint8Array;\n\tif (len < 76) prefix = Uint8Array.of(len);\n\telse if (len < 256) prefix = Uint8Array.of(0x4c, len);\n\telse prefix = Uint8Array.of(0x4d, len & 0xff, len >> 8);\n\treturn concatBytes(prefix, bytes);\n}\n\n/**\n * Push a numeric script value: `OP_0` for zero, the single-byte ops\n * `OP_1`..`OP_16` for 1–16, else a minimal ScriptNum push. Mirrors\n * `push-c-script-num`.\n */\nexport function pushCScriptNum(n: number | bigint): Uint8Array {\n\tconst big = typeof n === \"bigint\" ? n : BigInt(n);\n\tif (big === 0n) return Uint8Array.of(0x00);\n\tif (big >= 1n && big <= 16n) return Uint8Array.of(0x50 + Number(big));\n\treturn pushScriptBytes(serializeCScriptNum(big));\n}\n\n/** `to-consensus-buff?` of a principal — the staker identity the script commits to. */\nexport function stakerConsensusBuff(stxAddress: string): Uint8Array {\n\treturn serializeCVBytes(Cl.principal(stxAddress));\n}\n\n/**\n * The 32-byte witness item the early-exit branch must reveal:\n * `sha256(to-consensus-buff? staker)`. The script stores `sha256` of THIS,\n * so revealing it proves which staker the exit is for.\n */\nexport function stakerPreimage(stxAddress: string): Uint8Array {\n\treturn sha256(stakerConsensusBuff(stxAddress));\n}\n\nexport type BuildLockupScriptOptions = {\n\t/** Staker principal (standard or contract address). */\n\tstxAddress: string;\n\t/** Burn height at which the CLTV branch becomes spendable. */\n\tunlockBurnHeight: number | bigint;\n\t/** Staker-signature subscript, run last in BOTH branches. */\n\tstakerUnlockBytes: Uint8Array | string;\n\t/** Per-bond early-unlock subscript (from `protocol-bonds.early-unlock-bytes`). */\n\tearlyUnlockBytes: Uint8Array | string;\n};\n\nfunction toBytes(input: Uint8Array | string): Uint8Array {\n\treturn typeof input === \"string\" ? hexToBytes(input) : input;\n}\n\n/**\n * The L1 lockup witness script. Mirrors `construct-lockup-script`:\n *\n * ```\n * OP_IF\n * <unlockBurnHeight> OP_CHECKLOCKTIMEVERIFY\n * OP_ELSE\n * OP_SIZE <32> OP_EQUALVERIFY OP_SHA256\n * <sha256(sha256(consensus-buff(staker)))> OP_EQUALVERIFY\n * <earlyUnlockBytes>\n * OP_ENDIF\n * OP_VERIFY\n * <stakerUnlockBytes>\n * ```\n */\nexport function buildLockupScript(opts: BuildLockupScriptOptions): Uint8Array {\n\tconst height = BigInt(opts.unlockBurnHeight);\n\tif (height >= BITCOIN_LOCKTIME_THRESHOLD) {\n\t\tthrow new Error(\n\t\t\t\"unlockBurnHeight >= 500,000,000 would be read by Bitcoin as a timestamp (contract rejects it)\",\n\t\t);\n\t}\n\tconst stakerHash = sha256(stakerPreimage(opts.stxAddress));\n\treturn concatBytes(\n\t\tUint8Array.of(0x63), // OP_IF\n\t\tpushCScriptNum(height),\n\t\tUint8Array.of(0xb1, 0x67), // OP_CHECKLOCKTIMEVERIFY, OP_ELSE\n\t\t// OP_SIZE, <0x20>, OP_EQUALVERIFY, OP_SHA256, OP_PUSHBYTES_32\n\t\thexToBytes(\"82012088a820\"),\n\t\tstakerHash,\n\t\tUint8Array.of(0x88), // OP_EQUALVERIFY\n\t\ttoBytes(opts.earlyUnlockBytes),\n\t\tUint8Array.of(0x68, 0x69), // OP_ENDIF, OP_VERIFY\n\t\ttoBytes(opts.stakerUnlockBytes),\n\t);\n}\n\n/**\n * P2WSH `scriptPubKey` for a lockup script: `0x0020 || sha256(script)`.\n * Mirrors `construct-lockup-output-script`.\n */\nexport function buildLockupOutputScript(\n\topts: BuildLockupScriptOptions,\n): Uint8Array {\n\treturn concatBytes(\n\t\tUint8Array.of(0x00, 0x20),\n\t\tsha256(buildLockupScript(opts)),\n\t);\n}\n\n/** The bech32 P2WSH address a staker sends their L1 BTC lockup to. */\nexport function buildLockupAddress(\n\topts: BuildLockupScriptOptions,\n\tnetwork: BitcoinNetwork = \"mainnet\",\n): string {\n\tconst hash = sha256(buildLockupScript(opts));\n\treturn bech32.encode(BITCOIN_NETWORK_PARAMS[network].hrp, [\n\t\t0,\n\t\t...bech32.toWords(hash),\n\t]);\n}\n\n/**\n * The default staker subscript: `<pubkey> OP_CHECKSIG` — spendable by one\n * key. Any script tail is valid as far as the contract is concerned; this is\n * the common case.\n */\nexport function buildDefaultStakerUnlockBytes(\n\tpublicKey: Uint8Array | string,\n): Uint8Array {\n\tconst pubkey = toBytes(publicKey);\n\tif (pubkey.length !== 33)\n\t\tthrow new Error(`Expected 33-byte compressed pubkey, got ${pubkey.length}`);\n\treturn concatBytes(pushScriptBytes(pubkey), Uint8Array.of(0xac)); // OP_CHECKSIG\n}\n",
|
|
9
9
|
"import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport type { LocalAccount } from \"../accounts/types.ts\";\nimport { serializeCVBytes } from \"../clarity/serialize.ts\";\nimport { Cl } from \"../clarity/values.ts\";\nimport { bytesToHex, concatBytes, hexToBytes } from \"../utils/encoding.ts\";\nimport { POX5_SIGNER_DOMAIN } from \"./constants.ts\";\n\n/**\n * PoX-5 signer-key grants: SIP-018 structured-data signatures authorizing a\n * signer-manager contract to use a signer key. Mirrors\n * `pox-5.get-signer-grant-message-hash` — domain `pox-5-signer/1.0.0`,\n * message `{ topic: \"grant-authorization\", signer-manager, auth-id }`.\n */\nexport type SignerGrantOptions = {\n\t/** The signer-manager contract principal being authorized. */\n\tsignerManager: string;\n\t/** Replay-protection id, chosen by the signer. */\n\tauthId: bigint | number;\n\t/** Stacks chain id (`mainnet.id` / `testnet.id`). */\n\tchainId: number;\n};\n\nconst SIP018_PREFIX = hexToBytes(\"534950303138\"); // \"SIP018\"\n\n/**\n * The 32-byte hash a signer signs to grant their key — byte-identical to the\n * contract's `get-signer-grant-message-hash` read-only (which doubles as an\n * on-chain cross-check).\n */\nexport function computeSignerGrantHash(opts: SignerGrantOptions): Uint8Array {\n\tconst domain = serializeCVBytes(\n\t\tCl.tuple({\n\t\t\tname: Cl.stringAscii(POX5_SIGNER_DOMAIN.name),\n\t\t\tversion: Cl.stringAscii(POX5_SIGNER_DOMAIN.version),\n\t\t\t\"chain-id\": Cl.uint(opts.chainId),\n\t\t}),\n\t);\n\tconst message = serializeCVBytes(\n\t\tCl.tuple({\n\t\t\ttopic: Cl.stringAscii(\"grant-authorization\"),\n\t\t\t\"signer-manager\": Cl.principal(opts.signerManager),\n\t\t\t\"auth-id\": Cl.uint(opts.authId),\n\t\t}),\n\t);\n\treturn sha256(concatBytes(SIP018_PREFIX, sha256(domain), sha256(message)));\n}\n\n/**\n * Sign a signer-key grant. Returns the 65-byte recoverable signature in RSV\n * order (recovery byte last), hex — the layout `grant-signer-key`'s\n * `signer-sig (buff 65)` expects.\n */\nexport async function signSignerGrant(\n\taccount: LocalAccount,\n\topts: SignerGrantOptions,\n): Promise<string> {\n\tconst vrs = await account.sign(computeSignerGrantHash(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// account.sign returns VRS; the contract wants RSV.\n\treturn bytesToHex(concatBytes(vrs.slice(1), vrs.slice(0, 1)));\n}\n\n/**\n * Verify a signer-key grant signature locally: recover the pubkey from the\n * RSV signature over the grant hash and compare. Returns `false` for\n * malformed input rather than throwing.\n */\nexport function verifySignerGrant(\n\topts: SignerGrantOptions & {\n\t\tpublicKey: Uint8Array | string;\n\t\tsignature: Uint8Array | string;\n\t},\n): boolean {\n\ttry {\n\t\tconst sig =\n\t\t\ttypeof opts.signature === \"string\"\n\t\t\t\t? hexToBytes(opts.signature)\n\t\t\t\t: opts.signature;\n\t\tif (sig.length !== 65) return false;\n\t\tconst pubkey =\n\t\t\ttypeof opts.publicKey === \"string\"\n\t\t\t\t? hexToBytes(opts.publicKey)\n\t\t\t\t: opts.publicKey;\n\t\tconst hash = computeSignerGrantHash(opts);\n\t\tconst recovered = secp256k1.Signature.fromBytes(sig.slice(0, 64))\n\t\t\t.addRecoveryBit(sig[64] as number)\n\t\t\t.recoverPublicKey(hash)\n\t\t\t.toBytes(true);\n\t\treturn bytesToHex(recovered) === bytesToHex(pubkey);\n\t} catch {\n\t\treturn false;\n\t}\n}\n",
|
|
10
10
|
"/**\n * Curated pox-5 ABI — the 25 functions this module calls, subset of the full\n * boot-contract interface (88 functions). Regenerate when stacks-core bumps\n * pox-5: `bun spike/pox5-getContract/extract-abi.ts`, then re-curate.\n * Drift-guarded by __tests__/actions.simnet.test.ts.\n */\nimport type { AbiContract } from \"../clarity/abi/contract.ts\";\n\nconst optionalSignerCalldata = {\n\toptional: { buff: { length: 500 } },\n} as const;\n\nconst earnedRewardsTuple = {\n\ttuple: [\n\t\t{ name: \"earned\", type: \"uint128\" },\n\t\t{ name: \"rewards-per-token\", type: \"uint128\" },\n\t],\n} as const;\n\nconst l1LockupOutputTuple = {\n\ttuple: [\n\t\t{ name: \"amount\", type: \"uint128\" },\n\t\t{ name: \"header\", type: { buff: { length: 80 } } },\n\t\t{ name: \"height\", type: \"uint128\" },\n\t\t{\n\t\t\tname: \"leaf-hashes\",\n\t\t\ttype: { list: { type: { buff: { length: 32 } }, length: 14 } },\n\t\t},\n\t\t{ name: \"output-index\", type: \"uint128\" },\n\t\t{ name: \"tx\", type: { buff: { length: 100000 } } },\n\t\t{ name: \"tx-count\", type: \"uint128\" },\n\t\t{ name: \"tx-index\", type: \"uint128\" },\n\t\t{ name: \"unlock-burn-height\", type: \"uint128\" },\n\t],\n} as const;\n\nexport const POX5_ABI = {\n\tfunctions: [\n\t\t// Read-only\n\t\t{\n\t\t\tname: \"current-pox-reward-cycle\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: \"uint128\",\n\t\t},\n\t\t{\n\t\t\tname: \"get-bond-allowance\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t],\n\t\t\toutputs: { optional: \"uint128\" },\n\t\t},\n\t\t{\n\t\t\tname: \"get-bond-l1-unlock-height\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"bond-index\", type: \"uint128\" }],\n\t\t\toutputs: \"uint128\",\n\t\t},\n\t\t{\n\t\t\tname: \"get-bond-membership\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"staker\", type: \"principal\" }],\n\t\t\toutputs: {\n\t\t\t\toptional: {\n\t\t\t\t\ttuple: [\n\t\t\t\t\t\t{ name: \"amount-sats\", type: \"uint128\" },\n\t\t\t\t\t\t{ name: \"amount-ustx\", type: \"uint128\" },\n\t\t\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t\t\t{ name: \"is-l1-lock\", type: \"bool\" },\n\t\t\t\t\t\t{ name: \"signer\", type: \"principal\" },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get-first-pox-5-reward-cycle\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: \"uint128\",\n\t\t},\n\t\t{\n\t\t\tname: \"get-protocol-bond\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"bond-index\", type: \"uint128\" }],\n\t\t\toutputs: {\n\t\t\t\toptional: {\n\t\t\t\t\ttuple: [\n\t\t\t\t\t\t{ name: \"early-unlock-bytes\", type: { buff: { length: 683 } } },\n\t\t\t\t\t\t{ name: \"min-ustx-ratio\", type: \"uint128\" },\n\t\t\t\t\t\t{ name: \"stx-value-ratio\", type: \"uint128\" },\n\t\t\t\t\t\t{ name: \"target-rate\", type: \"uint128\" },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get-signer-info\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"signer\", type: \"principal\" }],\n\t\t\toutputs: { optional: { buff: { length: 33 } } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-staker-custodied-sbtc\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"staker\", type: \"principal\" }],\n\t\t\toutputs: \"uint128\",\n\t\t},\n\t\t{\n\t\t\tname: \"get-staker-info\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"staker\", type: \"principal\" }],\n\t\t\toutputs: {\n\t\t\t\toptional: {\n\t\t\t\t\ttuple: [\n\t\t\t\t\t\t{ name: \"amount-ustx\", type: \"uint128\" },\n\t\t\t\t\t\t{ name: \"first-reward-cycle\", type: \"uint128\" },\n\t\t\t\t\t\t{ name: \"num-cycles\", type: \"uint128\" },\n\t\t\t\t\t\t{ name: \"signer\", type: \"principal\" },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get-total-sbtc-staked-for-bond\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"bond-index\", type: \"uint128\" }],\n\t\t\toutputs: \"uint128\",\n\t\t},\n\t\t{\n\t\t\tname: \"has-announced-l1-early-exit\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t],\n\t\t\toutputs: \"bool\",\n\t\t},\n\t\t{\n\t\t\tname: \"verify-signer-key-grant\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"signer-manager\", type: \"principal\" },\n\t\t\t\t{ name: \"signer-key\", type: { buff: { length: 33 } } },\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\n\t\t// Public\n\t\t{\n\t\t\tname: \"announce-l1-early-exit\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t\t{ name: \"old-signer-manager\", type: \"trait_reference\" },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"amount-sats-released\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"signer\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"calculate-rewards\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: \"bond-periods\",\n\t\t\t\t\ttype: { list: { type: \"uint128\", length: 6 } },\n\t\t\t\t},\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"accrued-rewards-per-ustx\", type: \"uint128\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"bond-periods\",\n\t\t\t\t\t\t\t\ttype: { list: { type: \"uint128\", length: 6 } },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ name: \"calculation-height\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"cumulative-rewards-per-ustx\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"cycle-staked-ustx\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"gross-accrued-rewards\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"reserve-balance\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"reserve-deposit\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"stx-cycle\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"total-bond-rewards\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"total-stx-staker-rewards\", type: \"uint128\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"claim-rewards\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: \"bond-periods\",\n\t\t\t\t\ttype: { list: { type: \"uint128\", length: 6 } },\n\t\t\t\t},\n\t\t\t\t{ name: \"reward-cycle\", type: \"uint128\" },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"bond-rewards\",\n\t\t\t\t\t\t\t\ttype: {\n\t\t\t\t\t\t\t\t\tlist: {\n\t\t\t\t\t\t\t\t\t\ttype: {\n\t\t\t\t\t\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t\t\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t\t\t\t\t\t\t\t\t{ name: \"earned\", type: \"uint128\" },\n\t\t\t\t\t\t\t\t\t\t\t\t{ name: \"rewards-per-token\", type: \"uint128\" },\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tlength: 6,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ name: \"bond-totals\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"stx-rewards\", type: earnedRewardsTuple },\n\t\t\t\t\t\t\t{ name: \"total-rewards\", type: \"uint128\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"claim-staker-rewards-for-signer\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t\t{ name: \"reward-cycle\", type: \"uint128\" },\n\t\t\t\t{ name: \"bond-index\", type: { optional: \"uint128\" } },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: { ok: earnedRewardsTuple, error: \"uint128\" },\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"grant-signer-key\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"signer-key\", type: { buff: { length: 33 } } },\n\t\t\t\t{ name: \"signer-manager\", type: \"principal\" },\n\t\t\t\t{ name: \"auth-id\", type: \"uint128\" },\n\t\t\t\t{ name: \"signer-sig\", type: { buff: { length: 65 } } },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"auth-id\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"signer-key\", type: { buff: { length: 33 } } },\n\t\t\t\t\t\t\t{ name: \"signer-manager\", type: \"principal\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"register-for-bond\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t{ name: \"signer-manager\", type: \"trait_reference\" },\n\t\t\t\t{ name: \"amount-ustx\", type: \"uint128\" },\n\t\t\t\t{\n\t\t\t\t\tname: \"btc-lockup\",\n\t\t\t\t\ttype: {\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tok: {\n\t\t\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"outputs\",\n\t\t\t\t\t\t\t\t\t\ttype: { list: { type: l1LockupOutputTuple, length: 10 } },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"staker-unlock-bytes\",\n\t\t\t\t\t\t\t\t\t\ttype: { buff: { length: 683 } },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\terror: \"uint128\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ name: \"signer-calldata\", type: optionalSignerCalldata },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"amount-ustx\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"btc-lockup\",\n\t\t\t\t\t\t\t\ttype: {\n\t\t\t\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"txs\",\n\t\t\t\t\t\t\t\t\t\t\ttype: {\n\t\t\t\t\t\t\t\t\t\t\t\toptional: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlist: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ name: \"output-index\", type: \"uint128\" },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: \"txid\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: { buff: { length: 32 } },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlength: 10,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"type\",\n\t\t\t\t\t\t\t\t\t\t\ttype: { \"string-ascii\": { length: 2 } },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ name: \"first-reward-cycle\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"is-l1-lock\", type: \"bool\" },\n\t\t\t\t\t\t\t{ name: \"sats-total\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"signer\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"unlock-burn-height\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"unlock-cycle\", type: \"uint128\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"revoke-signer-grant\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"signer-manager\", type: \"principal\" },\n\t\t\t\t{ name: \"signer-key\", type: { buff: { length: 33 } } },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"existed\", type: \"bool\" },\n\t\t\t\t\t\t\t{ name: \"signer-key\", type: { buff: { length: 33 } } },\n\t\t\t\t\t\t\t{ name: \"signer-manager\", type: \"principal\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"setup-bond\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t{ name: \"target-rate\", type: \"uint128\" },\n\t\t\t\t{ name: \"stx-value-ratio\", type: \"uint128\" },\n\t\t\t\t{ name: \"min-ustx-ratio\", type: \"uint128\" },\n\t\t\t\t{ name: \"early-unlock-bytes\", type: { buff: { length: 683 } } },\n\t\t\t\t{\n\t\t\t\t\tname: \"allowlist\",\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: \"max-sats\", type: \"uint128\" },\n\t\t\t\t\t\t\t\t\t{ name: \"staker\", 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: 1000,\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: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"early-unlock-bytes\",\n\t\t\t\t\t\t\t\ttype: { buff: { length: 683 } },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ name: \"max-allocation-sats\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"min-ustx-ratio\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"stx-value-ratio\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"target-rate\", type: \"uint128\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"stake\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"signer-manager\", type: \"trait_reference\" },\n\t\t\t\t{ name: \"amount-ustx\", type: \"uint128\" },\n\t\t\t\t{ name: \"num-cycles\", type: \"uint128\" },\n\t\t\t\t{ name: \"start-burn-ht\", type: \"uint128\" },\n\t\t\t\t{ name: \"signer-calldata\", type: optionalSignerCalldata },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"amount-ustx\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"first-reward-cycle\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"num-cycles\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"signer\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"unlock-burn-height\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"unlock-cycle\", type: \"uint128\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"stake-update\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"signer-manager\", type: \"trait_reference\" },\n\t\t\t\t{ name: \"old-signer-manager\", type: \"trait_reference\" },\n\t\t\t\t{ name: \"cycles-to-extend\", type: \"uint128\" },\n\t\t\t\t{ name: \"amount-increase\", type: \"uint128\" },\n\t\t\t\t{ name: \"signer-calldata\", type: optionalSignerCalldata },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"amount-increase\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"amount-ustx\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"cycles-to-extend\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"num-cycles\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"old-signer\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"prev-unlock-height\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"signer\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"unlock-burn-height\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"unlock-cycle\", type: \"uint128\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"unstake\",\n\t\t\taccess: \"public\",\n\t\t\targs: [{ name: \"old-signer-manager\", type: \"trait_reference\" }],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"amount-ustx\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"first-reward-cycle\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"signer\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"unlock-burn-height\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"unlock-cycle\", type: \"uint128\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"unstake-sbtc\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"signer-manager\", type: \"trait_reference\" },\n\t\t\t\t{ name: \"amount-to-withdrawal-sats\", type: \"uint128\" },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"amount-withdrawn-sats\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"new-amount-sats\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"signer\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"update-bond-registration\",\n\t\t\taccess: \"public\",\n\t\t\targs: [\n\t\t\t\t{ name: \"signer-manager\", type: \"trait_reference\" },\n\t\t\t\t{ name: \"old-signer-manager\", type: \"trait_reference\" },\n\t\t\t\t{ name: \"signer-calldata\", type: optionalSignerCalldata },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"amount-sats\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"amount-ustx\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"bond-index\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"first-reward-cycle\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"is-l1-lock\", type: \"bool\" },\n\t\t\t\t\t\t\t{ name: \"num-cycles\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"old-signer\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"signer\", type: \"principal\" },\n\t\t\t\t\t\t\t{ name: \"staker\", type: \"principal\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n} as const satisfies AbiContract;\n",
|
|
11
11
|
"import { getContract } from \"../actions/getContract.ts\";\nimport type { FeeParam } from \"../actions/wallet/utils.ts\";\nimport type { Client } from \"../clients/types.ts\";\nimport type { PostCondition } from \"../postconditions/types.ts\";\nimport {\n\ttype IntegerType,\n\thexToBytes,\n\tintToBigInt,\n} from \"../utils/encoding.ts\";\nimport { POX5_ABI } from \"./abi.ts\";\nimport { POX5_CONTRACT_NAME } from \"./constants.ts\";\nimport type {\n\tBondAllowance,\n\tBondMembership,\n\tProtocolBond,\n\tSignerInfo,\n\tStakerInfo,\n} from \"./types.ts\";\n\n/**\n * PoX-5 contract calls and reads, pinned against the final contract in\n * stacks-core 4.0.0. Wallet actions route through `callContract`, so they\n * inherit fee tiers, nonce management, and typed broadcast errors; pair the\n * returned txid with `waitForTransactionReceipt` to await inclusion.\n *\n * Note: pox-5 uses `contract-caller`/`tx-sender` directly (there is no\n * `allow-contract-caller` indirection like pox-4). Amount/lock safety is\n * expressed with the new Epoch 4.0 `Staking`/`Pox` post-conditions — pass\n * them via `postConditions` on any of these actions.\n */\n\n/** Resolve the boot `pox-5` contract id for the client's chain. */\nexport function pox5ContractId(client: Client): string {\n\tconst boot = client.chain?.bootAddress;\n\tif (!boot) throw new Error(\"Client must have a chain with a bootAddress\");\n\treturn `${boot}.${POX5_CONTRACT_NAME}`;\n}\n\ntype TxOptions = {\n\tfee?: FeeParam;\n\tnonce?: IntegerType;\n\tpostConditions?: PostCondition[];\n\tpostConditionMode?: \"allow\" | \"deny\";\n};\n\nfunction getPox5Contract(client: Client) {\n\tconst [address, name] = pox5ContractId(client).split(\".\") as [string, string];\n\treturn getContract({ client, address, name, abi: POX5_ABI });\n}\n\n// ---------------------------------------------------------------------------\n// L1 BTC lockup proof shape (register-for-bond's ok-branch outputs)\n// ---------------------------------------------------------------------------\n\n/**\n * One proven L1 timelock output — a Bitcoin SPV inclusion proof of the lockup\n * tx plus which output is the lockup. `@secondlayer/stacks/bitcoin`'s\n * `buildTxProof` produces the proof fields.\n */\nexport type L1LockupOutput = {\n\t/** Burn height of the Bitcoin block containing the lockup tx. */\n\theight: IntegerType;\n\t/** Raw Bitcoin tx (witness-stripped), hex or bytes. */\n\ttx: Uint8Array | string;\n\toutputIndex: IntegerType;\n\t/** 80-byte Bitcoin block header. */\n\theader: Uint8Array | string;\n\t/** Merkle siblings, leaf→root (max 14). */\n\tleafHashes: Array<Uint8Array | string>;\n\ttxCount: IntegerType;\n\ttxIndex: IntegerType;\n\t/** Output value in sats. */\n\tamount: IntegerType;\n\tunlockBurnHeight: IntegerType;\n};\n\n/** BTC side of a bond registration: proven L1 lockups, or an sBTC amount. */\nexport type BtcLockup =\n\t| { l1Outputs: L1LockupOutput[]; stakerUnlockBytes: Uint8Array | string }\n\t| { sbtcSats: IntegerType };\n\n/** ABI buff args take `Uint8Array`; hex strings decode exactly like `Cl.bufferFromHex`. */\nfunction toBytes(input: Uint8Array | string): Uint8Array {\n\treturn typeof input === \"string\" ? hexToBytes(input) : input;\n}\n\n/** ABI `(optional (buff …))` args are required-with-null. */\nfunction optionalBytes(input?: Uint8Array | string): Uint8Array | null {\n\treturn input === undefined ? null : toBytes(input);\n}\n\n/** Map `BtcLockup` to the ABI's `(response (tuple …) uint)` arg shape. */\nfunction btcLockupArg(lockup: BtcLockup) {\n\tif (\"sbtcSats\" in lockup) return { err: intToBigInt(lockup.sbtcSats) };\n\treturn {\n\t\tok: {\n\t\t\toutputs: lockup.l1Outputs.map((o) => ({\n\t\t\t\theight: intToBigInt(o.height),\n\t\t\t\ttx: toBytes(o.tx),\n\t\t\t\toutputIndex: intToBigInt(o.outputIndex),\n\t\t\t\theader: toBytes(o.header),\n\t\t\t\tleafHashes: o.leafHashes.map(toBytes),\n\t\t\t\ttxCount: intToBigInt(o.txCount),\n\t\t\t\ttxIndex: intToBigInt(o.txIndex),\n\t\t\t\tamount: intToBigInt(o.amount),\n\t\t\t\tunlockBurnHeight: intToBigInt(o.unlockBurnHeight),\n\t\t\t})),\n\t\t\tstakerUnlockBytes: toBytes(lockup.stakerUnlockBytes),\n\t\t},\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// Wallet actions (broadcast a pox-5 contract call, return the txid)\n// ---------------------------------------------------------------------------\n\nexport type SetupBondParams = TxOptions & {\n\tbondIndex: IntegerType;\n\t/** Target yield rate, basis points. */\n\ttargetRate: IntegerType;\n\t/** µSTX per 100 sats (BTCUSD / STXUSD representation). */\n\tstxValueRatio: IntegerType;\n\t/** Minimum locked STX relative to BTC, basis points. */\n\tminUstxRatio: IntegerType;\n\t/** Early-unlock subscript for this bond's L1 lockup scripts (max 683B). */\n\tearlyUnlockBytes: Uint8Array | string;\n\tallowlist: Array<{ staker: string; maxSats: IntegerType }>;\n};\n\n/** `setup-bond` — bond-admin only. */\nexport function setupBond(\n\tclient: Client,\n\tparams: SetupBondParams,\n): Promise<string> {\n\tconst {\n\t\tbondIndex,\n\t\ttargetRate,\n\t\tstxValueRatio,\n\t\tminUstxRatio,\n\t\tearlyUnlockBytes,\n\t\tallowlist,\n\t\t...tx\n\t} = params;\n\treturn getPox5Contract(client).call.setupBond(\n\t\t{\n\t\t\tbondIndex: intToBigInt(bondIndex),\n\t\t\ttargetRate: intToBigInt(targetRate),\n\t\t\tstxValueRatio: intToBigInt(stxValueRatio),\n\t\t\tminUstxRatio: intToBigInt(minUstxRatio),\n\t\t\tearlyUnlockBytes: toBytes(earlyUnlockBytes),\n\t\t\tallowlist: allowlist.map((a) => ({\n\t\t\t\tstaker: a.staker,\n\t\t\t\tmaxSats: intToBigInt(a.maxSats),\n\t\t\t})),\n\t\t},\n\t\ttx,\n\t);\n}\n\nexport type RegisterForBondParams = TxOptions & {\n\tbondIndex: IntegerType;\n\t/** Signer-manager contract principal. */\n\tsignerManager: string;\n\tamountUstx: IntegerType;\n\tbtcLockup: BtcLockup;\n\tsignerCalldata?: Uint8Array | string;\n};\n\n/** `register-for-bond` — join a bond with proven L1 lockups or sBTC. */\nexport function registerForBond(\n\tclient: Client,\n\tparams: RegisterForBondParams,\n): Promise<string> {\n\tconst {\n\t\tbondIndex,\n\t\tsignerManager,\n\t\tamountUstx,\n\t\tbtcLockup,\n\t\tsignerCalldata,\n\t\t...tx\n\t} = params;\n\treturn getPox5Contract(client).call.registerForBond(\n\t\t{\n\t\t\tbondIndex: intToBigInt(bondIndex),\n\t\t\tsignerManager,\n\t\t\tamountUstx: intToBigInt(amountUstx),\n\t\t\tbtcLockup: btcLockupArg(btcLockup),\n\t\t\tsignerCalldata: optionalBytes(signerCalldata),\n\t\t},\n\t\ttx,\n\t);\n}\n\nexport type UpdateBondRegistrationParams = TxOptions & {\n\tsignerManager: string;\n\toldSignerManager: string;\n\tsignerCalldata?: Uint8Array | string;\n};\n\n/** `update-bond-registration` — switch signer-managers mid-bond. */\nexport function updateBondRegistration(\n\tclient: Client,\n\tparams: UpdateBondRegistrationParams,\n): Promise<string> {\n\tconst { signerManager, oldSignerManager, signerCalldata, ...tx } = params;\n\treturn getPox5Contract(client).call.updateBondRegistration(\n\t\t{\n\t\t\tsignerManager,\n\t\t\toldSignerManager,\n\t\t\tsignerCalldata: optionalBytes(signerCalldata),\n\t\t},\n\t\ttx,\n\t);\n}\n\nexport type StakeParams = TxOptions & {\n\tsignerManager: string;\n\tamountUstx: IntegerType;\n\tnumCycles: IntegerType;\n\tstartBurnHeight: IntegerType;\n\tsignerCalldata?: Uint8Array | string;\n};\n\n/** `stake` — STX-only staking. */\nexport function stake(client: Client, params: StakeParams): Promise<string> {\n\tconst {\n\t\tsignerManager,\n\t\tamountUstx,\n\t\tnumCycles,\n\t\tstartBurnHeight,\n\t\tsignerCalldata,\n\t\t...tx\n\t} = params;\n\treturn getPox5Contract(client).call.stake(\n\t\t{\n\t\t\tsignerManager,\n\t\t\tamountUstx: intToBigInt(amountUstx),\n\t\t\tnumCycles: intToBigInt(numCycles),\n\t\t\tstartBurnHt: intToBigInt(startBurnHeight),\n\t\t\tsignerCalldata: optionalBytes(signerCalldata),\n\t\t},\n\t\ttx,\n\t);\n}\n\nexport type StakeUpdateParams = TxOptions & {\n\tsignerManager: string;\n\toldSignerManager: string;\n\tcyclesToExtend: IntegerType;\n\tamountIncrease: IntegerType;\n\tsignerCalldata?: Uint8Array | string;\n};\n\n/** `stake-update` — extend and/or increase an STX-only position. */\nexport function stakeUpdate(\n\tclient: Client,\n\tparams: StakeUpdateParams,\n): Promise<string> {\n\tconst {\n\t\tsignerManager,\n\t\toldSignerManager,\n\t\tcyclesToExtend,\n\t\tamountIncrease,\n\t\tsignerCalldata,\n\t\t...tx\n\t} = params;\n\treturn getPox5Contract(client).call.stakeUpdate(\n\t\t{\n\t\t\tsignerManager,\n\t\t\toldSignerManager,\n\t\t\tcyclesToExtend: intToBigInt(cyclesToExtend),\n\t\t\tamountIncrease: intToBigInt(amountIncrease),\n\t\t\tsignerCalldata: optionalBytes(signerCalldata),\n\t\t},\n\t\ttx,\n\t);\n}\n\nexport type UnstakeParams = TxOptions & { oldSignerManager: string };\n\n/** `unstake` — wind down an STX-only position at the next cycle. */\nexport function unstake(\n\tclient: Client,\n\tparams: UnstakeParams,\n): Promise<string> {\n\tconst { oldSignerManager, ...tx } = params;\n\treturn getPox5Contract(client).call.unstake({ oldSignerManager }, tx);\n}\n\nexport type UnstakeSbtcParams = TxOptions & {\n\tsignerManager: string;\n\tamountSats: IntegerType;\n};\n\n/** `unstake-sbtc` — withdraw custodied sBTC from a bond (rejected in prepare phase). */\nexport function unstakeSbtc(\n\tclient: Client,\n\tparams: UnstakeSbtcParams,\n): Promise<string> {\n\tconst { signerManager, amountSats, ...tx } = params;\n\treturn getPox5Contract(client).call.unstakeSbtc(\n\t\t{ signerManager, amountToWithdrawalSats: intToBigInt(amountSats) },\n\t\ttx,\n\t);\n}\n\nexport type AnnounceL1EarlyExitParams = TxOptions & {\n\tstaker: string;\n\toldSignerManager: string;\n};\n\n/** `announce-l1-early-exit` — staker-callable since 4.0.0 (rejected in prepare phase). */\nexport function announceL1EarlyExit(\n\tclient: Client,\n\tparams: AnnounceL1EarlyExitParams,\n): Promise<string> {\n\tconst { staker, oldSignerManager, ...tx } = params;\n\treturn getPox5Contract(client).call.announceL1EarlyExit(\n\t\t{ staker, oldSignerManager },\n\t\ttx,\n\t);\n}\n\nexport type CalculateRewardsParams = TxOptions & {\n\tbondPeriods: IntegerType[];\n};\n\n/** `calculate-rewards` — settle the reward accounting for up to 6 bond periods. */\nexport function calculateRewards(\n\tclient: Client,\n\tparams: CalculateRewardsParams,\n): Promise<string> {\n\tconst { bondPeriods, ...tx } = params;\n\treturn getPox5Contract(client).call.calculateRewards(\n\t\t{ bondPeriods: bondPeriods.map(intToBigInt) },\n\t\ttx,\n\t);\n}\n\nexport type ClaimRewardsParams = TxOptions & {\n\tbondPeriods: IntegerType[];\n\trewardCycle: IntegerType;\n};\n\n/** `claim-rewards` — signer-manager claims accrued rewards for a cycle. */\nexport function claimRewards(\n\tclient: Client,\n\tparams: ClaimRewardsParams,\n): Promise<string> {\n\tconst { bondPeriods, rewardCycle, ...tx } = params;\n\treturn getPox5Contract(client).call.claimRewards(\n\t\t{\n\t\t\tbondPeriods: bondPeriods.map(intToBigInt),\n\t\t\trewardCycle: intToBigInt(rewardCycle),\n\t\t},\n\t\ttx,\n\t);\n}\n\nexport type ClaimStakerRewardsForSignerParams = TxOptions & {\n\tstaker: string;\n\trewardCycle: IntegerType;\n\tbondIndex?: IntegerType;\n};\n\n/** `claim-staker-rewards-for-signer`. */\nexport function claimStakerRewardsForSigner(\n\tclient: Client,\n\tparams: ClaimStakerRewardsForSignerParams,\n): Promise<string> {\n\tconst { staker, rewardCycle, bondIndex, ...tx } = params;\n\treturn getPox5Contract(client).call.claimStakerRewardsForSigner(\n\t\t{\n\t\t\tstaker,\n\t\t\trewardCycle: intToBigInt(rewardCycle),\n\t\t\tbondIndex: bondIndex === undefined ? null : intToBigInt(bondIndex),\n\t\t},\n\t\ttx,\n\t);\n}\n\nexport type GrantSignerKeyParams = TxOptions & {\n\t/** 33-byte compressed signer key. */\n\tsignerKey: Uint8Array | string;\n\tsignerManager: string;\n\tauthId: IntegerType;\n\t/** 65-byte RSV signature from `signSignerGrant`. */\n\tsignerSig: Uint8Array | string;\n};\n\n/** `grant-signer-key` — callable by the signer-manager contract itself. */\nexport function grantSignerKey(\n\tclient: Client,\n\tparams: GrantSignerKeyParams,\n): Promise<string> {\n\tconst { signerKey, signerManager, authId, signerSig, ...tx } = params;\n\treturn getPox5Contract(client).call.grantSignerKey(\n\t\t{\n\t\t\tsignerKey: toBytes(signerKey),\n\t\t\tsignerManager,\n\t\t\tauthId: intToBigInt(authId),\n\t\t\tsignerSig: toBytes(signerSig),\n\t\t},\n\t\ttx,\n\t);\n}\n\nexport type RevokeSignerGrantParams = TxOptions & {\n\tsignerManager: string;\n\tsignerKey: Uint8Array | string;\n};\n\n/** `revoke-signer-grant`. */\nexport function revokeSignerGrant(\n\tclient: Client,\n\tparams: RevokeSignerGrantParams,\n): Promise<string> {\n\tconst { signerManager, signerKey, ...tx } = params;\n\treturn getPox5Contract(client).call.revokeSignerGrant(\n\t\t{ signerManager, signerKey: toBytes(signerKey) },\n\t\ttx,\n\t);\n}\n\n// ---------------------------------------------------------------------------\n// Reads (JS-mapped return types — see types.ts)\n// ---------------------------------------------------------------------------\n\n/** `get-staker-info` — lock dimensions + signer, `none` when expired/absent. */\nexport async function getStakerInfo(\n\tclient: Client,\n\tstaker: string,\n): Promise<StakerInfo> {\n\treturn (await getPox5Contract(client).read.getStakerInfo({\n\t\tstaker,\n\t})) as StakerInfo;\n}\n\n/** `get-bond-membership` — the staker's active bond membership, if any. */\nexport async function getBondMembership(\n\tclient: Client,\n\tstaker: string,\n): Promise<BondMembership> {\n\treturn (await getPox5Contract(client).read.getBondMembership({\n\t\tstaker,\n\t})) as BondMembership;\n}\n\n/** `get-protocol-bond` — a bond's core parameters. */\nexport async function getProtocolBond(\n\tclient: Client,\n\tbondIndex: IntegerType,\n): Promise<ProtocolBond> {\n\treturn (await getPox5Contract(client).read.getProtocolBond({\n\t\tbondIndex: intToBigInt(bondIndex),\n\t})) as ProtocolBond;\n}\n\n/** `get-bond-allowance` — a staker's allowlisted max sats for a bond. */\nexport async function getBondAllowance(\n\tclient: Client,\n\tbondIndex: IntegerType,\n\tstaker: string,\n): Promise<BondAllowance> {\n\treturn (await getPox5Contract(client).read.getBondAllowance({\n\t\tbondIndex: intToBigInt(bondIndex),\n\t\tstaker,\n\t})) as BondAllowance;\n}\n\n/** `get-total-sbtc-staked-for-bond`. */\nexport function getTotalSbtcStakedForBond(\n\tclient: Client,\n\tbondIndex: IntegerType,\n): Promise<bigint> {\n\treturn getPox5Contract(client).read.getTotalSbtcStakedForBond({\n\t\tbondIndex: intToBigInt(bondIndex),\n\t});\n}\n\n/** `get-staker-custodied-sbtc`. */\nexport function getStakerCustodiedSbtc(\n\tclient: Client,\n\tstaker: string,\n): Promise<bigint> {\n\treturn getPox5Contract(client).read.getStakerCustodiedSbtc({ staker });\n}\n\n/** `has-announced-l1-early-exit`. */\nexport function hasAnnouncedL1EarlyExit(\n\tclient: Client,\n\tbondIndex: IntegerType,\n\tstaker: string,\n): Promise<boolean> {\n\treturn getPox5Contract(client).read.hasAnnouncedL1EarlyExit({\n\t\tbondIndex: intToBigInt(bondIndex),\n\t\tstaker,\n\t});\n}\n\n/** `get-bond-l1-unlock-height` — half a cycle before the bond period ends. */\nexport function getBondL1UnlockHeight(\n\tclient: Client,\n\tbondIndex: IntegerType,\n): Promise<bigint> {\n\treturn getPox5Contract(client).read.getBondL1UnlockHeight({\n\t\tbondIndex: intToBigInt(bondIndex),\n\t});\n}\n\n/** `get-signer-info`. */\nexport async function getSignerInfo(\n\tclient: Client,\n\tsigner: string,\n): Promise<SignerInfo> {\n\treturn (await getPox5Contract(client).read.getSignerInfo({\n\t\tsigner,\n\t})) as SignerInfo;\n}\n\n/** `verify-signer-key-grant` — whether a grant exists on-chain. */\nexport function verifySignerKeyGrantOnChain(\n\tclient: Client,\n\tsignerManager: string,\n\tsignerKey: Uint8Array | string,\n): Promise<boolean> {\n\treturn getPox5Contract(client).read.verifySignerKeyGrant({\n\t\tsignerManager,\n\t\tsignerKey: toBytes(signerKey),\n\t});\n}\n\n/** `current-pox-reward-cycle`. */\nexport function getCurrentRewardCycle(client: Client): Promise<bigint> {\n\treturn getPox5Contract(client).read.currentPoxRewardCycle({});\n}\n\n/** `get-first-pox-5-reward-cycle`. */\nexport function getFirstPox5RewardCycle(client: Client): Promise<bigint> {\n\treturn getPox5Contract(client).read.getFirstPox5RewardCycle({});\n}\n",
|
|
12
12
|
"import { multicall } from \"../actions/public/multicall.ts\";\nimport type { ClarityValue } from \"../clarity/types.ts\";\nimport { Cl } from \"../clarity/values.ts\";\nimport type { Client } from \"../clients/types.ts\";\nimport type { IntegerType } from \"../utils/encoding.ts\";\nimport {\n\ttype AnnounceL1EarlyExitParams,\n\ttype CalculateRewardsParams,\n\ttype ClaimRewardsParams,\n\ttype ClaimStakerRewardsForSignerParams,\n\ttype GrantSignerKeyParams,\n\ttype RegisterForBondParams,\n\ttype RevokeSignerGrantParams,\n\ttype SetupBondParams,\n\ttype StakeParams,\n\ttype StakeUpdateParams,\n\ttype UnstakeParams,\n\ttype UnstakeSbtcParams,\n\ttype UpdateBondRegistrationParams,\n\tannounceL1EarlyExit,\n\tcalculateRewards,\n\tclaimRewards,\n\tclaimStakerRewardsForSigner,\n\tgetBondAllowance,\n\tgetBondL1UnlockHeight,\n\tgetBondMembership,\n\tgetCurrentRewardCycle,\n\tgetFirstPox5RewardCycle,\n\tgetProtocolBond,\n\tgetSignerInfo,\n\tgetStakerCustodiedSbtc,\n\tgetStakerInfo,\n\tgetTotalSbtcStakedForBond,\n\tgrantSignerKey,\n\thasAnnouncedL1EarlyExit,\n\tpox5ContractId,\n\tregisterForBond,\n\trevokeSignerGrant,\n\tsetupBond,\n\tstake,\n\tstakeUpdate,\n\tunstake,\n\tunstakeSbtc,\n\tupdateBondRegistration,\n\tverifySignerKeyGrantOnChain,\n} from \"./actions.ts\";\nimport {\n\ttype Pox5Activation,\n\tgetPox5Activation,\n\tisPox5Active,\n} from \"./activation.ts\";\nimport type {\n\tBondAllowance,\n\tBondMembership,\n\tProtocolBond,\n\tSignerInfo,\n\tStakerInfo,\n} from \"./types.ts\";\n\n/**\n * A staker's whole PoX-5 position in ONE batched request: staker info, bond\n * membership, custodied sBTC, and the current cycle — the state a dashboard\n * or agent polls, without four round-trips.\n */\nexport type StakerState = {\n\tstakerInfo: ClarityValue;\n\tbondMembership: ClarityValue;\n\tcustodiedSbtc: ClarityValue;\n\tcurrentCycle: ClarityValue;\n};\n\nasync function getStakerState(\n\tclient: Client,\n\tstaker: string,\n): Promise<StakerState> {\n\tconst contract = pox5ContractId(client);\n\tconst results = await multicall(client, {\n\t\tallowFailure: false,\n\t\tcalls: [\n\t\t\t{\n\t\t\t\tcontract,\n\t\t\t\tfunctionName: \"get-staker-info\",\n\t\t\t\targs: [Cl.principal(staker)],\n\t\t\t},\n\t\t\t{\n\t\t\t\tcontract,\n\t\t\t\tfunctionName: \"get-bond-membership\",\n\t\t\t\targs: [Cl.principal(staker)],\n\t\t\t},\n\t\t\t{\n\t\t\t\tcontract,\n\t\t\t\tfunctionName: \"get-staker-custodied-sbtc\",\n\t\t\t\targs: [Cl.principal(staker)],\n\t\t\t},\n\t\t\t{ contract, functionName: \"current-pox-reward-cycle\", args: [] },\n\t\t],\n\t});\n\tconst [stakerInfo, bondMembership, custodiedSbtc, currentCycle] =\n\t\tresults as ClarityValue[];\n\treturn {\n\t\tstakerInfo: stakerInfo as ClarityValue,\n\t\tbondMembership: bondMembership as ClarityValue,\n\t\tcustodiedSbtc: custodiedSbtc as ClarityValue,\n\t\tcurrentCycle: currentCycle as ClarityValue,\n\t};\n}\n\n/** Actions provided by the pox5 extension. */\nexport type Pox5Actions = {\n\tpox5: {\n\t\t// activation\n\t\tisActive: () => Promise<boolean>;\n\t\tgetActivation: () => Promise<Pox5Activation | undefined>;\n\t\tcontractId: () => string;\n\t\t// batched state\n\t\tgetStakerState: (staker: string) => Promise<StakerState>;\n\t\t// reads\n\t\tgetStakerInfo: (staker: string) => Promise<StakerInfo>;\n\t\tgetBondMembership: (staker: string) => Promise<BondMembership>;\n\t\tgetProtocolBond: (bondIndex: IntegerType) => Promise<ProtocolBond>;\n\t\tgetBondAllowance: (\n\t\t\tbondIndex: IntegerType,\n\t\t\tstaker: string,\n\t\t) => Promise<BondAllowance>;\n\t\tgetTotalSbtcStakedForBond: (bondIndex: IntegerType) => Promise<bigint>;\n\t\tgetStakerCustodiedSbtc: (staker: string) => Promise<bigint>;\n\t\thasAnnouncedL1EarlyExit: (\n\t\t\tbondIndex: IntegerType,\n\t\t\tstaker: string,\n\t\t) => Promise<boolean>;\n\t\tgetBondL1UnlockHeight: (bondIndex: IntegerType) => Promise<bigint>;\n\t\tgetSignerInfo: (signer: string) => Promise<SignerInfo>;\n\t\tverifySignerKeyGrant: (\n\t\t\tsignerManager: string,\n\t\t\tsignerKey: Uint8Array | string,\n\t\t) => Promise<boolean>;\n\t\tgetCurrentRewardCycle: () => Promise<bigint>;\n\t\tgetFirstRewardCycle: () => Promise<bigint>;\n\t\t// wallet actions (txids; pair with waitForTransactionReceipt)\n\t\tsetupBond: (params: SetupBondParams) => Promise<string>;\n\t\tregisterForBond: (params: RegisterForBondParams) => Promise<string>;\n\t\tupdateBondRegistration: (\n\t\t\tparams: UpdateBondRegistrationParams,\n\t\t) => Promise<string>;\n\t\tstake: (params: StakeParams) => Promise<string>;\n\t\tstakeUpdate: (params: StakeUpdateParams) => Promise<string>;\n\t\tunstake: (params: UnstakeParams) => Promise<string>;\n\t\tunstakeSbtc: (params: UnstakeSbtcParams) => Promise<string>;\n\t\tannounceL1EarlyExit: (params: AnnounceL1EarlyExitParams) => Promise<string>;\n\t\tcalculateRewards: (params: CalculateRewardsParams) => Promise<string>;\n\t\tclaimRewards: (params: ClaimRewardsParams) => Promise<string>;\n\t\tclaimStakerRewardsForSigner: (\n\t\t\tparams: ClaimStakerRewardsForSignerParams,\n\t\t) => Promise<string>;\n\t\tgrantSignerKey: (params: GrantSignerKeyParams) => Promise<string>;\n\t\trevokeSignerGrant: (params: RevokeSignerGrantParams) => Promise<string>;\n\t};\n};\n\n/**\n * PoX-5 extension for the Stacks client.\n *\n * @example\n * const client = createWalletClient({ chain: mainnet, transport: http(), account })\n * .extend(pox5());\n *\n * if (await client.pox5.isActive()) {\n * const txid = await client.pox5.stake({\n * signerManager: \"SP….signer-mgr\",\n * amountUstx: 100_000_000_000n,\n * numCycles: 12,\n * startBurnHeight: 960_231,\n * fee: \"low\",\n * });\n * await client.waitForTransactionReceipt({ txid });\n * }\n */\nexport function pox5(): (client: Client) => Pox5Actions {\n\treturn (client: Client) => ({\n\t\tpox5: {\n\t\t\tisActive: () => isPox5Active(client),\n\t\t\tgetActivation: () => getPox5Activation(client),\n\t\t\tcontractId: () => pox5ContractId(client),\n\t\t\tgetStakerState: (staker) => getStakerState(client, staker),\n\t\t\tgetStakerInfo: (staker) => getStakerInfo(client, staker),\n\t\t\tgetBondMembership: (staker) => getBondMembership(client, staker),\n\t\t\tgetProtocolBond: (bondIndex) => getProtocolBond(client, bondIndex),\n\t\t\tgetBondAllowance: (bondIndex, staker) =>\n\t\t\t\tgetBondAllowance(client, bondIndex, staker),\n\t\t\tgetTotalSbtcStakedForBond: (bondIndex) =>\n\t\t\t\tgetTotalSbtcStakedForBond(client, bondIndex),\n\t\t\tgetStakerCustodiedSbtc: (staker) =>\n\t\t\t\tgetStakerCustodiedSbtc(client, staker),\n\t\t\thasAnnouncedL1EarlyExit: (bondIndex, staker) =>\n\t\t\t\thasAnnouncedL1EarlyExit(client, bondIndex, staker),\n\t\t\tgetBondL1UnlockHeight: (bondIndex) =>\n\t\t\t\tgetBondL1UnlockHeight(client, bondIndex),\n\t\t\tgetSignerInfo: (signer) => getSignerInfo(client, signer),\n\t\t\tverifySignerKeyGrant: (signerManager, signerKey) =>\n\t\t\t\tverifySignerKeyGrantOnChain(client, signerManager, signerKey),\n\t\t\tgetCurrentRewardCycle: () => getCurrentRewardCycle(client),\n\t\t\tgetFirstRewardCycle: () => getFirstPox5RewardCycle(client),\n\t\t\tsetupBond: (params) => setupBond(client, params),\n\t\t\tregisterForBond: (params) => registerForBond(client, params),\n\t\t\tupdateBondRegistration: (params) =>\n\t\t\t\tupdateBondRegistration(client, params),\n\t\t\tstake: (params) => stake(client, params),\n\t\t\tstakeUpdate: (params) => stakeUpdate(client, params),\n\t\t\tunstake: (params) => unstake(client, params),\n\t\t\tunstakeSbtc: (params) => unstakeSbtc(client, params),\n\t\t\tannounceL1EarlyExit: (params) => announceL1EarlyExit(client, params),\n\t\t\tcalculateRewards: (params) => calculateRewards(client, params),\n\t\t\tclaimRewards: (params) => claimRewards(client, params),\n\t\t\tclaimStakerRewardsForSigner: (params) =>\n\t\t\t\tclaimStakerRewardsForSigner(client, params),\n\t\t\tgrantSignerKey: (params) => grantSignerKey(client, params),\n\t\t\trevokeSignerGrant: (params) => revokeSignerGrant(client, params),\n\t\t},\n\t});\n}\n"
|
|
13
13
|
],
|
|
14
|
-
"mappings": "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",
|
|
15
|
-
"debugId": "
|
|
14
|
+
"mappings": "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",
|
|
15
|
+
"debugId": "978790117B98779D64756E2164756E21",
|
|
16
16
|
"names": []
|
|
17
17
|
}
|