namespace Syntriax.Engine.Systems.Time;

public interface IReadOnlyTimer
{
    event TimerEventHandler? OnStarted;
    event TimerDeltaEventHandler? OnDelta;
    event TimerEventHandler? OnStopped;

    event TimerEventHandler? OnPaused;
    event TimerEventHandler? OnResumed;

    double StartTime { get; }
    double Remaining { get; }

    float Percentage { get; }

    TimerState State { get; }

    delegate void TimerEventHandler(IReadOnlyTimer sender);
    delegate void TimerDeltaEventHandler(IReadOnlyTimer sender, double delta);

}