/**
 * Budget Alert Manager
 *
 * Monitors session and budget costs, emitting alerts when
 * spending approaches or exceeds configured thresholds.
 *
 * Default thresholds:
 * - Warning at 70% of budget
 * - Critical at 90% of budget
 * - Limit reached at 100%
 *
 * @module analytics
 */
import { EventEmitter } from 'events';
export interface BudgetAlert {
    /** Alert severity level */
    type: 'warning' | 'critical' | 'limit_reached';
    /** Human-readable alert message */
    message: string;
    /** Current accumulated cost in USD */
    currentCost: number;
    /** Budget limit in USD */
    limit: number;
    /** Percentage of budget consumed (0-100+) */
    percentage: number;
}
export interface BudgetAlertConfig {
    /** Percentage (0-1) at which to emit a warning alert. Default: 0.7 */
    warningThreshold: number;
    /** Percentage (0-1) at which to emit a critical alert. Default: 0.9 */
    criticalThreshold: number;
}
/**
 * Budget Alert Manager
 *
 * Tracks spending against a budget limit and emits alerts
 * when thresholds are crossed. Alerts are deduplicated so
 * the same threshold level is only emitted once per session
 * (until reset).
 *
 * Events:
 * - 'alert' - Emitted with a BudgetAlert when a threshold is crossed
 */
export declare class BudgetAlertManager extends EventEmitter {
    private config;
    private alerts;
    private emittedTypes;
    constructor(config?: Partial<BudgetAlertConfig>);
    /**
     * Check current cost against limits and return an alert if a threshold is crossed.
     *
     * Alerts are deduplicated: once an alert of a given type has been emitted,
     * it will not be emitted again until `reset()` is called.
     *
     * @param currentCost - Current accumulated cost in USD
     * @param limit - Budget limit in USD
     * @returns A BudgetAlert if a threshold was crossed, or null
     */
    check(currentCost: number, limit: number): BudgetAlert | null;
    /**
     * Get the history of all alerts emitted in this session.
     */
    getAlerts(): BudgetAlert[];
    /**
     * Reset all alert state, clearing history and deduplication tracking.
     * This allows alerts to fire again for the same thresholds.
     */
    reset(): void;
    /**
     * Get the current configuration.
     */
    getConfig(): BudgetAlertConfig;
    /**
     * Update configuration thresholds.
     */
    updateConfig(config: Partial<BudgetAlertConfig>): void;
    /**
     * Record an alert and emit the 'alert' event.
     */
    private recordAlert;
}
