using MediaBrowser.Model.Dlna;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Dlna
{
    public interface IEventManager
    {
        /// 
        /// Cancels the event subscription.
        /// 
        /// The subscription identifier.
        EventSubscriptionResponse CancelEventSubscription(string subscriptionId);
        /// 
        /// Renews the event subscription.
        /// 
        /// The subscription identifier.
        /// The timeout seconds.
        /// EventSubscriptionResponse.
        EventSubscriptionResponse RenewEventSubscription(string subscriptionId, int? timeoutSeconds);
        /// 
        /// Creates the event subscription.
        /// 
        /// Type of the notification.
        /// The timeout seconds.
        /// The callback URL.
        /// EventSubscriptionResponse.
        EventSubscriptionResponse CreateEventSubscription(string notificationType, int? timeoutSeconds, string callbackUrl);
        /// 
        /// Gets the subscription.
        /// 
        /// The identifier.
        /// EventSubscription.
        EventSubscription GetSubscription(string id);
        /// 
        /// Triggers the event.
        /// 
        /// Type of the notification.
        /// The state variables.
        /// Task.
        Task TriggerEvent(string notificationType, IDictionary stateVariables);
    }
}