import type { _MTL4AccelerationStructureDescriptor } from "./MTL4AccelerationStructureDescriptor.js";
import type { MTL4BufferRange } from "../structs/MTL4BufferRange.js";
import type { MTLAccelerationStructureInstanceDescriptorType } from "./MTLAccelerationStructureInstanceDescriptorType.js";
import type { MTLMatrixLayout } from "./MTLMatrixLayout.js";
import type { MTLTransformType } from "./MTLTransformType.js";
export declare class _MTL4IndirectInstanceAccelerationStructureDescriptor extends _MTL4AccelerationStructureDescriptor {
    static alloc(): _MTL4IndirectInstanceAccelerationStructureDescriptor;
    static new(): _MTL4IndirectInstanceAccelerationStructureDescriptor;
    init(): _MTL4IndirectInstanceAccelerationStructureDescriptor;
    /**
     * Assigns a reference to a buffer containing instance descriptors for acceleration structures to reference. This buffer conceptually represents an array of instance data. The specific format for the structs that comprise each entry depends on the value of the ``instanceDescriptorType`` property. You are responsible for ensuring the buffer address the range contains is not zero.
     */
    instanceDescriptorBuffer(): MTL4BufferRange;
    setInstanceDescriptorBuffer$(value: MTL4BufferRange): void;
    /**
     * Sets the stride, in bytes, between instance descriptors in the instance descriptor buffer. You are responsible for ensuring this stride is at least the size of the structure type corresponding to the instance descriptor type and a multiple of 4 bytes. Defaults to `0`, indicating the instance descriptors are tightly packed.
     */
    instanceDescriptorStride(): number;
    setInstanceDescriptorStride$(value: number): void;
    /**
     * Controls the maximum number of instance descriptors the instance descriptor buffer can reference. You are responsible for ensuring that the final number of instances at build time, which you provide indirectly via a buffer reference in ``instanceCountBuffer``, is less than or equal to this number.
     */
    maxInstanceCount(): number;
    setMaxInstanceCount$(value: number): void;
    /**
     * Provides a reference to a buffer containing the number of instances in the instance descriptor buffer, formatted as a 32-bit unsigned integer. You are responsible for ensuring that the final number of instances at build time, which you provide indirectly via this buffer reference , is less than or equal to the value of property ``maxInstanceCount``.
     */
    instanceCountBuffer(): MTL4BufferRange;
    setInstanceCountBuffer$(value: MTL4BufferRange): void;
    /**
     * Controls the type of instance descriptor that the instance descriptor buffer references. This value determines the layout Metal expects for the structs the instance descriptor buffer contains. Defaults to `MTLAccelerationStructureInstanceDescriptorTypeIndirect`. Valid values for this property are `MTLAccelerationStructureInstanceDescriptorTypeIndirect` or `MTLAccelerationStructureInstanceDescriptorTypeIndirectMotion`.
     */
    instanceDescriptorType(): MTLAccelerationStructureInstanceDescriptorType;
    setInstanceDescriptorType$(value: MTLAccelerationStructureInstanceDescriptorType): void;
    /**
     * A buffer containing transformation information for instance motion keyframes, formatted according to the motion transform type. Each instance can have a different number of keyframes that you configure via individual instance descriptors. You are responsible for ensuring the buffer address the range references is not zero when using motion instance descriptors.
     */
    motionTransformBuffer(): MTL4BufferRange;
    setMotionTransformBuffer$(value: MTL4BufferRange): void;
    /**
     * Controls the maximum number of motion transforms in the motion transform buffer. You are responsible for ensuring that final number of motion transforms at build time that the buffer ``motionTransformCountBuffer`` references is less than or equal to this number.
     */
    maxMotionTransformCount(): number;
    setMaxMotionTransformCount$(value: number): void;
    /**
     * Associates a buffer reference containing the number of motion transforms in the motion transform buffer, formatted as a 32-bit unsigned integer. You are responsible for ensuring that the final number of motion transforms at build time in the buffer this property references is less than or equal to the value of property ``maxMotionTransformCount``.
     */
    motionTransformCountBuffer(): MTL4BufferRange;
    setMotionTransformCountBuffer$(value: MTL4BufferRange): void;
    /**
     * Specifies the layout for the transformation matrices in the instance descriptor buffer and the motion transformation matrix buffer. Metal interprets the value of this property as the layout for the buffers that both ``instanceDescriptorBuffer`` and ``motionTransformBuffer`` reference. Defaults to `MTLMatrixLayoutColumnMajor`.
     */
    instanceTransformationMatrixLayout(): MTLMatrixLayout;
    setInstanceTransformationMatrixLayout$(value: MTLMatrixLayout): void;
    /**
     * Sets the type of motion transforms, either as a matrix or individual components. Defaults to `MTLTransformTypePackedFloat4x3`. Using a `MTLTransformTypeComponent` allows you to represent the rotation by a quaternion (instead as of part of the matrix), allowing for correct motion interpolation.
     */
    motionTransformType(): MTLTransformType;
    setMotionTransformType$(value: MTLTransformType): void;
    /**
     * Sets the stride for motion transform. Defaults to `0`, indicating that transforms are tightly packed according to the motion transform type.
     */
    motionTransformStride(): number;
    setMotionTransformStride$(value: number): void;
}
