import type { ModernExtend } from "./types";
declare const INOVELLI_CLUSTER_NAME: "manuSpecificInovelli";
declare const INOVELLI_MMWAVE_CLUSTER_NAME: "manuSpecificInovelliMMWave";
export declare const CLUSTER_NAME: "manuSpecificInovelli";
export declare const MMWAVE_CLUSTER_NAME: "manuSpecificInovelliMMWave";
export declare const INOVELLI = 4655;
declare const inovelliExtend: {
    addCustomCluster: () => ModernExtend;
    addCustomMMWaveCluster: () => ModernExtend;
    device: ({ model, attrs, supportsLedEffects, supportsButtonTaps, splitValuesByEndpoint, }: {
        model: Model;
        attrs: Array<{
            attributes: {
                [s: string]: Attribute;
            };
            clusterName: typeof INOVELLI_CLUSTER_NAME | typeof INOVELLI_MMWAVE_CLUSTER_NAME;
        }>;
        supportsLedEffects?: boolean;
        supportsButtonTaps: boolean;
        splitValuesByEndpoint?: boolean;
    }) => ModernExtend;
    light: ({ splitValuesByEndpoint }?: {
        splitValuesByEndpoint?: boolean;
    }) => ModernExtend;
    fan: ({ endpointId, splitValuesByEndpoint }: {
        endpointId: number;
        splitValuesByEndpoint?: boolean;
    }) => ModernExtend;
    mmWave: () => ModernExtend;
    energyReset: () => ModernExtend;
};
type FirmwareVersion = [major: number, minor: number];
export declare const enum Model {
    VZM30 = "VZM30-SN",
    VZM31 = "VZM31-SN",
    VZM32 = "VZM32-SN",
    VZM35 = "VZM35-SN",
    VZM36 = "VZM36"
}
interface ModelValuesEntry {
    values?: {
        [s: string]: number;
    };
    conditionalValues?: {
        [valueName: string]: {
            addedInFirmware?: FirmwareVersion;
            removedInFirmware?: FirmwareVersion;
        };
    };
}
interface Attribute {
    ID: number;
    dataType: number;
    min?: number;
    max?: number;
    description: string;
    category?: "config" | "diagnostic";
    unit?: string;
    displayType?: string;
    readOnly?: boolean;
    addedInFirmware?: Partial<Record<Model, FirmwareVersion>>;
    modelValues?: {
        default: ModelValuesEntry;
    } & Partial<Record<Model, ModelValuesEntry>>;
}
export declare const VZM30_ATTRIBUTES: {
    [s: string]: Attribute;
};
export declare const VZM31_ATTRIBUTES: {
    [s: string]: Attribute;
};
export declare const VZM32_ATTRIBUTES: {
    [s: string]: Attribute;
};
export declare const VZM32_MMWAVE_ATTRIBUTES: {
    [s: string]: Attribute;
};
export declare const VZM35_ATTRIBUTES: {
    [s: string]: Attribute;
};
export declare const VZM36_ATTRIBUTES: {
    [s: string]: Attribute;
};
export { inovelliExtend as m };
//# sourceMappingURL=inovelli.d.ts.map