import { type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type SupervisionResult, type WithAddress } from "@zwave-js/core";
import { Bytes, type BytesView } 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 { ThermostatMode, ThermostatModeCommand } from "../lib/_Types.js";
import type { CCEncodingContext, CCParsingContext } from "../lib/traits.js";
import { ThermostatModeCCValues } from "./_CCValues.generated.js";
export { ThermostatModeCCValues };
export declare class ThermostatModeCCAPI extends CCAPI {
    supportsCommand(cmd: ThermostatModeCommand): MaybeNotKnown<boolean>;
    protected get [SET_VALUE](): SetValueImplementation;
    protected get [POLL_VALUE](): PollValueImplementation;
    get(): Promise<Pick<ThermostatModeCCReport, "manufacturerData" | "mode"> | undefined>;
    set(mode: Exclude<ThermostatMode, (typeof ThermostatMode)["Manufacturer specific"]>): Promise<SupervisionResult | undefined>;
    set(mode: (typeof ThermostatMode)["Manufacturer specific"], manufacturerData: BytesView | string): Promise<SupervisionResult | undefined>;
    getSupportedModes(): Promise<MaybeNotKnown<readonly ThermostatMode[]>>;
}
export declare class ThermostatModeCC extends CommandClass {
    ccCommand: ThermostatModeCommand;
    interview(ctx: InterviewContext): Promise<void>;
    refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void>;
}
export type ThermostatModeCCSetOptions = {
    mode: Exclude<ThermostatMode, (typeof ThermostatMode)["Manufacturer specific"]>;
} | {
    mode: (typeof ThermostatMode)["Manufacturer specific"];
    manufacturerData: BytesView;
};
export declare class ThermostatModeCCSet extends ThermostatModeCC {
    constructor(options: WithAddress<ThermostatModeCCSetOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): ThermostatModeCCSet;
    mode: ThermostatMode;
    manufacturerData?: BytesView;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export type ThermostatModeCCReportOptions = {
    mode: Exclude<ThermostatMode, (typeof ThermostatMode)["Manufacturer specific"]>;
    manufacturerData?: undefined;
} | {
    mode: (typeof ThermostatMode)["Manufacturer specific"];
    manufacturerData?: BytesView;
};
export declare class ThermostatModeCCReport extends ThermostatModeCC {
    constructor(options: WithAddress<ThermostatModeCCReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): ThermostatModeCCReport;
    persistValues(ctx: PersistValuesContext): boolean;
    readonly mode: ThermostatMode;
    readonly manufacturerData: BytesView | undefined;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class ThermostatModeCCGet extends ThermostatModeCC {
}
export interface ThermostatModeCCSupportedReportOptions {
    supportedModes: ThermostatMode[];
}
export declare class ThermostatModeCCSupportedReport extends ThermostatModeCC {
    constructor(options: WithAddress<ThermostatModeCCSupportedReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): ThermostatModeCCSupportedReport;
    persistValues(ctx: PersistValuesContext): boolean;
    readonly supportedModes: ThermostatMode[];
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class ThermostatModeCCSupportedGet extends ThermostatModeCC {
}
//# sourceMappingURL=ThermostatModeCC.d.ts.map