import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _SCNCameraControllerDelegate } from "./SCNCameraControllerDelegate.js";
import type { _SCNNode } from "./SCNNode.js";
import type { CGPoint } from "../structs/CGPoint.js";
import type { CGSize } from "../structs/CGSize.js";
import type { SCNVector3 } from "../structs/SCNVector3.js";
import type { SCNInteractionMode } from "./SCNInteractionMode.js";
export declare class _SCNCameraController extends _NSObject {
    static alloc(): _SCNCameraController;
    static new(): _SCNCameraController;
    init(): _SCNCameraController;
    /** Translate the camera along the local X/Y/Z axis. */
    translateInCameraSpaceByX$Y$Z$(deltaX: number, deltaY: number, deltaZ: number): void;
    /**
     * Move the camera to a position where the bounding sphere of all nodes is fully visible. Also set the camera target as the center of the bounding sphere.
     */
    frameNodes$(nodes: _NSArray): void;
    /** Rotate delta is in degrees. */
    rotateByX$Y$(deltaX: number, deltaY: number): void;
    /** Rotate the camera around the given screen space point. Delta is in degrees. */
    rollBy$aroundScreenPoint$viewport$(delta: number, point: CGPoint, viewport: CGSize): void;
    /** Zoom by moving the camera along the axis by a screen space point. */
    dollyBy$onScreenPoint$viewport$(delta: number, point: CGPoint, viewport: CGSize): void;
    /**
     * Rotate the camera around the axis from the camera position to the target. Delta is in degrees.
     */
    rollAroundTarget$(delta: number): void;
    /**
     * Zoom by moving the camera along the axis from the camera position to the target.
     */
    dollyToTarget$(delta: number): void;
    /** clear the camera roll if any */
    clearRoll(): void;
    /** Stop current inertia. */
    stopInertia(): void;
    /**
     * Begin/Continue/End interaction using an input location relative to viewport. The behavior depends on the current interactionMode.
     */
    beginInteraction$withViewport$(location: CGPoint, viewport: CGSize): void;
    continueInteraction$withViewport$sensitivity$(location: CGPoint, viewport: CGSize, sensitivity: number): void;
    endInteraction$withViewport$velocity$(location: CGPoint, viewport: CGSize, velocity: CGPoint): void;
    delegate(): _SCNCameraControllerDelegate | null;
    setDelegate$(value: _SCNCameraControllerDelegate | null): void;
    pointOfView(): _SCNNode | null;
    setPointOfView$(value: _SCNNode | null): void;
    interactionMode(): SCNInteractionMode;
    setInteractionMode$(value: SCNInteractionMode): void;
    /** The camera target in world space for orbit rotation. */
    target(): SCNVector3;
    setTarget$(value: SCNVector3): void;
    /** Automatically update the target in beginInteraction Defaults to NO */
    automaticTarget(): boolean;
    setAutomaticTarget$(value: boolean): void;
    /**
     * The up vector in world space used as reference for SCNInteractionModeFly and SCNInteractionModeOrbitTurntable camera modes. Defaults to (0, 1, 0).
     */
    worldUp(): SCNVector3;
    setWorldUp$(value: SCNVector3): void;
    /** Set to YES to enable inertia on endInteraction. Defaults to NO. */
    inertiaEnabled(): boolean;
    setInertiaEnabled$(value: boolean): void;
    /** The friction coefficient applied to the inertia. Defaults to 0.05. */
    inertiaFriction(): number;
    setInertiaFriction$(value: number): void;
    /** Returns YES if inertia is running. */
    inertiaRunning(): boolean;
    /**
     * Minimum and maximum vertical view angles in degrees for SCNInteractionModeFly and SCNInteractionModeOrbitTurntable. The angle constraints is not enforced if both vertical angle properties values are set to 0. The angle constraints will not be enforced if the initial orientation is outside the given range. The minimum angle must be inferior to the maximum angle. Angles are in world space and within the range [-90, 90]. Defaults to 0.0. For example: set to minimum to 0 and maximum to 90 to only allow orbit around the top hemisphere.
     */
    minimumVerticalAngle(): number;
    setMinimumVerticalAngle$(value: number): void;
    maximumVerticalAngle(): number;
    setMaximumVerticalAngle$(value: number): void;
    /**
     * Minimum and maximum horizontal view angles in degrees for SCNInteractionModeFly and SCNInteractionModeOrbitTurntable. The angle constraints is not enforced if both horizontal angle properties values are set to 0. The angle constraints will not be enforced if the initial orientation is outside the given range. The minimum angle must be inferior to the maximum angle. Angles are in world space and within the range [-180, 180]. Defaults to 0.0.
     */
    minimumHorizontalAngle(): number;
    setMinimumHorizontalAngle$(value: number): void;
    maximumHorizontalAngle(): number;
    setMaximumHorizontalAngle$(value: number): void;
}
