"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.definitions = void 0;
const fz = __importStar(require("../converters/fromZigbee"));
const exposes = __importStar(require("../lib/exposes"));
const m = __importStar(require("../lib/modernExtend"));
const e = exposes.presets;
// TODO: should split?
const awox_color_ctrl = {
    cluster: "lightingColorCtrl",
    type: ["raw", "commandEnhancedMoveHue", "commandStepColorTemp" /* TODO: unused? */], // Limit types to messages we specifically handle
    convert: (model, msg, publish, options, meta) => {
        const payload = msg.data;
        let action = null;
        if (msg.type === "raw") {
            const colorByte = payload[4];
            switch (colorByte) {
                case 0xd6:
                    action = "color_blue";
                    break;
                case 0xd4:
                    action = "color_green";
                    break;
                case 0xd2:
                    action = "color_yellow";
                    break;
                case 0xd0:
                    action = "color_red";
                    break;
            }
        }
        else if (msg.type === "commandEnhancedMoveHue") {
            action = "light_movement";
        }
        if (action) {
            return { action: action };
        }
    },
};
const awox_level_ctrl = {
    cluster: "genLevelCtrl",
    type: ["raw"], // Limit types to messages we specifically handle
    convert: (model, msg, publish, options, meta) => {
        const payload = msg.data;
        let action = null;
        if (msg.type === "raw" && payload[1] === 0xdf) {
            action = "refresh"; // Unique "Refresh" button
        }
        // DEVELOPER NOTE: Handling for genOnOff, genLevelCtrl (step/move), and genScenes is removed
        // as it's already covered by standard fz converters.
        if (action) {
            return { action: action };
        }
    },
};
const awox_scenes_raw = {
    cluster: "genScenes",
    type: ["raw"],
    convert: (model, msg, publish, options, meta) => {
        return { action: `recall_${msg.data[msg.data.length - 1]}` };
    },
};
exports.definitions = [
    {
        zigbeeModel: ["ESMLFzm_w6_Dimm"],
        model: "12226",
        vendor: "AwoX",
        description: "Dimmable filament lamp",
        extend: [m.light()],
    },
    {
        fingerprint: [
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 258 },
                    { ID: 3, profileID: 49152, deviceID: 258 },
                ],
            },
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 257 },
                    { ID: 3, profileID: 4751, deviceID: 257 },
                ],
            },
        ],
        model: "AwoX-light",
        vendor: "AwoX",
        description: "Generic light",
        extend: [m.light()],
        whiteLabel: [
            { vendor: "EGLO", model: "12229" },
            { vendor: "EGLO", model: "12256" },
        ],
    },
    {
        zigbeeModel: ["ERCU_Zm"],
        fingerprint: [
            {
                type: "EndDevice",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                powerSource: "Battery",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 2048, inputClusters: [0, 3, 4, 4096], outputClusters: [0, 3, 4, 5, 6, 8, 768, 4096] },
                    { ID: 3, profileID: 4751, deviceID: 2048, inputClusters: [65360, 65361], outputClusters: [65360, 65361] },
                ],
            },
        ],
        model: "33952",
        vendor: "AwoX",
        description: "Remote controller",
        fromZigbee: [
            fz.command_on,
            // @deprecated This converter provides generic color actions. Use `awox_remote_actions` for specific color buttons (blue, green, yellow, red).
            fz.awox_colors,
            // @deprecated This converter provides a generic refresh. Use `awox_remote_actions` for the dedicated 'refresh' action.
            fz.awox_refresh,
            // @deprecated This converter provides a generic colored refresh. Use `awox_remote_actions` for specific color buttons.
            fz.awox_refreshColored,
            fz.command_off,
            fz.command_step, // Now handled by fz.command_step
            fz.command_move, // Now handled by fz.command_move
            fz.command_stop,
            fz.command_recall, // Now handled by fz.command_recall
            fz.command_step_color_temperature, // Now handled by fz.command_step_color_temperature
            awox_color_ctrl, // Always at the end to prioritize specific actions.
            awox_level_ctrl,
            awox_scenes_raw,
        ],
        toZigbee: [],
        exposes: [
            e.action([
                "on",
                "off",
                /** @deprecated Use 'color_blue', 'color_green', 'color_yellow', 'color_red' from 'awox_remote_actions' instead. */
                "red", // Deprecated if awox_colors is less precise than the new specific actions.
                /** @deprecated Use 'refresh' from 'awox_remote_actions' instead. */
                "refresh", // Deprecated if fz.awox_refresh is less precise than the new refresh action.
                /** @deprecated Use 'color_blue', 'color_green', 'color_yellow', 'color_red' from 'awox_remote_actions' instead. */
                "refresh_colored", // Deprecated if fz.awox_refreshColored is less precise.
                /** @deprecated Use 'color_blue' from 'awox_remote_actions' instead. */
                "blue",
                /** @deprecated Use 'color_yellow' from 'awox_remote_actions' instead. */
                "yellow",
                /** @deprecated Use 'color_green' from 'awox_remote_actions' instead. */
                "green",
                // The actions below are no longer deprecated by awox_remote_actions as it no longer directly handles them.
                "brightness_step_up",
                "brightness_step_down",
                "brightness_move_up",
                "brightness_move_down",
                "brightness_stop",
                "recall_1",
                "color_temperature_step_up",
                "color_temperature_step_down",
                // New, more precise actions exposed by awox_remote_actions
                "color_blue",
                "color_green",
                "color_yellow",
                "color_red",
                // The actions below are no longer in awox_remote_actions; they are handled by standard converters.
                // "color_temp_warm",
                // "color_temp_cold",
                "light_movement", // This specific action is kept as it's handled by awox_remote_actions
                "refresh", // This specific action is kept as it's handled by awox_remote_actions
                "recall_1", // These actions are handled by fz.command_recall, not awox_remote_actions
                "recall_2", // Same
            ]),
        ],
    },
    {
        zigbeeModel: ["ESMLzm_c5_GU10"],
        fingerprint: [
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 269, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096, 64599, 10], outputClusters: [6] },
                    { ID: 3, profileID: 4751, deviceID: 269, inputClusters: [65360, 65361], outputClusters: [65360, 65361] },
                    { ID: 242, profileID: 41440, deviceID: 97, inputClusters: [], outputClusters: [33] },
                ],
            },
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 269, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096, 64599, 10], outputClusters: [6] },
                    { ID: 3, profileID: 4751, deviceID: 269, inputClusters: [65360, 65361, 4], outputClusters: [65360, 65361] },
                    { ID: 242, profileID: 41440, deviceID: 97, inputClusters: [], outputClusters: [33] },
                ],
            },
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 258, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096], outputClusters: [6, 25] },
                    { ID: 3, profileID: 49152, deviceID: 258, inputClusters: [65360, 65361], outputClusters: [65360, 65361] },
                ],
            },
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 269, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096, 64599], outputClusters: [6] },
                    { ID: 3, profileID: 4751, deviceID: 269, inputClusters: [65360, 65361], outputClusters: [65360, 65361] },
                    { ID: 242, profileID: 41440, deviceID: 97, inputClusters: [], outputClusters: [33] },
                ],
            },
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 269, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096, 64599], outputClusters: [6] },
                    { ID: 3, profileID: 4751, deviceID: 269, inputClusters: [65360, 65361], outputClusters: [65360, 65361] },
                ],
            },
        ],
        model: "33943/33944/33946",
        vendor: "AwoX",
        description: "LED RGB & brightness",
        extend: [m.light({ colorTemp: { range: [153, 370] }, color: { modes: ["xy", "hs"] } })],
    },
    {
        fingerprint: [
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 268, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096, 64599], outputClusters: [6] },
                    { ID: 3, profileID: 4751, deviceID: 268, inputClusters: [65360, 65361], outputClusters: [65360, 65361] },
                ],
            },
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 268, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096, 64599], outputClusters: [6] },
                    { ID: 242, profileID: 41440, deviceID: 97, inputClusters: [], outputClusters: [33] },
                    { ID: 3, profileID: 4751, deviceID: 268, inputClusters: [65360, 65361], outputClusters: [65360, 65361] },
                ],
            },
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 268, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096, 64599, 10], outputClusters: [6] },
                    { ID: 242, profileID: 41440, deviceID: 97, inputClusters: [], outputClusters: [33] },
                    { ID: 3, profileID: 4751, deviceID: 268, inputClusters: [65360, 65361], outputClusters: [65360, 65361] },
                ],
            },
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 268, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096, 64599, 10], outputClusters: [6] },
                    { ID: 242, profileID: 41440, deviceID: 97, inputClusters: [], outputClusters: [33] },
                    { ID: 3, profileID: 4751, deviceID: 268, inputClusters: [65360, 65361, 4], outputClusters: [65360, 65361] },
                ],
            },
        ],
        model: "33957",
        vendor: "AwoX",
        description: "LED light with color temperature",
        extend: [m.light({ colorTemp: { range: [153, 454] } })],
        whiteLabel: [{ vendor: "EGLO", model: "12239" }],
    },
    {
        zigbeeModel: ["EBF_RGB_Zm"],
        model: "EBF_RGB_Zm",
        vendor: "AwoX",
        description: "LED with adjustable color temp on main ring; extra RGB strip for full colors.",
        extend: [m.light({ colorTemp: { range: [153, 370] }, color: { modes: ["xy", "hs"] } }), m.commandsOnOff()],
        whiteLabel: [{ vendor: "EGLO", model: "900566" }],
    },
    {
        zigbeeModel: ["EGLO_ZM_TW"],
        fingerprint: [
            {
                type: "Router",
                manufacturerName: "AwoX",
                modelID: "TLSR82xx",
                endpoints: [
                    { ID: 1, profileID: 260, deviceID: 268, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096], outputClusters: [6, 25] },
                    { ID: 3, profileID: 49152, deviceID: 268, inputClusters: [65360, 65361], outputClusters: [65360, 65361] },
                ],
            },
        ],
        model: "33955",
        vendor: "AwoX",
        description: "LED light with color temperature",
        extend: [m.light({ colorTemp: { range: [153, 370] } })],
        whiteLabel: [
            { vendor: "EGLO", model: "900316" },
            { vendor: "EGLO", model: "900317" },
            { vendor: "EGLO", model: "900053" },
        ],
    },
    {
        zigbeeModel: ["EPIR_Zm"],
        model: "EPIR_Zm",
        vendor: "AwoX",
        description: "Connect-Z motion (PIR) sensor",
        extend: [m.battery(), m.occupancy(), m.commandsOnOff(), m.commandsLevelCtrl()],
        whiteLabel: [{ vendor: "EGLO", model: "99106" }],
    },
    {
        zigbeeModel: ["ERCU_WS_Zm"],
        model: "ERCU_WS_Zm",
        vendor: "AwoX",
        description: "Connect-Z magnetic wall mountable light RCU",
        extend: [m.deviceEndpoints({ endpoints: { "1": 1, "3": 3 } }), m.commandsOnOff(), m.commandsLevelCtrl(), m.commandsColorCtrl()],
        meta: { multiEndpoint: true },
        whiteLabel: [{ vendor: "EGLO", model: "900116" }],
    },
];
//# sourceMappingURL=awox.js.map