/// <reference types="node" />
import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service, Characteristic } from 'homebridge';
import { EufySecurityPlatformConfig } from './config';
import { EufySecurity, Station } from 'eufy-security-client';
import { Logger as TsLogger, ILogObj } from 'tslog';
import { FfmpegCodecs } from './utils/ffmpeg-codecs';
export declare class EufySecurityPlatform implements DynamicPlatformPlugin {
    readonly hblog: Logger;
    readonly api: API;
    readonly Service: typeof Service;
    readonly Characteristic: typeof Characteristic;
    eufyClient: EufySecurity;
    readonly accessories: PlatformAccessory[];
    config: EufySecurityPlatformConfig;
    private eufyConfig;
    log: TsLogger<ILogObj>;
    private tsLogger;
    ffmpegLogger: TsLogger<ILogObj>;
    private already_shutdown;
    codecSupport: FfmpegCodecs;
    videoProcessor: string;
    readonly eufyPath: string;
    private activeAccessoryIds;
    private cleanCachedAccessoriesTimeout?;
    private pluginConfigInteractor?;
    private readonly STATION_INIT_DELAY;
    private readonly DEVICE_INIT_DELAY;
    private _hostSystem;
    verboseFfmpeg: boolean;
    blackSnapshot: Buffer;
    SnapshotUnavailable: Buffer;
    constructor(hblog: Logger, config: PlatformConfig, api: API);
    private configureLogger;
    private probeHwOs;
    get hostSystem(): string;
    private initSetup;
    private pluginSetup;
    private generateUUID;
    private delay;
    private addOrUpdateAccessory;
    private stationAdded;
    private deviceAdded;
    private deviceRemoved;
    private pluginShutdown;
    /**
     * This function is invoked when homebridge restores cached accessories from disk at startup.
     * It should be used to setup event handlers for characteristics and update respective values.
     */
    configureAccessory(accessory: PlatformAccessory): void;
    private cleanCachedAccessories;
    private register_station;
    private register_device;
    getStationById(id: string): Promise<Station>;
    private clean_config;
    private clean_config_after_init;
    /**
     * Reads a file synchronously and returns its buffer.
     * Also lists the contents of the current directory.
     * @param filepath - The path to the file to read.
     * @returns The file buffer.
     * @throws An error if the file cannot be read.
     */
    private readFileSync;
}
//# sourceMappingURL=platform.d.ts.map