import type { NobjcObject } from "objc-js";
import type { _MDLObject } from "./MDLObject.js";
import type { _MDLTexture } from "./MDLTexture.js";
import type { MDLAxisAlignedBoundingBox } from "../structs/MDLAxisAlignedBoundingBox.js";
import type { simd_float4x4 } from "../structs/simd_float4x4.js";
import type { MDLCameraProjection } from "./MDLCameraProjection.js";
export declare class _MDLCamera extends _MDLObject {
    static alloc(): _MDLCamera;
    static new(): _MDLCamera;
    init(): _MDLCamera;
    /**
     * Move the camera back and orient the camera so that a bounding box is framed within the current field of view. Uses the Y axis as up. If setNearAndFar is YES, the near and far visibility distances will be set.
     */
    frameBoundingBox$setNearAndFar$(boundingBox: MDLAxisAlignedBoundingBox, setNearAndFar: boolean): void;
    /**
     * Orient the camera so that the camera points at focusPosition. Assumes that the Y axis is up.
     */
    lookAt$(focusPosition: NobjcObject): void;
    /**
     * Set the position of the camera and orient it so that it points at focusPosition. Assumes that the Y axis is up.
     */
    lookAt$from$(focusPosition: NobjcObject, cameraPosition: NobjcObject): void;
    /**
     * A convenience function to calculate a ray from the camera to a pixel in a viewport of a given size
     */
    rayTo$forViewPort$(pixel: NobjcObject, size: NobjcObject): NobjcObject;
    /** Create a bokeh kernel corresponding to the apertureBladeCount */
    bokehKernelWithSize$(size: NobjcObject): _MDLTexture;
    /**
     * The projection matrix is calculated from the near and far visibility distances, and the field of view. nearVisibilityDistance, nearVisibilityDistance
     */
    projectionMatrix(): simd_float4x4;
    projection(): MDLCameraProjection;
    setProjection$(value: MDLCameraProjection): void;
    /** Bounding distance for visible objects */
    nearVisibilityDistance(): number;
    setNearVisibilityDistance$(value: number): void;
    farVisibilityDistance(): number;
    setFarVisibilityDistance$(value: number): void;
    /** World to meters conversion scale. Required for certain calculations. */
    worldToMetersConversionScale(): number;
    setWorldToMetersConversionScale$(value: number): void;
    /** Radial distortion of the lens, second order term */
    barrelDistortion(): number;
    setBarrelDistortion$(value: number): void;
    /** Radial distortion of the lens, fourth order term */
    fisheyeDistortion(): number;
    setFisheyeDistortion$(value: number): void;
    /** Amount of optical vignetting, rom zero to one. */
    opticalVignetting(): number;
    setOpticalVignetting$(value: number): void;
    /** Amount of chromatic abberation, from zero to one. */
    chromaticAberration(): number;
    setChromaticAberration$(value: number): void;
    /** Lens focal length in mm. fieldOfView */
    focalLength(): number;
    setFocalLength$(value: number): void;
    /** Focus distance */
    focusDistance(): number;
    setFocusDistance$(value: number): void;
    /** The field of view, in degrees. focalLength */
    fieldOfView(): number;
    setFieldOfView$(value: number): void;
    /** f-stop, default is 5.6 */
    fStop(): number;
    setFStop$(value: number): void;
    /** Aperture blade count, where zero indicates a circle. */
    apertureBladeCount(): number;
    setApertureBladeCount$(value: number): void;
    /** Maximum circle of confusion size in mm on the image plane */
    maximumCircleOfConfusion(): number;
    setMaximumCircleOfConfusion$(value: number): void;
    /** Shutter open interval, in seconds */
    shutterOpenInterval(): number;
    setShutterOpenInterval$(value: number): void;
    /** vertical aperture of the sensor or film gate, default is 24mm sensorAspect */
    sensorVerticalAperture(): number;
    setSensorVerticalAperture$(value: number): void;
    /**
     * Sensor or film gate aperture aspect ratio, default is 1.5 sensorVerticalAperture
     */
    sensorAspect(): number;
    setSensorAspect$(value: number): void;
    /** Sensor zoom factor */
    sensorEnlargement(): NobjcObject;
    setSensorEnlargement$(value: NobjcObject): void;
    /** Sensor shift factor in mm. */
    sensorShift(): NobjcObject;
    setSensorShift$(value: NobjcObject): void;
    /** Flash amount, unit less */
    flash(): NobjcObject;
    setFlash$(value: NobjcObject): void;
    /**
     * exposure curve compression where values below the x value are to be passed through, above the y value, values are to be clamped at maximum display brightness, and a function such as a logarithmic ramp is to be applied in between.
     */
    exposureCompression(): NobjcObject;
    setExposureCompression$(value: NobjcObject): void;
    /** Exposure amount, unit less */
    exposure(): NobjcObject;
    setExposure$(value: NobjcObject): void;
}
