/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { DefinitionError } from "../common/DefinitionError.js";
/**
 * An "aspect" is metadata about a Matter element that affects implementation behavior.  Aspects are mostly "qualities"
 * in the Matter specification except for "constraint" which is not formally described as a quality.
 */
export declare abstract class Aspect<D = any> {
    definition: D;
    isEmpty: boolean;
    errors?: DefinitionError[];
    get valid(): boolean;
    constructor(definition: D);
    /**
     * Test for logical equivalence.
     */
    equals(other: any): boolean;
    valueOf(): string | undefined;
    abstract toString(): string;
    error(code: string, message: string): void;
    abstract extend(other: Aspect): Aspect;
    static create<D, T extends Aspect<D>, This extends new (definition: D) => T>(this: This, definition: D): InstanceType<This>;
    protected freeze(): void;
}
//# sourceMappingURL=Aspect.d.ts.map