import { EContentMainCAM } from '../ApiManager'; import { TOnSetParameters, TResultSetParametersToSender } from '../tools'; import { TResolutionSize } from '../types'; export interface IBalancerOptions { ignoreForCodec?: string; onSetParameters?: TOnSetParameters; getMaxResolution: () => TResolutionSize | undefined; } export interface IMainCamHeaders { mainCam?: EContentMainCAM; resolutionMainCam?: string; } export interface IBalancingContext { sender: RTCRtpSender; videoTrack: MediaStreamVideoTrack; codec?: string; } export interface ISenderFinder { findVideoSender: (senders: RTCRtpSender[]) => RTCRtpSender | undefined; } export interface ICodecProvider { getCodecFromSender: (sender: RTCRtpSender) => Promise; } export interface IEncodingParameters { scaleResolutionDownBy: number; maxBitrate: number; } export interface IParametersSetter { setEncodingsToSender: (sender: RTCRtpSender, parameters: IEncodingParameters, onSetParameters?: TOnSetParameters) => Promise; } export type TMainCamControlHandler = (headers: IMainCamHeaders) => void; export interface IEventHandler { subscribe: (handler: TMainCamControlHandler) => void; unsubscribe: () => void; } export interface ITaskQueue { add: (task: () => Promise) => Promise; }