#pragma once
#include <chrono>
#include <cstdint>
/// Injectable source of wall-clock time.
class ClockInterface
{
public:
virtual ~ClockInterface() = default;
/// Return the current system-clock instant.
virtual std::chrono::system_clock::time_point now() const = 0;
};
/// Production system wall clock.
class SystemClock final : public ClockInterface
{
public:
/// Return the current system-clock instant.
std::chrono::system_clock::time_point now() const override;
};
/// Return the signed UTC epoch day containing an instant.
std::int64_t utcDay(std::chrono::system_clock::time_point time);