import { Duration, type GetValueDB, type MaybeNotKnown, type MaybeUnknown, 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 { BinarySwitchCommand } from "../lib/_Types.js";
import type { CCEncodingContext, CCParsingContext } from "../lib/traits.js";
import { BinarySwitchCCValues } from "./_CCValues.generated.js";
export { BinarySwitchCCValues };
export declare class BinarySwitchCCAPI extends CCAPI {
    supportsCommand(cmd: BinarySwitchCommand): MaybeNotKnown<boolean>;
    get(): Promise<{
        currentValue: boolean;
        targetValue: MaybeUnknown<boolean> | undefined;
        duration: Duration | undefined;
    } | undefined>;
    /**
     * Sets the switch to the given value
     * @param targetValue The target value to set
     * @param duration The duration after which the target value should be reached. Can be a Duration instance or a user-friendly duration string like `"1m17s"`. Only supported in V2 and above.
     */
    set(targetValue: boolean, duration?: Duration | string): Promise<SupervisionResult | undefined>;
    protected get [SET_VALUE](): SetValueImplementation;
    protected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory;
    protected get [POLL_VALUE](): PollValueImplementation;
}
export declare class BinarySwitchCC extends CommandClass {
    ccCommand: BinarySwitchCommand;
    interview(ctx: InterviewContext): Promise<void>;
    refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void>;
    setMappedBasicValue(ctx: GetValueDB, value: number): boolean;
}
export interface BinarySwitchCCSetOptions {
    targetValue: boolean;
    duration?: Duration | string;
}
export declare class BinarySwitchCCSet extends BinarySwitchCC {
    constructor(options: WithAddress<BinarySwitchCCSetOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): BinarySwitchCCSet;
    targetValue: boolean;
    duration: Duration | undefined;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface BinarySwitchCCReportOptions {
    currentValue?: MaybeUnknown<boolean>;
    targetValue?: MaybeUnknown<boolean>;
    duration?: Duration | string;
}
export declare class BinarySwitchCCReport extends BinarySwitchCC {
    constructor(options: WithAddress<BinarySwitchCCReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): BinarySwitchCCReport;
    readonly currentValue: MaybeUnknown<boolean> | undefined;
    readonly targetValue: MaybeUnknown<boolean> | undefined;
    readonly duration: Duration | undefined;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class BinarySwitchCCGet extends BinarySwitchCC {
}
//# sourceMappingURL=BinarySwitchCC.d.ts.map