import { TypedEmitter } from "tiny-typed-emitter";
import { EufySecurityEvents, EufySecurityConfig } from "./interfaces";
import { HTTPApi } from "./http/api";
import { LoginOptions, Schedule } from "./http/interfaces";
import { Station } from "./http/station";
import { PushNotificationService } from "./push/service";
import { Credentials } from "./push/models";
import { Device } from "./http/device";
import { P2PConnectionType } from "./p2p/types";
import { Logger, LoggingCategories } from "./logging";
import { LogLevel } from "typescript-logging";
export declare class EufySecurity extends TypedEmitter<EufySecurityEvents> {
    private config;
    private api;
    private houses;
    private stations;
    private devices;
    private readonly P2P_REFRESH_INTERVAL_MIN;
    private cameraMaxLivestreamSeconds;
    private cameraStationLivestreamTimeout;
    private pushService;
    private mqttService;
    private pushCloudRegistered;
    private pushCloudChecked;
    private persistentFile;
    private persistentData;
    private connected;
    private retries;
    private refreshEufySecurityCloudTimeout?;
    private refreshEufySecurityP2PTimeout;
    private deviceSnoozeTimeout;
    private loadingEmitter;
    private stationsLoaded?;
    private devicesLoaded?;
    private constructor();
    static initialize(config: EufySecurityConfig, log?: Logger): Promise<EufySecurity>;
    protected _initializeInternals(): Promise<void>;
    private initMQTT;
    setLoggingLevel(category: LoggingCategories, level: LogLevel): void;
    getLoggingLevel(category: LoggingCategories): number;
    setInternalLogger(logger: Logger): void;
    getInternalLogger(): Logger | undefined;
    getPushService(): PushNotificationService;
    private addStation;
    private removeStation;
    private updateStation;
    private addDevice;
    private removeDevice;
    private updateDevice;
    getDevices(): Promise<Array<Device>>;
    getDevicesFromStation(stationSN: string): Promise<Array<Device>>;
    getDevice(deviceSN: string): Promise<Device>;
    getStationDevice(stationSN: string, channel: number): Promise<Device>;
    getStations(): Promise<Array<Station>>;
    getStation(stationSN: string): Promise<Station>;
    getApi(): HTTPApi;
    connectToStation(stationSN: string, p2pConnectionType?: P2PConnectionType): Promise<void>;
    isStationConnected(stationSN: string): Promise<boolean>;
    isStationEnergySavingDevice(stationSN: string): Promise<boolean>;
    private handleHouses;
    private handleHubs;
    private refreshP2PData;
    private onStationConnect;
    private onStationConnectionError;
    private onStationClose;
    private handleDevices;
    refreshCloudData(): Promise<void>;
    close(): void;
    setCameraMaxLivestreamDuration(seconds: number): void;
    getCameraMaxLivestreamDuration(): number;
    registerPushNotifications(credentials?: Credentials, persistentIds?: string[]): Promise<void>;
    connect(options?: LoginOptions): Promise<void>;
    getPushPersistentIds(): string[];
    private updateDeviceProperties;
    private onAPIClose;
    private onAPIConnect;
    private onAPIConnectionError;
    startStationLivestream(deviceSN: string): Promise<void>;
    stopStationLivestream(deviceSN: string): Promise<void>;
    private writePersistentData;
    private saveCloudToken;
    private savePushCredentials;
    private savePushPersistentIds;
    getVersion(): string;
    isPushConnected(): boolean;
    isMQTTConnected(): boolean;
    isConnected(): boolean;
    private processInvitations;
    private onPushMessage;
    startStationDownload(deviceSN: string, path: string, cipherID: number): Promise<void>;
    cancelStationDownload(deviceSN: string): Promise<void>;
    getConfig(): EufySecurityConfig;
    setDeviceProperty(deviceSN: string, name: string, value: unknown): Promise<void>;
    setStationProperty(stationSN: string, name: string, value: unknown): Promise<void>;
    private onStartStationLivestream;
    private onStopStationLivestream;
    private onErrorStationLivestream;
    private onStartStationRTSPLivestream;
    private onStopStationRTSPLivestream;
    private onStationStartDownload;
    private onStationFinishDownload;
    private onStationCommandResult;
    private onStationSecondaryCommandResult;
    private onStationRtspUrl;
    private onStationGuardMode;
    private onStationCurrentMode;
    private onStationPropertyChanged;
    private onStationRawPropertyChanged;
    private onStationAlarmEvent;
    private onStationAlarmDelayEvent;
    private onStationArmDelayEvent;
    private onStationAlarmArmedEvent;
    private onDevicePropertyChanged;
    private onDeviceRawPropertyChanged;
    private onDeviceCryingDetected;
    private onDeviceSoundDetected;
    private onDevicePetDetected;
    private onDeviceVehicleDetected;
    private onDeviceMotionDetected;
    private onDevicePersonDetected;
    private onDeviceRings;
    private onDeviceLocked;
    private onDeviceOpen;
    private onDevicePackageDelivered;
    private onDevicePackageStranded;
    private onDevicePackageTaken;
    private onDeviceSomeoneLoitering;
    private onDeviceRadarMotionDetected;
    private onDevice911Alarm;
    private onDeviceShakeAlarm;
    private onDeviceWrongTryProtectAlarm;
    private onDeviceLongTimeNotClose;
    private onDeviceLowBattery;
    private onDeviceJammed;
    private onDeviceStrangerPersonDetected;
    private onDeviceDogDetected;
    private onDeviceDogLickDetected;
    private onDeviceDogPoopDetected;
    private onDeviceReady;
    private onStationRuntimeState;
    private onStationChargingState;
    private onStationWifiRssi;
    private onCaptchaRequest;
    private onFloodlightManualSwitch;
    private onAuthTokenInvalidated;
    private onTfaRequest;
    private onStationTalkbackStart;
    private onStationTalkbackStop;
    private onStationTalkbackError;
    startStationTalkback(deviceSN: string): Promise<void>;
    stopStationTalkback(deviceSN: string): Promise<void>;
    private onStationDeviceShakeAlarm;
    private onStationDevice911Alarm;
    private onStationDeviceJammed;
    private onStationDeviceLowBattery;
    private onStationDeviceWrongTryProtectAlarm;
    addUser(deviceSN: string, username: string, passcode: string, schedule?: Schedule): Promise<void>;
    deleteUser(deviceSN: string, username: string): Promise<void>;
    updateUser(deviceSN: string, username: string, newUsername: string): Promise<void>;
    updateUserPasscode(deviceSN: string, username: string, passcode: string): Promise<void>;
    updateUserSchedule(deviceSN: string, username: string, schedule: Schedule): Promise<void>;
    private onStationDevicePinVerified;
    private onStationSdInfoEx;
    private _emitStationImageDownload;
    private onStationImageDownload;
    private onStationDatabaseQueryLatest;
    private onStationDatabaseQueryLocal;
    private onStationDatabaseCountByDate;
    private onStationDatabaseDelete;
    private onStationSensorStatus;
    private onStationGarageDoorStatus;
    private onStorageInfoHb3;
    private onDeviceTampering;
    private onDeviceLowTemperature;
    private onDeviceHighTemperature;
    private onDevicePinIncorrect;
    private onDeviceLidStuck;
    private onDeviceBatteryFullyCharged;
}
