/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import { CameraRecordingConfiguration, CameraRecordingDelegate, HDSProtocolSpecificErrorReason, RecordingPacket } from 'homebridge';
import type { Logger } from 'homebridge';
import { ChildProcess } from 'child_process';
import { Server } from 'net';
import { Readable } from 'stream';
import { Buffer } from 'buffer';
import { LoxonePlatform } from '../../LoxonePlatform';
export interface MP4Atom {
    header: Buffer;
    length: number;
    type: string;
    data: Buffer;
}
export interface FFMpegFragmentedMP4Session {
    generator: AsyncGenerator<MP4Atom>;
    cp: ChildProcess;
}
export declare const PREBUFFER_LENGTH = 4000;
export declare function listenServer(server: Server, log: Logger): Promise<number>;
export declare function readLength(readable: Readable, length: number): Promise<Buffer>;
export declare function parseFragmentedMP4(readable: Readable): AsyncGenerator<MP4Atom>;
export declare class RecordingDelegate implements CameraRecordingDelegate {
    private readonly platform;
    private readonly hap;
    private readonly log;
    private readonly videoProcessor;
    private readonly streamUrl;
    private readonly base64auth;
    private readonly cameraName;
    private preBufferSession?;
    private preBuffer?;
    private preBufferInitPromise?;
    private currentRecordingConfiguration?;
    private activeFFmpegProcesses;
    private streamAbortControllers;
    private closedStreams;
    private recordingActive;
    private shuttingDown;
    constructor(platform: LoxonePlatform, streamUrl: string, base64auth: string, cameraName: string);
    updateRecordingActive(active: boolean): Promise<void>;
    updateRecordingConfiguration(config: CameraRecordingConfiguration | undefined): Promise<void>;
    handleRecordingStreamRequest(streamId: number): AsyncGenerator<RecordingPacket>;
    closeRecordingStream(streamId: number, reason?: HDSProtocolSpecificErrorReason): void;
    startPreBuffer(): Promise<void>;
    handleFragmentsRequests(config: CameraRecordingConfiguration, streamKey: string, abortSignal?: AbortSignal): AsyncGenerator<Buffer>;
    private startFFMPegFragmetedMP4Session;
    private toStreamKey;
    private isStreamClosed;
}
//# sourceMappingURL=RecordingDelegate.d.ts.map