import type { _MTLFence } from "../Metal/MTLFence.js";
import type { _MTLTexture } from "../Metal/MTLTexture.js";
import type { simd_float4x4 } from "../structs/simd_float4x4.js";
import type { MTLPixelFormat } from "../Metal/MTLPixelFormat.js";
import type { MTLTextureUsage } from "../Metal/MTLTextureUsage.js";
export interface _MTLFXTemporalDenoisedScalerBase {
    /**
     * The minimal texture usage options that your app’s input color texture needs in order to support this denoiser scaler.
     */
    colorTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input depth texture needs in order to support this denoiser scaler.
     */
    depthTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input motion texture needs in order to support this denoiser scaler.
     */
    motionTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input reactive texture needs in order to support this denoiser scaler.
     */
    reactiveTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input diffuse albedo texture needs in order to support this denoiser scaler.
     */
    diffuseAlbedoTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input specular albedo texture needs in order to support this denoiser scaler.
     */
    specularAlbedoTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input normal texture needs in order to support this denoiser scaler.
     */
    normalTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input roughness texture needs in order to support this denoiser scaler.
     */
    roughnessTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input specular hit texture needs in order to support this denoiser scaler.
     */
    specularHitDistanceTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input denoise strength texture needs in order to support this denoiser scaler.
     */
    denoiseStrengthMaskTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input transparency overlay texture needs in order to support this denoiser scaler.
     */
    transparencyOverlayTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s output texture needs in order to support this denoiser scaler.
     */
    outputTextureUsage?(): MTLTextureUsage;
    /**
     * Assigns the color texture this scaler evaluates. You are responsible for ensuring the usage and pixel format of the texture you assign to this property matches the texture usage ``colorTextureUsage`` requests and the pixel format that ``MTLFXTemporalDenoisedScalerDescriptor/colorTextureFormat`` requests.
     */
    colorTexture?(): _MTLTexture | null;
    setColorTexture$?(value: _MTLTexture | null): void;
    /**
     * The depth texture this scaler evaluates. You are responsible for ensuring the usage and pixel format of the texture you assign to this property matches the texture usage ``depthTextureUsage`` requests and the pixel format that ``MTLFXTemporalDenoisedScalerDescriptor/depthTextureFormat`` requests.
     */
    depthTexture?(): _MTLTexture | null;
    setDepthTexture$?(value: _MTLTexture | null): void;
    /**
     * The motion texture this scaler evaluates. You are responsible for ensuring the usage and pixel format of the texture you assign to this property matches the texture usage ``motionTextureUsage`` requests and the pixel format that ``MTLFXTemporalDenoisedScalerDescriptor/motionTextureFormat`` requests.
     */
    motionTexture?(): _MTLTexture | null;
    setMotionTexture$?(value: _MTLTexture | null): void;
    /**
     * The diffuse albedo texture this scaler evaluates. You are responsible for ensuring the usage and pixel format of the texture you assign to this property matches the texture usage ``diffuseAlbedoTextureUsage`` requests and the pixel format that ``MTLFXTemporalDenoisedScalerDescriptor/diffuseAlbedoTextureFormat`` requests.
     */
    diffuseAlbedoTexture?(): _MTLTexture | null;
    setDiffuseAlbedoTexture$?(value: _MTLTexture | null): void;
    /**
     * The specular albedo texture this scaler evaluates. You are responsible for ensuring the usage and pixel format of the texture you assign to this property matches the texture usage ``specularAlbedoTextureUsage`` requests and the pixel format that ``MTLFXTemporalDenoisedScalerDescriptor/specularAlbedoTextureFormat`` requests.
     */
    specularAlbedoTexture?(): _MTLTexture | null;
    setSpecularAlbedoTexture$?(value: _MTLTexture | null): void;
    /**
     * The normal texture this scaler evaluates. You are responsible for ensuring the usage and pixel format of the texture you assign to this property matches the texture usage ``normalTextureUsage`` requests and the pixel format that ``MTLFXTemporalDenoisedScalerDescriptor/normalTextureFormat`` requests.
     */
    normalTexture?(): _MTLTexture | null;
    setNormalTexture$?(value: _MTLTexture | null): void;
    /**
     * The roughness texture this scaler evaluates. You are responsible for ensuring the usage and pixel format of the texture you assign to this property matches the texture usage ``roughnessTextureUsage`` requests and the pixel format that ``MTLFXTemporalDenoisedScalerDescriptor/roughnessTextureFormat`` requests.
     */
    roughnessTexture?(): _MTLTexture | null;
    setRoughnessTexture$?(value: _MTLTexture | null): void;
    /**
     * The specular hit texture this scaler evaluates. You are responsible for ensuring the usage and pixel format of the texture you assign to this property matches the texture usage ``specularHitDistanceTextureUsage`` requests and the pixel format that ``MTLFXTemporalDenoisedScalerDescriptor/specularHitDistanceTextureFormat`` requests.
     */
    specularHitDistanceTexture?(): _MTLTexture | null;
    setSpecularHitDistanceTexture$?(value: _MTLTexture | null): void;
    /**
     * The denoise strength mask texture this scaler evaluates. Use this single-channel texture to mark, at a per-pixel level, areas that this denoiser ignores. To configure a pixel that the denoiser ignores, provide `1.0` as the value at that pixel's corresponding location on this texture. You are responsible for ensuring the usage and pixel format of the texture you assign to this property matches the texture usage ``denoiseStrengthMaskTextureUsage`` requests and the pixel format that ``MTLFXTemporalDenoisedScalerDescriptor/denoiseStrengthMaskTextureFormat`` requests.
     */
    denoiseStrengthMaskTexture?(): _MTLTexture | null;
    setDenoiseStrengthMaskTexture$?(value: _MTLTexture | null): void;
    /**
     * The transparency overlay texture that this scaler evaluates. Use this RGBA texture to provide to the denoiser an overlay with your transparent pixels, such as the output of your particle systems. MetalFX interprets this to be a texture in linear color space, with the RGB channels ranging between `0` and infinity, and the alpha channel in the range `[0,1]`, representing the opacity of the pixel. You are responsible for ensuring the usage and pixel format of the texture you assign to this property matches the texture usage ``transparencyOverlayTextureUsage`` requests and the pixel format that ``MTLFXTemporalDenoisedScalerDescriptor/transparencyOverlayTextureFormat`` requests.
     */
    transparencyOverlayTexture?(): _MTLTexture | null;
    setTransparencyOverlayTexture$?(value: _MTLTexture | null): void;
    /**
     * The output texture into which this denoiser scaler writes its output. You are responsible for providing a texture with a private `storageMode` to this property.
     */
    outputTexture?(): _MTLTexture | null;
    setOutputTexture$?(value: _MTLTexture | null): void;
    /**
     * An exposure texture that this denoiser scaler evaluates. Create and assign a 1x1 `MTLPixelFormatR16Float` texture to assign to this property. MetalFX reads the R channel of the texel at position `(0,0)` and uses it as the exposure value. It then uses this value to multiply the input color. For best performance, use the GPU to generate the exposure value and store it into this texture. * Note: The temporal scaler ignores this property if you create it with a descriptor that has its ``MTLFXTemporalScalerDescriptor/autoExposureEnabled`` property set to <doc://com.apple.documentation/documentation/swift/true>.
     */
    exposureTexture?(): _MTLTexture | null;
    setExposureTexture$?(value: _MTLTexture | null): void;
    /**
     * A pre-exposure value for this scaler to evaluate. If the input color texture you assign to ``colorTexture`` is pre-multiplied by fixed value, set this property to that same fixed value so MetalFX divides input color by it. This is not a common situation and you typically don't need to assign a value to this property.
     */
    preExposure?(): number;
    setPreExposure$?(value: number): void;
    /**
     * A reactive-mask texture input for this scaler to evaluate. This texture helps guide the denoiser when objects move quickly in a scene with inaccurate motion information, such as when they involve alpha blending. In these situations, you can get better results by guiding MetalFX whether to favor the current frame on a per-pixel basis with a reactive mask texture. When providing this texture, you are responsible for ensuring each pixel is in the range `[0.0, 1.0]`, where a value: * Equal to `0.0` tells MetalFX to follow its normal behavior for the corresponding pixel * Equal to `1.0` tells MetalFX to ignore temporal history for the corresponding pixel * In the range `(0.0, 1.0)` proportionally blends the effect for the corresponding pixel
     */
    reactiveMaskTexture?(): _MTLTexture | null;
    setReactiveMaskTexture$?(value: _MTLTexture | null): void;
    /**
     * The horizontal component of the subpixel sampling coordinate you use to generate the color texture input. This property indicates the horizontal pixel offset this scaler samples to return to the frame's reference frame.
     */
    jitterOffsetX?(): number;
    setJitterOffsetX$?(value: number): void;
    /**
     * The vertical component of the subpixel sampling coordinate you use to generate the color texture input. This property indicates the vertical pixel offset this scaler samples to return to the frame's reference frame.
     */
    jitterOffsetY?(): number;
    setJitterOffsetY$?(value: number): void;
    /**
     * The horizontal scale factor the denoiser scaler applies to the input motion texture. The scaler converts the horizontal component of each value in ``motionTexture`` into fragment (pixel) coordinates by multiplying it by this property’s value. If you set this property's value to `1.0`, this denoiser scaler expects that each pixel's motion vector points to that pixel's location in the ``colorTexture`` at the time of the last call to encode this scaler's work. For example, in Metal's standard device coordinates, where `(0,0)` represents the upper-left corner of the framebuffer, the motion vectors for an object that moves down and to the right in the ``colorTexture`` by `10` pixels would be `(-10,-10)`.
     */
    motionVectorScaleX?(): number;
    setMotionVectorScaleX$?(value: number): void;
    /**
     * The vertical scale factor the denoiser scaler applies to the input motion texture. The scaler converts the horizontal component of each value in ``motionTexture`` into fragment (pixel) coordinates by multiplying it by this property’s value. If you set this property's value to `1.0`, this denoiser scaler expects that each pixel's motion vector points to that pixel's location in the ``colorTexture`` at the time of the last call to encode this scaler's work. For example, in Metal's standard device coordinates, where `(0,0)` represents the upper-left corner of the framebuffer, the motion vectors for an object that moves down and to the right in the ``colorTexture`` by `10` pixels would be `(-10,-10)`.
     */
    motionVectorScaleY?(): number;
    setMotionVectorScaleY$?(value: number): void;
    /**
     * A Boolean property indicating whether to reset history. Set this property to <doc://com.apple.documentation/documentation/swift/true> to invalidate history, for example when there is a scene cut in your game.
     */
    shouldResetHistory?(): boolean;
    setShouldResetHistory$?(value: boolean): void;
    /**
     * A Boolean value that indicates whether the depth texture uses zero to represent the farthest distance. This property's default value is <doc://com.apple.documentation/documentation/swift/true>.
     */
    depthReversed?(): boolean;
    setDepthReversed$?(value: boolean): void;
    /** The pixel format of the input color texture for this denoiser scaler. */
    colorTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the input depth texture for this denoiser scaler. */
    depthTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the input motion texture for this denoiser scaler. */
    motionTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the input diffuse albedo texture for this denoiser scaler. */
    diffuseAlbedoTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the input specular albedo for this denoiser scaler. */
    specularAlbedoTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the input normal texture for this denoiser scaler. */
    normalTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the input normal texture for this denoiser scaler. */
    roughnessTextureFormat?(): MTLPixelFormat;
    /**
     * The pixel format of the input specular hit distance texture for this denoiser scaler.
     */
    specularHitDistanceTextureFormat?(): MTLPixelFormat;
    /**
     * The pixel format of the input denoise strength mask texture for this denoiser scaler.
     */
    denoiseStrengthMaskTextureFormat?(): MTLPixelFormat;
    /**
     * The pixel format of the input transparency overlay texture for this denoiser scaler.
     */
    transparencyOverlayTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the input reactive mask texture for this denoiser scaler. */
    reactiveMaskTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the output color texture for this denoiser scaler. */
    outputTextureFormat?(): MTLPixelFormat;
    /** The width, in pixels, of the input color texture for the scaler. */
    inputWidth?(): number;
    /** The height, in pixels, of the input color texture for the scaler. */
    inputHeight?(): number;
    /** The width, in pixels, of the output color texture for the scaler. */
    outputWidth?(): number;
    /** The height, in pixels, of the output color texture for the scaler. */
    outputHeight?(): number;
    /** The minimum input content scale this scaler supports. */
    inputContentMinScale?(): number;
    /** The maximum input content scale this scaler supports. */
    inputContentMaxScale?(): number;
    /**
     * The world-to-view transformation matrix this scaler uses as part of its operation.
     */
    worldToViewMatrix?(): simd_float4x4;
    setWorldToViewMatrix$?(value: simd_float4x4): void;
    /**
     * The view-to-clip coordinates transformation matrix this scaler uses as part of its operation.
     */
    viewToClipMatrix?(): simd_float4x4;
    setViewToClipMatrix$?(value: simd_float4x4): void;
    /**
     * An optional fence that this denoiser scaler waits for and updates. Use this property for synchronizing access to untracked resources.
     */
    fence?(): _MTLFence | null;
    setFence$?(value: _MTLFence | null): void;
}
