import type { DirectorySyncEvent, IDirectoryConfig, Storable, CronLock, IWebhookEventsLogger, JacksonOptionWithRequiredLogger } from '../../typings';
declare enum EventStatus {
    PENDING = "PENDING",
    FAILED = "FAILED",
    PROCESSING = "PROCESSING"
}
interface QueuedEvent {
    event: DirectorySyncEvent;
    id: string;
    retry_count: number;
    status: EventStatus;
    created_at: string;
}
interface DirectoryEventsParams {
    opts: JacksonOptionWithRequiredLogger;
    eventStore: Storable;
    eventLock: CronLock;
    directories: IDirectoryConfig;
    webhookLogs: IWebhookEventsLogger;
}
export declare class EventProcessor {
    private eventStore;
    private eventLock;
    private opts;
    private directories;
    private webhookLogs;
    private cronInterval;
    constructor({ opts, eventStore, eventLock, directories, webhookLogs }: DirectoryEventsParams);
    push(event: DirectorySyncEvent): Promise<QueuedEvent>;
    private _process;
    process(): Promise<void>;
    fetchNextBatch(offset: number, limit: number): Promise<QueuedEvent[]>;
    private send;
    private delete;
    private markAsFailed;
    private logWebhookEvent;
    private notifyAllEventsFailed;
    scheduleWorker(): Promise<void>;
}
export {};
