/** 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. Odd levels duplicate the trailing node
 *  (the standard fold convention). 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