export interface CodeRef {
    chunkId: string;
    codebaseId: string;
    filePath: string;
    lineRange?: {
        start: number;
        end: number;
    };
    symbol?: string;
}
interface Pattern {
    text: string;
    hash: string;
    kind: 'exact' | 'line' | 'sliding' | 'canary';
    codeRef?: CodeRef;
}
export interface LlmEchoStats {
    bytesProcessed: number;
    hits: Array<{
        patternHash: string;
        patternKind: Pattern['kind'];
        codeRef?: CodeRef;
        replacement: string;
        atOffset: number;
    }>;
    redactedBytes: number;
}
export declare class LLMEchoOutputStream {
    private readonly maxPatternLength;
    private patterns;
    private buffer;
    private destroyed;
    private bytesProcessed;
    private redactedBytes;
    private hits;
    constructor(maxPatternLength?: number);
    registerSnippet(snippet: string, ref: CodeRef): void;
    registerCanary(canary: string): void;
    write(tokenChunk: string | Buffer): string;
    flush(): string;
    stats(): LlmEchoStats;
    destroy(): void;
    private addPattern;
    private sortPatterns;
    private redact;
    private assertActive;
}
export {};
//# sourceMappingURL=llmEchoOutputFilter.d.ts.map