import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSNumber } from "../Foundation/NSNumber.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { MTRAccessControlEntryAuthMode } from "./MTRAccessControlEntryAuthMode.js";
import type { MTRAccessControlEntryPrivilege } from "./MTRAccessControlEntryPrivilege.js";
export declare class _MTRAccessGrant extends _NSObject {
    static alloc(): _MTRAccessGrant;
    static new(): _MTRAccessGrant;
    init(): _MTRAccessGrant;
    /**
     * Grant access at the provided level to a specific node on the fabric. The provided nodeID must be an operational node identifier.
     */
    static accessGrantForNodeID$privilege$(nodeID: _NSNumber, privilege: MTRAccessControlEntryPrivilege): _MTRAccessGrant | null;
    /**
     * Grant access to any node on the fabric that has a matching CASE Authenticated Tag in its operational certificate. The provided caseAuthenticatedTag must be a 32-bit unsigned integer with lower 16 bits not 0, per the Matter specification.
     */
    static accessGrantForCASEAuthenticatedTag$privilege$(caseAuthenticatedTag: _NSNumber, privilege: MTRAccessControlEntryPrivilege): _MTRAccessGrant | null;
    /**
     * Grant access to any node on the fabric that is communicating with us via group messages sent to the given group. The provided groupID must be a valid group identifier in the range 1-65535.
     */
    static accessGrantForGroupID$privilege$(groupID: _NSNumber, privilege: MTRAccessControlEntryPrivilege): _MTRAccessGrant | null;
    /**
     * Grant access to any node on the fabric, as long as it's communicating with us over a unicast authenticated channel.
     */
    static accessGrantForAllNodesWithPrivilege$(privilege: MTRAccessControlEntryPrivilege): _MTRAccessGrant;
    /**
     * The matter access control subject ID that access has been granted for. Nil when access has been granted for all subjects (e.g. via initForAllNodesWithPrivilege).
     */
    subjectID(): _NSNumber | null;
    /** The privilege that has been granted */
    grantedPrivilege(): MTRAccessControlEntryPrivilege;
    /**
     * The type of authentication mode the access grant is for. MTRAccessControlEntryAuthModeCASE for unicast messages and MTRAccessControlEntryAuthModeGroup for groupcast ones.
     */
    authenticationMode(): MTRAccessControlEntryAuthMode;
}
export interface _MTRAccessGrant extends _NSCopying {
}
