using System; using System.ComponentModel; using System.Threading.Tasks; using BililiveRecorder.Core.Config.V2; using BililiveRecorder.Core.Event; namespace BililiveRecorder.Core { public interface IRoom : INotifyPropertyChanged, IDisposable { Guid ObjectId { get; } RoomConfig RoomConfig { get; } int ShortId { get; } string Name { get; } string Title { get; } string AreaNameParent { get; } string AreaNameChild { get; } bool Recording { get; } bool Streaming { get; } bool DanmakuConnected { get; } bool AutoRecordForThisSession { get; } RecordingStats Stats { get; } event EventHandler? RecordSessionStarted; event EventHandler? RecordSessionEnded; event EventHandler? RecordFileOpening; event EventHandler? RecordFileClosed; event EventHandler? RecordingStats; event EventHandler? NetworkingStats; void StartRecord(); void StopRecord(); void SplitOutput(); Task RefreshRoomInfoAsync(); } }