import type { _MTL4FunctionDescriptor } from "./MTL4FunctionDescriptor.js";
import type { _MTL4PipelineDescriptor } from "./MTL4PipelineDescriptor.js";
import type { _MTL4StaticLinkingDescriptor } from "./MTL4StaticLinkingDescriptor.js";
import type { MTLSize } from "../structs/MTLSize.js";
import type { MTL4IndirectCommandBufferSupportState } from "./MTL4IndirectCommandBufferSupportState.js";
export declare class _MTL4ComputePipelineDescriptor extends _MTL4PipelineDescriptor {
    static alloc(): _MTL4ComputePipelineDescriptor;
    static new(): _MTL4ComputePipelineDescriptor;
    init(): _MTL4ComputePipelineDescriptor;
    /** Resets the descriptor to its default values. */
    reset(): void;
    /**
     * A descriptor representing the compute pipeline's function. You don't assign instances of ``MTL4FunctionDescriptor`` to this property directly, instead assign an instance of one of its subclasses, such as ``MTL4LibraryFunctionDescriptor``, which represents a function from a Metal library.
     */
    computeFunctionDescriptor(): _MTL4FunctionDescriptor | null;
    setComputeFunctionDescriptor$(value: _MTL4FunctionDescriptor | null): void;
    /**
     * A boolean value indicating whether each dimension of the threadgroup size is a multiple of its corresponding thread execution width.
     */
    threadGroupSizeIsMultipleOfThreadExecutionWidth(): boolean;
    setThreadGroupSizeIsMultipleOfThreadExecutionWidth$(value: boolean): void;
    /**
     * The maximum total number of threads that Metal can execute in a single threadgroup for the compute function.
     */
    maxTotalThreadsPerThreadgroup(): number;
    setMaxTotalThreadsPerThreadgroup$(value: number): void;
    /**
     * The required number of threads per threadgroup for compute dispatches. When you set this value, you are responsible for ensuring that the `threadsPerThreadgroup` argument of any compute dispatch matches it. Setting this property is optional, except in cases where the pipeline uses *CooperativeTensors*. This property's default value is `0`, which disables its effect.
     */
    requiredThreadsPerThreadgroup(): MTLSize;
    setRequiredThreadsPerThreadgroup$(value: MTLSize): void;
    /**
     * A boolean value indicating whether the compute pipeline supports linking binary functions.
     */
    supportBinaryLinking(): boolean;
    setSupportBinaryLinking$(value: boolean): void;
    /**
     * An object that contains information about functions to link to the compute pipeline.
     */
    staticLinkingDescriptor(): _MTL4StaticLinkingDescriptor | null;
    setStaticLinkingDescriptor$(value: _MTL4StaticLinkingDescriptor | null): void;
    /**
     * A value indicating whether the pipeline supports Metal indirect command buffers.
     */
    supportIndirectCommandBuffers(): MTL4IndirectCommandBufferSupportState;
    setSupportIndirectCommandBuffers$(value: MTL4IndirectCommandBufferSupportState): void;
}
