import type { CameraController, Resolution, SnapshotRequest, SnapshotRequestCallback } from "homebridge";
import type { FfmpegOptions, Nullable } from "homebridge-plugin-utils";
import { AudioStreamingSamplerate } from "homebridge-plugin-utils";
import type { ProtectCameraHost } from "./camera-host.ts";
import type { ProtectRecordingDelegate } from "./record.ts";
import type { ProtectTimeshiftSupervisor } from "./timeshift-supervisor.ts";
export interface AudioOptionsIdentity {
    readonly isDoorbell: boolean;
    readonly twoWayAudio: boolean;
}
export declare function audioCapabilityAppeared(built: AudioOptionsIdentity, current: AudioOptionsIdentity): boolean;
export declare function streamingSamplerates(input: {
    isDoorbell: boolean;
    usesTimeshiftLivestream: boolean;
}): AudioStreamingSamplerate | AudioStreamingSamplerate[];
export interface StreamingDelegate {
    readonly builtFor: AudioOptionsIdentity;
    controller: CameraController;
    readonly ffmpegOptions: FfmpegOptions;
    handleSnapshotRequest(request?: SnapshotRequest, callback?: SnapshotRequestCallback): void;
    hksv: Nullable<ProtectRecordingDelegate>;
    readonly probesize: number;
    resetProbesizeOverride(): void;
    shutdown(): void;
    timeshift: Nullable<ProtectTimeshiftSupervisor>;
}
export interface StreamingDelegateFactory {
    create(camera: ProtectCameraHost, resolutions: Resolution[]): StreamingDelegate;
}
//# sourceMappingURL=stream-delegate.d.ts.map