/**
 * 基础事件序列化器接口
 * 定义统一的序列化/反序列化规范
 */
/**
 * 通用事件序列化器接口
 * @template TEvent 事件类型
 */
export interface EventSerializer<TEvent> {
    /**
     * 将事件对象序列化为SSE wire格式字符串
     * @param event 要序列化的事件对象
     * @returns SSE wire格式的字符串
     */
    serializeToWire(event: TEvent): string;
    /**
     * 从SSE wire格式字符串反序列化为事件对象
     * @param wireData SSE wire格式的字符串
     * @returns 反序列化后的事件对象
     */
    deserializeFromWire(wireData: string): TEvent;
    /**
     * 验证SSE wire格式是否有效
     * @param wireData 要验证的SSE wire格式字符串
     * @returns 格式是否有效
     */
    validateWireFormat(wireData: string): boolean;
}
/**
 * 序列化选项配置
 */
export interface SerializationOptions {
    /**
     * 是否包含时间戳
     */
    includeTimestamp?: boolean;
    /**
     * 是否包含事件ID
     */
    includeEventId?: boolean;
    /**
     * 自定义事件ID生成器
     */
    eventIdGenerator?: () => string;
    /**
     * JSON序列化配置
     */
    jsonReplacer?: (key: string, value: any) => any;
    /**
     * JSON反序列化配置
     */
    jsonReviver?: (key: string, value: any) => any;
}
/**
 * 基础事件序列化器抽象类
 * 提供通用的序列化功能实现
 */
export declare abstract class BaseEventSerializer<TEvent> implements EventSerializer<TEvent> {
    protected options: SerializationOptions;
    constructor(options?: SerializationOptions);
    /**
     * 序列化事件为SSE wire格式
     */
    serializeToWire(event: TEvent): string;
    /**
     * 从SSE wire格式反序列化事件
     */
    deserializeFromWire(wireData: string): TEvent;
    /**
     * 验证SSE wire格式
     */
    validateWireFormat(wireData: string): boolean;
    /**
     * 生成当前时间戳
     */
    protected generateTimestamp(): string;
    /**
     * 序列化数据
     */
    protected serializeData(data: any): string;
    /**
     * 反序列化数据
     */
    protected deserializeData(dataStr: string): any;
    /**
     * 从事件对象中提取事件类型
     */
    protected abstract extractEventType(event: TEvent): string;
    /**
     * 从事件对象中提取事件数据
     */
    protected abstract extractEventData(event: TEvent): any;
    /**
     * 从事件对象中提取时间戳
     */
    protected extractTimestamp(event: TEvent): string | null;
    /**
     * 从事件对象中提取事件ID
     */
    protected extractEventId(event: TEvent): string | null;
    /**
     * 创建事件对象
     */
    protected abstract createEvent(eventType: string, eventData: any, timestamp?: string | null, eventId?: string | null): TEvent;
}
/**
 * 序列化错误类
 */
export declare class SerializationError extends Error {
    readonly cause?: Error;
    readonly eventData?: any;
    constructor(message: string, cause?: Error, eventData?: any);
}
/**
 * 序列化结果
 */
export interface SerializationResult {
    /**
     * 序列化后的SSE wire格式字符串
     */
    wireData: string;
    /**
     * 序列化统计信息
     */
    stats: {
        /**
         * 序列化耗时（毫秒）
         */
        duration: number;
        /**
         * 序列化数据大小（字节）
         */
        size: number;
        /**
         * 是否成功
         */
        success: boolean;
        /**
         * 错误信息（如果有）
         */
        error?: string;
    };
}
/**
 * 批量序列化工具
 */
export declare class BatchSerializer<TEvent> {
    private serializer;
    constructor(serializer: EventSerializer<TEvent>);
    /**
     * 批量序列化事件
     */
    serializeBatch(events: TEvent[]): Promise<SerializationResult[]>;
    /**
     * 批量反序列化事件
     */
    deserializeBatch(wireDataArray: string[]): Promise<TEvent[]>;
}
