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 { _MTRServerCluster } from "./MTRServerCluster.js";
export declare class _MTRServerEndpoint extends _NSObject {
    static alloc(): _MTRServerEndpoint;
    static new(): _MTRServerEndpoint;
    init(): _MTRServerEndpoint;
    /**
     * The provided endpointID must be in the range 1-65535. The list of device types provided must be nonempty (but may include vendor-specific device types).
     */
    initWithEndpointID$deviceTypes$(endpointID: _NSNumber, deviceTypes: _NSArray): _MTRServerEndpoint | null;
    /**
     * Add an access grant to the endpoint. 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 endpoint. */
    removeAccessGrant$(accessGrant: _MTRAccessGrant): void;
    /**
     * Add a server cluster to the endpoint. This can only be done before the endpoint has been added to a controller. The cluster must not have the same cluster ID as another cluster on this endpoint. The cluster must not already be added to another endpoint.
     */
    addServerCluster$(serverCluster: _MTRServerCluster): boolean;
    endpointID(): _NSNumber;
    deviceTypes(): _NSArray;
    /**
     * The list of entities that are allowed to access all clusters on this endpoint. If more fine-grained access control is desired, access grants should be defined on individual clusters. Defaults to empty list, which means no access granted.
     */
    accessGrants(): _NSArray;
    /**
     * A list of server clusters supported on this endpoint. The Descriptor cluster does not need to be included unless a TagList attribute is desired on it or it has a non-empty PartsList, or it needs to have cluster-specific access grants. If not included, the Descriptor cluster will be generated automatically.
     */
    serverClusters(): _NSArray;
}
