///
export declare const EMPTY_MERKLE_ROOT = "0x0000000000000000000000000000000000000000000000000000000000000000";
export declare class MerkleTree {
readonly hashFn: (element: T) => string;
private readonly elements;
private readonly bufferElementPositionIndex;
private readonly layers;
constructor(leaves: T[], hashFn: (element: T) => string);
isEmpty(): boolean;
getLayers(elements: Buffer[]): Buffer[][];
getNextLayer(elements: Buffer[]): Buffer[];
static combinedHash(first: Buffer, second: Buffer): Buffer;
getRoot(): Buffer;
getHexRoot(): string;
getProof(leaf: T): Buffer[];
getHexProof(leaf: T): string[];
leafToBuf(element: T): Buffer;
getProofRawBuf(element: Buffer): Buffer[];
getHexProofRawBuf(el: Buffer): string[];
private static getPairElement;
private static bufDedup;
private static bufArrToHexArr;
private static sortAndConcat;
}