using System;
using System.Threading.Tasks;

namespace Server.Core
{
    public interface ITimerManager
    {
        Task WaitTillAsync(long tillTIme);

        Task WaitFrameAsync();

        Task WaitAsync(long time);

        long NewOnceTimer(long tillTime, Action<object> action, object args = null);

        long NewFrameTimer(Action<object> action, object args = null);

        long NewRepeatedTimer(long time, Action<object> action, object args = null);

        bool Remove(ref long id);
    }
}