import { PlatformAccessory, CharacteristicValue } from 'homebridge';
import { EufySecurityPlatform } from '../platform';
import { BaseAccessory } from './BaseAccessory';
import { Station, PropertyName, PropertyValue } from 'eufy-security-client';
import { StationConfig } from '../utils/configTypes';
export declare enum HKGuardMode {
    STAY_ARM = 0,
    AWAY_ARM = 1,
    NIGHT_ARM = 2,
    DISARM = 3
}
/**
 * Platform Accessory
 * An instance of this class is created for each accessory your platform registers
 * Each accessory may expose multiple services of different service types.
 */
export declare class StationAccessory extends BaseAccessory {
    private alarm_triggered;
    private modes;
    readonly hasKeyPad: boolean;
    private alarm_delayed;
    private alarm_delay_timeout?;
    readonly stationConfig: StationConfig;
    private guardModeChangeTimeout;
    constructor(platform: EufySecurityPlatform, accessory: PlatformAccessory, device: Station);
    /**
     * Get the current value of the "propertyName" characteristic
     */
    protected getPropertyValue(propertyName: PropertyName): PropertyValue;
    protected setPropertyValue(propertyName: PropertyName, value: unknown): Promise<void>;
    /**
     * Helper function to get a configuration value by checking custom, global, and default settings.
     * @param {number} customValue - Value from the custom configuration
     * @param {number} globalValue - Value from the global configuration
     * @param {number} defaultValue - The default value to use if both custom and global values are undefined
     * @returns {number} The chosen value based on priority
     */
    private getConfigValue;
    /**
     * Gets the station configuration based on several possible sources.
     * Priority is given to custom configurations (if available), then falls back to global configs,
     * and lastly uses default values if neither custom nor global configs are set.
     *
     * @returns {StationConfig} The final configuration settings for the station
     */
    private getStationConfig;
    private onStationGuardModePushNotification;
    private onStationCurrentModePushNotification;
    private onStationAlarmEventPushNotification;
    private mappingHKEufy;
    /**
     * Convert a HomeKit mode number to its corresponding Eufy mode number.
     * Searches the `this.modes` array to find a matching HomeKit mode.
     * Throws an error if a matching mode is not found.
     *
     * @param {number} hkMode - The HomeKit mode to convert
     * @returns {number} The corresponding Eufy mode
     * @throws {Error} If a matching mode is not found
     */
    convertHKtoEufy(hkMode: number): number;
    /**
     * Convert a Eufy mode number to its corresponding HomeKit mode number.
     * Searches the `this.modes` array to find a matching Eufy mode.
     * Throws an error if a matching mode is not found.
     *
     * @param {number} eufyMode - The Eufy mode to convert
     * @returns {number} The corresponding HomeKit mode
     * @throws {Error} If a matching mode is not found
     */
    convertEufytoHK(eufyMode: number): number;
    /**
     * Handle requests to get the current value of the 'Security System Current State' characteristic
     */
    protected handleSecuritySystemCurrentStateGet(): CharacteristicValue;
    /**
     * Handle requests to get the current value of the 'Security System Target State' characteristic
     */
    private handleSecuritySystemTargetStateGet;
    /**
     * Handle requests to set the 'Security System Target State' characteristic
     */
    private handleSecuritySystemTargetStateSet;
    private handleManualTriggerSwitchStateGet;
    private handleManualTriggerSwitchStateSet;
    private onStationAlarmDelayedEvent;
    private onStationAlarmArmedEvent;
    private getGuardModeName;
    private updateManuelTriggerButton;
}
//# sourceMappingURL=StationAccessory.d.ts.map