import type { ApprenticeshipCycleStore } from './ApprenticeshipCycleStore.js';
export interface ApprenticeshipCycleSlaConfig {
    enabled?: boolean;
    overdueAfterMinutes?: number;
}
export interface ApprenticeshipCycleSlaOverdue {
    id: string;
    instanceId: string;
    cycleNumber: number;
    ageMinutes: number;
    createdAt: string;
}
export interface ApprenticeshipCycleSlaAttention {
    id: string;
    title: string;
    summary: string;
    category: string;
    priority: 'LOW' | 'NORMAL' | 'HIGH' | 'URGENT';
    sourceContext: string;
}
export interface ApprenticeshipCycleSlaMonitorOptions {
    store: Pick<ApprenticeshipCycleStore, 'list'>;
    config?: ApprenticeshipCycleSlaConfig;
    now?: () => Date;
    raiseAttention?: (item: ApprenticeshipCycleSlaAttention) => Promise<unknown> | unknown;
}
export interface ApprenticeshipCycleSlaTickResult {
    enabled: boolean;
    overdue: ApprenticeshipCycleSlaOverdue[];
    raised: string[];
}
export declare class ApprenticeshipCycleSlaMonitor {
    private readonly store;
    private readonly config;
    private readonly now;
    private readonly raiseAttention;
    private readonly raisedCycleIds;
    constructor(opts: ApprenticeshipCycleSlaMonitorOptions);
    get enabled(): boolean;
    listOverdue(instanceId?: string): ApprenticeshipCycleSlaOverdue[];
    tick(instanceId?: string): Promise<ApprenticeshipCycleSlaTickResult>;
}
//# sourceMappingURL=ApprenticeshipCycleSlaMonitor.d.ts.map