import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _MTL4FXTemporalScaler } from "./MTL4FXTemporalScaler.js";
import type { _MTLFXTemporalScaler } from "./MTLFXTemporalScaler.js";
import type { _MTL4Compiler } from "../Metal/MTL4Compiler.js";
import type { _MTLDevice } from "../Metal/MTLDevice.js";
import type { MTLPixelFormat } from "../Metal/MTLPixelFormat.js";
export declare class _MTLFXTemporalScalerDescriptor extends _NSObject {
    static alloc(): _MTLFXTemporalScalerDescriptor;
    static new(): _MTLFXTemporalScalerDescriptor;
    init(): _MTLFXTemporalScalerDescriptor;
    /**
     * Returns the smallest temporal scaling factor the device supports as a floating-point value. - Parameters: - device: The Metal device for which this method performs this check. - Returns: the minimum input content scale the GPU device supports.
     */
    static supportedInputContentMinScaleForDevice$(device: _MTLDevice): number;
    /**
     * Returns the largest temporal scaling factor the device supports as a floating-point value. - Parameters: - device: The Metal device for which this method performs this check. - Returns: the maximum input content scale the GPU device supports.
     */
    static supportedInputContentMaxScaleForDevice$(device: _MTLDevice): number;
    /**
     * Returns a Boolean value that indicates whether the temporal scaler works with a GPU. - Parameters: - device: A device instance that represents a GPU. - Returns: <doc://com.apple.documentation/documentation/swift/true> if the device supports temporal scaling, <doc://com.apple.documentation/documentation/swift/false> otherwise.
     */
    static supportsDevice$(device: _MTLDevice): boolean;
    /**
     * Queries whether a Metal device supports temporal scaling compatible with Metal 4. - Parameters: - device: The GPU device for which this methods tests support. - Returns: <doc://com.apple.documentation/documentation/swift/true> if the device supports temporal scaling with Metal 4, <doc://com.apple.documentation/documentation/swift/false> otherwise.
     */
    static supportsMetal4FX$(device: _MTLDevice): boolean;
    /**
     * Creates a temporal scaler instance for a Metal device. - Parameters: - device: The Metal device that creates the temporal scaler. - Returns: A new temporal scaler instance upon success, or `nil` otherwise.
     */
    newTemporalScalerWithDevice$(device: _MTLDevice): _MTLFXTemporalScaler | null;
    /**
     * Creates a temporal scaler instance for a Metal device. - Parameters: - device: The Metal device that creates the temporal scaler. - compiler: A compiler instance this method can use to build pipeline state objects. - Returns: A new temporal scaler instance upon success, or `nil` otherwise.
     */
    newTemporalScalerWithDevice$compiler$(device: _MTLDevice, compiler: _MTL4Compiler): _MTL4FXTemporalScaler | null;
    /**
     * The pixel format of the input color texture for the temporal scaler you create with this descriptor.
     */
    colorTextureFormat(): MTLPixelFormat;
    setColorTextureFormat$(value: MTLPixelFormat): void;
    /**
     * The pixel format of the input depth texture for the temporal scaler you create with this descriptor.
     */
    depthTextureFormat(): MTLPixelFormat;
    setDepthTextureFormat$(value: MTLPixelFormat): void;
    /**
     * The pixel format of the input motion texture for the temporal scaler you create with this descriptor.
     */
    motionTextureFormat(): MTLPixelFormat;
    setMotionTextureFormat$(value: MTLPixelFormat): void;
    /**
     * The pixel format of the output texture for the temporal scaler you create with this descriptor.
     */
    outputTextureFormat(): MTLPixelFormat;
    setOutputTextureFormat$(value: MTLPixelFormat): void;
    /**
     * The width of the input color texture for the temporal scaler you create with this descriptor.
     */
    inputWidth(): number;
    setInputWidth$(value: number): void;
    /**
     * The height of the input color texture for the temporal scaler you create with this descriptor.
     */
    inputHeight(): number;
    setInputHeight$(value: number): void;
    /**
     * The width of the output color texture for the temporal scaler you create with this descriptor.
     */
    outputWidth(): number;
    setOutputWidth$(value: number): void;
    /**
     * The height of the output color texture for the temporal scaler you create with this descriptor.
     */
    outputHeight(): number;
    setOutputHeight$(value: number): void;
    /**
     * A Boolean value that indicates whether MetalFX calculates the exposure for each frame. Set this property to <doc://com.apple.documentation/documentation/swift/true> to create a scaler that automatically calculates the exposure level for each image it scales. * Note: Temporal scaler instances that use auto exposure ignore their ``MTLFXTemporalScalerBase/exposureTexture`` property. This property's default value is <doc://com.apple.documentation/documentation/swift/false>.
     */
    autoExposureEnabled(): boolean;
    setAutoExposureEnabled$(value: boolean): void;
    /**
     * A Boolean value that indicates whether MetalFX compiles a temporal scaling effect’s underlying upscaler as it creates the instance. This property gives you the option to decide when it’s better for your app to give MetalFX the time it needs to compile the underlying upscaler of the temporal scaling effect. The two choices are: * As you create the effect * After you create the effect, likely when your app needs to upscale the initial textures You can create a temporal scaler that can upscale textures at its best speed immediately after you create it by setting this property to <doc://com.apple.documentation/documentation/swift/true> and then calling an initialization method like ``newTemporalScalerWithDevice:``. However, it may take MetalFX more time for that method to return while it creates the denoiser scaler and compiles its underlying pipelines. By default, the property is equal to <doc://com.apple.documentation/documentation/swift/false>, which tells MetalFX to quickly create and return the temporal scaling-effect instance, and then compile a faster upscaler in the background. However, this means the effect can take more time to upscale textures while the framework compiles the underlying upscaler. When the framework finishes compiling, the effect runs just as fast as if you set the property to <doc://com.apple.documentation/documentation/swift/true>. * Note: The image quality of the effect’s output texture is consistent, whether it’s using the slower interim upscaler or the final, faster upscaler.
     */
    requiresSynchronousInitialization(): boolean;
    setRequiresSynchronousInitialization$(value: boolean): void;
    /**
     * A Boolean value that indicates whether the temporal scaler you create with this descriptor uses dynamic resolution. When you set this property to <doc://com.apple.documentation/documentation/swift/true> to enable dynamic resolution, scale properties ``inputContentMinScale`` and ``inputContentMaxScale`` represent the input and output resolution both the width and height. * Note: The scaler assumes that aspect ratio of the input and output textures doesn't change.
     */
    inputContentPropertiesEnabled(): boolean;
    setInputContentPropertiesEnabled$(value: boolean): void;
    /**
     * The smallest scale factor the temporal scaler you create with this descriptor can use to generate output textures.
     */
    inputContentMinScale(): number;
    setInputContentMinScale$(value: number): void;
    /**
     * The largest scale factor the temporal scaler you create with this descriptor can use to generate output textures.
     */
    inputContentMaxScale(): number;
    setInputContentMaxScale$(value: number): void;
    /**
     * A Boolean value that indicates whether a temporal scaler you create with the descriptor applies a reactive mask.
     */
    reactiveMaskTextureEnabled(): boolean;
    setReactiveMaskTextureEnabled$(value: boolean): void;
    /**
     * The pixel format of the reactive mask input texture for a temporal scaler you create with the descriptor.
     */
    reactiveMaskTextureFormat(): MTLPixelFormat;
    setReactiveMaskTextureFormat$(value: MTLPixelFormat): void;
}
export interface _MTLFXTemporalScalerDescriptor extends _NSCopying {
}
