import type { AudioOptionsIdentity, StreamingDelegate, StreamingDelegateFactory } from "./stream-delegate.ts";
import { FfmpegOptions } from "homebridge-plugin-utils";
import type { CameraController, CameraStreamingDelegate, PrepareStreamCallback, PrepareStreamRequest, SnapshotRequest, SnapshotRequestCallback, StreamRequestCallback, StreamingRequest } from "homebridge";
import type { HomebridgePluginLogging, Nullable } from "homebridge-plugin-utils";
import type { ProtectCameraHost } from "./camera-host.ts";
import type { ProtectPlatform } from "../platform.ts";
import { ProtectRecordingDelegate } from "./record.ts";
import { ProtectTimeshiftSupervisor } from "./timeshift-supervisor.ts";
export declare class ProtectStreamingDelegate implements CameraStreamingDelegate, StreamingDelegate {
    readonly builtFor: AudioOptionsIdentity;
    controller: CameraController;
    readonly ffmpegOptions: FfmpegOptions;
    private readonly hap;
    hksv: Nullable<ProtectRecordingDelegate>;
    readonly log: HomebridgePluginLogging;
    private readonly nvr;
    private ongoingSessions;
    private pendingSessions;
    readonly platform: ProtectPlatform;
    readonly protectCamera: ProtectCameraHost;
    private probesizeOverride;
    private probesizeOverrideCount;
    private probesizeOverrideTimeout?;
    private snapshot;
    timeshift: Nullable<ProtectTimeshiftSupervisor>;
    verboseFfmpeg: boolean;
    private abTest;
    constructor(protectCamera: ProtectCameraHost, resolutions: [number, number, number][]);
    handleSnapshotRequest(request?: SnapshotRequest, callback?: SnapshotRequestCallback): void;
    private acquireAndPublishSnapshot;
    prepareStream(request: PrepareStreamRequest, callback: PrepareStreamCallback): void;
    private runPrepareStream;
    private consumeStreamSegments;
    private startStream;
    handleStreamRequest(request: StreamingRequest, callback: StreamRequestCallback): void;
    private runStreamRequest;
    private disposePreparedSession;
    stopStream(sessionId: string): void;
    shutdown(): void;
    adjustProbeSize(): void;
    resetProbesizeOverride(): void;
    get probesize(): number;
}
export declare const streamingDelegateFactory: StreamingDelegateFactory;
//# sourceMappingURL=stream.d.ts.map