/** * Debug Collector - Tracks rendering information for the debug panel */ export interface TemplateInfo { name: string; type: 'root' | 'extends' | 'include'; parent?: string; renderTime?: number; } export interface FilterUsage { name: string; count: number; } export interface ContextValue { type: string; preview: string; value: any; expandable: boolean; children?: Record; } export interface QueryInfo { /** SQL query or operation name */ sql: string; /** Query parameters */ params?: any[]; /** Duration in milliseconds */ duration: number; /** Number of rows returned */ rows?: number; /** Source ORM (drizzle, prisma, etc.) */ source?: string; /** Timestamp when query was executed */ timestamp: number; /** Whether this query was detected as part of N+1 */ isN1?: boolean; } export interface QueryStats { /** Total number of queries */ count: number; /** Total duration of all queries */ totalDuration: number; /** Number of slow queries (> 100ms) */ slowCount: number; /** Number of N+1 queries detected */ n1Count: number; /** Queries grouped by similar SQL for N+1 detection */ queryCounts: Map; } export interface DebugData { startTime: number; endTime?: number; totalTime?: number; lexerTime?: number; parserTime?: number; renderTime?: number; templateChain: TemplateInfo[]; rootTemplate?: string; mode: 'runtime' | 'aot'; isAsync: boolean; contextKeys: string[]; contextSnapshot: Record; filtersUsed: Map; testsUsed: Map; cacheHits: number; cacheMisses: number; queries: QueryInfo[]; queryStats: QueryStats; warnings: string[]; } export declare class DebugCollector { private data; constructor(); startLexer(): void; endLexer(): void; startParser(): void; endParser(): void; startRender(): void; endRender(): void; addTemplate(name: string, type: 'root' | 'extends' | 'include', parent?: string): void; setMode(mode: 'runtime' | 'aot'): void; setAsync(isAsync: boolean): void; captureContext(context: Record): void; private captureValue; private isExpandable; private getType; private getPreview; recordFilter(name: string): void; recordTest(name: string): void; recordCacheHit(): void; recordCacheMiss(): void; addWarning(message: string): void; /** * Record a database query for telemetry * @param query Query information */ recordQuery(query: Omit): void; /** * Normalize SQL query for comparison (removes specific values) */ private normalizeQuery; /** * Get query statistics */ getQueryStats(): QueryStats; getData(): DebugData; getSummary(): { totalTime: number; templateCount: number; filterCount: number; mode: string; }; } export declare function startDebugCollection(): DebugCollector; export declare function getDebugCollector(): DebugCollector | null; export declare function endDebugCollection(): DebugData | null; //# sourceMappingURL=collector.d.ts.map