namespace DragonISO.Engine.Pipeline;

/// <summary>
/// Test seam over the wall clock. Production: <see cref="PeriodicTimerFrameClock"/>.
/// Tests: <c>FakeFrameClock</c> in DragonISO.Engine.Tests.
/// </summary>
public interface IFrameClock
{
    /// <summary>Current monotonic time as ticks (100 ns).</summary>
    long NowTicks { get; }

    /// <summary>Awaits the next tick at the current period.</summary>
    ValueTask<bool> WaitForNextTickAsync(CancellationToken cancellationToken);
}
