interface SerializationContext { sanitize?: boolean; sensitiveFields?: string[]; maxDepth?: number; timeout?: number; } interface SerializationResult { success: boolean; data?: any; error?: string; metadata: { serializer: string; complexity: 'low' | 'medium' | 'high'; duration: number; timestamp: string; }; } interface ISerializer { name: string; priority: number; canSerialize(data: any): boolean; getComplexity(data: any): 'low' | 'medium' | 'high'; serialize(data: any, context: SerializationContext): Promise; } interface SerializationStep { name: string; execute(data: any, context: SerializationContext): Promise; } interface SerializationPipeline { steps: SerializationStep[]; addStep(step: SerializationStep): void; execute(data: any, context: SerializationContext): Promise; } interface TimeoutStrategy { name: string; calculateTimeout(data: any, context: SerializationContext): number; } interface SerializationMetrics { totalSerializations: number; successfulSerializations: number; failedSerializations: number; averageDuration: number; totalDuration: number; serializerStats: Record; } export type { ISerializer, SerializationContext, SerializationMetrics, SerializationPipeline, SerializationResult, SerializationStep, TimeoutStrategy };