export interface Leaf {
    val: bigint;
    nextVal: bigint;
    nextIdx: number;
}
export interface NonMembershipProof {
    query: bigint;
    preLeaf: Leaf;
    path: bigint[];
    directions: number[];
    root: bigint;
}
export interface SerializedIMT {
    depth: number;
    nodes: string[][];
    leaves: {
        val: string;
        nextVal: string;
        nextIdx: number;
    }[];
}
export declare class IndexedMerkleTree {
    readonly depth = 32;
    readonly zeros: bigint[];
    readonly zero: bigint;
    private nodes;
    private leaves;
    constructor();
    new(): Promise<IndexedMerkleTree>;
    private leafHash;
    private parentHash;
    private toField;
    private predecessorIndex;
    private setNode;
    insert(x: bigint): Promise<void>;
    private updateLeafHash;
    get root(): bigint;
    createNonMembershipProof(x: bigint): NonMembershipProof;
    verifyNonMembershipProof(p: NonMembershipProof): boolean;
    serialize(): SerializedIMT;
    static deserialize(data: SerializedIMT): IndexedMerkleTree;
    saveToFile(filePath: string): Promise<void>;
    static loadFromFile(filePath: string): IndexedMerkleTree;
    get size(): number;
    getLeaves(): Leaf[];
    getNodesAtLevel(level: number): bigint[];
}
//# sourceMappingURL=index.d.ts.map