import type { _MTL4AccelerationStructureGeometryDescriptor } from "./MTL4AccelerationStructureGeometryDescriptor.js";
import type { MTL4BufferRange } from "../structs/MTL4BufferRange.js";
import type { MTLAttributeFormat } from "./MTLAttributeFormat.js";
import type { MTLIndexType } from "./MTLIndexType.js";
import type { MTLMatrixLayout } from "./MTLMatrixLayout.js";
export declare class _MTL4AccelerationStructureTriangleGeometryDescriptor extends _MTL4AccelerationStructureGeometryDescriptor {
    static alloc(): _MTL4AccelerationStructureTriangleGeometryDescriptor;
    static new(): _MTL4AccelerationStructureTriangleGeometryDescriptor;
    init(): _MTL4AccelerationStructureTriangleGeometryDescriptor;
    /**
     * Associates a vertex buffer containing triangle vertices. You are responsible for ensuring that the format of all vertex positions match the ``vertexFormat`` property, and that the buffer address for the buffer range is not zero.
     */
    vertexBuffer(): MTL4BufferRange;
    setVertexBuffer$(value: MTL4BufferRange): void;
    /**
     * Describes the format of the vertices in the vertex buffer. This property controls the format of the position attribute of the vertices the ``vertexBuffer`` references. The format defaults to `MTLAttributeFormatFloat3`, corresponding to three packed floating point numbers.
     */
    vertexFormat(): MTLAttributeFormat;
    setVertexFormat$(value: MTLAttributeFormat): void;
    /**
     * Sets the stride, in bytes, between vertices in the vertex buffer. The stride you specify needs to be a multiple of the size of the vertex format you provide in the ``vertexFormat`` property. Similarly, you are responsible for ensuring this stride matches the vertex format data type's alignment. Defaults to `0`, which signals the stride matches the size of the ``vertexFormat`` data.
     */
    vertexStride(): number;
    setVertexStride$(value: number): void;
    /**
     * Sets an optional index buffer containing references to vertices in the `vertexBuffer`. You can set this property to `0`, the default, to avoid specifying an index buffer.
     */
    indexBuffer(): MTL4BufferRange;
    setIndexBuffer$(value: MTL4BufferRange): void;
    /**
     * Configures the size of the indices the `indexBuffer` contains, which is typically either 16 or 32-bits for each index.
     */
    indexType(): MTLIndexType;
    setIndexType$(value: MTLIndexType): void;
    /** Declares the number of triangles in this geometry descriptor. */
    triangleCount(): number;
    setTriangleCount$(value: number): void;
    /**
     * Assigns an optional reference to a buffer containing a `float4x3` transformation matrix. When the buffer address is non-zero, Metal applies this transform to the vertex data positions when building the acceleration structure. Building an acceleration structure with a descriptor that specifies this property doesn't modify the contents of the input `vertexBuffer`.
     */
    transformationMatrixBuffer(): MTL4BufferRange;
    setTransformationMatrixBuffer$(value: MTL4BufferRange): void;
    /**
     * Configures the layout for the transformation matrix in the transformation matrix buffer. You can provide matrices in column-major or row-major form, and this property allows you to control how Metal interprets them. Defaults to `MTLMatrixLayoutColumnMajor`.
     */
    transformationMatrixLayout(): MTLMatrixLayout;
    setTransformationMatrixLayout$(value: MTLMatrixLayout): void;
}
