import type { NobjcObject } from "objc-js";
import type { _MTLComputePipelineDescriptor } from "./MTLComputePipelineDescriptor.js";
import type { _MTLDevice } from "./MTLDevice.js";
import type { _MTLFunctionDescriptor } from "./MTLFunctionDescriptor.js";
import type { _MTLLibrary } from "./MTLLibrary.js";
import type { _MTLMeshRenderPipelineDescriptor } from "./MTLMeshRenderPipelineDescriptor.js";
import type { _MTLRenderPipelineDescriptor } from "./MTLRenderPipelineDescriptor.js";
import type { _MTLStitchedLibraryDescriptor } from "./MTLStitchedLibraryDescriptor.js";
import type { _MTLTileRenderPipelineDescriptor } from "./MTLTileRenderPipelineDescriptor.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSURL } from "../Foundation/NSURL.js";
export interface _MTLBinaryArchive {
    /**
     * Add the function(s) from a compute pipeline state to the archive. The descriptor from which function(s) will be added. If the function fails, this will be set to describe the failure. This can be (but is not required to be) an error from the MTLBinaryArchiveDomain domain. Whether or not the addition succeeded. Functions referenced multiple times are silently accepted.
     */
    addComputePipelineFunctionsWithDescriptor$error$?(descriptor: _MTLComputePipelineDescriptor, error: NobjcObject | null): boolean;
    /**
     * Add the function(s) from a render pipeline state to the archive. The descriptor from which function(s) will be added. If the function fails, this will be set to describe the failure. This can be (but is not required to be) an error from the MTLBinaryArchiveDomain domain. Whether or not the addition succeeded. Functions referenced multiple times are silently accepted.
     */
    addRenderPipelineFunctionsWithDescriptor$error$?(descriptor: _MTLRenderPipelineDescriptor, error: NobjcObject | null): boolean;
    /**
     * Add the function(s) from a tile render pipeline state to the archive. The descriptor from which function(s) will be added. If the function fails, this will be set to describe the failure. This can be (but is not required to be) an error from the MTLBinaryArchiveDomain domain. Whether or not the addition succeeded. Functions referenced multiple times are silently accepted.
     */
    addTileRenderPipelineFunctionsWithDescriptor$error$?(descriptor: _MTLTileRenderPipelineDescriptor, error: NobjcObject | null): boolean;
    /**
     * Add the function(s) from a mesh render pipeline state to the archive. The descriptor from which function(s) will be added. If the function fails, this will be set to describe the failure. This can be (but is not required to be) an error from the MTLBinaryArchiveDomain domain. Whether or not the addition succeeded. Functions referenced multiple times are silently accepted.
     */
    addMeshRenderPipelineFunctionsWithDescriptor$error$?(descriptor: _MTLMeshRenderPipelineDescriptor, error: NobjcObject | null): boolean;
    /**
     * Add the function(s) from a stitched library to the archive. The stitched library descriptor from which function(s) will be added. If the function fails, this will be set to describe the failure. This can be (but is not required to be) an error from the MTLBinaryArchiveDomain domain. Whether or not the addition succeeded. Functions referenced multiple times are silently accepted.
     */
    addLibraryWithDescriptor$error$?(descriptor: _MTLStitchedLibraryDescriptor, error: NobjcObject | null): boolean;
    /**
     * Write the contents of a MTLBinaryArchive to a file. Persisting the archive to a file allows opening the archive on a subsequent instance of the app, making available the contents without recompiling. The file URL to which to write the file If the function fails, this will be set to describe the failure. This can be (but is not required to be) an error from the MTLBinaryArchiveDomain domain. Other possible errors can be file access or I/O related. Whether or not the writing the file succeeded.
     */
    serializeToURL$error$?(url: _NSURL, error: NobjcObject | null): boolean;
    /**
     * Add a `visible` or `intersection` function to the archive. The descriptor from which the function will be added. Library of functions to add the function from. If the function fails, this will be set to describe the failure. This can be (but is not required to be) an error from the MTLBinaryArchiveDomain domain. Other possible errors can be file access or I/O related. Whether or not the addition succeeded. Functions referenced multiple times are silently accepted.
     */
    addFunctionWithDescriptor$library$error$?(descriptor: _MTLFunctionDescriptor, library: _MTLLibrary, error: NobjcObject | null): boolean;
    /** A string to help identify this object. */
    label?(): _NSString | null;
    setLabel$?(value: _NSString | null): void;
    /**
     * The device this resource was created against. This resource can only be used with this device.
     */
    device?(): _MTLDevice;
}
