import type { NobjcObject } from "objc-js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _MTLRasterizationRateSampleArray } from "./MTLRasterizationRateSampleArray.js";
import type { MTLSize } from "../structs/MTLSize.js";
export declare class _MTLRasterizationRateLayerDescriptor extends _NSObject {
    static alloc(): _MTLRasterizationRateLayerDescriptor;
    static new(): _MTLRasterizationRateLayerDescriptor;
    /** @method init @abstract Do not use, instead use initWithNumSamples: */
    init(): _MTLRasterizationRateLayerDescriptor;
    /**
     * @method initWithSampleCount: @abstract Initialize a descriptor for a layer with the given number of quality samples on the horizontal and vertical axis. @param sampleCount The width and height components are the number of samples on the horizontal and vertical axis respectively. The depth component is ignored. @discussion All values are initialized to zero.
     */
    initWithSampleCount$(sampleCount: MTLSize): _MTLRasterizationRateLayerDescriptor;
    /**
     * @method initWithSampleCount:horizontal:vertical: @abstract Initialize a descriptor for a layer with the given number of quality samples on the horizontal and vertical axis. @param sampleCount The width and height components are the number of samples on the horizontal and vertical axis respectively. The depth component is ignored. @param horizontal The initial sample values on the horizontal axis. Must point to an array of sampleCount.width elements, of which the values will be copied into the MTLRasterizationRateLayerDescriptor. @param vertical The initial sample values on the vertical axis. Must point to an array of sampleCount.height elements, of which the values will be copied into the MTLRasterizationRateLayerDescriptor. @discussion Use initWithSampleCount: to initialize with zeroes instead.
     */
    initWithSampleCount$horizontal$vertical$(sampleCount: MTLSize, horizontal: NobjcObject, vertical: NobjcObject): _MTLRasterizationRateLayerDescriptor;
    /**
     * @property sampleCount @return The number of quality samples that this descriptor uses to describe its current function, for the horizontal and vertical axis. The depth component of the returned MTLSize is always 0.
     */
    sampleCount(): MTLSize;
    /**
     * @property maxSampleCount @return The maximum number of quality samples that this descriptor can use to describe its function, for the horizontal and vertical axis, this is the sampleCount that the descriptor was initialized with. The depth component of the returned MTLSize is always 0.
     */
    maxSampleCount(): MTLSize;
    /**
     * @property horizontalSampleStorage @abstract Provide direct access to the quality samples stored in the descriptor. @return Pointer to the (mutable) storage array for samples on the horizontal axis. @discussion The returned pointer points to the first element of an array of sampleCount.width elements.
     */
    horizontalSampleStorage(): NobjcObject;
    /**
     * @property verticalSampleStorage @abstract Provide direct access to the quality samples stored in the descriptor. @return Pointer to the (mutable) storage array for samples on the vertical axis. @discussion The returned pointer points to the first element of an array of sampleCount.height elements.
     */
    verticalSampleStorage(): NobjcObject;
    /**
     * @property horizontal @abstract Provide convenient bounds-checked access to the quality samples stored in the descriptor. @return Returns a syntactic sugar helper to get or set sample values on the horizontal axis.
     */
    horizontal(): _MTLRasterizationRateSampleArray;
    /**
     * @property vertical @abstract Provide convenient bounds-checked access to the quality samples stored in the descriptor. @return Returns a syntactic sugar helper to get or set sample values on the vertical axis.
     */
    vertical(): _MTLRasterizationRateSampleArray;
}
export interface _MTLRasterizationRateLayerDescriptor extends _NSCopying {
}
