import type { ProtectCameraConfig, SnapshotOptions, TalkbackSession } from "unifi-protect";
import type { ChannelProfile } from "./resolution.ts";
import type { LivestreamSubscription } from "./livestream.ts";
import type { Nullable } from "homebridge-plugin-utils";
import type { ProtectDeviceContext } from "../devices/device.ts";
import type { StreamingDelegate } from "./stream-delegate.ts";
import type { WithoutIdentity } from "../types.ts";
export interface LivestreamHostOptions {
    discardOnDispose?: boolean;
    segmentLength?: number;
    signal?: AbortSignal;
    urgency?: () => number;
}
export interface ProtectCameraHost extends ProtectDeviceContext {
    getAudioFilters(sampleRate?: number): string[];
    readonly isHksvCapable: boolean;
    livestream(channelProfile: ChannelProfile, opts?: LivestreamHostOptions): LivestreamSubscription;
    readonly mac: string;
    reboot(): Promise<void>;
    selectChannel(width: number, height: number, opts?: {
        biasHigher?: boolean;
        maxPixels?: number;
    }): Nullable<ChannelProfile>;
    selectSubstrateChannel(): Nullable<ChannelProfile>;
    snapshotFromController(opts?: SnapshotOptions): Promise<Buffer>;
    readonly stream?: StreamingDelegate;
    talkback(opts?: {
        signal?: AbortSignal;
    }): Promise<TalkbackSession>;
    readonly ufp: Readonly<WithoutIdentity<ProtectCameraConfig>>;
    readonly usesTimeshiftLivestream: boolean;
    readonly videoCodecName: string;
}
//# sourceMappingURL=camera-host.d.ts.map