import { QueueName } from "../events/types/event-types";
/**
 * Configuración específica para cada cola
 */
export interface QueueConfig {
    /** Nombre de la cola */
    name: string;
    /** Configuraciones por defecto para los jobs */
    defaultJobOptions: {
        /** Número máximo de intentos */
        attempts: number;
        /** Configuración de backoff para reintentos */
        backoff: {
            type: "fixed" | "exponential";
            delay: number;
        };
        /** TTL del job en ms */
        ttl?: number;
        /** Delay antes de procesar */
        delay?: number;
        /** Prioridad por defecto */
        priority?: number;
    };
    /** Configuraciones del worker */
    workerOptions: {
        /** Número de trabajos concurrentes */
        concurrency: number;
        /** Configuración de rate limiting */
        limiter?: {
            /** Máximo número de jobs por período */
            max: number;
            /** Duración del período en ms */
            duration: number;
        };
        /** Configuraciones avanzadas */
        settings?: {
            /** Tiempo máximo para procesar un job */
            stalledInterval?: number;
            /** Número máximo de jobs en stalled */
            maxStalledCount?: number;
        };
    };
}
/**
 * Configuraciones para todas las colas del sistema
 */
export declare const queueConfigs: Record<QueueName, QueueConfig>;
/**
 * Configuración global de colas
 */
export declare const globalQueueConfig: {
    /** Configuración de conexión Redis */
    connection: {
        /** Prefijo para las keys de las colas */
        prefix: string;
    };
    /** Configuraciones de limpieza automática */
    cleanup: {
        /** Limpiar jobs completados después de X ms */
        removeOnComplete: number;
        /** Limpiar jobs fallidos después de X ms */
        removeOnFail: number;
        /** Intervalo de limpieza en ms */
        cleanupInterval: number;
    };
    /** Configuraciones de monitoreo */
    monitoring: {
        /** Habilitar métricas */
        enableMetrics: boolean;
        /** Intervalo de reporte de métricas */
        metricsInterval: number;
    };
};
/**
 * Obtiene la configuración para una cola específica
 */
export declare function getQueueConfig(queueName: QueueName): QueueConfig;
/**
 * Obtiene todas las configuraciones de colas
 */
export declare function getAllQueueConfigs(): Record<QueueName, QueueConfig>;
//# sourceMappingURL=queue-config.d.ts.map