/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ImplementationError, MatterAggregateError } from "#general";
import { Behavior } from "../Behavior.js";
import { ClusterBehavior } from "./ClusterBehavior.js";
/**
 * Thrown when a {@link ClusterBehavior} cannot be constructed due to fatal errors.
 */
export declare class ClusterImplementationError extends MatterAggregateError {
    constructor(name: string, errors: ClusterElementError[]);
}
/**
 * Thrown when a {@link ClusterBehavior} element is implemented incorrectly.
 */
export declare class ClusterElementError extends ImplementationError {
    constructor(element: string, message: string);
}
/**
 * Analyzes a ClusterBehavior implementation to ensure it conforms to the Matter specification.
 *
 * As this API is accessible via vanilla JavaScript, validation includes tests for errors that TypeScript otherwise
 * prevents.
 *
 * Records elements supported and a list of errors if validation fails.
 */
export declare class ValidatedElements {
    #private;
    /**
     * Supported attributes.
     */
    attributes: Set<string>;
    /**
     * Supported commands.
     */
    commands: Set<string>;
    /**
     * Supported events.
     */
    events: Set<string>;
    /**
     * A list of implementation errors, if any.
     */
    errors?: {
        element: string;
        message: string;
        fatal: boolean;
    }[];
    /**
     * Obtain validation information.
     *
     * Validation may run against the type alone or with a specific instance of the behavior.  The latter option allows
     * for per-instance specialization.
     *
     * @param type the behavior type to analyze
     * @param instance optional concrete instance of the behavior
     */
    constructor(type: ClusterBehavior.Type, instance?: Behavior);
    /**
     * If there are errors, log and throw an exception.
     */
    report(): void;
    private error;
}
//# sourceMappingURL=ValidatedElements.d.ts.map