import { BytesLike, HexString } from './bytes'; import { MultiProof } from './core'; import { LeafHash, NodeHash } from './hashes'; export interface MerkleTreeData { format: string; tree: HexString[]; values: { value: T; treeIndex: number; }[]; } export interface MerkleTree { root: HexString; length: number; at(index: number): T | undefined; render(): string; dump(): MerkleTreeData; entries(): Iterable<[number, T]>; validate(): void; leafHash(leaf: T): HexString; leafLookup(leaf: T): number; getProof(leaf: number | T): HexString[]; getMultiProof(leaves: (number | T)[]): MultiProof; verify(leaf: number | T, proof: HexString[]): boolean; verifyMultiProof(multiproof: MultiProof): boolean; } export declare abstract class MerkleTreeImpl implements MerkleTree { protected readonly tree: HexString[]; protected readonly values: MerkleTreeData['values']; readonly leafHash: LeafHash; protected readonly nodeHash?: NodeHash | undefined; private readonly hashLookup; protected constructor(tree: HexString[], values: MerkleTreeData['values'], leafHash: LeafHash, nodeHash?: NodeHash | undefined); protected static prepare(values: T[], options: Partial<{ sortLeaves: boolean; }> | undefined, leafHash: LeafHash, nodeHash?: NodeHash): [tree: HexString[], indexedValues: MerkleTreeData['values']]; get root(): HexString; get length(): number; at(index: number): T | undefined; abstract dump(): MerkleTreeData; render(): string; entries(): Iterable<[number, T]>; validate(): void; leafLookup(leaf: T): number; getProof(leaf: number | T): HexString[]; getMultiProof(leaves: (number | T)[]): MultiProof; verify(leaf: number | T, proof: HexString[]): boolean; verifyMultiProof(multiproof: MultiProof): boolean; private _validateValueAt; private _leafHash; private _verify; private _verifyMultiProof; } //# sourceMappingURL=merkletree.d.ts.map