import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _MTLFunction } from "./MTLFunction.js";
import type { _MTLLinkedFunctions } from "./MTLLinkedFunctions.js";
import type { _MTLPipelineBufferDescriptorArray } from "./MTLPipelineBufferDescriptorArray.js";
import type { _MTLRenderPipelineColorAttachmentDescriptorArray } from "./MTLRenderPipelineColorAttachmentDescriptorArray.js";
import type { _MTLVertexDescriptor } from "./MTLVertexDescriptor.js";
import type { MTLPixelFormat } from "./MTLPixelFormat.js";
import type { MTLPrimitiveTopologyClass } from "./MTLPrimitiveTopologyClass.js";
import type { MTLShaderValidation } from "./MTLShaderValidation.js";
import type { MTLTessellationControlPointIndexType } from "./MTLTessellationControlPointIndexType.js";
import type { MTLTessellationFactorFormat } from "./MTLTessellationFactorFormat.js";
import type { MTLTessellationFactorStepFunction } from "./MTLTessellationFactorStepFunction.js";
import type { MTLTessellationPartitionMode } from "./MTLTessellationPartitionMode.js";
import type { MTLWinding } from "./MTLWinding.js";
export declare class _MTLRenderPipelineDescriptor extends _NSObject {
    static alloc(): _MTLRenderPipelineDescriptor;
    static new(): _MTLRenderPipelineDescriptor;
    init(): _MTLRenderPipelineDescriptor;
    /** Restore all pipeline descriptor properties to their default values. */
    reset(): void;
    label(): _NSString | null;
    setLabel$(value: _NSString | null): void;
    vertexFunction(): _MTLFunction | null;
    setVertexFunction$(value: _MTLFunction | null): void;
    /** @deprecated rasterSampleCount */
    fragmentFunction(): _MTLFunction | null;
    setFragmentFunction$(value: _MTLFunction | null): void;
    /** @deprecated rasterSampleCount */
    vertexDescriptor(): _MTLVertexDescriptor | null;
    setVertexDescriptor$(value: _MTLVertexDescriptor | null): void;
    /**
     * Rasterization and visibility state
     * @deprecated rasterSampleCount
     */
    sampleCount(): number;
    setSampleCount$(value: number): void;
    rasterSampleCount(): number;
    setRasterSampleCount$(value: number): void;
    alphaToCoverageEnabled(): boolean;
    setAlphaToCoverageEnabled$(value: boolean): void;
    alphaToOneEnabled(): boolean;
    setAlphaToOneEnabled$(value: boolean): void;
    rasterizationEnabled(): boolean;
    setRasterizationEnabled$(value: boolean): void;
    maxVertexAmplificationCount(): number;
    setMaxVertexAmplificationCount$(value: number): void;
    colorAttachments(): _MTLRenderPipelineColorAttachmentDescriptorArray;
    depthAttachmentPixelFormat(): MTLPixelFormat;
    setDepthAttachmentPixelFormat$(value: MTLPixelFormat): void;
    stencilAttachmentPixelFormat(): MTLPixelFormat;
    setStencilAttachmentPixelFormat$(value: MTLPixelFormat): void;
    inputPrimitiveTopology(): MTLPrimitiveTopologyClass;
    setInputPrimitiveTopology$(value: MTLPrimitiveTopologyClass): void;
    tessellationPartitionMode(): MTLTessellationPartitionMode;
    setTessellationPartitionMode$(value: MTLTessellationPartitionMode): void;
    maxTessellationFactor(): number;
    setMaxTessellationFactor$(value: number): void;
    tessellationFactorScaleEnabled(): boolean;
    setTessellationFactorScaleEnabled$(value: boolean): void;
    tessellationFactorFormat(): MTLTessellationFactorFormat;
    setTessellationFactorFormat$(value: MTLTessellationFactorFormat): void;
    tessellationControlPointIndexType(): MTLTessellationControlPointIndexType;
    setTessellationControlPointIndexType$(value: MTLTessellationControlPointIndexType): void;
    tessellationFactorStepFunction(): MTLTessellationFactorStepFunction;
    setTessellationFactorStepFunction$(value: MTLTessellationFactorStepFunction): void;
    tessellationOutputWindingOrder(): MTLWinding;
    setTessellationOutputWindingOrder$(value: MTLWinding): void;
    vertexBuffers(): _MTLPipelineBufferDescriptorArray;
    fragmentBuffers(): _MTLPipelineBufferDescriptorArray;
    supportIndirectCommandBuffers(): boolean;
    setSupportIndirectCommandBuffers$(value: boolean): void;
    /**
     * The set of MTLBinaryArchive to search for compiled code when creating the pipeline state. Accelerate pipeline state creation by providing archives of compiled code such that no compilation needs to happen on the fast path. MTLBinaryArchive
     */
    binaryArchives(): _NSArray | null;
    setBinaryArchives$(value: _NSArray | null): void;
    /**
     * The set of MTLDynamicLibrary to use to resolve external symbols for the vertexFunction before considering symbols from dependent MTLDynamicLibrary. Typical workflows use the libraries property of MTLCompileOptions to record dependent libraries at compile time without having to use vertexPreloadedLibraries. This property can be used to override symbols from dependent libraries for experimentation or evaluating alternative implementations. It can also be used to provide dynamic libraries that are dynamically created (for example, from source) that have no stable installName that can be used to automatically load from the file system. MTLDynamicLibrary
     */
    vertexPreloadedLibraries(): _NSArray;
    setVertexPreloadedLibraries$(value: _NSArray): void;
    /**
     * The set of MTLDynamicLibrary to use to resolve external symbols for the fragmentFunction before considering symbols from dependent MTLDynamicLibrary. Typical workflows use the libraries property of MTLCompileOptions to record dependent libraries at compile time without having to use fragmentPreloadedLibraries. This property can be used to override symbols from dependent libraries for experimentation or evaluating alternative implementations. It can also be used to provide dynamic libraries that are dynamically created (for example, from source) that have no stable installName that can be used to automatically load from the file system. MTLDynamicLibrary
     */
    fragmentPreloadedLibraries(): _NSArray;
    setFragmentPreloadedLibraries$(value: _NSArray): void;
    /**
     * The set of functions to be linked with the pipeline state and accessed from the vertex function. MTLLinkedFunctions
     */
    vertexLinkedFunctions(): _MTLLinkedFunctions;
    setVertexLinkedFunctions$(value: _MTLLinkedFunctions): void;
    /**
     * The set of functions to be linked with the pipeline state and accessed from the fragment function. MTLLinkedFunctions
     */
    fragmentLinkedFunctions(): _MTLLinkedFunctions;
    setFragmentLinkedFunctions$(value: _MTLLinkedFunctions): void;
    /**
     * This flag makes this pipeline support creating a new pipeline by adding binary functions.
     */
    supportAddingVertexBinaryFunctions(): boolean;
    setSupportAddingVertexBinaryFunctions$(value: boolean): void;
    /**
     * This flag makes this pipeline support creating a new pipeline by adding binary functions.
     */
    supportAddingFragmentBinaryFunctions(): boolean;
    setSupportAddingFragmentBinaryFunctions$(value: boolean): void;
    /**
     * The maximum depth of the call stack in stack frames from the shader. Defaults to 1 additional stack frame.
     */
    maxVertexCallStackDepth(): number;
    setMaxVertexCallStackDepth$(value: number): void;
    /**
     * The maximum depth of the call stack in stack frames from the shader. Defaults to 1 additional stack frame.
     */
    maxFragmentCallStackDepth(): number;
    setMaxFragmentCallStackDepth$(value: number): void;
    /**
     * Toggle that determines whether Metal Shader Validation should be enabled or disabled for the pipeline. The value can be overridden using `MTL_SHADER_VALIDATION_ENABLE_PIPELINES` or `MTL_SHADER_VALIDATION_DISABLE_PIPELINES` Environment Variables.
     */
    shaderValidation(): MTLShaderValidation;
    setShaderValidation$(value: MTLShaderValidation): void;
}
export interface _MTLRenderPipelineDescriptor extends _NSCopying {
}
