import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSNumber } from "../Foundation/NSNumber.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _MTRAccessGrant } from "./MTRAccessGrant.js";
import type { _MTRServerAttribute } from "./MTRServerAttribute.js";
export declare class _MTRServerCluster extends _NSObject {
    static alloc(): _MTRServerCluster;
    static new(): _MTRServerCluster;
    init(): _MTRServerCluster;
    /**
     * Create a cluster description for the descriptor cluster. This will set clusterRevision to the current version implemented by Matter.framework.
     */
    static newDescriptorCluster(): _MTRServerCluster;
    /**
     * The provided clusterID must not be MTRClusterIDTypeDescriptorID; see newDescriptorCluster. Otherwise, it must be a valid cluster identifier. That means: * In the range 0-0x7FFF for standard clusters. * In the range 0xVVVVFC00-0xVVVVFFFE for vendor-specific clusters, where VVVV is the vendor identifier. The provided revision must be in the range 1-65535.
     */
    initWithClusterID$revision$(clusterID: _NSNumber, revision: _NSNumber): _MTRServerCluster | null;
    /**
     * Add an access grant to the cluster. If the same access grant is added multiple times, it will be treated as if it were added once (and removing it once will remove it).
     */
    addAccessGrant$(accessGrant: _MTRAccessGrant): void;
    /** Remove an access grant from the cluster. */
    removeAccessGrant$(accessGrant: _MTRAccessGrant): void;
    /**
     * Add an attribute to the cluster. This can only be done before the endpoint the cluster is a part of has been added to a controller. The attribute must not have the same attribute ID as another attribute in this cluster. The attribute must not already be added to another cluster. If this cluster is the Descriptor cluster (id MTRClusterIDTypeDescriptorID), it must not define any values for DeviceTypeList, ServerList, ClientList, PartsList; those values will be determined automatically. For all clusters, the global AttributeList, AcceptedCommandList, GeneratedCommandList attributes will be determined automatically and must not be included in the attributes added on the cluster. For all clusters, the FeatureMap attribute will be assumed to be 0 unless otherwise specified and may be omitted from the attributes added to the cluster. For all clusters, ClusterRevision will be determined automatically based on this object's clusterRevision property, and must not be explicitly added to the cluster.
     */
    addAttribute$(attribute: _MTRServerAttribute): boolean;
    clusterID(): _NSNumber;
    clusterRevision(): _NSNumber;
    /**
     * The list of entities that are allowed to access this cluster instance. This list is in addition to any endpoint-wide access grants that exist. Defaults to empty list, which means no additional access grants.
     */
    accessGrants(): _NSArray;
    /** The list of attributes supported by the cluster. */
    attributes(): _NSArray;
}
