/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ElementTag, type Specification } from "../common/index.js";
import { AttributeElement } from "./AttributeElement.js";
import { BaseElement } from "./BaseElement.js";
import { ClusterElement } from "./ClusterElement.js";
import { DatatypeElement } from "./DatatypeElement.js";
import { DeviceTypeElement } from "./DeviceTypeElement.js";
import { FabricElement } from "./FabricElement.js";
import { FieldElement } from "./FieldElement.js";
import { SemanticNamespaceElement } from "./SemanticNamespaceElement.js";
/**
 * The root model element.
 */
export type MatterElement = BaseElement & {
    tag: `${ElementTag.Matter}`;
    revision?: Specification.Revision;
    children: MatterElement.Child[];
};
export declare function MatterElement(definition: MatterElement.Definition, ...children: MatterElement.Child[]): MatterElement;
export declare namespace MatterElement {
    type Tag = ElementTag.Matter;
    const Tag = ElementTag.Matter;
    type Properties = BaseElement.Properties<MatterElement>;
    type Definition = Omit<MatterElement.Properties, "name" | "children"> & {
        name?: string;
        children?: MatterElement.Properties["children"];
    };
    type Child = ClusterElement | DeviceTypeElement | FabricElement | DatatypeElement | FieldElement | AttributeElement | SemanticNamespaceElement;
}
//# sourceMappingURL=MatterElement.d.ts.map