import { TypedEmitter } from "tiny-typed-emitter";
import { HTTPApi } from "./api";
import { CommandName, DeviceEvent, SourceType, TrackerType } from "./types";
import { DeviceListResponse } from "./models";
import { DeviceEvents, PropertyValue, PropertyValues, PropertyMetadataAny, IndexedProperty, RawValues, Schedule, Voices, DeviceConfig } from "./interfaces";
import { PushMessage } from "../push/models";
import { DeviceSmartLockNotifyData } from "../mqtt/model";
import { Station } from "./station";
export declare class Device extends TypedEmitter<DeviceEvents> {
    protected api: HTTPApi;
    protected rawDevice: DeviceListResponse;
    protected eventTimeouts: Map<DeviceEvent, NodeJS.Timeout>;
    protected pictureEventTimeouts: Map<string, NodeJS.Timeout>;
    protected properties: PropertyValues;
    protected config: DeviceConfig;
    private rawProperties;
    private ready;
    protected constructor(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig);
    protected initializeState(): void;
    initialize(): void;
    getRawDevice(): DeviceListResponse;
    update(device: DeviceListResponse): void;
    updateProperty(name: string, value: PropertyValue, force?: boolean): boolean;
    updateRawProperties(values: RawValues): void;
    protected handlePropertyChange(metadata: PropertyMetadataAny, oldValue: PropertyValue, newValue: PropertyValue): void;
    updateRawProperty(type: number, value: string, source: SourceType): boolean;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    getPropertyMetadata(name: string, hidden?: boolean): PropertyMetadataAny;
    getPropertyValue(name: string): PropertyValue;
    hasPropertyValue(name: string): boolean;
    getRawProperty(type: number): string | undefined;
    getRawProperties(): RawValues;
    getProperties(): PropertyValues;
    getPropertiesMetadata(hidden?: boolean): IndexedProperty;
    hasProperty(name: string, hidden?: boolean): boolean;
    getCommands(): Array<CommandName>;
    hasCommand(name: CommandName): boolean;
    processPushNotification(_station: Station, _message: PushMessage, _eventDurationSeconds: number): void;
    setCustomPropertyValue(name: string, value: PropertyValue): void;
    destroy(): void;
    protected clearEventTimeout(eventType: DeviceEvent): void;
    static isSupported(type: number): boolean;
    static isCamera(type: number): boolean;
    static hasBattery(type: number): boolean;
    static isStation(type: number): boolean;
    static isCamera1(type: number): boolean;
    static isCameraE(type: number): boolean;
    static isSensor(type: number): boolean;
    static isKeyPad(type: number): boolean;
    static isDoorbell(type: number): boolean;
    static isWiredDoorbell(type: number): boolean;
    static isWiredDoorbellT8200X(type: number, serialnumber: string): boolean;
    static isWiredDoorbellDual(type: number): boolean;
    static isIndoorCamera(type: number): boolean;
    static isPanAndTiltCamera(type: number): boolean;
    static isOutdoorPanAndTiltCamera(type: number): boolean;
    static isIndoorPanAndTiltCameraS350(type: number): boolean;
    static isFloodLight(type: number): boolean;
    static isFloodLightT8420X(type: number, serialnumber: string): boolean;
    static isFloodLightT8423(type: number): boolean;
    static isFloodLightT8425(type: number): boolean;
    static isWallLightCam(type: number): boolean;
    static isLock(type: number): boolean;
    static isLockKeypad(type: number): boolean;
    static isLockBle(type: number): boolean;
    static isLockBleNoFinger(type: number): boolean;
    static isLockWifi(type: number, serialnumber: string): boolean;
    static isLockWifiNoFinger(type: number): boolean;
    static isLockWifiR10(type: number): boolean;
    static isLockWifiR20(type: number): boolean;
    static isLockWifiVideo(type: number): boolean;
    static isLockWifiR10Keypad(type: number): boolean;
    static isLockWifiR20Keypad(type: number): boolean;
    static isLockWifiT8506(type: number): boolean;
    static isLockWifiT8502(type: number): boolean;
    static isLockWifiT8510P(type: number, serialnumber: string): boolean;
    static isLockWifiT8520P(type: number, serialnumber: string): boolean;
    static isBatteryDoorbell1(type: number): boolean;
    static isBatteryDoorbell2(type: number): boolean;
    static isBatteryDoorbellDual(type: number): boolean;
    static isBatteryDoorbellDualE340(type: number): boolean;
    static isBatteryDoorbellC30(type: number): boolean;
    static isBatteryDoorbellC31(type: number): boolean;
    static isDoorbellDual(type: number): boolean;
    static isBatteryDoorbell(type: number): boolean;
    static isSoloCamera(type: number): boolean;
    static isSoloCameraPro(type: number): boolean;
    static isSoloCameraSpotlight1080(type: number): boolean;
    static isSoloCameraSpotlight2k(type: number): boolean;
    static isSoloCameraSpotlightSolar(type: number): boolean;
    static isSoloCameraSolar(type: number): boolean;
    static isSoloCameraC210(type: number): boolean;
    static isSoloCameraE30(type: number): boolean;
    static isSoloCameras(type: number): boolean;
    static isStarlight4GLTE(type: number): boolean;
    static isIndoorOutdoorCamera1080p(type: number): boolean;
    static isIndoorOutdoorCamera1080pNoLight(type: number): boolean;
    static isIndoorOutdoorCamera2k(type: number): boolean;
    static isIndoorCamMini(type: number): boolean;
    static isCamera1Product(type: number): boolean;
    static isCamera2(type: number): boolean;
    static isCamera2C(type: number): boolean;
    static isCamera2Pro(type: number): boolean;
    static isCamera2CPro(type: number): boolean;
    static isCamera2Product(type: number): boolean;
    static isCamera3(type: number): boolean;
    static isCamera3C(type: number): boolean;
    static isCamera3Pro(type: number): boolean;
    static isCameraProfessional247(type: number): boolean;
    static isCamera3Product(type: number): boolean;
    static isEntrySensor(type: number): boolean;
    static isMotionSensor(type: number): boolean;
    static isSmartDrop(type: number): boolean;
    static isSmartSafe(type: number): boolean;
    static isGarageCamera(type: number): boolean;
    static isIntegratedDeviceBySn(sn: string): boolean;
    static isSoloCameraBySn(sn: string): boolean;
    static isSmartDropBySn(sn: string): boolean;
    static isLockBySn(sn: string): boolean;
    static isGarageCameraBySn(sn: string): boolean;
    static isFloodlightBySn(sn: string): boolean;
    static isIndoorCameraBySn(sn: string): boolean;
    static is4GCameraBySn(sn: string): boolean;
    static isSmartSafeBySn(sn: string): boolean;
    static isSmartTrackCard(type: number): boolean;
    static isSmartTrackLink(type: number): boolean;
    static isSmartTrack(type: number): boolean;
    isCamera(): boolean;
    isFloodLight(): boolean;
    isFloodLightT8420X(): boolean;
    isFloodLightT8423(): boolean;
    isFloodLightT8425(): boolean;
    isWallLightCam(): boolean;
    isDoorbell(): boolean;
    isWiredDoorbell(): boolean;
    isWiredDoorbellT8200X(): boolean;
    isWiredDoorbellDual(): boolean;
    isLock(): boolean;
    isLockKeypad(): boolean;
    isLockBle(): boolean;
    isLockBleNoFinger(): boolean;
    isLockWifi(): boolean;
    isLockWifiNoFinger(): boolean;
    isLockWifiR10(): boolean;
    isLockWifiR20(): boolean;
    isLockWifiVideo(): boolean;
    isLockWifiR10Keypad(): boolean;
    isLockWifiR20Keypad(): boolean;
    isLockWifiT8506(): boolean;
    isLockWifiT8502(): boolean;
    isLockWifiT8510P(): boolean;
    isLockWifiT8520P(): boolean;
    isBatteryDoorbell1(): boolean;
    isBatteryDoorbell2(): boolean;
    isBatteryDoorbellDual(): boolean;
    isBatteryDoorbellDualE340(): boolean;
    isBatteryDoorbellC30(): boolean;
    isBatteryDoorbellC31(): boolean;
    isDoorbellDual(): boolean;
    isBatteryDoorbell(): boolean;
    isSoloCamera(): boolean;
    isSoloCameraPro(): boolean;
    isSoloCameraSpotlight1080(): boolean;
    isSoloCameraSpotlight2k(): boolean;
    isSoloCameraSpotlightSolar(): boolean;
    isSoloCameraSolar(): boolean;
    isSoloCameraC210(): boolean;
    isSoloCameraE30(): boolean;
    isStarlight4GLTE(): boolean;
    isIndoorOutdoorCamera1080p(): boolean;
    isIndoorOutdoorCamera1080pNoLight(): boolean;
    isIndoorOutdoorCamera2k(): boolean;
    isIndoorCamMini(): boolean;
    isSoloCameras(): boolean;
    isCamera2(): boolean;
    isCamera2C(): boolean;
    isCamera2Pro(): boolean;
    isCamera2CPro(): boolean;
    isCamera2Product(): boolean;
    isCamera3(): boolean;
    isCamera3C(): boolean;
    isCameraProfessional247(): boolean;
    isCamera3Pro(): boolean;
    isCamera3Product(): boolean;
    isEntrySensor(): boolean;
    isKeyPad(): boolean;
    isMotionSensor(): boolean;
    isIndoorCamera(): boolean;
    isPanAndTiltCamera(): boolean;
    isOutdoorPanAndTiltCamera(): boolean;
    isIndoorPanAndTiltCameraS350(): boolean;
    isSmartDrop(): boolean;
    isSmartSafe(): boolean;
    isGarageCamera(): boolean;
    isIntegratedDevice(): boolean;
    isSmartTrack(): boolean;
    isSmartTrackCard(): boolean;
    isSmartTrackLink(): boolean;
    hasBattery(): boolean;
    getDeviceKey(): string;
    getDeviceType(): number;
    getHardwareVersion(): string;
    getSoftwareVersion(): string;
    getModel(): string;
    getName(): string;
    getSerial(): string;
    getStationSerial(): string;
    setParameters(params: {
        paramType: number;
        paramValue: any;
    }[]): Promise<boolean>;
    getChannel(): number;
    getStateID(state: string, level?: number): string;
    getStateChannel(): string;
    getWifiRssi(): PropertyValue;
    getStoragePath(filename: string): string;
    isEnabled(): PropertyValue;
}
export declare class Camera extends Device {
    protected constructor(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig);
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<Camera>;
    getStateChannel(): string;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    getLastCameraImageURL(): PropertyValue;
    getMACAddress(): string;
    startDetection(): Promise<void>;
    stopDetection(): Promise<void>;
    getState(): PropertyValue;
    close(): Promise<void>;
    getLastChargingDays(): number;
    getLastChargingFalseEvents(): number;
    getLastChargingRecordedEvents(): number;
    getLastChargingTotalEvents(): number;
    getBatteryValue(): PropertyValue;
    getBatteryTemperature(): PropertyValue;
    isMotionDetectionEnabled(): PropertyValue;
    isLedEnabled(): PropertyValue;
    isAutoNightVisionEnabled(): PropertyValue;
    isRTSPStreamEnabled(): PropertyValue;
    isAntiTheftDetectionEnabled(): PropertyValue;
    getWatermark(): PropertyValue;
    isMotionDetected(): boolean;
    isPersonDetected(): boolean;
    getDetectedPerson(): string;
    protected handlePropertyChange(metadata: PropertyMetadataAny, oldValue: PropertyValue, newValue: PropertyValue): void;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
}
export declare class SoloCamera extends Camera {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<SoloCamera>;
    isLedEnabled(): PropertyValue;
    isMotionDetectionEnabled(): PropertyValue;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
}
export declare class IndoorCamera extends Camera {
    protected constructor(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig);
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<IndoorCamera>;
    isLedEnabled(): PropertyValue;
    isMotionDetectionEnabled(): PropertyValue;
    isPetDetectionEnabled(): PropertyValue;
    isSoundDetectionEnabled(): PropertyValue;
    isPetDetected(): boolean;
    isSoundDetected(): boolean;
    isCryingDetected(): boolean;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
    destroy(): void;
}
export declare class DoorbellCamera extends Camera {
    protected voices: Voices;
    protected constructor(api: HTTPApi, device: DeviceListResponse, voices: Voices, deviceConfig: DeviceConfig);
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<DoorbellCamera>;
    private loadMetadataVoiceStates;
    getVoiceName(id: number): string;
    getVoices(): Voices;
    getPropertiesMetadata(hidden?: boolean): IndexedProperty;
    isRinging(): boolean;
    protected handlePropertyChange(metadata: PropertyMetadataAny, oldValue: PropertyValue, newValue: PropertyValue): void;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
}
export declare class WiredDoorbellCamera extends DoorbellCamera {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<WiredDoorbellCamera>;
    isLedEnabled(): PropertyValue;
    isAutoNightVisionEnabled(): PropertyValue;
    isMotionDetectionEnabled(): PropertyValue;
}
export declare class BatteryDoorbellCamera extends DoorbellCamera {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<BatteryDoorbellCamera>;
    isLedEnabled(): PropertyValue;
}
export declare class FloodlightCamera extends Camera {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<FloodlightCamera>;
    isLedEnabled(): PropertyValue;
    isMotionDetectionEnabled(): PropertyValue;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
}
export declare class WallLightCam extends Camera {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<WallLightCam>;
    isLedEnabled(): PropertyValue;
    isMotionDetectionEnabled(): PropertyValue;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    getPropertiesMetadata(hidden?: boolean): IndexedProperty;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
}
export declare class GarageCamera extends Camera {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<GarageCamera>;
    isLedEnabled(): PropertyValue;
    isMotionDetectionEnabled(): PropertyValue;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
}
export declare class Sensor extends Device {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<Sensor>;
    getStateChannel(): string;
    getState(): PropertyValue;
}
export declare class EntrySensor extends Sensor {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<EntrySensor>;
    isSensorOpen(): PropertyValue;
    getSensorChangeTime(): PropertyValue;
    isBatteryLow(): PropertyValue;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
    protected handlePropertyChange(metadata: PropertyMetadataAny, oldValue: PropertyValue, newValue: PropertyValue): void;
}
export declare class MotionSensor extends Sensor {
    static readonly MOTION_COOLDOWN_MS = 120000;
    protected constructor(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig);
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<MotionSensor>;
    isMotionDetected(): boolean;
    getMotionSensorPIREvent(): PropertyValue;
    isBatteryLow(): PropertyValue;
    protected handlePropertyChange(metadata: PropertyMetadataAny, oldValue: PropertyValue, newValue: PropertyValue): void;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
}
export declare class Lock extends Device {
    static readonly VERSION_CODE_SMART_LOCK = 3;
    static readonly VERSION_CODE_LOCKV12 = 18;
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<Lock>;
    getStateChannel(): string;
    protected handlePropertyChange(metadata: PropertyMetadataAny, oldValue: PropertyValue, newValue: PropertyValue): void;
    getState(): PropertyValue;
    getBatteryValue(): PropertyValue;
    getWifiRssi(): PropertyValue;
    isLocked(): PropertyValue;
    getLockStatus(): PropertyValue;
    static encodeESLCmdOnOff(short_user_id: number, nickname: string, lock: boolean): Buffer;
    static encodeESLCmdQueryStatus(admin_user_id: string): Buffer;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
    processMQTTNotification(message: DeviceSmartLockNotifyData, eventDurationSeconds: number): void;
    private processNotification;
    private static getCurrentTimeInSeconds;
    private static getUInt8Buffer;
    private static getUint16LEBuffer;
    private static getUint16BEBuffer;
    static encodeCmdStatus(user_id: string): Buffer;
    static encodeCmdUnlock(short_user_id: string, value: number, username: string): Buffer;
    static encodeCmdCalibrate(user_id: string): Buffer;
    static encodeCmdAddUser(short_user_id: string, passcode: string, username: string, schedule?: Schedule, user_permission?: number): Buffer;
    static encodeCmdAddTemporaryUser(schedule?: Schedule, unlimited?: boolean): Buffer;
    static encodeCmdDeleteTemporaryUser(password_id: string): Buffer;
    static encodeCmdDeleteUser(short_user_id: string): Buffer;
    static encodeCmdVerifyPw(password: string): Buffer;
    static encodeCmdQueryLockRecord(index: number): Buffer;
    static encodeCmdQueryUser(short_user_id: string): Buffer;
    static encodeCmdQueryPassword(password_id: string): Buffer;
    static encodeCmdModifyPassword(password_id: string, passcode: string): Buffer;
    static encodeCmdUpdateSchedule(short_user_id: string, schedule: Schedule): Buffer;
    static encodeCmdModifyUsername(username: string, password_id: string): Buffer;
    static encodeCmdGetLockParam(user_id: string): Buffer;
    static encodeCmdSetLockParamAutoLock(enabled: boolean, lockTimeSeconds: number): Buffer;
    private static hexTime;
    static encodeCmdSetLockParamAutoLockSchedule(enabled: boolean, schedule_start: string, schedule_end: string): Buffer;
    static encodeCmdSetLockParamOneTouchLock(enabled: boolean): Buffer;
    static encodeCmdSetLockParamWrongTryProtect(enabled: boolean, lockdownTime: number, attempts: number): Buffer;
    static encodeCmdSetLockParamScramblePasscode(enabled: boolean): Buffer;
    static encodeCmdSetLockParamSound(value: number): Buffer;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    static encodeCmdSmartLockUnlock(adminUserId: string, lock: boolean, username: string, shortUserId: string): Buffer;
    static encodeCmdSmartLockCalibrate(adminUserId: string): Buffer;
    static encodeCmdSetSmartLockParamWrongTryProtect(adminUserId: string, enabled: boolean, attempts: number, lockdownTime: number): Buffer;
    private static hexTimeSmartLock;
    static encodeCmdSetSmartLockParamAutoLock(adminUserId: string, enabled: boolean, lockTimeSeconds: number, schedule: boolean, scheduleStart: string, scheduleEnd: string): Buffer;
    static encodeCmdSetSmartLockParamOneTouchLock(adminUserId: string, enabled: boolean): Buffer;
    static encodeCmdSetSmartLockParamScramblePasscode(adminUserId: string, enabled: boolean): Buffer;
    static encodeCmdSetSmartLockParamSound(adminUserId: string, value: number): Buffer;
    static encodeCmdSmartLockAddUser(adminUserId: string, shortUserId: string, passcode: string, username: string, schedule?: Schedule, userPermission?: number): Buffer;
    static encodeCmdSmartLockDeleteUser(adminUserId: string, shortUserId: string): Buffer;
    static encodeCmdSmartLockUpdateSchedule(adminUserId: string, shortUserId: string, username: string, schedule: Schedule, userPermission?: number): Buffer;
    static encodeCmdSmartLockModifyPassword(adminUserId: string, passwordId: string, passcode: string): Buffer;
    static encodeCmdSmartLockGetUserList(adminUserId: string): Buffer;
    static encodeCmdSmartLockStatus(adminUserId: string): Buffer;
    static encodeCmdSmartLockGetParams(adminUserId: string): Buffer;
}
export declare class LockKeypad extends Device {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<LockKeypad>;
    getStateChannel(): string;
}
export declare class Keypad extends Device {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<Keypad>;
    getStateChannel(): string;
    getState(): PropertyValue;
    isBatteryLow(): PropertyValue;
    isBatteryCharging(): PropertyValue;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
}
export declare class SmartSafe extends Device {
    static readonly IV = "052E19EB3F880512E99EBB684D4DC1FE";
    static readonly DATA_HEADER: number[];
    static readonly VERSION_CODE = 1;
    static readonly PUSH_NOTIFICATION_POSITION: {
        [index: string]: number;
    };
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<SmartSafe>;
    getStateChannel(): string;
    private static getCurrentTimeInSeconds;
    private static getUInt8Buffer;
    private static getUint16LEBuffer;
    private static encodeCmdSingleUInt8;
    static encodeCmdWrongTryProtect(user_id: string, enabled: boolean, attempts: number, lockdownTime: number): Buffer;
    static encodeCmdLeftOpenAlarm(user_id: string, enabled: boolean, duration: number): Buffer;
    static encodeCmdDualUnlock(user_id: string, enabled: boolean): Buffer;
    static encodeCmdScramblePIN(user_id: string, enabled: boolean): Buffer;
    static encodeCmdPowerSave(user_id: string, enabled: boolean): Buffer;
    static encodeCmdInteriorBrightness(user_id: string, interiorBrightness: number, duration: number): Buffer;
    static encodeCmdTamperAlarm(user_id: string, option: number): Buffer;
    static encodeCmdRemoteUnlock(user_id: string, option: number): Buffer;
    static encodeCmdAlertVolume(user_id: string, volume: number): Buffer;
    static encodeCmdPromptVolume(user_id: string, volume: number): Buffer;
    static encodeCmdPushNotification(user_id: string, modes: number): Buffer;
    static encodeCmdUnlock(user_id: string): Buffer;
    static encodeCmdVerifyPIN(user_id: string, pin: string): Buffer;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    shakeEvent(event: number, eventDurationSeconds: number): void;
    alarm911Event(event: number, eventDurationSeconds: number): void;
    jammedEvent(eventDurationSeconds: number): void;
    lowBatteryEvent(eventDurationSeconds: number): void;
    wrongTryProtectAlarmEvent(eventDurationSeconds: number): void;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
    protected handlePropertyChange(metadata: PropertyMetadataAny, oldValue: PropertyValue, newValue: PropertyValue): void;
    getState(): PropertyValue;
    getBatteryValue(): PropertyValue;
    getWifiRssi(): PropertyValue;
    isLocked(): boolean;
}
export declare class Tracker extends Device {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<Tracker>;
    getStateChannel(): string;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    setFindPhone(value: boolean): Promise<boolean>;
    setLeftBehindAlarm(value: boolean): Promise<boolean>;
    setTrackerType(value: TrackerType): Promise<boolean>;
}
export declare class DoorbellLock extends DoorbellCamera {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<DoorbellLock>;
    getStateChannel(): string;
    protected handlePropertyChange(metadata: PropertyMetadataAny, oldValue: PropertyValue, newValue: PropertyValue): void;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    getState(): PropertyValue;
    getBatteryValue(): PropertyValue;
    getWifiRssi(): PropertyValue;
    isLocked(): PropertyValue;
    getLockStatus(): PropertyValue;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
}
export declare class SmartDrop extends Camera {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<SmartDrop>;
    getStateChannel(): string;
    processPushNotification(station: Station, message: PushMessage, eventDurationSeconds: number): void;
    protected handlePropertyChange(metadata: PropertyMetadataAny, oldValue: PropertyValue, newValue: PropertyValue): void;
}
export declare class UnknownDevice extends Device {
    static getInstance(api: HTTPApi, device: DeviceListResponse, deviceConfig: DeviceConfig): Promise<UnknownDevice>;
    getStateChannel(): string;
}
