import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _SCNAnimatable } from "./SCNAnimatable.js";
import type { _SCNMaterialProperty } from "./SCNMaterialProperty.js";
import type { _SCNTechniqueSupport } from "./SCNTechniqueSupport.js";
import type { _MDLCamera } from "../ModelIO/MDLCamera.js";
import type { CATransform3D } from "../structs/CATransform3D.js";
import type { CGSize } from "../structs/CGSize.js";
import type { SCNCameraProjectionDirection } from "./SCNCameraProjectionDirection.js";
export declare class _SCNCamera extends _NSObject {
    static alloc(): _SCNCamera;
    static new(): _SCNCamera;
    init(): _SCNCamera;
    /** @method camera @abstract Creates and returns a camera instance. */
    static camera(): _SCNCamera;
    static cameraWithMDLCamera$(mdlCamera: _MDLCamera): _SCNCamera;
    setProjectionTransform$(projectionTransform: CATransform3D): void;
    projectionTransformWithViewportSize$(viewportSize: CGSize): CATransform3D;
    /** @property name @abstract Determines the name of the receiver. */
    name(): _NSString | null;
    setName$(value: _NSString | null): void;
    /**
     * @property fieldOfView @abstract Determines the receiver's field of view (in degree). Defaults to 60°. Animatable. @discussion The fieldOfView is automatically updated when the sensorHeight or focalLength are set. Setting the fieldOfView will update the focalLength according to the new fieldOfView and the current sensorHeight.
     */
    fieldOfView(): number;
    setFieldOfView$(value: number): void;
    /**
     * @property projectionDirection @abstract Determines whether the fieldOfView (or orthographicScale) is vertical or horizontal. Defaults to vertical.
     */
    projectionDirection(): SCNCameraProjectionDirection;
    setProjectionDirection$(value: SCNCameraProjectionDirection): void;
    /**
     * @property focalLength @abstract Determines the receiver's focal length in millimeter. Defaults to 50mm. Animatable. @discussion The focalLength is automatically updated when the sensorHeight or fieldOfView are set. Setting the focalLength will update the fieldOfView according to the new focalLength and the current sensorHeight.
     */
    focalLength(): number;
    setFocalLength$(value: number): void;
    /**
     * @property sensorHeight @abstract Determines the vertical size of the sensor in millimeter. Defaults to 24mm. Animatable. @discussion Setting the sensorHeight will automatically update the fieldOfView according to the new sensorHeight and the current focalLength.
     */
    sensorHeight(): number;
    setSensorHeight$(value: number): void;
    /**
     * @property zNear @abstract Determines the receiver's near value. Animatable. @discussion The near value determines the minimal distance between the camera and a visible surface. If a surface is closer to the camera than this minimal distance, then the surface is clipped. The near value must be different than zero. Defaults to 1.
     */
    zNear(): number;
    setZNear$(value: number): void;
    /**
     * @property zFar @abstract Determines the receiver's far value. Animatable. @discussion The far value determines the maximal distance between the camera and a visible surface. If a surface is further from the camera than this maximal distance, then the surface is clipped. Defaults to 100.
     */
    zFar(): number;
    setZFar$(value: number): void;
    /**
     * @property automaticallyAdjustsZRange @abstract Determines whether the receiver automatically adjusts the zFar value. Defaults to NO. @discussion When set to YES, the near and far planes are automatically set to fit the bounding box of the entire scene at render time.
     */
    automaticallyAdjustsZRange(): boolean;
    setAutomaticallyAdjustsZRange$(value: boolean): void;
    /**
     * @property usesOrthographicProjection @abstract Determines whether the receiver uses an orthographic projection or not. Defaults to NO.
     */
    usesOrthographicProjection(): boolean;
    setUsesOrthographicProjection$(value: boolean): void;
    /**
     * @property orthographicScale @abstract Determines the receiver's orthographic scale value. Animatable. Defaults to 1. @discussion This setting determines the size of the camera's visible area. This is only enabled when usesOrthographicProjection is set to YES.
     */
    orthographicScale(): number;
    setOrthographicScale$(value: number): void;
    /**
     * @property projectionTransform @abstract Determines the projection transform used by the camera to project the world onscreen.
     */
    projectionTransform(): CATransform3D;
    setProjectionTransform$(value: CATransform3D): void;
    /**
     * @property wantsDepthOfField @abstract Determines if the receiver has depth of field. Defaults to NO.
     */
    wantsDepthOfField(): boolean;
    setWantsDepthOfField$(value: boolean): void;
    /**
     * @property focusDistance @abstract Determines the receiver's focus distance. Animatable. @discussion Defaults to 2.5
     */
    focusDistance(): number;
    setFocusDistance$(value: number): void;
    /**
     * @property focalBlurSampleCount @abstract Determines the receiver's sample count for depth of field effect. @discussion Defaults to 25.
     */
    focalBlurSampleCount(): number;
    setFocalBlurSampleCount$(value: number): void;
    /**
     * @property fStop @abstract Determines the receiver's fstop. Animatable. @discussion Defaults to 5.6.
     */
    fStop(): number;
    setFStop$(value: number): void;
    /**
     * @property apertureBladeCount @abstract Determines the receiver's blade count of the aperture. @discussion Defaults to 6.
     */
    apertureBladeCount(): number;
    setApertureBladeCount$(value: number): void;
    /**
     * @property motionBlurIntensity @abstract Determines the intensity of the motion blur. Animatable. Defaults to 0. @discussion An intensity of zero means no motion blur. The intensity should not exceeed 1.
     */
    motionBlurIntensity(): number;
    setMotionBlurIntensity$(value: number): void;
    /**
     * @property screenSpaceAmbientOcclusionIntensity @abstract Determines the intensity of the screen space ambient occlusion. Animatable. @discussion defaults to 0.
     */
    screenSpaceAmbientOcclusionIntensity(): number;
    setScreenSpaceAmbientOcclusionIntensity$(value: number): void;
    /**
     * @property screenSpaceAmbientOcclusionRadius @abstract Determines the screen space ambient occlusion radius in scene unit. Animatable. @discussion defaults to 5.
     */
    screenSpaceAmbientOcclusionRadius(): number;
    setScreenSpaceAmbientOcclusionRadius$(value: number): void;
    /**
     * @property screenSpaceAmbientOcclusionBias @abstract Determines self occlusion bias in scene unit. @discussion defaults to 0.03.
     */
    screenSpaceAmbientOcclusionBias(): number;
    setScreenSpaceAmbientOcclusionBias$(value: number): void;
    /**
     * @property screenSpaceAmbientOcclusionDepthThreshold @abstract Determines the depth blur threshold in scene unit. @discussion defaults to 0.2.
     */
    screenSpaceAmbientOcclusionDepthThreshold(): number;
    setScreenSpaceAmbientOcclusionDepthThreshold$(value: number): void;
    /**
     * @property screenSpaceAmbientOcclusionNormalThreshold @abstract Determines the normal blur threshold. @discussion defaults to 0.3.
     */
    screenSpaceAmbientOcclusionNormalThreshold(): number;
    setScreenSpaceAmbientOcclusionNormalThreshold$(value: number): void;
    /**
     * @property wantsHDR @abstract Determines if the receiver has a high dynamic range. Defaults to NO.
     */
    wantsHDR(): boolean;
    setWantsHDR$(value: boolean): void;
    /**
     * @property exposureOffset @abstract Determines the logarithmic exposure biasing, in EV. Defaults to 0.
     */
    exposureOffset(): number;
    setExposureOffset$(value: number): void;
    /**
     * @property averageGray @abstract Determines the average gray level desired in the final image. Defaults to 0.18.
     */
    averageGray(): number;
    setAverageGray$(value: number): void;
    /**
     * @property whitePoint @abstract Determines the smallest luminance level that will be mapped to white in the final image. Defaults to 1.
     */
    whitePoint(): number;
    setWhitePoint$(value: number): void;
    /**
     * @property wantsExposureAdaptation @abstract Determines if the receiver should simulate an eye and continuously adjust to luminance. Defaults to YES.
     */
    wantsExposureAdaptation(): boolean;
    setWantsExposureAdaptation$(value: boolean): void;
    /**
     * @property exposureAdaptationBrighteningSpeedFactor @abstract Determines the exposure adaptation speed when going from bright areas to dark areas. Defaults to 0.4.
     */
    exposureAdaptationBrighteningSpeedFactor(): number;
    setExposureAdaptationBrighteningSpeedFactor$(value: number): void;
    /**
     * @property exposureAdaptationDarkeningSpeedFactor @abstract Determines the exposure adaptation speed when going from dark areas to bright areas. Defaults to 0.6.
     */
    exposureAdaptationDarkeningSpeedFactor(): number;
    setExposureAdaptationDarkeningSpeedFactor$(value: number): void;
    /**
     * @property minimumExposure @abstract Determines the minimum exposure offset of the adaptation, in EV. Defaults to -15.
     */
    minimumExposure(): number;
    setMinimumExposure$(value: number): void;
    /**
     * @property maximumExposure @abstract Determines the maximum exposure offset of the adaptation, in EV. Defaults to -15.
     */
    maximumExposure(): number;
    setMaximumExposure$(value: number): void;
    /**
     * @property bloomThreshold @abstract Determines the luminance threshold for the bloom effect. Animatable. Defaults to 1.
     */
    bloomThreshold(): number;
    setBloomThreshold$(value: number): void;
    /**
     * @property bloomIteration @abstract Determines the number of blur iterations. Defaults to 1.
     */
    bloomIterationCount(): number;
    setBloomIterationCount$(value: number): void;
    /**
     * @property bloomIterationSpread @abstract Determines how the bloom iterations are spread. Defaults to 0.
     */
    bloomIterationSpread(): number;
    setBloomIterationSpread$(value: number): void;
    /**
     * @property bloomIntensity @abstract Determines the intensity of the bloom effect. Animatable. Defaults to 0 (no effect).
     */
    bloomIntensity(): number;
    setBloomIntensity$(value: number): void;
    /**
     * @property bloomBlurRadius @abstract Determines the radius of the bloom effect in points. Animatable. Defaults to 4.
     */
    bloomBlurRadius(): number;
    setBloomBlurRadius$(value: number): void;
    /**
     * @property vignettingPower @abstract Controls the shape of the vignetting effect. Defaults to 0 (no effect).
     */
    vignettingPower(): number;
    setVignettingPower$(value: number): void;
    /**
     * @property vignettingIntensity @abstract Controls the intensity of the vignetting effect. Defaults to 0 (no effect).
     */
    vignettingIntensity(): number;
    setVignettingIntensity$(value: number): void;
    /**
     * @property colorFringeStrength @abstract Controls the strength of the color shift effect. Defaults to 0 (no effect).
     */
    colorFringeStrength(): number;
    setColorFringeStrength$(value: number): void;
    /**
     * @property colorFringeIntensity @abstract Controls the intensity of the color shift effect. Defaults to 1.
     */
    colorFringeIntensity(): number;
    setColorFringeIntensity$(value: number): void;
    /**
     * @property saturation @abstract Controls the overall saturation of the scene. Defaults to 1 (no effect).
     */
    saturation(): number;
    setSaturation$(value: number): void;
    /**
     * @property contrast @abstract Controls the overall contrast of the scene. Defaults to 0 (no effect).
     */
    contrast(): number;
    setContrast$(value: number): void;
    /**
     * @property grainIntensity @abstract Controls the intensity of the grain. Defaults to 0 (no effect).
     */
    grainIntensity(): number;
    setGrainIntensity$(value: number): void;
    /** @property grainScale @abstract Controls the scale of the grain. Defaults to 1. */
    grainScale(): number;
    setGrainScale$(value: number): void;
    /**
     * @property grainIsColored @abstract Determines if the grain is colored or not. Defaults to NO.
     */
    grainIsColored(): boolean;
    setGrainIsColored$(value: boolean): void;
    /**
     * @property whiteBalanceTemperature @abstract Controls the overall white balance temperature of the scene. Defaults to 0 (no effect).
     */
    whiteBalanceTemperature(): number;
    setWhiteBalanceTemperature$(value: number): void;
    /**
     * @property whiteBalanceTint @abstract Controls the overall white balance tint of the scene. Defaults to 0 (no effect).
     */
    whiteBalanceTint(): number;
    setWhiteBalanceTint$(value: number): void;
    /**
     * @property colorGrading @abstract Specifies a lookup texture to apply color grading. The contents must a 2D image representing `n` slices of a unit color cube texture, arranged in an horizontal row of `n` images. For instance, a color cube of dimension 16x16x16 should be provided as an image of size 256x16.
     */
    colorGrading(): _SCNMaterialProperty;
    /**
     * @property categoryBitMask @abstract Determines the node categories that are visible from the receiver. Defaults to all bits set.
     */
    categoryBitMask(): number;
    setCategoryBitMask$(value: number): void;
    /**
     * @property focalBlurRadius @abstract Determines the receiver's focal radius. Animatable. @discussion Determines the maximum amount of blur for objects out of focus. Defaults to 0.
     * @deprecated Use fStop instead
     */
    focalBlurRadius(): number;
    setFocalBlurRadius$(value: number): void;
    /**
     * @property xFov @abstract Determines the receiver's field of view on the X axis (in degree). Animatable. @discussion When both xFov and yFov are null an yFov of 60° is used. When both are set, the one that best fits the renderer's aspect ratio is used. When only one is set, it is used. Defaults to 0.
     * @deprecated Use -[SCNCamera fieldOfView] or -[SCNCamera focalLength] instead
     */
    xFov(): number;
    setXFov$(value: number): void;
    /**
     * @property yFov @abstract Determines the receiver's field of view on the Y axis (in degree). Animatable. @discussion When both xFov and yFov are null an yFov of 60° is used. When both are set, the one that best fits the renderer's aspect ratio is used. When only one is set, it is used. Defaults to 0.
     * @deprecated Use -[SCNCamera fieldOfView] or -[SCNCamera focalLength] instead
     */
    yFov(): number;
    setYFov$(value: number): void;
    /**
     * @property aperture @abstract Determines the receiver's aperture. Animatable. @discussion Defaults to 1/8.0.
     * @deprecated Use -[SCNCamera fStop] instead with fStop = sensorHeight / aperture.
     */
    aperture(): number;
    setAperture$(value: number): void;
    /**
     * @property focalSize @abstract Determines the receiver's focal size. Animatable. @discussion Determines the size of the area around focalDistance where the objects are in focus. Defaults to 0.
     * @deprecated -focusDistance
     */
    focalSize(): number;
    setFocalSize$(value: number): void;
    /**
     * @property focalDistance @abstract Determines the receiver's focal distance. Animatable. @discussion When non zero, the focal distance determines how the camera focuses the objects in the 3d scene. Defaults to 10.0 prior to macOS 10.13, iOS 11, tvOS 11 and watchOS 4. Defaults to 2.5 otherwise.
     * @deprecated -focusDistance
     */
    focalDistance(): number;
    setFocalDistance$(value: number): void;
}
export interface _SCNCamera extends _SCNAnimatable, _SCNTechniqueSupport, _NSCopying, _NSSecureCoding {
}
