/**
 * Turn counting plugin with message deduplication.
 *
 * The SDK emits multiple assistant events per turn (one per content block)
 * with the same message ID. This plugin deduplicates and publishes turn
 * counts + a duplicate flag for downstream plugins.
 */
import type { Middleware, MiddlewareContext, MiddlewareStore, SDKMessage } from '../types';
export interface TurnData {
    /** Whether the current message is a duplicate of the last processed turn */
    isDuplicate: boolean;
    /** Turns in the current phase */
    phaseTurns: number;
    /** Total turns across all phases */
    totalTurns: number;
    /** Per-phase turn snapshots: [{ phase, turns }] */
    phaseSnapshots: Array<{
        phase: string;
        turns: number;
    }>;
}
export declare class TurnCounterPlugin implements Middleware {
    readonly name = "turns";
    private lastMessageId;
    private phaseTurns;
    private totalTurns;
    private isDuplicate;
    private phaseSnapshots;
    private currentPhase;
    onMessage(message: SDKMessage, _ctx: MiddlewareContext, store: MiddlewareStore): void;
    onPhaseTransition(fromPhase: string, _toPhase: string, _ctx: MiddlewareContext, store: MiddlewareStore): void;
    onFinalize(_resultMessage: SDKMessage, _totalDurationMs: number, _ctx: MiddlewareContext, store: MiddlewareStore): void;
    private getData;
}
