import type { Camera, ProtectCameraConfig, SnapshotOptions, TalkbackSession } from "unifi-protect";
import type { LivestreamHostOptions, ProtectCameraHost } from "../../media/camera-host.ts";
import type { ProtectAccessory, WithoutIdentity } from "../../types.ts";
import type { ChannelProfile } from "../../media/resolution.ts";
import type { DoorbellCapability } from "./doorbell.ts";
import type { LivestreamSubscription } from "../../media/livestream.ts";
import type { Nullable } from "homebridge-plugin-utils";
import type { ProtectCameraPackage } from "./camera-package.ts";
import { ProtectDevice } from "../device.ts";
import type { ProtectNvr } from "../../nvr/nvr.ts";
import type { StreamingDelegate } from "../../media/stream-delegate.ts";
type ReconcileSource = "construct" | "observe";
export declare class ProtectCamera extends ProtectDevice implements ProtectCameraHost {
    #private;
    private ambientLight;
    private isDeleted;
    isRinging: boolean;
    isTampered: boolean;
    detectLicensePlate: string[];
    doorbell: Nullable<DoorbellCapability>;
    private channelProfiles;
    stream?: StreamingDelegate;
    protected readonly device: Camera;
    constructor(nvr: ProtectNvr, accessory: ProtectAccessory, device: Camera);
    get ufp(): Readonly<WithoutIdentity<ProtectCameraConfig>>;
    get packageCamera(): Nullable<ProtectCameraPackage>;
    protected get rtspHost(): string;
    protected configureHints(): boolean;
    protected configureDevice(): boolean;
    private reconcileDoorbellCapability;
    private attachDoorbellCapability;
    publishObserverWake(key: string): void;
    cleanup(): void;
    protected spawnObservers(): void;
    protected spawnCameraObservers(): void;
    private configureAmbientLightSensor;
    snapshotFromController(opts?: SnapshotOptions): Promise<Buffer>;
    livestream(channelProfile: ChannelProfile, opts?: LivestreamHostOptions): LivestreamSubscription;
    reboot(): Promise<void>;
    talkback(opts?: {
        signal?: AbortSignal;
    }): Promise<TalkbackSession>;
    private configureAccessFeatures;
    private configureMotionSmartSensor;
    private configureTamperDetection;
    private configureDoorbellMuteSwitch;
    private configureDoorbellTrigger;
    configureDoorbellService(): boolean;
    private configureCameraDetails;
    private configureCrop;
    protected reconcileCapabilities(source: ReconcileSource): Promise<void>;
    private reconcileStreamingAudioCapabilities;
    protected reconcileStreaming(): Promise<boolean>;
    private refreshChannelProfiles;
    private configureStreamingDelegate;
    private teardownStreamingDelegate;
    private rebuildStreamingDelegate;
    private configureHksv;
    private configureHksvRecordingSwitch;
    private configureNightVisionDimmer;
    private configureNvrRecordingSwitch;
    protected configureMqtt(): boolean;
    private configureDoorbellRingMqtt;
    updateDevice(): boolean;
    protected updateAvailability(): void;
    refreshReachability(): Nullable<{
        now: boolean;
        was: boolean;
    }>;
    protected updateNightVision(): void;
    protected updateStatusIndicator(): void;
    protected updateRecordingSwitches(): void;
    selectChannel(width: number, height: number, opts?: {
        biasHigher?: boolean;
        maxPixels?: number;
    }): Nullable<ChannelProfile>;
    selectSubstrateChannel(): Nullable<ChannelProfile>;
    get videoCodecName(): string;
    get isHksvCapable(): boolean;
    get usesTimeshiftLivestream(): boolean;
    private get recordingMode();
    private get nightVision();
    private get nightVisionBrightness();
    getAudioFilters(sampleRate?: number): string[];
}
export {};
//# sourceMappingURL=camera.d.ts.map