/// <reference types="node" />
import { EventEmitter } from 'events';
import { ThreatIndicator } from '../types';
export interface ProcessingConfig {
    maxWorkers: number;
    minWorkers: number;
    queueSize: number;
    taskTimeout: number;
    retryAttempts: number;
    scalingStrategy: 'fixed' | 'dynamic' | 'adaptive';
}
export interface Task {
    id: string;
    type: 'threat_analysis' | 'data_processing' | 'correlation' | 'enrichment';
    priority: 'low' | 'medium' | 'high' | 'critical';
    data: any;
    createdAt: Date;
    timeout?: number;
    retries?: number;
}
export interface TaskResult {
    taskId: string;
    success: boolean;
    result?: any;
    error?: string;
    processingTime: number;
    workerId: string;
    completedAt: Date;
}
export interface WorkerPoolConfig {
    maxWorkers: number;
    minWorkers: number;
    workerScript: string;
    taskTimeout: number;
    idleTimeout: number;
    autoScale: boolean;
}
declare class WorkerPool extends EventEmitter {
    private config;
    private workers;
    private taskQueue;
    private activeTasks;
    private workerStats;
    constructor(config: WorkerPoolConfig);
    private initializeWorkers;
    private createWorker;
    private handleWorkerMessage;
    private handleTaskCompletion;
    private handleTaskError;
    private handleWorkerError;
    private handleWorkerExit;
    private removeWorker;
    addTask(task: Task): void;
    private processNextTask;
    private findAvailableWorker;
    private shouldScaleUp;
    private scaleUp;
    private assignTaskToWorker;
    private handleTaskTimeout;
    getStats(): any;
    shutdown(): Promise<void>;
}
declare class DistributedProcessor extends EventEmitter {
    private config;
    private workerPool;
    private taskCounter;
    constructor(config: ProcessingConfig);
    private setupEventHandlers;
    processThreatData(threats: ThreatIndicator[]): Promise<TaskResult[]>;
    processCorrelation(data: any): Promise<TaskResult>;
    private processTasks;
    private createTask;
    getStats(): any;
    shutdown(): Promise<void>;
}
export { DistributedProcessor, WorkerPool };
//# sourceMappingURL=DistributedProcessor.d.ts.map