namespace Interfaces
{
    public interface INotifierProvider : IPluginInformation
    {
        string GetDisplayName();
        /// <summary>
        /// Raise a notification that the race has started.
        /// </summary>
        /// <param name="args">Race details</param>
        void NotifyRaceStarted(NotificationEventArgs args);
        /// <summary>
        /// Raise a notification to indicate that a race will be starting soon.
        /// </summary>
        /// <param name="args">Race details</param>
        void NotifyRaceStarting(NotificationEventArgs args);
        /// <summary>
        /// Raise a notification that a racer has completed a lap of the track.
        /// </summary>
        /// <param name="args">Race details</param>
        /// <param name="pilot">The pilot that has just completed a lap.</param>
        void NotifyRaceLapEvent(NotificationEventArgs args, Pilot pilot);
        /// <summary>
        /// Raise a notification when the race is won and completed.
        /// </summary>
        /// <param name="args"></param>
        /// <param name="pilot"></param>
        void NotifyRaceWinner(NotificationEventArgs args, Pilot pilot);
        void NotifyRaceFinished(NotificationEventArgs args);
    }

    public class ValidationError
    {
        public string Error { get; set; }
    }
}
