#ifndef CAMERA_H
#define CAMERA_H

#include <string>

struct CameraDrowsinessResult {
    bool valid = false;
    bool eyes_closed = false;
    float eye_openness_score = 0.0f;
    float baseline_score = 0.0f;
};

class Camera {
public:
    virtual void SetExplainUrl(const std::string& url, const std::string& token) = 0;
    virtual bool Capture() = 0;
    virtual bool SetHMirror(bool enabled) = 0;
    virtual bool SetVFlip(bool enabled) = 0;
    virtual bool SetSwapBytes(bool enabled) { return false; }  // Optional, default no-op
    virtual bool DetectDrowsiness(CameraDrowsinessResult& result, bool show_debug_preview = false) { return false; }
    virtual std::string Explain(const std::string& question) = 0;
};

#endif // CAMERA_H
