/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { BaseElement } from "#elements/BaseElement.js";
import { Scope } from "#logic/Scope.js";
import { Model } from "./Model.js";
/**
 * A "scope" is a model provides name resolution for other models.
 *
 * {@link Model#type} must reference a model named in a parent scope.
 */
export declare abstract class ScopeModel<T extends BaseElement = BaseElement, C extends Model = Model<BaseElement, any>> extends Model<T, C> {
    #private;
    readonly isScope = true;
    /**
     * Obtain the {@link Scope} for this model.
     */
    get scope(): Scope;
    finalize(): this;
    static is(model: Model): model is ScopeModel;
    static of(model: Model): ScopeModel<BaseElement, Model<BaseElement, any>>;
}
//# sourceMappingURL=ScopeModel.d.ts.map