/**
 * Worker Auto-Scaler
 * Automatic worker scaling based on queue depth, resource usage, and cost optimization
 * Sealed namespace for immutability
 */
export type ScalingDecision = {
    workerName: string;
    action: 'scale-up' | 'scale-down' | 'no-change';
    currentConcurrency: number;
    targetConcurrency: number;
    reason: string;
    metrics: {
        queueDepth: number;
        avgProcessingTime: number;
        cpuUsage: number;
        memoryUsage: number;
        errorRate: number;
        costPerHour: number;
    };
    timestamp: Date;
};
export type ScalingPolicy = {
    minConcurrency: number;
    maxConcurrency: number;
    scaleUpThreshold: {
        queueDepth: number;
        cpuUsage: number;
        memoryUsage: number;
    };
    scaleDownThreshold: {
        queueDepth: number;
        cpuUsage: number;
        memoryUsage: number;
    };
    cooldownPeriod: number;
    aggressiveness: 'conservative' | 'moderate' | 'aggressive';
};
export type CostOptimizationStrategy = {
    enabled: boolean;
    maxCostPerHour: number;
    preferSpotInstances: boolean;
    offPeakSchedule?: {
        start: string;
        end: string;
        timezone: string;
        reductionPercentage: number;
    };
    budgetAlerts: {
        dailyLimit: number;
        weeklyLimit: number;
        monthlyLimit: number;
    };
};
export type AutoScalerConfig = {
    enabled: boolean;
    checkInterval: number;
    scalingPolicies: Map<string, ScalingPolicy>;
    costOptimization: CostOptimizationStrategy;
};
/**
 * Worker Auto-Scaler - Sealed namespace
 */
export declare const AutoScaler: Readonly<{
    /**
     * Initialize auto-scaler with configuration
     */
    initialize(autoScalerConfig: AutoScalerConfig): void;
    /**
     * Start auto-scaling checks
     */
    start(): void;
    /**
     * Stop auto-scaling checks
     */
    stop(): void;
    /**
     * Evaluate scaling decision for a worker
     */
    evaluate(workerName: string, metrics: ScalingDecision["metrics"]): ScalingDecision;
    /**
     * Get last scaling decision
     */
    getLastDecision(workerName: string): ScalingDecision | null;
    /**
     * Get scaling history
     */
    getHistory(workerName: string, limit?: number): ReadonlyArray<ScalingDecision>;
    /**
     * Clear scaling history for a worker
     */
    clearHistory(workerName: string): void;
    /**
     * Get cost summary
     */
    getCostSummary(): {
        currentHourlyCost: number;
        dailyCost: number;
        weeklyCost: number;
        monthlyCost: number;
        budgetLimits: CostOptimizationStrategy["budgetAlerts"];
        utilizationPercentage: {
            daily: number;
            weekly: number;
            monthly: number;
        };
    };
    /**
     * Set scaling policy for a worker
     */
    setScalingPolicy(workerName: string, policy: ScalingPolicy): void;
    /**
     * Get scaling policy for a worker
     */
    getScalingPolicy(workerName: string): ScalingPolicy | null;
    /**
     * Check if currently in off-peak period
     */
    isOffPeak(): boolean;
    /**
     * Get configuration
     */
    getConfig(): AutoScalerConfig | null;
    /**
     * Shutdown
     */
    shutdown(): void;
}>;
//# sourceMappingURL=AutoScaler.d.ts.map