import { ethers } from "ethers";
import type { RLNInstance } from "../rln.js";
import { RLNBaseContract } from "./rln_base_contract.js";
import { RLNContractInitOptions } from "./types.js";
export declare class RLNContract extends RLNBaseContract {
    private instance;
    private merkleRootTracker;
    /**
     * Asynchronous initializer for RLNContract.
     * Allows injecting a mocked contract for testing purposes.
     */
    static init(rlnInstance: RLNInstance, options: RLNContractInitOptions): Promise<RLNContract>;
    private constructor();
    processEvents(events: ethers.Event[]): void;
    private insertMembers;
    private removeMembers;
}
