using System.Threading.Tasks;

namespace Valg.EVA.Skanning.Commands
{
    public interface ICommandDispatcher
    {
        void DispatchCommand<TCommand>(TCommand command);
        TResult DispatchCommand<TCommand, TResult>(TCommand command);
        Task DispatchCommandAsync<T>(T command);
        Task<R> DispatchCommandAsync<T, R>(T command);
    }
}
