import { FacesAndLandmarks } from './generator-types'; export interface InferenceStats { /** Total time from frame input to output (ms) */ totalFrameTime: number; /** Time spent running the actual ML model inference (ms) */ modelInferenceTime: number; /** Time spent on pre-processing (resizing, normalizing, etc.) (ms) */ preprocessingTime?: number; /** Time spent on post-processing (masking, blending, etc.) (ms) */ postprocessingTime?: number; /** GPU/CPU queue time if measurable (ms) */ queueTime?: number; /** Frame timestamp when processing started */ frameStartTime: number; /** Frame timestamp when processing completed */ frameEndTime: number; /** Whether inference was skipped (reused previous result) */ inferenceSkipped?: boolean; } export interface IFrameInferenceResult { facesAndLandmarks: FacesAndLandmarks; gesture: Float32Array; motion: number; skipped: boolean; timestamp: number; stats?: InferenceStats; } export interface IPipeline { onFrame(timestamp: number, maskNeeded?: boolean): Promise; isLoaded(): boolean; load(): Promise; destroy(): Promise; reset(): void; }