import { type EndpointId, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type WithAddress } from "@zwave-js/core";
import { Bytes } from "@zwave-js/shared";
import { PhysicalCCAPI } from "../lib/API.js";
import { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions } from "../lib/CommandClass.js";
import { AlarmSensorCommand, AlarmSensorType } from "../lib/_Types.js";
import type { CCEncodingContext, CCParsingContext } from "../lib/traits.js";
import { AlarmSensorCCValues } from "./_CCValues.generated.js";
export { AlarmSensorCCValues };
export declare class AlarmSensorCCAPI extends PhysicalCCAPI {
    supportsCommand(cmd: AlarmSensorCommand): MaybeNotKnown<boolean>;
    /**
     * Retrieves the current value from this sensor
     * @param sensorType The (optional) sensor type to retrieve the value for
     */
    get(sensorType?: AlarmSensorType): Promise<Pick<AlarmSensorCCReport, "duration" | "severity" | "state"> | undefined>;
    getSupportedSensorTypes(): Promise<AlarmSensorType[] | undefined>;
}
export declare class AlarmSensorCC extends CommandClass {
    ccCommand: AlarmSensorCommand;
    interview(ctx: InterviewContext): Promise<void>;
    refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void>;
    /**
     * Returns which sensor types are supported.
     * This only works AFTER the interview process
     */
    static getSupportedSensorTypesCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<AlarmSensorType[]>;
    protected createMetadataForSensorType(ctx: GetValueDB, sensorType: AlarmSensorType): void;
}
export interface AlarmSensorCCReportOptions {
    sensorType: AlarmSensorType;
    state: boolean;
    severity?: number;
    duration?: number;
}
export declare class AlarmSensorCCReport extends AlarmSensorCC {
    constructor(options: WithAddress<AlarmSensorCCReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): AlarmSensorCCReport;
    readonly sensorType: AlarmSensorType;
    readonly state: boolean;
    readonly severity: number | undefined;
    readonly duration: number | undefined;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
    persistValues(ctx: PersistValuesContext): boolean;
}
export interface AlarmSensorCCGetOptions {
    sensorType?: AlarmSensorType;
}
export declare class AlarmSensorCCGet extends AlarmSensorCC {
    constructor(options: WithAddress<AlarmSensorCCGetOptions>);
    static from(_raw: CCRaw, _ctx: CCParsingContext): AlarmSensorCCGet;
    sensorType: AlarmSensorType;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface AlarmSensorCCSupportedReportOptions {
    supportedSensorTypes: AlarmSensorType[];
}
export declare class AlarmSensorCCSupportedReport extends AlarmSensorCC {
    constructor(options: WithAddress<AlarmSensorCCSupportedReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): AlarmSensorCCSupportedReport;
    supportedSensorTypes: AlarmSensorType[];
    persistValues(ctx: PersistValuesContext): boolean;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class AlarmSensorCCSupportedGet extends AlarmSensorCC {
}
//# sourceMappingURL=AlarmSensorCC.d.ts.map