import type { _MTLFence } from "../Metal/MTLFence.js";
import type { _MTLTexture } from "../Metal/MTLTexture.js";
import type { _MTLFXFrameInterpolatableScaler } from "./MTLFXFrameInterpolatableScaler.js";
import type { MTLPixelFormat } from "../Metal/MTLPixelFormat.js";
import type { MTLTextureUsage } from "../Metal/MTLTextureUsage.js";
export interface _MTLFXTemporalScalerBase extends _MTLFXFrameInterpolatableScaler {
    /**
     * The minimal texture usage options that your app’s input color texture needs in order to support this scaler.
     */
    colorTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s input depth texture needs in order to support this scaler.
     */
    depthTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s motion texture needs in order to support this scaler.
     */
    motionTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your app’s reactive texture needs in order to support this scaler.
     */
    reactiveTextureUsage?(): MTLTextureUsage;
    /**
     * The minimal texture usage options that your output texture needs in order to support this scaler.
     */
    outputTextureUsage?(): MTLTextureUsage;
    /**
     * The width, in pixels, of the region within the color texture the scaler uses as its input.
     */
    inputContentWidth?(): number;
    setInputContentWidth$?(value: number): void;
    /**
     * The height, in pixels, of the region within the color texture the scaler uses as its input.
     */
    inputContentHeight?(): number;
    setInputContentHeight$?(value: number): void;
    /**
     * An input color texture you set for the scaler that supports the correct color texture usage options.
     */
    colorTexture?(): _MTLTexture | null;
    setColorTexture$?(value: _MTLTexture | null): void;
    /**
     * An input depth texture you set for the scaler that supports the correct color texture usage options.
     */
    depthTexture?(): _MTLTexture | null;
    setDepthTexture$?(value: _MTLTexture | null): void;
    /**
     * An input motion texture you set for the scaler that supports the correct color texture usage options.
     */
    motionTexture?(): _MTLTexture | null;
    setMotionTexture$?(value: _MTLTexture | null): void;
    /**
     * The output texture into which this 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;
    /**
     * The exposure texture this scaler uses. 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;
    /**
     * The reactive-mask texture input this scaler uses. 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;
    /**
     * A pre-exposure value this scaler evaluates. 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;
    /**
     * 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 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 temporal 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 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 temporal 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 that indicates whether the temporal scaler discards historical data from previous frames.
     */
    reset?(): boolean;
    setReset$?(value: boolean): void;
    /**
     * A Boolean value that indicates whether the depth texture uses zero to represent the farthest distance.
     */
    depthReversed?(): boolean;
    setDepthReversed$?(value: boolean): void;
    /** The pixel format of the input color texture for this this scaler. */
    colorTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the input depth texture for this this scaler. */
    depthTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the input motion texture for this this scaler. */
    motionTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the input reactive mask texture for this this scaler. */
    reactiveMaskTextureFormat?(): MTLPixelFormat;
    /** The pixel format of the output color texture for this this scaler. */
    outputTextureFormat?(): MTLPixelFormat;
    /** The width, in pixels, of the input color texture for this scaler. */
    inputWidth?(): number;
    /** The height, in pixels, of the input color texture for this scaler. */
    inputHeight?(): number;
    /** The width, in pixels, of the output color texture for this scaler. */
    outputWidth?(): number;
    /** The height, in pixels, of the output color texture for this scaler. */
    outputHeight?(): number;
    /**
     * The smallest scale factor the temporal scaler can use to generate output textures.
     */
    inputContentMinScale?(): number;
    /**
     * The largest scale factor the temporal scaler can use to generate output textures.
     */
    inputContentMaxScale?(): number;
    /**
     * An optional fence that you provide to synchronize your app’s untracked resources.
     */
    fence?(): _MTLFence | null;
    setFence$?(value: _MTLFence | null): void;
}
