using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.BL.Entities;
using Tango.PMR.Diagnostics;
namespace Tango.Integration.Operation
{
///
/// Represents a machine event states provider used by the machine provider to notify about current machine events and errors.
///
public interface IMachineEventsStateProvider
{
///
/// Gets the current machine events.
///
ReadOnlyObservableCollection Events { get; }
///
/// Gets or sets a value indicating whether this instance has events.
///
bool HasEvents { get; }
///
/// Occurs when new events are available.
///
event EventHandler> NewEvents;
///
/// Occurs when old events has been resolved.
///
event EventHandler> EventsResolved;
///
/// Occurs when a new events states has been received.
///
event EventHandler> EventsReceived;
///
/// Occurs when the collection of current events has changed.
///
event EventHandler> EventsChanged;
///
/// Applies the collection of events received from the machine operator.
///
/// The events.
void ApplyEvents(IEnumerable events);
///
/// Resets the current events tracking.
///
void Reset();
}
}