/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { CommandModel, Schema } from "@matter/model";
import { ClusterType } from "@matter/types";
import { Behavior } from "../Behavior.js";
import type { ClusterBehavior } from "./ClusterBehavior.js";
/**
 * Generates a {@link ClusterBehavior.Type}.
 *
 * This factory performs runtime class generation of behaviors associated with a Matter cluster.  It implements
 * ClusterBehavior.for() directly and is a core component of PeerBehavior().
 */
export declare function ClusterBehaviorType({ namespace, base, features, schema, name, forClient, commandFactory }: ClusterBehaviorType.Configuration): ClusterBehavior.Type<Behavior.Type, import("@matter/types").ClusterTyping, ClusterType.Concrete, new () => {}, Uncapitalize<string>>;
export declare namespace ClusterBehaviorType {
    interface Configuration {
        /**
         * The cluster namespace for the new behavior.  If omitted, a minimal namespace is constructed from schema.
         */
        namespace?: object;
        /**
         * The behavior to extend.
         */
        base: Behavior.Type;
        /**
         * Feature selection.  A list of feature names, or `true` for "complete" (all elements regardless of
         * conformance).
         */
        features?: readonly string[] | true;
        /**
         * The schema for the new behavior.
         *
         * If omitted uses the schema from the namespace or the standard Matter data model.
         */
        schema?: Schema.Cluster;
        /**
         * Name used for the generated class.
         *
         * If omitted derives name from the schema.
         */
        name?: string;
        /**
         * Modify generation for client instrumentation.
         *
         * This affects a few things like how quieter events generate.
         */
        forClient?: boolean;
        /**
         * Factory for command implementations.
         *
         * By default, commands install as {@link Behavior.unimplemented}.  In client scenarios this allows the caller to
         * provide a useful default implementation.
         */
        commandFactory?: CommandFactory;
    }
    interface CommandFactory {
        (name: string, commandModel?: CommandModel): (this: ClusterBehavior, fields?: {}) => unknown;
    }
}
//# sourceMappingURL=ClusterBehaviorType.d.ts.map