using System;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Events
{
    /// 
    /// An interface that handles eventing.
    /// 
    public interface IEventManager
    {
        /// 
        /// Publishes an event.
        /// 
        /// The event arguments.
        /// The type of event.
        /// A task representing the publishing of the event.
        Task Publish(T eventArgs)
            where T : EventArgs;
    }
}