export interface QueryProfile { sql: string; query?: string; database?: 'postgres' | 'mongodb' | 'mysql'; operation?: string; filter?: any; params?: any[]; duration: number; startTime: number; rowCount?: number; error?: string; explainPlan?: any; connection?: string; tags?: string[]; duplicatedCount?: number; planType?: string; } export interface LogProfile { level: string; message: string; context?: string; timestamp: number; } export interface CacheProfile { key: string; store: string; operation: 'get' | 'set' | 'del' | 'reset' | 'unknown'; result: 'hit' | 'miss' | 'success' | 'fail' | null; ttl?: number; duration: number; startTime: number; value?: any; } export interface HttpCallProfile { method: string; url: string; host: string; path: string; statusCode?: number; duration: number; startTime: number; requestHeaders?: Record; responseHeaders?: Record; error?: string; protocol: 'http' | 'https'; } export interface EventListenerTrace { name: string; duration: number; startTime: number; status: 'success' | 'error'; error?: string; file?: string; } export interface EventProfile { id: string; eventName: string; payloadPreview: string; emittedAt: number; isAsync: boolean; emitterLocation: string; emitterFile: string; listeners: EventListenerTrace[]; totalDuration: number; status: 'pending' | 'success' | 'error'; error?: string; parentEventId?: string; requestId?: string; depth: number; childEventIds: string[]; } export interface RequestProfile { id: string; method: string; url: string; route?: string; controller?: string; handler?: string; startTime: number; endTime?: number; duration?: number; statusCode?: number; memory?: { rss: number; heapTotal: number; heapUsed: number; external: number; arrayBuffers: number; }; queries: QueryProfile[]; logs: LogProfile[]; cache?: CacheProfile[]; httpCalls?: HttpCallProfile[]; timestamp: number; requestHeaders?: Record; requestBody?: any; exception?: { message: string; stack: string; }; timings?: { total: number; middleware: number; handler: number; }; }