/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ClusterId, DeviceTypeId } from "@matter/types";
/**
 * General device classification categories.
 */
export declare enum DeviceClasses {
    /** Node device type. */
    Node = "Node",
    /**
     * Utility device type.
     * A Utility device type supports configuration and settings.
     */
    Utility = "Utility",
    /**
     * Application device type.
     * Application devices types are typically the most datatype endpoints on a node and in the network.
     */
    App = "App",
    /**
     * Simple device type.
     * A Simple device type supports local control that is persistent, independent, and unsupervised.
     */
    Simple = "Simple",
    /**
     * Dynamic device type.
     * A Dynamic device type supports intelligent and supervisory services, such as commissioning,
     * monitoring, trend analysis, scheduling and central management. A dynamic device type is an
     * application device type.
     */
    Dynamic = "Dynamic",
    /** There exists a client application cluster on the endpoint. */
    Client = "Client",
    /** There exists a server application cluster on the endpoint. */
    Server = "Server",
    /** The device type is composed of 2 or more device types. */
    Composed = "Composed",
    /** Composed device type that is composed of 2 or more endpoints with the same device type. */
    Multiple = "Multiple",
    /** The endpoint is an Initiator for Zigbee EZ-Mode Finding & Binding. */
    "EZInitiator" = "EZ-Initiator",
    /** The endpoint is a Target for Zigbee EZ-Mode Finding & Binding. */
    "EZTarget" = "EZ-Target",
    /**
     * The endpoint represents a Bridged Device, for which information about the state of
     * its power source is available to the Bridge
     */
    BridgedPowerSourceInfo = "BridgedPowerSourceInfo"
}
export interface DeviceTypeDefinition {
    name: string;
    code: DeviceTypeId;
    deviceClass: DeviceClasses;
    superSet?: string;
    revision: number;
    requiredServerClusters: ClusterId[];
    optionalServerClusters: ClusterId[];
    requiredClientClusters: ClusterId[];
    optionalClientClusters: ClusterId[];
    unknown: boolean;
}
export declare const DeviceTypeDefinition: ({ name, code, deviceClass, superSet, revision, requiredServerClusters, optionalServerClusters, requiredClientClusters, optionalClientClusters, unknown, }: {
    name: string;
    code: number;
    deviceClass: DeviceClasses;
    superSet?: string;
    revision: number;
    requiredServerClusters?: ClusterId[];
    optionalServerClusters?: ClusterId[];
    requiredClientClusters?: ClusterId[];
    optionalClientClusters?: ClusterId[];
    unknown?: boolean;
}) => DeviceTypeDefinition;
/**
 * @deprecated These definitions will not be updated beyond Matter 1.1, use getDeviceTypeDefinitionFromModelByCode
 *   instead.
 */
export declare const DeviceTypes: {
    [key: string]: DeviceTypeDefinition;
};
export declare const UnknownDeviceType: (code: number, revision: number) => DeviceTypeDefinition;
/** @deprecated Use getDeviceTypeDefinitionFromModelByCode instead. */
export declare function getDeviceTypeDefinitionByCode(code: number): DeviceTypeDefinition | undefined;
export declare function getDeviceTypeDefinitionFromModelByCode(code: number): DeviceTypeDefinition | undefined;
//# sourceMappingURL=DeviceTypes.d.ts.map