import { type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type SupervisionResult, type WithAddress } from "@zwave-js/core";
import { Bytes } from "@zwave-js/shared";
import { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation } from "../lib/API.js";
import { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions } from "../lib/CommandClass.js";
import { ThermostatFanMode, ThermostatFanModeCommand } from "../lib/_Types.js";
import type { CCEncodingContext, CCParsingContext } from "../lib/traits.js";
import { ThermostatFanModeCCValues } from "./_CCValues.generated.js";
export { ThermostatFanModeCCValues };
export declare class ThermostatFanModeCCAPI extends CCAPI {
    supportsCommand(cmd: ThermostatFanModeCommand): MaybeNotKnown<boolean>;
    protected get [SET_VALUE](): SetValueImplementation;
    protected get [POLL_VALUE](): PollValueImplementation;
    get(): Promise<Pick<ThermostatFanModeCCReport, "mode" | "off"> | undefined>;
    set(mode: ThermostatFanMode, off?: boolean): Promise<SupervisionResult | undefined>;
    getSupportedModes(): Promise<MaybeNotKnown<readonly ThermostatFanMode[]>>;
}
export declare class ThermostatFanModeCC extends CommandClass {
    ccCommand: ThermostatFanModeCommand;
    interview(ctx: InterviewContext): Promise<void>;
    refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void>;
}
export interface ThermostatFanModeCCSetOptions {
    mode: ThermostatFanMode;
    off?: boolean;
}
export declare class ThermostatFanModeCCSet extends ThermostatFanModeCC {
    constructor(options: WithAddress<ThermostatFanModeCCSetOptions>);
    static from(_raw: CCRaw, _ctx: CCParsingContext): ThermostatFanModeCCSet;
    mode: ThermostatFanMode;
    off: boolean | undefined;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface ThermostatFanModeCCReportOptions {
    mode: ThermostatFanMode;
    off?: boolean;
}
export declare class ThermostatFanModeCCReport extends ThermostatFanModeCC {
    constructor(options: WithAddress<ThermostatFanModeCCReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): ThermostatFanModeCCReport;
    readonly mode: ThermostatFanMode;
    readonly off: boolean | undefined;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class ThermostatFanModeCCGet extends ThermostatFanModeCC {
}
export interface ThermostatFanModeCCSupportedReportOptions {
    supportedModes: ThermostatFanMode[];
}
export declare class ThermostatFanModeCCSupportedReport extends ThermostatFanModeCC {
    constructor(options: WithAddress<ThermostatFanModeCCSupportedReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): ThermostatFanModeCCSupportedReport;
    persistValues(ctx: PersistValuesContext): boolean;
    readonly supportedModes: ThermostatFanMode[];
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class ThermostatFanModeCCSupportedGet extends ThermostatFanModeCC {
}
//# sourceMappingURL=ThermostatFanModeCC.d.ts.map