import type { _NSString } from "../Foundation/NSString.js";
import type { _MTLDevice } from "./MTLDevice.js";
import type { MTLStages } from "./MTLStages.js";
export interface _MTLCommandEncoder {
    /**
     * @method endEncoding @abstract Declare that all command generation from this encoder is complete, and detach from the MTLCommandBuffer.
     */
    endEncoding?(): void;
    /**
     * Encodes a consumer barrier on work you commit to the same command queue. Encode a barrier that guarantees that any subsequent work you encode in the current command encoder that corresponds to the `beforeStages` stages doesn't proceed until Metal completes all work prior to the current command encoder corresponding to the `afterQueueStages` stages, completes. Metal can reorder the exact point where it applies the barrier, so use this method for synchronizing between different passes. If you need to synchronize work within a pass that you encode with an instance of a subclass of ``MTLCommandEncoder``, use memory barriers instead. For subclasses of ``MTL4CommandEncoder``, use encoder barriers. You can specify `afterQueueStages` and `beforeStages` that contain ``MTLStages`` unrelated to the current command encoder. - Parameters: - afterQueueStages: ``MTLStages`` mask that represents the stages of work to wait for. This argument applies to work corresponding to these stages you encode in prior command encoders, and not for the current encoder. - beforeStages: ``MTLStages`` mask that represents the stages of work that wait. This argument applies to work you encode in the current command encoder.
     */
    barrierAfterQueueStages$beforeStages$?(afterQueueStages: MTLStages, beforeStages: MTLStages): void;
    /**
     * @method insertDebugSignpost: @abstract Inserts a debug string into the command buffer. This does not change any API behavior, but can be useful when debugging.
     */
    insertDebugSignpost$?(string_: _NSString): void;
    /**
     * @method pushDebugGroup: @abstract Push a new named string onto a stack of string labels.
     */
    pushDebugGroup$?(string_: _NSString): void;
    /** @method popDebugGroup @abstract Pop the latest named string off of the stack. */
    popDebugGroup?(): void;
    /** @property device @abstract The device this resource was created against. */
    device?(): _MTLDevice;
    /** @property label @abstract A string to help identify this object. */
    label?(): _NSString | null;
    setLabel$?(value: _NSString | null): void;
}
