/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ElementTag } from "../../common/index.js";
import { Model } from "../../models/index.js";
/**
 * Base class for all model validators.
 */
export declare class ModelValidator<T extends Model> {
    protected model: T;
    constructor(model: T);
    validate(): void;
    error(code: string, message: string): void;
    protected validateStructure(requireId: boolean, ...childTypes: Model.Type[]): void;
    protected validateProperty({ name, type, required, nullable }: Model.PropertyValidation): void;
    private validateChildUniqueness;
}
export declare namespace ModelValidator {
    const validators: { [key in ElementTag]: new (model: any) => ModelValidator<any>; };
}
//# sourceMappingURL=ModelValidator.d.ts.map