import type { _MTLAccelerationStructureDescriptor } from "./MTLAccelerationStructureDescriptor.js";
import type { _MTLBuffer } from "./MTLBuffer.js";
import type { MTLAccelerationStructureInstanceDescriptorType } from "./MTLAccelerationStructureInstanceDescriptorType.js";
import type { MTLMatrixLayout } from "./MTLMatrixLayout.js";
import type { MTLTransformType } from "./MTLTransformType.js";
export declare class _MTLIndirectInstanceAccelerationStructureDescriptor extends _MTLAccelerationStructureDescriptor {
    static alloc(): _MTLIndirectInstanceAccelerationStructureDescriptor;
    static new(): _MTLIndirectInstanceAccelerationStructureDescriptor;
    init(): _MTLIndirectInstanceAccelerationStructureDescriptor;
    static descriptor(): _MTLIndirectInstanceAccelerationStructureDescriptor;
    /**
     * @brief Buffer containing instance descriptors of the type specified by the instanceDescriptorType property
     */
    instanceDescriptorBuffer(): _MTLBuffer | null;
    setInstanceDescriptorBuffer$(value: _MTLBuffer | null): void;
    /**
     * @brief Offset into the instance descriptor buffer. Must be a multiple of 64 bytes and must be aligned to the platform's buffer offset alignment.
     */
    instanceDescriptorBufferOffset(): number;
    setInstanceDescriptorBufferOffset$(value: number): void;
    /**
     * @brief Stride, in bytes, between instance descriptors in the instance descriptor buffer. Must be at least the size of the instance descriptor type and must be a multiple of 4 bytes. Defaults to the size of the instance descriptor type.
     */
    instanceDescriptorStride(): number;
    setInstanceDescriptorStride$(value: number): void;
    /** @brief Maximum number of instance descriptors */
    maxInstanceCount(): number;
    setMaxInstanceCount$(value: number): void;
    /**
     * @brief Buffer containing the instance count as a uint32_t value. Value at build time must be less than or equal to maxInstanceCount.
     */
    instanceCountBuffer(): _MTLBuffer | null;
    setInstanceCountBuffer$(value: _MTLBuffer | null): void;
    /**
     * @brief Offset into the instance count buffer. Must be a multiple of 4 bytes and must be aligned to the platform's buffer offset alignment.
     */
    instanceCountBufferOffset(): number;
    setInstanceCountBufferOffset$(value: number): void;
    /**
     * @brief Type of instance descriptor in the instance descriptor buffer. Defaults to MTLAccelerationStructureInstanceDescriptorTypeIndirect. Must be MTLAccelerationStructureInstanceDescriptorTypeIndirect or MTLAccelerationStructureInstanceDescriptorTypeIndirectMotion.
     */
    instanceDescriptorType(): MTLAccelerationStructureInstanceDescriptorType;
    setInstanceDescriptorType$(value: MTLAccelerationStructureInstanceDescriptorType): void;
    /** @brief Buffer containing transformation information for motion */
    motionTransformBuffer(): _MTLBuffer | null;
    setMotionTransformBuffer$(value: _MTLBuffer | null): void;
    /**
     * @brief Offset into the instance motion descriptor buffer. Must be a multiple of 64 bytes and must be aligned to the platform's buffer offset alignment.
     */
    motionTransformBufferOffset(): number;
    setMotionTransformBufferOffset$(value: number): void;
    /** @brief Maximum number of motion transforms */
    maxMotionTransformCount(): number;
    setMaxMotionTransformCount$(value: number): void;
    /**
     * @brief Buffer containing the motion transform count as a uint32_t value. Value at build time must be less than or equal to maxMotionTransformCount.
     */
    motionTransformCountBuffer(): _MTLBuffer | null;
    setMotionTransformCountBuffer$(value: _MTLBuffer | null): void;
    /**
     * @brief Offset into the motion transform count buffer. Must be a multiple of 4 bytes and must be aligned to the platform's buffer offset alignment.
     */
    motionTransformCountBufferOffset(): number;
    setMotionTransformCountBufferOffset$(value: number): void;
    /**
     * Matrix layout of the transformation matrices in the instance descriptors in the instance descriptor buffer and the transformation matrices in the transformation matrix buffer. Defaults to MTLMatrixLayoutColumnMajor.
     */
    instanceTransformationMatrixLayout(): MTLMatrixLayout;
    setInstanceTransformationMatrixLayout$(value: MTLMatrixLayout): void;
    /** @brief Type of motion transforms. Defaults to MTLTransformTypePackedFloat4x3. */
    motionTransformType(): MTLTransformType;
    setMotionTransformType$(value: MTLTransformType): void;
    /**
     * @brief Motion transform stride. Defaults to 0, indicating that transforms are tightly packed according to the motion transform type.
     */
    motionTransformStride(): number;
    setMotionTransformStride$(value: number): void;
}
