import { HLSConfig, HLSTimedMetadata, HMSRole, HMSRoleChangeRequest, RTMPRecordingConfig } from '../interfaces'; import { HMSLocalTrack } from '../media/tracks'; import { findPeersRequestParams, GetSessionMetadataResponse, JoinLeaveGroupResponse, MultiTrackUpdateRequestParams, peerIterRequestParams, PeersIterationResponse, SetSessionMetadataParams, SetSessionMetadataResponse, TrackUpdateRequestParams, } from '../signal/interfaces'; // For AV track, we could get a normal track(true), empty track(empty) or no track at all(false) export type IFetchTrackOptions = boolean | 'empty'; export interface IFetchAVTrackOptions { audio: IFetchTrackOptions; video: IFetchTrackOptions; } export default interface ITransport { join(authToken: string, peerId: string, customData: any, initEndpoint?: string): Promise; leave(notifyServer: boolean): Promise; publish(tracks: Array): Promise; unpublish(tracks: Array): Promise; trackUpdate(track: HMSLocalTrack): void; /** * @deprecated Use `changeRoleOfPeer` */ changeRole(forPeerId: string, toRole: string, force: boolean): Promise; changeRoleOfPeer(forPeerId: string, toRole: string, force: boolean): Promise; acceptRoleChange(request: HMSRoleChangeRequest): Promise; removePeer(peerId: string, reason: string): Promise; startRTMPOrRecording(params: RTMPRecordingConfig): Promise; stopRTMPOrRecording(): Promise; startHLSStreaming(params: HLSConfig): Promise; stopHLSStreaming(params?: HLSConfig): Promise; sendHLSTimedMetadata(metadataList: HLSTimedMetadata[]): Promise; changeName(name: string): Promise; changeMetadata(metadata: string): Promise; getSessionMetadata(key?: string): Promise; setSessionMetadata(params: SetSessionMetadataParams): Promise; listenMetadataChange(keys: string[]): Promise; changeTrackState(trackUpdateRequest: TrackUpdateRequestParams): Promise; changeMultiTrackState(trackUpdateRequest: MultiTrackUpdateRequestParams): Promise; handleLocalRoleUpdate({ oldRole, newRole }: { oldRole: HMSRole; newRole: HMSRole }): Promise; joinGroup(name: string): Promise; leaveGroup(name: string): Promise; addToGroup(peerId: string, name: string): Promise; removeFromGroup(peerId: string, name: string): Promise; findPeers(params: findPeersRequestParams): Promise; peerIterNext(params: peerIterRequestParams): Promise; }