#pragma once

#include <cstdint>

#include "application/contracts/diagnostics/RuntimeDiagnosticsTypes.h"

namespace ta::ui
{
    struct RequestConsumeDiagnostics final
    {
        std::uint64_t requested = 0;
        std::uint64_t consumed = 0;
    };

    struct DiagnosticsSnapshot final
    {
        ta::application::diagnostics::HookDiagnosticsSnapshot hooks;
        ta::application::diagnostics::ApplicationLoopDiagnosticsSnapshot application_loop;
        ta::application::diagnostics::RenderDiagnosticsSnapshot render;
        RequestConsumeDiagnostics config_commands;
        RequestConsumeDiagnostics item_actions;
        RequestConsumeDiagnostics quest_commands;
        RequestConsumeDiagnostics player_actions;
        RequestConsumeDiagnostics world_unlock_doors;
        RequestConsumeDiagnostics world_item_teleport;
        std::uint64_t item_factory_hits = 0;
        bool item_factory_captured = false;
    };
}
