import { Connection, RunningState, Rivatuner, LogLevel, PlayerShell, FileUploadStateChangeHandler, FileCheckoutResultValue, ClipboardSyncManager } from 'ray-streaming'; import type { Dict } from 'ray-streaming'; import { LivePlayer } from './live-player'; import { VirtualGlobalType, StartType, DisplayModeType, BitrateType, BitrateMapType, TouchMoveType } from './interface'; import { ExtendPluginsType } from './control-panel/plugin-manager'; interface ClientsType { isMaster: boolean; nickname: string; isControlAuthority: boolean; token: string; } interface eventOptionType { enableKeyBoard?: boolean; enableTouchInteraction?: boolean; enableZoomInteraction?: boolean; } export type Phase = 'initial' | 'signaling-connected' | 'node-ready' | 'end-candidate' | 'peer-connection-connected' | 'data-channel-open' | 'streaming-ready' | 'loaded-metadata' | 'streaming-playing'; export type ErrorState = 'disconnect' | 'afk' | 'kick' | 'hangup'; export interface Options { screenWsUrl: string; minBitrate: number; maxBitrate: number; startBitrate: number; bitrateType: BitrateType; startType: StartType; autoRunRivatuner: boolean; enableLogPersistent: boolean; audioToastDisplay: boolean; iceTransportPolicy: RTCIceTransportPolicy; autoLoadingVideo: boolean; isFullScreen: boolean; openMicrophone: boolean; openMultiTouch: boolean; needLandscape: boolean; displayMode: DisplayModeType; showTool: boolean; keyboardMappingConfig?: VirtualGlobalType; disableFileTransfer: boolean; disablePointerManager: boolean; disablePointerLock: boolean; enableClipboard: boolean; toolbarLogo?: string; extendPlugins: ExtendPluginsType[]; eventOption?: eventOptionType; themeColor: string; dict?: Dict; adaptiveBitrateRange: BitrateMapType; onGetClientInfo: (clients: ClientsType[]) => void; onError: (reason: ErrorState) => void; onPhaseChange: (phase: Phase, deltaTime: number) => void; onPlay: () => void; onMount: (element: HTMLElement) => void; onRotate: (rotate: boolean) => void; onQuit: () => void; onInteractionNotify: (index: number, payload: string) => void; onNetworkChanged: (msg: string) => void; } export declare abstract class LauncherBase { protected url: string; protected iceConfig: RTCIceServer[]; protected hostElement: HTMLElement; static defaultBitrateRangeMap: Map; static defaultOptions: Options; private _phaseMetadata; private _phase; set phase(v: Phase); get phase(): Phase; player: LivePlayer; connection: Connection; manualPlay?: () => void; playerShell: PlayerShell; runningState: RunningState; touchSensitivity: TouchMoveType; private HelperSub?; private microphone?; private camera?; private dashboard?; private videoStream?; protected clipboardSyncManager?: ClipboardSyncManager; enableInteract: boolean; protected rivatuner: Rivatuner; protected options: Options; protected bitrateRangeMap: Map; constructor(url: string, iceConfig: RTCIceServer[], hostElement: HTMLElement, options?: Partial); private handlerRecord; private setupConnectionEvent; private handleNormalizeBitrate; setMoveSensitivity(value: TouchMoveType): void; resumeVideoStream(): void; toggleStatistics(): void; /** * @description return statistics that gather by rivatuner */ report(): { fps: number; latency: number; bitrate: number; packetLossRate: number; averageJitterBufferDelay: number; framesReceived: number; framesDecoded: number; keyFramesDecoded: number; framesDropped: number; packetsLost: number; packetsReceived: number; jitterBufferDelay: number; jitterBufferEmittedCount: number; jitterBufferMinimumDelay: number; jitterBufferTargetDelay: number; totalProcessingDelay: number; rtt: number; keyframesDecodedDelta: number; framesDroppedDelta: number; framesReceivedDelta: number; headerBytesReceived: number; bytesReceived: number; }; handleSubscribe(video: HTMLVideoElement): void; handleUnsubscribe(): void; toggleFullscreen(): void; openMicrophone(audioOptions?: MediaTrackConstraintSet): void; closeMicrophone(): void; openCamera(videoOptions?: MediaTrackConstraintSet): void; closeCamera(): void; setLogAccordingToLevel(l: LogLevel): void; showDashboard(): void; hideDashboard(): void; exportLog(): void; downloadFileByAbsolutePath(path: string): Promise; changeUploadDir(dir: string, replace?: boolean): Promise; uploadFile(file: File, onStateChange?: FileUploadStateChangeHandler): void; /** * @description release event handler */ abstract destroy(): void; } export {};