import type { TraceData, TraceSummary, FrameMetrics, Detection } from '../../shared/types/index.js'; import type { TraceSnapshot, FrameMetricsSummary } from '../../adapters/models/index.js'; import type { AdapterCapability } from '../../adapters/interfaces/index.js'; export interface AnalyzeOptions { name: string; fpsTarget: number; sourceMapPaths?: string[]; adapterCapabilities?: AdapterCapability[]; adapterType?: string; } export interface AnalysisResult { summary: TraceSummary; detections: Detection[]; warnings?: AnalysisWarning[]; } export interface AnalysisWarning { code: string; message: string; affectedDetectors?: string[]; suggestions?: string[]; } export interface DetectionContext { fpsTarget: number; frameBudgetMs: number; frameMetrics: FrameMetrics; traceStartTime: number; traceEndTime: number; capabilities?: AdapterCapability[]; degradedMode?: boolean; } export interface TraceSnapshotDetectionContext extends DetectionContext { snapshotMetrics: FrameMetricsSummary; adapterType: string; platform: string; } export interface IDetector { readonly name: string; readonly priority: number; readonly requiredCapabilities?: AdapterCapability[]; detect(trace: TraceData, context: DetectionContext): Promise; detectFromSnapshot?(snapshot: TraceSnapshot, context: TraceSnapshotDetectionContext): Promise; } export interface IAnalyzerService { analyze(trace: TraceData, options: AnalyzeOptions): Promise; analyzeSnapshot(snapshot: TraceSnapshot, options: AnalyzeOptions): Promise; getDetectors(): IDetector[]; registerDetector(detector: IDetector): void; }