/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Access, Conformance, Constraint, Quality } from "../aspects/index.js";
import { ElementTag } from "../common/index.js";
import { RequirementElement } from "../elements/index.js";
import { FieldModel } from "./FieldModel.js";
import { Model } from "./Model.js";
export declare class RequirementModel extends Model<RequirementElement, RequirementModel.Child> implements RequirementElement {
    #private;
    tag: RequirementElement.Tag;
    element: RequirementElement.ElementType;
    default?: any;
    get discriminator(): RequirementElement.ElementType;
    get constraint(): Constraint;
    set constraint(definition: Constraint | Constraint.Definition);
    get conformance(): Conformance;
    set conformance(definition: Conformance | Conformance.Definition);
    get access(): Access;
    set access(definition: Access | Access.Definition);
    get quality(): Quality;
    set quality(definition: Quality | Quality.Definition);
    /**
     * Condition requirements may derive from ConditionElement models via qualified types
     * (e.g. type: "RootNode.AclExtensionCond").
     */
    get allowedBaseTags(): ElementTag[];
    get requirements(): RequirementModel[];
    /**
     * Is the element mandatory?
     */
    get isMandatory(): boolean;
    constructor(definition: Model.Definition<RequirementModel>, ...children: Model.ChildDefinition<RequirementModel>[]);
    toElement(omitResources?: boolean, extra?: Record<string, unknown>): RequirementElement;
    static Tag: ElementTag;
}
export declare namespace RequirementModel {
    type Child = RequirementModel | FieldModel;
}
//# sourceMappingURL=RequirementModel.d.ts.map