using System; using System.Threading; using System.Threading.Tasks; namespace RateLimiter { /// /// Time abstraction /// internal interface ITime { /// /// Return Now DateTime /// /// DateTime GetNow(); /// /// Returns a task delay /// /// /// /// Task GetDelay(TimeSpan timespan, CancellationToken cancellationToken); } }