#pragma once

#include <memory>
#include <optional>

#include "features/esp/contracts/EspTypes.h"
#include "foundation/math/CameraFrame.h"

namespace ta::features::esp::contracts
{
    class IEspQueries
    {
    public:
        virtual ~IEspQueries() = default;
        [[nodiscard]] virtual std::shared_ptr<const EspSettingsSnapshot> settings() const noexcept = 0;
        [[nodiscard]] virtual std::shared_ptr<const EspWorldSnapshot> world() const noexcept = 0;
        [[nodiscard]] virtual std::optional<ta::foundation::math::CameraFrame> camera() const = 0;
    };
}
