export interface InstructionEvent { timestamp: string; // Format: "MM:SS" relative to recording start timestampMs: number; // Absolute timestamp in milliseconds from recording start category: "motion" | "angle" | "speed" | "lighting" | "yaw" | "guidance"; severity: "info" | "warning" | "error"; message: string; metrics?: { // Optional detailed metrics at the time of instruction pitch?: number; roll?: number; yaw?: number; motionScore?: number; speedKmh?: number; brightness?: number; }; } export interface VideoData { uri: string; duration?: number; size?: number; instructionEvents?: InstructionEvent[]; // Array of all instruction events during recording } export type SupportedLanguage = "english" | "arabic" | "french"; // Configuration interfaces for each utility component export interface PitchDetectorConfig { rollTolerance?: number; // Tolerance for roll angle in degrees (default: 15) pitchTolerance?: number; // Tolerance for pitch angle in degrees (default: 15) pitchVertical?: number; // Vertical pitch angle reference in degrees (default: 90) updateInterval?: number; // Update interval in milliseconds (default: 100) } export interface YawDetectorConfig { updateInterval?: number; // Update interval in milliseconds (default: 10) yawTolerance?: number; // Tolerance for yaw angle in degrees (default: 10) smoothingFactor?: number; // Smoothing factor for readings (default: 0.8) } export interface MotionDetectorConfig { updateInterval?: number; // Update interval in milliseconds (default: 100) historySize?: number; // Number of readings to keep for averaging (default: 10) excellentThreshold?: number; // Score threshold for excellent stability (default: 85) goodThreshold?: number; // Score threshold for good stability (default: 70) fairThreshold?: number; // Score threshold for fair stability (default: 50) poorThreshold?: number; // Score threshold for poor stability (default: 30) accelerationWeight?: number; // Weight for acceleration in score calculation (default: 0.6) rotationWeight?: number; // Weight for rotation in score calculation (default: 0.4) smoothingFactor?: number; // Smoothing factor for readings (default: 0.7) enableSensorFusion?: boolean; // Enable fusion of gyroscope and accelerometer (default: true) } export interface SpeedDetectorConfig { updateInterval?: number; // Update interval in milliseconds (default: 1000) historySize?: number; // Number of readings to keep for averaging (default: 10) smoothingFactor?: number; // Smoothing factor for readings (default: 0.8) enableSensorFusion?: boolean; // Enable sensor fusion (default: true) movingThreshold?: number; // Threshold for detecting movement in m/s (default: 0.5) walkingThreshold?: number; // Threshold for walking speed in m/s (default: 1.5) runningThreshold?: number; // Threshold for running speed in m/s (default: 4.0) drivingThreshold?: number; // Threshold for driving speed in m/s (default: 8.0) } export interface BrightnessDetectorConfig { updateInterval?: number; // Update interval in milliseconds (default: 3000) historySize?: number; // Number of readings to keep for averaging (default: 5) smoothingFactor?: number; // Smoothing factor for readings (default: 0.8) enableTimeBasedEstimation?: boolean; // Enable time-based brightness estimation (default: true) enableAmbientLightSensor?: boolean; // Enable ambient light sensor if available (default: true) } export interface GuidedCameraViewProps { onCameraClose?: () => void; onScreen?: boolean; terminalLogs?: boolean; onVideoSave?: (videoData: VideoData) => void; language?: SupportedLanguage; metricsUpdateInterval?: number; // Global update interval in milliseconds (default: 100ms) includeSeverityLevels?: ("info" | "warning" | "error")[]; // Which severity levels to include in instruction events (default: all) // Metrics activation props enableAngleMetrics?: boolean; // Enable pitch/roll angle detection (default: true) enableMotionMetrics?: boolean; // Enable motion stability detection (default: true) enableSpeedMetrics?: boolean; // Enable speed/movement detection (default: true) enableLightingMetrics?: boolean; // Enable brightness/lighting detection (default: true) enableYawMetrics?: boolean; // Enable compass/yaw detection (default: true) enableGuidanceMode?: boolean; // Enable guidance mode functionality (default: true) // Individual detector configuration props pitchDetectorConfig?: PitchDetectorConfig; // Configuration for pitch/roll detector yawDetectorConfig?: YawDetectorConfig; // Configuration for yaw/compass detector motionDetectorConfig?: MotionDetectorConfig; // Configuration for motion stability detector speedDetectorConfig?: SpeedDetectorConfig; // Configuration for speed/movement detector brightnessDetectorConfig?: BrightnessDetectorConfig; // Configuration for brightness/lighting detector }