using System;
using System.Collections.Generic;
namespace PepperDash.Essentials.Core.Routing
{
///
/// The current sources for the room, keyed by eRoutingSignalType.
/// This allows for multiple sources to be tracked, such as audio and video.
///
///
/// This interface is used to provide access to the current sources in a room,
/// allowing for more complex routing scenarios where multiple signal types are involved.
///
public interface ICurrentSources
{
///
/// Gets the current sources for the room, keyed by eRoutingSignalType.
/// This dictionary contains the current source for each signal type, such as audio, video, and control signals.
///
Dictionary CurrentSources { get; }
///
/// Gets the current source keys for the room, keyed by eRoutingSignalType.
/// This dictionary contains the keys for the current source for each signal type, such as audio, video, and control signals.
///
Dictionary CurrentSourceKeys { get; }
///
/// Event raised when the current sources change.
///
event EventHandler CurrentSourcesChanged;
///
/// Sets the current source for a specific signal type.
/// This method updates the current source for the specified signal type and notifies any subscribers of the change.
///
/// The signal type to update.
/// The key for the source list.
/// The source list item to set as the current source.
void SetCurrentSource(eRoutingSignalType signalType, string sourceListKey, SourceListItem sourceListItem);
}
}