import { Duration, 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, SET_VALUE_HOOKS, type SetValueImplementation, type SetValueImplementationHooksFactory } from "../lib/API.js";
import { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions } from "../lib/CommandClass.js";
import { type LevelChangeDirection, WindowCoveringCommand, WindowCoveringParameter } from "../lib/_Types.js";
import type { CCEncodingContext, CCParsingContext } from "../lib/traits.js";
import { WindowCoveringCCValues } from "./_CCValues.generated.js";
export { WindowCoveringCCValues };
export declare class WindowCoveringCCAPI extends CCAPI {
    supportsCommand(cmd: WindowCoveringCommand): MaybeNotKnown<boolean>;
    protected get [SET_VALUE](): SetValueImplementation;
    protected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory;
    protected get [POLL_VALUE](): PollValueImplementation;
    getSupported(): Promise<MaybeNotKnown<readonly WindowCoveringParameter[]>>;
    get(parameter: WindowCoveringParameter): Promise<Pick<WindowCoveringCCReport, "currentValue" | "duration" | "targetValue"> | undefined>;
    set(targetValues: {
        parameter: WindowCoveringParameter;
        value: number;
    }[], duration?: Duration | string): Promise<SupervisionResult | undefined>;
    startLevelChange(parameter: WindowCoveringParameter, direction: keyof typeof LevelChangeDirection, duration?: Duration | string): Promise<SupervisionResult | undefined>;
    stopLevelChange(parameter: WindowCoveringParameter): Promise<SupervisionResult | undefined>;
}
export declare class WindowCoveringCC extends CommandClass {
    ccCommand: WindowCoveringCommand;
    interview(ctx: InterviewContext): Promise<void>;
    refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void>;
    translatePropertyKey(ctx: GetValueDB, property: string | number, propertyKey: string | number): string | undefined;
}
export interface WindowCoveringCCSupportedReportOptions {
    supportedParameters: readonly WindowCoveringParameter[];
}
export declare class WindowCoveringCCSupportedReport extends WindowCoveringCC {
    constructor(options: WithAddress<WindowCoveringCCSupportedReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSupportedReport;
    readonly supportedParameters: readonly WindowCoveringParameter[];
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class WindowCoveringCCSupportedGet extends WindowCoveringCC {
}
export interface WindowCoveringCCReportOptions {
    parameter: WindowCoveringParameter;
    currentValue: number;
    targetValue: number;
    duration: Duration;
}
export declare class WindowCoveringCCReport extends WindowCoveringCC {
    constructor(options: WithAddress<WindowCoveringCCReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCReport;
    readonly parameter: WindowCoveringParameter;
    readonly currentValue: number;
    readonly targetValue: number;
    readonly duration: Duration;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface WindowCoveringCCGetOptions {
    parameter: WindowCoveringParameter;
}
export declare class WindowCoveringCCGet extends WindowCoveringCC {
    constructor(options: WithAddress<WindowCoveringCCGetOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCGet;
    parameter: WindowCoveringParameter;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface WindowCoveringCCSetOptions {
    targetValues: {
        parameter: WindowCoveringParameter;
        value: number;
    }[];
    duration?: Duration | string;
}
export declare class WindowCoveringCCSet extends WindowCoveringCC {
    constructor(options: WithAddress<WindowCoveringCCSetOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSet;
    targetValues: {
        parameter: WindowCoveringParameter;
        value: number;
    }[];
    duration: Duration | undefined;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface WindowCoveringCCStartLevelChangeOptions {
    parameter: WindowCoveringParameter;
    direction: keyof typeof LevelChangeDirection;
    duration?: Duration | string;
}
export declare class WindowCoveringCCStartLevelChange extends WindowCoveringCC {
    constructor(options: WithAddress<WindowCoveringCCStartLevelChangeOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCStartLevelChange;
    parameter: WindowCoveringParameter;
    direction: keyof typeof LevelChangeDirection;
    duration: Duration | undefined;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface WindowCoveringCCStopLevelChangeOptions {
    parameter: WindowCoveringParameter;
}
export declare class WindowCoveringCCStopLevelChange extends WindowCoveringCC {
    constructor(options: WithAddress<WindowCoveringCCStopLevelChangeOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCStopLevelChange;
    parameter: WindowCoveringParameter;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
//# sourceMappingURL=WindowCoveringCC.d.ts.map