import type { GetDeviceConfig } from "@zwave-js/config";
import { type ControlsCC, type EndpointId, type GetEndpoint, type GetNode, type GetSupportedCCVersion, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type NodeId, type SinglecastCC, type SupportsCC, type WithAddress } from "@zwave-js/core";
import { type AllOrNone, Bytes } from "@zwave-js/shared";
import { POLL_VALUE, PhysicalCCAPI, type PollValueImplementation } from "../lib/API.js";
import { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions } from "../lib/CommandClass.js";
import { BatteryChargingStatus, BatteryCommand, BatteryReplacementStatus } from "../lib/_Types.js";
import type { CCEncodingContext, CCParsingContext } from "../lib/traits.js";
import { BatteryCCValues } from "./_CCValues.generated.js";
export { BatteryCCValues };
export declare class BatteryCCAPI extends PhysicalCCAPI {
    supportsCommand(cmd: BatteryCommand): MaybeNotKnown<boolean>;
    protected get [POLL_VALUE](): PollValueImplementation;
    get(): Promise<Pick<BatteryCCReport, "backup" | "chargingStatus" | "disconnected" | "level" | "lowFluid" | "lowTemperatureStatus" | "overheating" | "rechargeOrReplace" | "rechargeable"> | undefined>;
    getHealth(): Promise<Pick<BatteryCCHealthReport, "maximumCapacity" | "temperature"> | undefined>;
}
export declare class BatteryCC extends CommandClass {
    ccCommand: BatteryCommand;
    interview(ctx: InterviewContext): Promise<void>;
    refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void>;
    shouldRefreshValues(this: SinglecastCC<this>, ctx: GetValueDB & GetSupportedCCVersion & GetDeviceConfig & GetNode<NodeId & GetEndpoint<EndpointId & SupportsCC & ControlsCC>>): boolean;
}
export type BatteryCCReportOptions = {
    level: number | "low";
} & AllOrNone<{
    chargingStatus: BatteryChargingStatus;
    rechargeable: boolean;
    backup: boolean;
    overheating: boolean;
    lowFluid: boolean;
    rechargeOrReplace: BatteryReplacementStatus;
    disconnected: boolean;
}> & AllOrNone<{
    lowTemperatureStatus: boolean;
}>;
export declare class BatteryCCReport extends BatteryCC {
    constructor(options: WithAddress<BatteryCCReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): BatteryCCReport;
    persistValues(ctx: PersistValuesContext): boolean;
    readonly level: number;
    readonly chargingStatus: BatteryChargingStatus | undefined;
    readonly rechargeable: boolean | undefined;
    readonly backup: boolean | undefined;
    readonly overheating: boolean | undefined;
    readonly lowFluid: boolean | undefined;
    readonly rechargeOrReplace: BatteryReplacementStatus | undefined;
    readonly disconnected: boolean | undefined;
    readonly lowTemperatureStatus: boolean | undefined;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class BatteryCCGet extends BatteryCC {
}
export interface BatteryCCHealthReportOptions {
    maximumCapacity?: number;
    temperature?: number;
    temperatureScale?: number;
}
export declare class BatteryCCHealthReport extends BatteryCC {
    constructor(options: WithAddress<BatteryCCHealthReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): BatteryCCHealthReport;
    readonly maximumCapacity: number | undefined;
    readonly temperature: number | undefined;
    private readonly temperatureScale;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class BatteryCCHealthGet extends BatteryCC {
}
//# sourceMappingURL=BatteryCC.d.ts.map