/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Behavior } from "#behavior/Behavior.js";
/**
 * A set of client cluster declarations an endpoint supports.
 *
 * Unlike {@link SupportedBehaviors}, entries here are metadata only. They are not instantiated by
 * `BehaviorBacking` on a ServerNode endpoint. Their presence:
 *
 * - Populates the `clientList` attribute of the Descriptor cluster.
 * - Provides a discoverable surface (`endpoint.type.clientClusters`) for the Step 2 binding service
 *   to pre-install cluster clients on a peer `ClientNode` / `GroupNode`.
 */
export type SupportedClientClusters = Record<string, Behavior.Type>;
/**
 * Create SupportedClientClusters from a list of ClientBehavior types.
 */
export declare function SupportedClientClusters<const T extends SupportedClientClusters.List>(...types: T): SupportedClientClusters.MapOf<T>;
export declare namespace SupportedClientClusters {
    type List = readonly Behavior.Type[];
    /**
     * Create a new list with additional client cluster types, replacing any prior entry with the same id.
     */
    function extend<const Current extends SupportedClientClusters, const Added extends List>(currentTypes: Current, newTypes: Added): With<Current, Added>;
    type With<CurrentT extends SupportedClientClusters, NewT extends List> = Omit<CurrentT, NewT[number]["id"]> & MapOf<NewT>;
    type MapOf<T extends List> = T extends readonly [infer F extends Behavior.Type] ? {
        readonly [K in F["id"]]: F;
    } : T extends readonly [infer F extends Behavior.Type, ...infer R extends List] ? {
        readonly [K in F["id"]]: F;
    } & MapOf<R> : {};
}
//# sourceMappingURL=SupportedClientClusters.d.ts.map