/**
 * Copyright 2024 Phenix Real Time Solutions, Inc. Confidential and Proprietary. All Rights Reserved.
 */
import {Moment} from 'moment';

export declare type ChannelList = Array<IChannel>;

export interface IChannelRoomCommon {
  alias: string;
  applicationId: string;
  created: string | Moment;
  description: string;
  estimatedSize: number;
  lastUpdate: string | Moment;
  name: string;
  options: string[];
  streamKey: string;
  type: string;
  isStreamingEnabled: boolean;
  state?: {
    isOnline: boolean;
    numberOfPrimaryPresenters: number;
    numberOfAlternatePresenters: number;
    isHighAvailability: boolean;
  };
}

export interface IChannel extends IChannelRoomCommon {
  channelId: string;
}

export interface IMember {
  lastUpdate: number;
  role: string;
  screenName: string;
  sessionId: string;
  state: string;
  streams: {
    audioState: string;
    type: string;
    uri: string;
    videoState: string;
  }[];
}
