import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { MTLBindingAccess } from "./MTLBindingAccess.js";
import type { MTLDataType } from "./MTLDataType.js";
import type { MTLTextureType } from "./MTLTextureType.js";
export declare class _MTLArgumentDescriptor extends _NSObject {
    static alloc(): _MTLArgumentDescriptor;
    static new(): _MTLArgumentDescriptor;
    init(): _MTLArgumentDescriptor;
    /**
     * @method argumentDescriptor @abstract Create an autoreleased default argument descriptor
     */
    static argumentDescriptor(): _MTLArgumentDescriptor;
    /**
     * @property dataType @abstract For constants, the data type. Otherwise, MTLDataTypeTexture, MTLDataTypeSampler, or MTLDataTypePointer.
     */
    dataType(): MTLDataType;
    setDataType$(value: MTLDataType): void;
    /** @property index @abstract The binding point index of the argument */
    index(): number;
    setIndex$(value: number): void;
    /**
     * @property arrayLength @abstract The length of an array of constants, textures, or samplers, or 0 for non-array arguments
     */
    arrayLength(): number;
    setArrayLength$(value: number): void;
    /** @property access @abstract Access flags for the argument */
    access(): MTLBindingAccess;
    setAccess$(value: MTLBindingAccess): void;
    /** @property textureType @abstract For texture arguments, the texture type */
    textureType(): MTLTextureType;
    setTextureType$(value: MTLTextureType): void;
    /**
     * @property constantBlockAlignment @abstract if set forces the constant block to be aligned to the given alignment @discussion Should only be set on the first constant of the block and is only valid if a corresponding explicit "alignas" is applied to the constant in the metal shader language.
     */
    constantBlockAlignment(): number;
    setConstantBlockAlignment$(value: number): void;
}
export interface _MTLArgumentDescriptor extends _NSCopying {
}
