interface BulkGeocodeJobData {
    userId: string;
    filters: {
        confidenceThreshold?: number;
        buildingType?: string;
        cutId?: string;
        limit?: number;
    };
    timestamp: number;
}
interface BulkGeocodeProgress {
    total: number;
    processed: number;
    improved: number;
    failed: number;
    unchanged: number;
    currentAddress?: string;
}
interface BulkGeocodeResult {
    total: number;
    processed: number;
    improved: number;
    failed: number;
    unchanged: number;
    duration: number;
}
declare class GeocodeQueueService {
    private queue;
    private worker;
    constructor();
    startWorker(): Promise<void>;
    close(): Promise<void>;
    startBulkGeocode(userId: string, filters: BulkGeocodeJobData['filters']): Promise<string>;
    getJobStatus(jobId: string): Promise<{
        id: string | undefined;
        state: "unknown" | import("bullmq").JobState;
        progress: BulkGeocodeProgress | undefined;
        result: BulkGeocodeResult;
        failedReason: string;
    }>;
    getStats(): Promise<{
        waiting: number;
        active: number;
        completed: number;
        failed: number;
    }>;
    private processBulkGeocode;
}
export declare const geocodeQueueService: GeocodeQueueService;
export {};
//# sourceMappingURL=geocode-queue.service.d.ts.map