import { IStreamOptions, IStreamPrepareOptions } from '../Video/IOptions'; import StreamProtocol from './StreamProtocol'; import IVideoProperties from '../Video/IVideoProperties'; import { ITrackInfo, TrackType } from './IStreamTrackInfo'; import { IStreamErrorEvent, IStreamEvent, IStreamTracksChangedEvent } from './streamEvents'; export default interface IStream { prepare(uri: string, x: number, y: number, width: number, height: number, options?: IStreamPrepareOptions | keyof typeof StreamProtocol): Promise; play(uri: string, x: number, y: number, width: number, height: number, options?: IStreamOptions | keyof typeof StreamProtocol): Promise; stop(uri: string, x: number, y: number, width: number, height: number): Promise; pause(uri: string, x: number, y: number, width: number, height: number): Promise; resume(uri: string, x: number, y: number, width: number, height: number): Promise; getTracks(videoId: IVideoProperties): Promise; selectTrack(videoId: IVideoProperties, trackType: TrackType, groupId: string, trackIndex: number): Promise; resetTrack(videoId: IVideoProperties, trackType: TrackType, groupId?: string): Promise; onTracksChanged(listener: (event: IStreamTracksChangedEvent) => void): void; onError(listener: (event: IStreamErrorEvent) => void): void; onConnected(listener: (event: IStreamEvent<'connected'>) => void): void; onDisconnected(listener: (event: IStreamEvent<'disconnected'>) => void): void; onPrepare(listener: (event: IStreamEvent<'prepare'>) => void): void; onPlay(listener: (event: IStreamEvent<'play'>) => void): void; onStop(listener: (event: IStreamEvent<'stop'>) => void): void; onPause(listener: (event: IStreamEvent<'pause'>) => void): void; onResume(listener: (event: IStreamEvent<'resume'>) => void): void; }