import type { _MTLAccelerationStructureGeometryDescriptor } from "./MTLAccelerationStructureGeometryDescriptor.js";
import type { _MTLBuffer } from "./MTLBuffer.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { MTLAttributeFormat } from "./MTLAttributeFormat.js";
import type { MTLIndexType } from "./MTLIndexType.js";
import type { MTLMatrixLayout } from "./MTLMatrixLayout.js";
export declare class _MTLAccelerationStructureMotionTriangleGeometryDescriptor extends _MTLAccelerationStructureGeometryDescriptor {
    static alloc(): _MTLAccelerationStructureMotionTriangleGeometryDescriptor;
    static new(): _MTLAccelerationStructureMotionTriangleGeometryDescriptor;
    init(): _MTLAccelerationStructureMotionTriangleGeometryDescriptor;
    static descriptor(): _MTLAccelerationStructureMotionTriangleGeometryDescriptor;
    /**
     * @brief Vertex buffer containing triangle vertices similar to what MTLAccelerationStructureTriangleGeometryDescriptor has but array of the values.
     */
    vertexBuffers(): _NSArray;
    setVertexBuffers$(value: _NSArray): void;
    /**
     * @brief Format type of the vertex buffers across all keyframes. Defaults to MTLAttributeFormatFloat3 (packed).
     */
    vertexFormat(): MTLAttributeFormat;
    setVertexFormat$(value: MTLAttributeFormat): void;
    /**
     * @brief Stride, in bytes, between vertices in each keyframe's vertex buffer. Must be a multiple of the vertex format data type size and must be aligned to the vertex format data type's alignment. Defaults to 0, which will result in a stride of the vertex format data size.
     */
    vertexStride(): number;
    setVertexStride$(value: number): void;
    /**
     * Optional index buffer containing references to vertices in the vertex buffer. May be nil.
     */
    indexBuffer(): _MTLBuffer | null;
    setIndexBuffer$(value: _MTLBuffer | null): void;
    /**
     * @brief Index buffer offset. Must be a multiple of the index data type size and must be aligned to both the index data type's alignment and the platform's buffer offset alignment.
     */
    indexBufferOffset(): number;
    setIndexBufferOffset$(value: number): void;
    /** @brief Index type */
    indexType(): MTLIndexType;
    setIndexType$(value: MTLIndexType): void;
    /** @brief Number of triangles */
    triangleCount(): number;
    setTriangleCount$(value: number): void;
    /**
     * @brief Buffer containing packed float4x3 transformation matrix. Transform is applied to the vertex data when building the acceleration structure. Input vertex buffers are not modified. The transformation matrix is applied to all keyframes' vertex data. When set to nil, transformation matrix is not applied to vertex data.
     */
    transformationMatrixBuffer(): _MTLBuffer | null;
    setTransformationMatrixBuffer$(value: _MTLBuffer | null): void;
    /**
     * @brief Transformation matrix buffer offset. Must be a multiple of 4 bytes. Defaults to 0.
     */
    transformationMatrixBufferOffset(): number;
    setTransformationMatrixBufferOffset$(value: number): void;
    /**
     * @brief Matrix layout for the transformation matrix in the transformation matrix buffer. Defaults to MTLMatrixLayoutColumnMajor.
     */
    transformationMatrixLayout(): MTLMatrixLayout;
    setTransformationMatrixLayout$(value: MTLMatrixLayout): void;
}
