#pragma once

// ==========================================================
// hover_watcher.hpp - Native Mouse Dwell & Clipboard Item Inspector Hook
// Poe2VisualTool v2.0.0 (100% C++23 Native Fusion)
// ==========================================================

#include "inspector/item_parser.hpp"
#include <functional>
#include <atomic>
#include <thread>
#include <string>

namespace inspector {

using ItemInspectedCallback = std::function<void(const ItemInspectionReport&, int, int)>;
using CursorMovedCallback = std::function<void()>;

class HoverWatcher {
public:
    HoverWatcher();
    ~HoverWatcher();

    void SetCallbacks(ItemInspectedCallback onInspected, CursorMovedCallback onMoved);
    void SetDwellTimeMs(uint32_t dwellTimeMs) { dwellTimeMs_ = dwellTimeMs; }

    bool Start();
    void Stop();
    bool IsRunning() const { return isRunning_.load(); }

    // Helper: reads current clipboard text as UTF-8 string
    static std::string ReadClipboardText();

private:
    void WorkerLoop();

    std::atomic<bool> isRunning_{false};
    std::thread workerThread_;
    uint32_t dwellTimeMs_ = 180;

    ItemInspectedCallback onInspected_;
    CursorMovedCallback onMoved_;
};

} // namespace inspector
