import { type ITerminal } from '@rushstack/terminal';
import type { RushConfiguration } from '../api/RushConfiguration';
export interface IRushAlertsOptions {
    terminal: ITerminal;
    rushJsonFolder: string;
    rushAlertsConfig: IRushAlertsConfig | undefined;
    rushAlertsState: IRushAlertsState | undefined;
    rushAlertsConfigFilePath: string;
    rushAlertsStateFilePath: string;
}
interface IRushAlertsConfig {
    alerts: Array<IRushAlertsConfigEntry>;
}
interface IRushAlertsConfigEntry {
    alertId: string;
    title: string;
    message: Array<string>;
    detailsUrl: string;
    startTime: string;
    endTime: string;
    conditionScript?: string;
    priority?: AlertPriority;
    maximumDisplayInterval?: AlertDisplayInterval;
}
interface IRushAlertsState {
    [alertId: string]: IRushAlertStateEntry;
}
interface IRushAlertStateEntry {
    lastDisplayTime?: string;
    snooze?: boolean;
    snoozeEndTime?: string;
}
declare const enum AlertDisplayInterval {
    ALWAYS = "always",
    MONTHLY = "monthly",
    WEEKLY = "weekly",
    DAILY = "daily",
    HOURLY = "hourly"
}
declare const enum AlertPriority {
    HIGH = "high",
    NORMAL = "normal",
    LOW = "low"
}
export declare class RushAlerts {
    private readonly _terminal;
    private readonly _rushAlertsConfig;
    private readonly _rushAlertsState;
    private readonly _rushJsonFolder;
    readonly rushAlertsStateFilePath: string;
    readonly rushAlertsConfigFilePath: string;
    static readonly ALERT_PRIORITY: string[];
    static readonly alertDisplayIntervalDurations: Map<AlertDisplayInterval, number>;
    static readonly alertTriggerActions: string[];
    constructor(options: IRushAlertsOptions);
    static loadFromConfigurationAsync(rushConfiguration: RushConfiguration, terminal: ITerminal): Promise<RushAlerts>;
    private _ensureAlertStateIsUpToDate;
    printAlertsAsync(): Promise<void>;
    printAllAlertsAsync(): Promise<void>;
    private _printAlerts;
    snoozeAlertsByAlertIdAsync(alertId: string, forever?: boolean): Promise<void>;
    private _selectAlertByPriorityAsync;
    private static _parseDate;
    private _isSnoozing;
    private _isAlertValidAsync;
    private _printMessageInBoxStyle;
    private _writeRushAlertStateAsync;
}
export {};
//# sourceMappingURL=RushAlerts.d.ts.map