/**
 * @license
 * Copyright 2022-2024 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Access } from "../aspects/Access.js";
import { Quality } from "../aspects/Quality.js";
import { ElementTag, FeatureSet, Metatype } from "../common/index.js";
import { Mei } from "../common/Mei.js";
import { ClusterElement } from "../elements/index.js";
import { AttributeModel } from "./AttributeModel.js";
import { Children } from "./Children.js";
import { CommandModel } from "./CommandModel.js";
import { DatatypeModel } from "./DatatypeModel.js";
import { EventModel } from "./EventModel.js";
import type { FieldModel } from "./FieldModel.js";
import { Model } from "./Model.js";
import { PropertyModel } from "./PropertyModel.js";
export declare class ClusterModel extends Model<ClusterElement> implements ClusterElement {
    tag: ClusterElement.Tag;
    id: Mei;
    classification?: ClusterElement.Classification;
    pics?: string;
    isTypeScope: boolean;
    get children(): Children<ClusterModel.Child>;
    set children(children: Children.InputIterable<ClusterModel.Child>);
    get diagnostics(): boolean | undefined;
    get quality(): Quality;
    set quality(definition: Quality | Quality.Definition);
    get effectiveQuality(): Quality;
    get attributes(): AttributeModel[];
    get commands(): CommandModel[];
    get events(): EventModel[];
    get datatypes(): DatatypeModel[];
    get members(): PropertyModel[];
    get activeMembers(): import("./ValueModel.js").ValueModel<import("../elements/ValueElement.js").ValueElement>[];
    get conformantMembers(): import("./ValueModel.js").ValueModel<import("../elements/ValueElement.js").ValueElement>[];
    /**
     * Get attributes, commands and events whether inherited or defined directly in this model.
     */
    get allAces(): (AttributeModel | CommandModel | EventModel)[];
    get revision(): number;
    get features(): Children<FieldModel<import("../elements/FieldElement.js").FieldElement>>;
    get featureMap(): AttributeModel;
    get featureNames(): FeatureSet;
    get supportedFeatures(): FeatureSet;
    set supportedFeatures(features: FeatureSet.Definition | undefined);
    get effectiveMetatype(): Metatype;
    get effectiveAccess(): Access;
    valueOf(): ClusterElement;
    constructor(definition: ClusterElement.Properties);
    static Tag: ElementTag;
}
export declare namespace ClusterModel {
    type Child = DatatypeModel | AttributeModel | CommandModel | EventModel | FieldModel;
}
//# sourceMappingURL=ClusterModel.d.ts.map