import { ChangeEvent, RefObject } from 'react'; interface UsePhotoCaptureOptions { /** Multipart upload endpoint. Default '/api/uploads/wall-photos'. */ uploadEndpoint?: string; /** Camera countdown seconds before capture. Default 3. */ countdownSeconds?: number; /** JPEG quality for in-browser captures (0..1). Default 0.9. */ jpegQuality?: number; } interface UsePhotoCaptureResult { photoUrl: string; photoPreview: string; uploading: boolean; cameraOpen: boolean; cameraError: string; countdown: number | null; flashVisible: boolean; openCamera: () => Promise; takePhoto: () => void; captureFrame: () => void; removePhoto: () => void; handlePhotoSelect: (e: ChangeEvent) => Promise; fileInputRef: RefObject; videoRef: RefObject; canvasRef: RefObject; } /** * Pure UI state for the camera + file-upload UX shared by every wall component. * Returns the photo URL (uploaded), an in-browser preview, and refs the consumer * wires into its ``, `