import { TypedEmitter } from "tiny-typed-emitter";
import { Logger } from "ts-log";
import { EufySecurityEvents, EufySecurityConfig } from "./interfaces";
import { HTTPApi } from "./http/api";
import { LoginOptions } 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";
export declare class EufySecurity extends TypedEmitter<EufySecurityEvents> {
    private config;
    private log;
    private api;
    private houses;
    private stations;
    private devices;
    private readonly P2P_REFRESH_INTERVAL_MIN;
    private cameraMaxLivestreamSeconds;
    private cameraStationLivestreamTimeout;
    private cameraCloudLivestreamTimeout;
    private pushService;
    private mqttService;
    private pushCloudRegistered;
    private pushCloudChecked;
    private persistentFile;
    private persistentData;
    private connected;
    private retries;
    private refreshEufySecurityCloudTimeout?;
    private refreshEufySecurityP2PTimeout;
    private deviceSnoozeTimeout;
    private loadingDevices?;
    private constructor();
    static initialize(config: EufySecurityConfig, log?: Logger): Promise<EufySecurity>;
    protected _initializeInternals(): Promise<void>;
    private initMQTT;
    getPushService(): PushNotificationService;
    private addStation;
    private removeStation;
    private updateStation;
    private addDevice;
    private removeDevice;
    private updateDevice;
    getDevices(): Promise<Array<Device>>;
    getDevice(deviceSN: string): Promise<Device>;
    getStationDevice(stationSN: string, channel: number): Promise<Device>;
    getStations(): Array<Station>;
    getStation(stationSN: string): Station;
    getApi(): HTTPApi;
    connectToStation(stationSN: string, p2pConnectionType?: P2PConnectionType): Promise<void>;
    isStationConnected(stationSN: string): boolean;
    isStationEnergySavingDevice(stationSN: string): boolean;
    private handleHouses;
    private handleHubs;
    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;
    startStationLivestream(deviceSN: string): Promise<void>;
    startCloudLivestream(deviceSN: string): Promise<void>;
    stopStationLivestream(deviceSN: string): Promise<void>;
    stopCloudLivestream(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 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 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;
}
