/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import { EventEmitter, Readable } from 'stream';
import { Camera } from '@spectralblu/eufy-security-client';
import { EufySecurityPlatform } from '../platform';
import { Logger as TsLogger, ILogObj } from 'tslog';
declare class AudiostreamProxy extends Readable {
    private log;
    private cacheData;
    private pushNewDataImmediately;
    private dataFramesCount;
    constructor(log: TsLogger<ILogObj>);
    private transmitData;
    newAudioData(data: Buffer): void;
    stopProxyStream(): void;
    _read(size: number): void;
}
declare class VideostreamProxy extends Readable {
    private manager;
    private livestreamId;
    private cacheData;
    private log;
    private killTimeout;
    private pushNewDataImmediately;
    private dataFramesCount;
    constructor(id: number, cacheData: Array<Buffer>, manager: LocalLivestreamManager, log: TsLogger<ILogObj>);
    private transmitData;
    newVideoData(data: Buffer): void;
    stopProxyStream(): void;
    private resetKillTimeout;
    _read(size: number): void;
}
type ProxyStream = {
    id: number;
    videostream: VideostreamProxy;
    audiostream: AudiostreamProxy;
};
export declare class LocalLivestreamManager extends EventEmitter {
    private readonly SECONDS_UNTIL_TERMINATION_AFTER_LAST_USED;
    private readonly CONNECTION_ESTABLISHED_TIMEOUT;
    private stationStream;
    private log;
    private livestreamCount;
    private iFrameCache;
    private proxyStreams;
    private cacheEnabled;
    private connectionTimeout?;
    private terminationTimeout?;
    private livestreamStartedAt;
    private livestreamIsStarting;
    private readonly platform;
    private readonly device;
    constructor(platform: EufySecurityPlatform, device: Camera, cacheEnabled: boolean, log: TsLogger<ILogObj>);
    private initialize;
    getLocalLivestream(): Promise<ProxyStream>;
    private startAndGetLocalLiveStream;
    private scheduleLivestreamCacheTermination;
    stopLocalLiveStream(): void;
    private onStationLivestreamStop;
    private onStationLivestreamStart;
    private getProxyStream;
    stopProxyStream(id: number): void;
    private stopAllProxyStreams;
    private removeProxyStream;
    private isIFrame;
}
export {};
//# sourceMappingURL=LocalLivestreamManager.d.ts.map