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