#pragma once
#include <concepts>
#include <cstdint>
#include "renderive/frame_control/base/Frame_Control_Strategy_Base.hpp"
template <class That>
concept Runtime_Frame_Control_Strategy = std::derived_from<That, Frame_Control_Strategy_Base> && requires(That& strategy, const That& const_strategy) {
    { strategy.swap() } -> std::same_as<void>;
    { const_strategy.frequency_hz() } noexcept -> std::same_as<double>;
    { const_strategy.next_refresh_interval_ns() } noexcept -> std::same_as<std::uint64_t>;
    { const_strategy.frame_control_state() } -> std::same_as<Frame_Control_Strategy_Base::State>;
};
