import type { _MTL4FunctionDescriptor } from "./MTL4FunctionDescriptor.js";
import type { _MTL4PipelineDescriptor } from "./MTL4PipelineDescriptor.js";
import type { _MTL4RenderPipelineColorAttachmentDescriptorArray } from "./MTL4RenderPipelineColorAttachmentDescriptorArray.js";
import type { _MTL4StaticLinkingDescriptor } from "./MTL4StaticLinkingDescriptor.js";
import type { _MTLVertexDescriptor } from "./MTLVertexDescriptor.js";
import type { MTL4AlphaToCoverageState } from "./MTL4AlphaToCoverageState.js";
import type { MTL4AlphaToOneState } from "./MTL4AlphaToOneState.js";
import type { MTL4IndirectCommandBufferSupportState } from "./MTL4IndirectCommandBufferSupportState.js";
import type { MTL4LogicalToPhysicalColorAttachmentMappingState } from "./MTL4LogicalToPhysicalColorAttachmentMappingState.js";
import type { MTLPrimitiveTopologyClass } from "./MTLPrimitiveTopologyClass.js";
export declare class _MTL4RenderPipelineDescriptor extends _MTL4PipelineDescriptor {
    static alloc(): _MTL4RenderPipelineDescriptor;
    static new(): _MTL4RenderPipelineDescriptor;
    init(): _MTL4RenderPipelineDescriptor;
    /** Resets this descriptor to its default state. */
    reset(): void;
    /** Assigns the shader function that this pipeline executes for each vertex. */
    vertexFunctionDescriptor(): _MTL4FunctionDescriptor | null;
    setVertexFunctionDescriptor$(value: _MTL4FunctionDescriptor | null): void;
    /**
     * Assigns the shader function that this pipeline executes for each fragment. When you don't specify a fragment function, you need to disable rasterization by setting property ``rasterizationEnabled`` to false.
     */
    fragmentFunctionDescriptor(): _MTL4FunctionDescriptor | null;
    setFragmentFunctionDescriptor$(value: _MTL4FunctionDescriptor | null): void;
    /**
     * Configures an optional vertex descriptor for the vertex input. A vertex descriptor specifies the layout of your vertex data, allowing your vertex shaders to access the content in your vertex arrays via the `[[stage_in]]` attribute in Metal Shading Language.
     */
    vertexDescriptor(): _MTLVertexDescriptor | null;
    setVertexDescriptor$(value: _MTLVertexDescriptor | null): void;
    /** Controls the number of samples this pipeline applies for each fragment. */
    rasterSampleCount(): number;
    setRasterSampleCount$(value: number): void;
    /**
     * Indicates whether to read and use the alpha channel fragment output of color attachments to compute a sample coverage mask.
     */
    alphaToCoverageState(): MTL4AlphaToCoverageState;
    setAlphaToCoverageState$(value: MTL4AlphaToCoverageState): void;
    /**
     * Indicates whether the pipeline forces alpha channel values of color attachments to the largest representable value.
     */
    alphaToOneState(): MTL4AlphaToOneState;
    setAlphaToOneState$(value: MTL4AlphaToOneState): void;
    /**
     * Determines whether the pipeline rasterizes primitives. By default, this value is <doc://com.apple.documentation/documentation/swift/true>, specifying that this pipeline rasterizes primitives. Set this property to <doc://com.apple.documentation/documentation/swift/false> when you don't provide a fragment shader function via function ``fragmentFunctionDescriptor``.
     */
    rasterizationEnabled(): boolean;
    setRasterizationEnabled$(value: boolean): void;
    /**
     * Determines the maximum value that can you can pass as the pipeline's amplification count. This property controls the maximum count you pass to ``MTL4RenderCommandEncoder/setVertexAmplificationCount:viewMappings:`` when using vertex amplification with this pipeline.
     */
    maxVertexAmplificationCount(): number;
    setMaxVertexAmplificationCount$(value: number): void;
    /**
     * Accesses an array containing descriptions of the color attachments this pipeline writes to.
     */
    colorAttachments(): _MTL4RenderPipelineColorAttachmentDescriptorArray;
    /** Assigns type of primitive topology this pipeline renders. */
    inputPrimitiveTopology(): MTLPrimitiveTopologyClass;
    setInputPrimitiveTopology$(value: MTLPrimitiveTopologyClass): void;
    /**
     * Provides static linking information for the vertex stage of the render pipeline. Use this property to link extra shader functions to the vertex stage of the render pipeline.
     */
    vertexStaticLinkingDescriptor(): _MTL4StaticLinkingDescriptor;
    setVertexStaticLinkingDescriptor$(value: _MTL4StaticLinkingDescriptor): void;
    /**
     * Provides static linking information for the fragment stage of the render pipeline. Use this property to link extra shader functions to the fragment stage of the render pipeline.
     */
    fragmentStaticLinkingDescriptor(): _MTL4StaticLinkingDescriptor;
    setFragmentStaticLinkingDescriptor$(value: _MTL4StaticLinkingDescriptor): void;
    /**
     * Indicates whether you can use the render pipeline to create new pipelines by adding binary functions to the vertex shader function’s callable functions list.
     */
    supportVertexBinaryLinking(): boolean;
    setSupportVertexBinaryLinking$(value: boolean): void;
    /**
     * Indicates whether you can use the pipeline to create new pipelines by adding binary functions to the fragment shader function’s callable functions list.
     */
    supportFragmentBinaryLinking(): boolean;
    setSupportFragmentBinaryLinking$(value: boolean): void;
    /**
     * Configures a logical-to-physical rendering remap state. Use this property to assign how a ``MTL4RenderCommandEncoder`` instance maps the output of your fragment shader to physical color attachments.
     */
    colorAttachmentMappingState(): MTL4LogicalToPhysicalColorAttachmentMappingState;
    setColorAttachmentMappingState$(value: MTL4LogicalToPhysicalColorAttachmentMappingState): void;
    /** Indicates whether the pipeline supports indirect command buffers. */
    supportIndirectCommandBuffers(): MTL4IndirectCommandBufferSupportState;
    setSupportIndirectCommandBuffers$(value: MTL4IndirectCommandBufferSupportState): void;
}
