import type { GetDeviceConfig } from "@zwave-js/config";
import { type ControlsCC, Duration, type EndpointId, type GetEndpoint, type GetNode, type GetSupportedCCVersion, type GetValueDB, type MaybeNotKnown, type MaybeUnknown, type MessageOrCCLogEntry, type NodeId, type SupervisionResult, type SupportsCC, type ValueID, 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 PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions } from "../lib/CommandClass.js";
import { BasicCommand } from "../lib/_Types.js";
import type { CCEncodingContext, CCParsingContext } from "../lib/traits.js";
import { BasicCCValues } from "./_CCValues.generated.js";
export { BasicCCValues };
export declare class BasicCCAPI extends CCAPI {
    supportsCommand(cmd: BasicCommand): MaybeNotKnown<boolean>;
    protected get [SET_VALUE](): SetValueImplementation;
    protected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory;
    protected get [POLL_VALUE](): PollValueImplementation;
    get(): Promise<Pick<BasicCCReport, "currentValue" | "duration" | "targetValue"> | undefined>;
    set(targetValue: number): Promise<SupervisionResult | undefined>;
}
export declare class BasicCC extends CommandClass {
    ccCommand: BasicCommand;
    interview(ctx: InterviewContext): Promise<void>;
    refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void>;
    getDefinedValueIDs(ctx: GetValueDB & GetSupportedCCVersion & GetDeviceConfig & GetNode<NodeId & GetEndpoint<EndpointId & SupportsCC & ControlsCC>>): ValueID[];
}
export interface BasicCCSetOptions {
    targetValue: number;
}
export declare class BasicCCSet extends BasicCC {
    constructor(options: WithAddress<BasicCCSetOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): BasicCCSet;
    targetValue: number;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface BasicCCReportOptions {
    currentValue?: MaybeUnknown<number>;
    targetValue?: MaybeUnknown<number>;
    duration?: Duration;
}
export declare class BasicCCReport extends BasicCC {
    constructor(options: WithAddress<BasicCCReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): BasicCCReport;
    currentValue: MaybeUnknown<number> | undefined;
    readonly targetValue: MaybeUnknown<number> | undefined;
    readonly duration: Duration | undefined;
    persistValues(ctx: PersistValuesContext): boolean;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class BasicCCGet extends BasicCC {
}
//# sourceMappingURL=BasicCC.d.ts.map