/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import type { ClusterType, ClusterTyping } from "@matter/types"; /** * @see {@link ClusterTyping} */ export type ClusterInterface = ClusterTyping; export declare namespace ClusterInterface { const Empty: ClusterInterface; type Empty = ClusterInterface; type Component = ClusterType.Component; type InterfaceOf = B extends { Interface: infer I extends ClusterInterface; } ? I : ClusterInterface; type MethodsOf = InterfaceMethodsOf>; /** * All methods from all components, regardless of feature selection. */ type AllMethodsOf = ClusterInterface extends I ? {} : AppliedMethodsOf>; type ComponentsOf = I extends { Components: infer C extends Component[]; } ? C : []; type InterfaceMethodsOf = ClusterInterface extends I ? {} : AppliedMethodsOf, S>>; type AppliedMethodsOf = CA extends [ infer C extends Component, ...infer R extends Component[] ] ? (C extends { commands: infer M; } ? M : {}) & AppliedMethodsOf : {}; type ApplicableComponents = CA extends [ infer C extends Component, ...infer R extends Component[] ] ? S extends C["flags"] ? [C, ...ApplicableComponents] : ApplicableComponents : []; } //# sourceMappingURL=ClusterInterface.d.ts.map