/**
 * VeSync Fan Classes
 */
import { VeSyncBaseDevice } from './vesyncBaseDevice';
import { VeSync } from './vesync';
interface FanConfigEntry {
    module: 'VeSyncAirBypass' | 'VeSyncHumidifier' | 'VeSyncWarmHumidifier' | 'VeSyncTowerFan' | 'VeSyncAirBaseV2' | 'VeSyncSuperior6000S' | 'VeSyncHumid1000S' | 'VeSyncHumid200S' | 'VeSyncAir131';
    features: string[];
    levels?: number[];
    modes?: ReadonlyArray<string>;
    autoPreferences?: ReadonlyArray<string>;
}
interface FanConfig {
    [key: string]: FanConfigEntry;
}
export declare const fanConfig: FanConfig;
/**
 * Base class for VeSync Fans
 */
export declare abstract class VeSyncFan extends VeSyncBaseDevice {
    protected details: {
        mode?: string;
        speed?: number;
        filter_life?: number | {
            percent: number;
        };
        screen_status?: 'on' | 'off';
        child_lock?: boolean;
        air_quality?: string | number;
        air_quality_value?: number;
        air_quality_level?: number;
        air_quality_label?: string;
        pm1?: number;
        pm10?: number;
        aq_percent?: number;
        humidity?: number;
        mist_level?: number;
        warm_level?: number;
        warm_enabled?: boolean;
        [key: string]: any;
    };
    protected mode_dict: Record<string, any>;
    protected speed_dict: Record<string, any>;
    protected _timer: number | {
        duration: number;
        action: string;
    } | null;
    protected config: FanConfigEntry;
    constructor(details: Record<string, any>, manager: VeSync);
    /**
     * Find config entry by substring matching for variant device types
     * Maps LAP variants to their base model configs (e.g., LAP-C401S-WUSR → Core400S)
     */
    private findConfigBySubstring;
    /**
     * Check if feature is supported
     */
    hasFeature(feature: string): boolean;
    /**
     * Get configured modes for the device, falling back to provided defaults.
     */
    protected getConfigModes(defaultModes?: ReadonlyArray<string>): ReadonlyArray<string>;
    /**
     * Get configured auto preferences for the device, falling back to provided defaults.
     */
    protected getConfigAutoPreferences(defaultPreferences?: ReadonlyArray<string>): ReadonlyArray<string>;
    /**
     * Public accessor for supported modes for consumers that need to inspect capability metadata.
     */
    getSupportedModes(defaultModes?: ReadonlyArray<string>): ReadonlyArray<string>;
    /**
     * Public accessor for supported auto preference profiles.
     */
    getSupportedAutoPreferences(defaultPreferences?: ReadonlyArray<string>): ReadonlyArray<string>;
    /**
     * Check if feature is supported in current mode
     */
    isFeatureSupportedInCurrentMode(feature: string): boolean;
    /**
     * Get maximum fan speed level
     */
    getMaxFanSpeed(): number;
    /**
     * Get current mode
     */
    get mode(): string;
    /**
     * Get current speed
     */
    get speed(): number;
    /**
     * Get filter life percentage
     */
    get filterLife(): number;
    /**
     * Get screen status
     */
    get screenStatus(): 'on' | 'off';
    /**
     * Get child lock status
     */
    get childLock(): boolean;
    /**
     * Get air quality level (if supported)
     */
    get airQualityLevel(): string | number;
    /**
     * Get air quality (alias for airQualityLevel for backward compatibility)
     */
    get airQuality(): string | number;
    /**
     * Get air quality value - PM2.5 in μg/m³ (if supported)
     */
    get airQualityValue(): number;
    /**
     * Normalized air quality metadata aligned with pyvesync levels.
     */
    getNormalizedAirQuality(): {
        level: number;
        label: string;
    };
    /**
     * Get PM1 value (if supported)
     */
    get pm1(): number;
    /**
     * Get PM10 value (if supported)
     */
    get pm10(): number;
    /**
     * Get air quality percentage (if supported)
     */
    get aqPercent(): number;
    /**
     * Get humidity level (if supported)
     */
    get humidity(): number;
    /**
     * Get mist level (if supported)
     */
    get mistLevel(): number;
    /**
     * Get warm level (if supported)
     */
    get warmLevel(): number;
    /**
     * Get timer status
     */
    get timer(): number | {
        duration: number;
        action: string;
    } | null;
    set timer(value: number | {
        duration: number;
        action: string;
    } | null);
    /**
     * Return formatted device info to stdout
     */
    display(): void;
    /**
     * Return JSON details for fan
     */
    displayJSON(): string;
    abstract getDetails(): Promise<Boolean>;
    abstract turnOn(): Promise<boolean>;
    abstract turnOff(): Promise<boolean>;
    abstract changeFanSpeed(speed: number): Promise<boolean>;
    abstract setMode(mode: string): Promise<boolean>;
}
export {};
