import type { _MTLBuffer } from "./MTLBuffer.js";
import type { _MTLComputePipelineState } from "./MTLComputePipelineState.js";
import type { MTLRegion } from "../structs/MTLRegion.js";
import type { MTLSize } from "../structs/MTLSize.js";
export interface _MTLIndirectComputeCommand {
    setComputePipelineState$?(pipelineState: _MTLComputePipelineState): void;
    setKernelBuffer$offset$atIndex$?(buffer: _MTLBuffer, offset: number, index: number): void;
    /**
     * @brief sets kernel buffer at specified index with provided offset and stride. only call this when the buffer-index is part of the stageInputDescriptor and has set its stride to `MTLBufferLayoutStrideDynamic`
     */
    setKernelBuffer$offset$attributeStride$atIndex$?(buffer: _MTLBuffer, offset: number, stride: number, index: number): void;
    concurrentDispatchThreadgroups$threadsPerThreadgroup$?(threadgroupsPerGrid: MTLSize, threadsPerThreadgroup: MTLSize): void;
    concurrentDispatchThreads$threadsPerThreadgroup$?(threadsPerGrid: MTLSize, threadsPerThreadgroup: MTLSize): void;
    setBarrier?(): void;
    clearBarrier?(): void;
    setImageblockWidth$height$?(width: number, height: number): void;
    reset?(): void;
    setThreadgroupMemoryLength$atIndex$?(length: number, index: number): void;
    setStageInRegion$?(region: MTLRegion): void;
}
