export interface LoopNoiseState {
    trimCount: number;
    nudgeCount: number;
    repairCount: number;
    summaryGateCount: number;
    compactionCount: number;
    targetedCheckCount: number;
    synthesisCount: number;
    fallbackSynthesisCount: number;
    hardStopCount: number;
    constrainedContinuationCount: number;
}
export interface RoutedConversationNotice {
    footerNotice: string | null;
    transcriptEntry: string | null;
    nextState: LoopNoiseState;
    /**
     * Tri-state phase transition signal. Discriminate with `!== undefined`, NOT truthy-check.
     *   absent  → preserve current frontend phase (footer-only noise: Loop budget, Nudge, Summary gate, Conv repair, Context compacted)
     *   null    → explicit clear to default (Constrained continuation reopens exploration)
     *   value   → set phase (Targeted check, Synthesis phase, Fallback synthesis, Hard stop)
     * Loop budget / Summary gate can fire mid-synthesis; a truthy check would flicker the UI back to default during "Synthesizing final answer".
     */
    workflowPhase?: 'targeted_check' | 'synthesizing' | 'fallback_synthesizing' | 'hard_stop' | null;
}
export declare function routeConversationNotice(message: string, state: LoopNoiseState): RoutedConversationNotice;
export declare function summarizeLoopNoise(state: LoopNoiseState): string[];
