/** sha256(canonicalize(obj)) as raw 32 bytes. */ export declare function leafHash(obj: unknown): Buffer; /** Build a balanced binary Merkle tree over arbitrary leaf hashes and * return the root as raw bytes. Leaves and internal nodes are domain- * separated; an odd trailing node is promoted unchanged (never * duplicated) to avoid the CVE-2012-2459 duplicate-leaf collision. * Throws on empty input — the caller is responsible for using the * empty-axis convention in that case. */ export declare function buildMerkleRoot(leaves: Buffer[]): Buffer; /** Returns the sibling hashes (bottom-up) required to reconstruct the * root from `leaves[targetIndex]`. The returned hex strings are 32-byte * sha256 digests. Verification also needs the leaf index so the * verifier knows which side of each hashNode the sibling sits on — * {@link verifyMerklePath} takes that argument. */ export declare function buildContributorMerklePath(leaves: Buffer[], targetIndex: number): string[]; /** Reconstruct the Merkle root from (leaf, leafIndex, path) and compare * against `expectedRootHex`. Returns a boolean. Hex comparison is done * lowercase-insensitively. */ export declare function verifyMerklePath(leaf: Buffer, leafIndex: number, path: string[], expectedRootHex: string): boolean; /** Convenience: the canonical empty-axis merkle root (I-C5). */ export declare function emptyAxisMerkleRoot(): string; //# sourceMappingURL=merkle.d.ts.map