/// <reference types="node" />
/// <reference types="node" />
import { LoxonePlatform } from '../../LoxonePlatform';
import { CameraController, CameraStreamingDelegate, PrepareStreamCallback, PrepareStreamRequest, SnapshotRequest, SnapshotRequestCallback, StreamingRequest, StreamRequestCallback, CameraRecordingDelegate } from 'homebridge';
import type { TwoWayAudioContext } from '../services/Camera';
import { StreamingDelegate as FfmpegStreamingDelegate } from './FfmpegStreamingProcess';
export declare class streamingDelegate implements CameraStreamingDelegate, FfmpegStreamingDelegate {
    private readonly platform;
    readonly controller: CameraController;
    readonly recordingDelegate: CameraRecordingDelegate | undefined;
    private readonly streamUrl;
    private readonly base64auth;
    private readonly cameraName;
    private readonly twoWayAudioEnabled;
    private readonly twoWayAudioMode;
    private readonly twoWayAudioOutputArgs?;
    private readonly twoWayAudioTemplateVars?;
    private readonly twoWayAudioContext?;
    private pendingSessions;
    private ongoingSessions;
    private cachedSnapshot;
    private cachedAt;
    private readonly cacheTtlMs;
    private isShuttingDown;
    private readonly hap;
    private snapshotUrl?;
    constructor(platform: LoxonePlatform, streamUrl: string, base64auth: string, cameraName: string, snapshotUrl?: string, twoWayAudioTemplateVars?: Record<string, string>, twoWayAudioContext?: TwoWayAudioContext);
    stopStream(sessionId: string): void;
    forceStopStream(sessionId: string): void;
    getSnapshot(useCache?: boolean): Promise<Buffer | null>;
    private getSnapshotViaHTTP;
    handleSnapshotRequest(request: SnapshotRequest, callback: SnapshotRequestCallback): Promise<void>;
    private fetchSnapshot;
    prepareStream(request: PrepareStreamRequest, callback: PrepareStreamCallback): Promise<void>;
    handleStreamRequest(request: StreamingRequest, callback: StreamRequestCallback): Promise<void>;
    private startStream;
    private startTwoWayAudio;
    private startCustomTwoWayAudio;
    private startLoxoneTwoWayAudio;
    private createLoxoneIncomingAudioBridge;
    private getAudioCodecArgs;
    private resolveAudioSampleRateKhz;
    private feedHomeKitIncomingAudio;
    private createReturnAudioTranscoder;
    private getReturnAudioStdout;
    private detachReturnAudioStdout;
    private resolveLoxoneSignalingBaseUrl;
    private buildAuthArgs;
    private buildSnapshotFilter;
    private clamp;
    private buildTwoWayAudioOutputArgs;
    private extractHost;
    private tokenizeFfmpegArgs;
}
//# sourceMappingURL=StreamingDelegate.d.ts.map