import type { ResponsesFunctionCallOutputItem } from '../types/index.js';
export type SseProtocol = 'openai-chat' | 'openai-responses' | 'anthropic-messages' | 'gemini-chat';
export type SseStreamLike = any;
export type SseStreamInput = any;
export interface JsonToSseContext {
    requestId: string;
    model?: string;
    direction?: 'request' | 'response';
    resumeToolOutputs?: ResponsesFunctionCallOutputItem[];
}
export interface SseToJsonContext {
    requestId: string;
    model?: string;
    direction?: 'request' | 'response';
}
export interface NormalizeSseContext {
    requestId: string;
    protocol: SseProtocol;
}
export interface SseCodec {
    protocol: SseProtocol;
    convertJsonToSse(payload: unknown, context: JsonToSseContext): Promise<SseStreamLike>;
    convertSseToJson(stream: SseStreamInput, context: SseToJsonContext): Promise<unknown>;
    normalize?(stream: SseStreamInput, context: NormalizeSseContext): Promise<SseStreamInput>;
}
export declare class SseCodecRegistry {
    private readonly codecs;
    register(codec: SseCodec): void;
    get(protocol: SseProtocol): SseCodec;
    list(): SseCodec[];
}
export declare const defaultSseCodecRegistry: SseCodecRegistry;
