import type { NobjcObject } from "objc-js";
import type { _MTLAllocation } from "./MTLAllocation.js";
import type { _MTLDevice } from "./MTLDevice.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSString } from "../Foundation/NSString.js";
export interface _MTLResidencySet {
    /**
     * Requests that the set and all the committed resources and heaps are made resident.
     */
    requestResidency?(): void;
    /**
     * Requests that the set and all the committed resources and heaps are made non-resident.
     */
    endResidency?(): void;
    /** Adds one allocation to the set, leaving it uncommitted until commit is called. */
    addAllocation$?(allocation: _MTLAllocation): void;
    /** Adds allocations to the set, leaving them uncommitted until commit is called. */
    addAllocations$count$?(allocations: NobjcObject, count: number): void;
    /** Marks an allocation to be removed from the set on the next commit call. */
    removeAllocation$?(allocation: _MTLAllocation): void;
    /** Marks allocations to be removed from the set on the next commit call. */
    removeAllocations$count$?(allocations: NobjcObject, count: number): void;
    /** Marks all allocations to be removed from the set on the next commit call. */
    removeAllAllocations?(): void;
    /**
     * Returns a boolean indicating whether the allocation is present in the set or not. This check includes non-committed allocations in the set.
     */
    containsAllocation$?(anAllocation: _MTLAllocation): boolean;
    /**
     * Commits any pending adds/removes. If the residency set is resident, this will try to make added resources and heaps resident instantly, and make removed resources and heaps non-resident.
     */
    commit?(): void;
    /** The device that created the residency set */
    device?(): _MTLDevice;
    /** The label specified at creation. */
    label?(): _NSString | null;
    /**
     * The memory footprint of the set in bytes at the last commit operation. This may include internal allocations as well.
     */
    allocatedSize?(): number;
    /**
     * Array of all allocations associated with the set. This property includes non-committed allocations in the set.
     */
    allAllocations?(): _NSArray;
    /**
     * Returns the current number of unique allocations present in the set. This property includes non-committed allocations in the set.
     */
    allocationCount?(): number;
}
