using NzbDrone.Common.Messaging;
using NzbDrone.Core.Messaging.Commands;
namespace NzbDrone.Core.Messaging
{
///
/// Enables loosely-coupled publication of events.
///
public interface IMessageAggregator
{
void PublishEvent(TEvent @event) where TEvent : class, IEvent;
void PublishCommand(TCommand command) where TCommand : Command;
void PublishCommand(string commandTypeName);
Command PublishCommandAsync(TCommand command) where TCommand : Command;
Command PublishCommandAsync(string commandTypeName);
}
}