import * as ethers from "ethers";
import sinon from "sinon";
import type { IdentityCredential } from "../identity.js";
export declare const mockRateLimits: {
    minRate: number;
    maxRate: number;
    maxTotalRate: number;
    currentTotalRate: number;
};
type MockProvider = {
    getLogs: () => never[];
    getBlockNumber: () => Promise<number>;
    getNetwork: () => Promise<{
        chainId: number;
    }>;
};
type MockFilters = {
    MembershipRegistered: () => {
        address: string;
    };
    MembershipErased: () => {
        address: string;
    };
    MembershipExpired: () => {
        address: string;
    };
};
export declare function createMockProvider(): MockProvider;
export declare function createMockFilters(): MockFilters;
type ContractOverrides = Partial<{
    filters: Record<string, unknown>;
    [key: string]: unknown;
}>;
export declare function createMockRegistryContract(overrides?: ContractOverrides): ethers.Contract;
export declare function mockRLNRegisteredEvent(idCommitment?: string): ethers.Event;
export declare function formatIdCommitment(idCommitmentBigInt: bigint): string;
export declare function createRegisterStub(identity: IdentityCredential): sinon.SinonStub;
export declare function verifyRegistration(decryptedCredentials: any, identity: IdentityCredential, registerStub: sinon.SinonStub, insertMemberSpy: sinon.SinonStub): void;
export {};
