/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Specification } from "../common/index.js";
import { MatterElement } from "../elements/index.js";
import { AttributeModel } from "./AttributeModel.js";
import { Children } from "./Children.js";
import { ClusterModel } from "./ClusterModel.js";
import { DatatypeModel } from "./DatatypeModel.js";
import { DeviceTypeModel } from "./DeviceTypeModel.js";
import { FabricModel } from "./FabricModel.js";
import { FieldModel } from "./FieldModel.js";
import { Model } from "./Model.js";
import { ScopeModel } from "./ScopeModel.js";
import { SemanticNamespaceModel } from "./SemanticNamespaceModel.js";
/**
 * The root of a Matter model.  This is the parent for global models.
 */
export declare class MatterModel extends ScopeModel<MatterElement> implements MatterElement {
    tag: MatterElement.Tag;
    revision?: Specification.Revision;
    get children(): Children<MatterModel.Child>;
    set children(children: Children.InputIterable<MatterModel.Child>);
    /**
     * The default instance of the canonical MatterModel (also exported directly simply as "Matter").
     */
    static standard: MatterModel;
    /**
     * Clusters.
     */
    get clusters(): ClusterModel[];
    /**
     * Device types.
     */
    get deviceTypes(): DeviceTypeModel[];
    /**
     * Semantic tag namespaces.
     */
    get semanticNamespaces(): SemanticNamespaceModel[];
    /**
     * Global datatypes.
     */
    get datatypes(): FieldModel<any>[];
    /**
     * Global attributes.
     */
    get attributes(): AttributeModel[];
    /**
     * Fabrics.
     */
    get fabrics(): FabricModel[];
    /**
     * Create a new MatterModel.
     *
     * @param definition the MatterElement that defines the model
     */
    constructor(definition: MatterElement.Definition, ...children: Model.Definition<MatterModel.Child>[]);
    /**
     * All sub-cluster global elements from this model.
     *
     * This is the set of utility datatypes required by cluster definitions.
     *
     * The returned elements are clones as we use this to initialize empty models for testing or diagnostic purposes.
     */
    get seedGlobals(): MatterModel.Child[];
}
export declare namespace MatterModel {
    type Child = ClusterModel | DeviceTypeModel | FieldModel | DatatypeModel | AttributeModel | FabricModel | SemanticNamespaceModel;
}
//# sourceMappingURL=MatterModel.d.ts.map