#pragma once

#include <cstdint>

#include "foundation/diagnostics/Metrics.h"

namespace ta::application::diagnostics
{
    struct HookDiagnosticsSnapshot final
    {
        std::uint64_t tarkov_application_update_hits = 0;
        std::uint64_t game_world_update_hits = 0;
        std::uint64_t gameworld_update_dispatch_hits = 0;
        std::uint64_t player_fixed_update_hits = 0;
        std::uint64_t local_game_stop_hits = 0;
    };

    struct ApplicationLoopDiagnosticsSnapshot final
    {
        ta::foundation::diagnostics::TimingMetricSnapshot application_update_timing;
        ta::foundation::diagnostics::TimingMetricSnapshot gameworld_update_timing;
    };

    struct RenderDiagnosticsSnapshot final
    {
        std::uint64_t present_hits = 0;
        bool imgui_initialized = false;
        ta::foundation::diagnostics::TimingMetricSnapshot overlay_frame_timing;
    };
}
