export interface CacheLimit { pc: number; mobile: number; } export interface SignalConfig { main: string; backup: string; } export enum LogLevel { Warn = 'warn', Error = 'error', None = 'none', } export enum TrackerZone { Europe = 'eu', HongKong = 'hk', USA = 'us', CN = 'cn', } export interface P2pConfig { logLevel?: LogLevel | boolean; live?: boolean; signalConfig?: string | SignalConfig; announce?: string; trackerZone?: TrackerZone; memoryCacheLimit?: CacheLimit; diskCacheLimit?: CacheLimit; p2pEnabled?: boolean; hlsjsInstance?: any; proxyOnly?: boolean; dcDownloadTimeout?: number; webRTCConfig?: any; useHttpRange?: boolean; httpLoadTime?: number; sharePlaylist?: boolean; tag?: string; swFile?: string; swScope?: string; swAutoRegister?: boolean; token?: string; appName?: string; appId?: string; showSlogan?: boolean; trickleICE?: boolean; geoIpPreflight?: boolean; startFromSegmentOffset?: number; ICEPreflight?: boolean; prefetchOnly?: boolean; getStats?: (totalP2PDownloaded: number, totalP2PUploaded: number, totalHTTPDownloaded: number, p2pDownloadSpeed: number)=>void; getPeerId?: (peerId: string)=>void; getPeersInfo?: (peers: string[])=>void; channelId?: ((m3u8Url: string)=>string) | string; segmentId?: (streamId: string, sn: number, url: string, range: string)=>string; segmentBypass?: (url: string, tags: string[])=>boolean; validateSegment?: (segId: string, buffer: ArrayBufferLike)=>boolean; mediaElem?: HTMLMediaElement | string; useDiskCache?: boolean; strictSegmentId?: boolean; httpStreamEnabled?: boolean; } export declare class P2pEngineHls { static isSupported(): boolean; static isMSESupported(): boolean; static isServiceWorkerSupported(): boolean; static getBrowser(): string; static tryRegisterServiceWorker(p2pConfig?: P2pConfig): Promise; static readonly version: string; static readonly protocolVersion: string; public readonly version: string; public readonly engineName: string; public readonly ServiceWorkerEngine: HlsSwP2pEngine; public readonly HlsjsEngine: HlsjsP2pEngine; constructor(p2pConfig?: P2pConfig); registerServiceWorker(): Promise; unregisterServiceWorker(): Promise; enableP2P(): void; disableP2P(): void; destroy(): void; on(name: string, func: (...args)=>void): P2pEngineHls; off(name: string, func: (...args)=>void): P2pEngineHls; once(name: string, func: (...args)=>void): P2pEngineHls; removeListener(name: string, func: (...args)=>void); removeAllListeners(name: string); } export declare class HlsSwP2pEngine { static isServiceWorkerSupported(): boolean; static readonly name: string; constructor(p2pConfig?: P2pConfig); registerServiceWorker(): Promise; unregisterServiceWorker(): Promise; enableP2P(): void; disableP2P(): void; destroy(): void; on(name: string, func: (...args)=>void): HlsSwP2pEngine; off(name: string, func: (...args)=>void): HlsSwP2pEngine; once(name: string, func: (...args)=>void): HlsSwP2pEngine; removeListener(name: string, func: (...args)=>void); removeAllListeners(name: string); } export declare class HlsjsP2pEngine { static readonly name: string; constructor(hlsjs: any, p2pConfig?: P2pConfig); enableP2P(): void; disableP2P(): void; destroy(): void; on(name: string, func: (...args)=>void): HlsjsP2pEngine; off(name: string, func: (...args)=>void): HlsjsP2pEngine; once(name: string, func: (...args)=>void): HlsjsP2pEngine; removeListener(name: string, func: (...args)=>void); removeAllListeners(name: string); } export default P2pEngineHls;