import { TypedEmitter } from "tiny-typed-emitter";
import { HTTPApi } from "./api";
import { AlarmTone, NotificationSwitchMode, DeviceType, FloodlightMotionTriggeredDistance, GuardMode, NotificationType, PowerSource, PropertyName, TimeFormat, CommandName, VideoTypeStoreToNAS } from "./types";
import { SnoozeDetail, StationListResponse } from "./models";
import { IndexedProperty, PropertyMetadataAny, PropertyValue, PropertyValues, RawValues, StationEvents } from "./interfaces";
import { P2PConnectionType, PanTiltDirection, VideoCodec, WatermarkSetting1, WatermarkSetting2, WatermarkSetting3, WatermarkSetting4 } from "../p2p/types";
import { Device } from "./device";
import { PushMessage } from "../push/models";
export declare class Station extends TypedEmitter<StationEvents> {
    private api;
    private rawStation;
    private log;
    private p2pSession;
    private properties;
    private rawProperties;
    private ready;
    private currentDelay;
    private reconnectTimeout?;
    private terminating;
    private p2pConnectionType;
    static readonly CHANNEL: number;
    static readonly CHANNEL_INDOOR: number;
    constructor(api: HTTPApi, station: StationListResponse);
    getStateID(state: string, level?: number): string;
    getStateChannel(): string;
    getRawStation(): StationListResponse;
    update(station: StationListResponse, cloudOnlyProperties?: boolean): void;
    updateProperty(name: string, value: PropertyValue): boolean;
    updateRawProperties(values: RawValues): void;
    updateRawProperty(type: number, value: string): boolean;
    protected convertRawPropertyValue(property: PropertyMetadataAny, value: string): PropertyValue;
    getPropertyMetadata(name: string): PropertyMetadataAny;
    getPropertyValue(name: string): PropertyValue;
    hasPropertyValue(name: string): boolean;
    getRawProperty(type: number): string;
    getRawProperties(): RawValues;
    getProperties(): PropertyValues;
    getPropertiesMetadata(): IndexedProperty;
    hasProperty(name: string): boolean;
    getCommands(): Array<CommandName>;
    hasCommand(name: CommandName): boolean;
    isStation(): boolean;
    isDeviceStation(): boolean;
    isIntegratedDevice(): boolean;
    getDeviceType(): number;
    getHardwareVersion(): string;
    getMACAddress(): string;
    getModel(): string;
    getName(): string;
    getSerial(): string;
    getSoftwareVersion(): string;
    getIPAddress(): string;
    getLANIPAddress(): PropertyValue;
    getGuardMode(): PropertyValue;
    getCurrentMode(): PropertyValue;
    processPushNotification(message: PushMessage): void;
    isConnected(): boolean;
    close(): void;
    isEnergySavingDevice(): boolean;
    connect(): Promise<void>;
    private onFinishDownload;
    private onStartDownload;
    private onStopLivestream;
    private onErrorLivestream;
    private onStartLivestream;
    private onStopRTSPLivestream;
    private onStartRTSPLivestream;
    private onWifiRssiChanged;
    private onRTSPUrl;
    private onParameter;
    private onAlarmDelay;
    private onAlarmArmed;
    private onAlarmEvent;
    setGuardMode(mode: GuardMode): Promise<void>;
    getCameraInfo(): Promise<void>;
    getStorageInfo(): Promise<void>;
    private onAlarmMode;
    private getArmDelay;
    private _getDeviceSerial;
    private onCameraInfo;
    private onCommandResponse;
    private onSecondaryCommandResponse;
    private onConnect;
    private onDisconnect;
    private onTimeout;
    private getCurrentDelay;
    private resetCurrentDelay;
    private scheduleReconnect;
    rebootHUB(): Promise<void>;
    setStatusLed(device: Device, value: boolean): Promise<void>;
    setAutoNightVision(device: Device, value: boolean): Promise<void>;
    setNightVision(device: Device, value: number): Promise<void>;
    setMotionDetection(device: Device, value: boolean): Promise<void>;
    setSoundDetection(device: Device, value: boolean): Promise<void>;
    setSoundDetectionType(device: Device, value: number): Promise<void>;
    setSoundDetectionSensitivity(device: Device, value: number): Promise<void>;
    setPetDetection(device: Device, value: boolean): Promise<void>;
    panAndTilt(device: Device, direction: PanTiltDirection, command?: number): Promise<void>;
    switchLight(device: Device, value: boolean): Promise<void>;
    setMotionDetectionSensitivity(device: Device, value: number): Promise<void>;
    setMotionDetectionType(device: Device, value: number): Promise<void>;
    setMotionZone(device: Device, value: string): Promise<void>;
    setMotionTracking(device: Device, value: boolean): Promise<void>;
    setPanAndTiltRotationSpeed(device: Device, value: number): Promise<void>;
    setMicMute(device: Device, value: boolean): Promise<void>;
    setAudioRecording(device: Device, value: boolean): Promise<void>;
    enableSpeaker(device: Device, value: boolean): Promise<void>;
    setSpeakerVolume(device: Device, value: number): Promise<void>;
    setRingtoneVolume(device: Device, value: number): Promise<void>;
    enableIndoorChime(device: Device, value: boolean): Promise<void>;
    enableHomebaseChime(device: Device, value: boolean): Promise<void>;
    setHomebaseChimeRingtoneVolume(device: Device, value: number): Promise<void>;
    setHomebaseChimeRingtoneType(device: Device, value: number): Promise<void>;
    setNotificationType(device: Device, value: NotificationType): Promise<void>;
    setNotificationPerson(device: Device, value: boolean): Promise<void>;
    setNotificationPet(device: Device, value: boolean): Promise<void>;
    setNotificationAllOtherMotion(device: Device, value: boolean): Promise<void>;
    setNotificationAllSound(device: Device, value: boolean): Promise<void>;
    setNotificationCrying(device: Device, value: boolean): Promise<void>;
    setNotificationRing(device: Device, value: boolean): Promise<void>;
    setNotificationMotion(device: Device, value: boolean): Promise<void>;
    setPowerSource(device: Device, value: PowerSource): Promise<void>;
    setPowerWorkingMode(device: Device, value: number): Promise<void>;
    setRecordingClipLength(device: Device, value: number): Promise<void>;
    setRecordingRetriggerInterval(device: Device, value: number): Promise<void>;
    setRecordingEndClipMotionStops(device: Device, value: boolean): Promise<void>;
    setVideoStreamingQuality(device: Device, value: number): Promise<void>;
    setVideoRecordingQuality(device: Device, value: number): Promise<void>;
    setWDR(device: Device, value: boolean): Promise<void>;
    setFloodlightLightSettingsEnable(device: Device, value: boolean): Promise<void>;
    setFloodlightLightSettingsBrightnessManual(device: Device, value: number): Promise<void>;
    setFloodlightLightSettingsBrightnessMotion(device: Device, value: number): Promise<void>;
    setFloodlightLightSettingsBrightnessSchedule(device: Device, value: number): Promise<void>;
    setFloodlightLightSettingsMotionTriggered(device: Device, value: boolean): Promise<void>;
    setFloodlightLightSettingsMotionTriggeredDistance(device: Device, value: FloodlightMotionTriggeredDistance): Promise<void>;
    setFloodlightLightSettingsMotionTriggeredTimer(device: Device, seconds: number): Promise<void>;
    triggerStationAlarmSound(seconds: number): Promise<void>;
    resetStationAlarmSound(): Promise<void>;
    triggerDeviceAlarmSound(device: Device, seconds: number): Promise<void>;
    resetDeviceAlarmSound(device: Device): Promise<void>;
    setStationAlarmRingtoneVolume(value: number): Promise<void>;
    setStationAlarmTone(value: AlarmTone): Promise<void>;
    setStationPromptVolume(value: number): Promise<void>;
    setStationNotificationSwitchMode(mode: NotificationSwitchMode, value: boolean): Promise<void>;
    setStationNotificationStartAlarmDelay(value: boolean): Promise<void>;
    setStationTimeFormat(value: TimeFormat): Promise<void>;
    setRTSPStream(device: Device, value: boolean): Promise<void>;
    setAntiTheftDetection(device: Device, value: boolean): Promise<void>;
    setWatermark(device: Device, value: WatermarkSetting1 | WatermarkSetting2 | WatermarkSetting3 | WatermarkSetting4): Promise<void>;
    enableDevice(device: Device, value: boolean): Promise<void>;
    startDownload(device: Device, path: string, cipher_id: number): Promise<void>;
    cancelDownload(device: Device): Promise<void>;
    startLivestream(device: Device, videoCodec?: VideoCodec): Promise<void>;
    stopLivestream(device: Device): Promise<void>;
    isLiveStreaming(device: Device): boolean;
    isDownloading(device: Device): boolean;
    quickResponse(device: Device, voice_id: number): Promise<void>;
    setChirpVolume(device: Device, value: number): Promise<void>;
    setChirpTone(device: Device, value: number): Promise<void>;
    setHDR(device: Device, value: boolean): Promise<void>;
    setDistortionCorrection(device: Device, value: boolean): Promise<void>;
    setRingRecord(device: Device, value: number): Promise<void>;
    lockDevice(device: Device, value: boolean): Promise<void>;
    setStationSwitchModeWithAccessCode(value: boolean): Promise<void>;
    setStationAutoEndAlarm(value: boolean): Promise<void>;
    setStationTurnOffAlarmWithButton(value: boolean): Promise<void>;
    startRTSPStream(device: Device): Promise<void>;
    stopRTSPStream(device: Device): Promise<void>;
    setMotionDetectionRange(device: Device, type: number): Promise<void>;
    setMotionDetectionRangeStandardSensitivity(device: Device, sensitivity: number): Promise<void>;
    setMotionDetectionRangeAdvancedLeftSensitivity(device: Device, sensitivity: number): Promise<void>;
    setMotionDetectionRangeAdvancedMiddleSensitivity(device: Device, sensitivity: number): Promise<void>;
    setMotionDetectionRangeAdvancedRightSensitivity(device: Device, sensitivity: number): Promise<void>;
    setMotionDetectionTestMode(device: Device, enabled: boolean): Promise<void>;
    setMotionTrackingSensitivity(device: Device, sensitivity: number): Promise<void>;
    setMotionAutoCruise(device: Device, enabled: boolean): Promise<void>;
    setMotionOutOfViewDetection(device: Device, enabled: boolean): Promise<void>;
    setLightSettingsColorTemperatureManual(device: Device, value: number): Promise<void>;
    setLightSettingsColorTemperatureMotion(device: Device, value: number): Promise<void>;
    setLightSettingsColorTemperatureSchedule(device: Device, value: number): Promise<void>;
    setLightSettingsMotionActivationMode(device: Device, value: number): Promise<void>;
    setVideoNightvisionImageAdjustment(device: Device, enabled: boolean): Promise<void>;
    setVideoColorNightvision(device: Device, enabled: boolean): Promise<void>;
    setAutoCalibration(device: Device, enabled: boolean): Promise<void>;
    isRTSPLiveStreaming(device: Device): boolean;
    setConnectionType(type: P2PConnectionType): void;
    getConnectionType(): P2PConnectionType;
    private onRuntimeState;
    private onChargingState;
    hasDevice(deviceSN: string): boolean;
    hasDeviceWithType(deviceType: DeviceType): boolean;
    private onFloodlightManualSwitch;
    calibrateLock(device: Device): Promise<void>;
    private convertAdvancedLockSettingValue;
    private getAdvancedLockSettingsPayload;
    private getAdvancedLockSettingName;
    setAdvancedLockParams(device: Device, property: PropertyName, value: PropertyValue): Promise<void>;
    setLoiteringDetection(device: Device, value: boolean): Promise<void>;
    setLoiteringDetectionRange(device: Device, value: number): Promise<void>;
    setLoiteringDetectionLength(device: Device, value: number): Promise<void>;
    private _setMotionDetectionSensitivity;
    private _getMotionDetectionSensitivityAdvanced;
    setMotionDetectionSensitivityMode(device: Device, value: number): Promise<void>;
    setMotionDetectionSensitivityStandard(device: Device, value: number): Promise<void>;
    setMotionDetectionSensitivityAdvancedA(device: Device, value: number): Promise<void>;
    setMotionDetectionSensitivityAdvancedB(device: Device, value: number): Promise<void>;
    setMotionDetectionSensitivityAdvancedC(device: Device, value: number): Promise<void>;
    setMotionDetectionSensitivityAdvancedD(device: Device, value: number): Promise<void>;
    setMotionDetectionSensitivityAdvancedE(device: Device, value: number): Promise<void>;
    setMotionDetectionSensitivityAdvancedF(device: Device, value: number): Promise<void>;
    setMotionDetectionSensitivityAdvancedG(device: Device, value: number): Promise<void>;
    setMotionDetectionSensitivityAdvancedH(device: Device, value: number): Promise<void>;
    private _setLoiteringCustomResponse;
    setLoiteringCustomResponseAutoVoiceResponse(device: Device, value: boolean): Promise<void>;
    setLoiteringCustomResponseAutoVoiceResponseVoice(device: Device, value: number): Promise<void>;
    setLoiteringCustomResponseHomeBaseNotification(device: Device, value: boolean): Promise<void>;
    setLoiteringCustomResponsePhoneNotification(device: Device, value: boolean): Promise<void>;
    setLoiteringCustomResponseTimeFrom(device: Device, value: string): Promise<void>;
    setLoiteringCustomResponseTimeTo(device: Device, value: string): Promise<void>;
    setDeliveryGuard(device: Device, value: boolean): Promise<void>;
    setDeliveryGuardPackageGuarding(device: Device, value: boolean): Promise<void>;
    setDeliveryGuardPackageGuardingVoiceResponseVoice(device: Device, value: number): Promise<void>;
    private setDeliveryGuardPackageGuardingActivatedTime;
    setDeliveryGuardPackageGuardingActivatedTimeFrom(device: Device, value: string): Promise<void>;
    setDeliveryGuardPackageGuardingActivatedTimeTo(device: Device, value: string): Promise<void>;
    setDeliveryGuardUncollectedPackageAlert(device: Device, value: boolean): Promise<void>;
    setDeliveryGuardUncollectedPackageAlertTimeToCheck(device: Device, value: string): Promise<void>;
    setDeliveryGuardPackageLiveCheckAssistance(device: Device, value: boolean): Promise<void>;
    setDualCamWatchViewMode(device: Device, value: number): Promise<void>;
    private _setRingAutoResponse;
    setRingAutoResponse(device: Device, value: boolean): Promise<void>;
    setRingAutoResponseVoiceResponse(device: Device, value: boolean): Promise<void>;
    setRingAutoResponseVoiceResponseVoice(device: Device, value: number): Promise<void>;
    setRingAutoResponseTimeFrom(device: Device, value: string): Promise<void>;
    setRingAutoResponseTimeTo(device: Device, value: string): Promise<void>;
    setNotificationRadarDetector(device: Device, value: boolean): Promise<void>;
    calibrate(device: Device): Promise<void>;
    setContinuousRecording(device: Device, value: boolean): Promise<void>;
    setContinuousRecordingType(device: Device, value: number): Promise<void>;
    enableDefaultAngle(device: Device, value: boolean): Promise<void>;
    setDefaultAngleIdleTime(device: Device, value: number): Promise<void>;
    setDefaultAngle(device: Device): Promise<void>;
    setPrivacyAngle(device: Device): Promise<void>;
    setNotificationIntervalTime(device: Device, value: number): Promise<void>;
    setSoundDetectionRoundLook(device: Device, value: boolean): Promise<void>;
    startTalkback(device: Device): Promise<void>;
    stopTalkback(device: Device): Promise<void>;
    private onTalkbackStarted;
    private onTalkbackStopped;
    private onTalkbackError;
    isTalkbackOngoing(device: Device): boolean;
    setScramblePasscode(device: Device, value: boolean): Promise<void>;
    setWrongTryProtection(device: Device, value: boolean): Promise<void>;
    setWrongTryAttempts(device: Device, value: number): Promise<void>;
    setWrongTryLockdownTime(device: Device, value: number): Promise<void>;
    private _sendSmartSafeCommand;
    setSmartSafeParams(device: Device, property: PropertyName, value: PropertyValue): Promise<void>;
    unlock(device: Device): Promise<void>;
    private onDeviceShakeAlarm;
    private onDevice911Alarm;
    private onDeviceJammed;
    private onDeviceLowBattery;
    private onDeviceWrongTryProtectAlarm;
    setVideoTypeStoreToNAS(device: Device, value: VideoTypeStoreToNAS): Promise<void>;
    snooze(device: Device, value: SnoozeDetail): Promise<void>;
}
