import IORedis from "ioredis";
import { MainEmitter } from "./emitter";
export declare enum EmitterEnum {
    NOT_ELECTED = "notElected",
    ELECTED = "elected",
    DEMOTED = "demoted",
    ERROR = "error",
    RENEW = "renew"
}
export declare class SafeRedisLeader {
    isStarted: boolean;
    wasLeading: boolean;
    canLead: boolean;
    emitter: MainEmitter;
    id: string;
    renewTimeoutId: ReturnType<typeof setTimeout>;
    electTimeoutId: ReturnType<typeof setTimeout>;
    asyncRedis: IORedis.Redis;
    ttl: number;
    wait: number;
    key: IORedis.KeyType;
    constructor(asyncRedis: IORedis.Redis, ttl: number, wait: number, key: IORedis.KeyType);
    renew(): Promise<void>;
    runElection(): Promise<void>;
    elect(): Promise<void>;
    isLeader(): Promise<boolean>;
    stop(): Promise<void>;
    on(name: string, fn: () => void): void;
    off(name: string, fn: () => void): void;
    once(name: string, fn: () => void): void;
    removeAllListeners(): void;
    shutdown(): Promise<void>;
}
