import type { _NSObject } from "../Foundation/NSObject.js";
import type { _AVCaptureDevice } from "./AVCaptureDevice.js";
import type { _CALayer } from "../QuartzCore/CALayer.js";
export declare class _AVCaptureDeviceRotationCoordinator extends _NSObject {
    static alloc(): _AVCaptureDeviceRotationCoordinator;
    static new(): _AVCaptureDeviceRotationCoordinator;
    init(): _AVCaptureDeviceRotationCoordinator;
    /**
     * @method initWithDevice:previewLayer: @abstract Returns an AVCaptureDeviceRotationCoordinator instance that provides updates to the amount of rotation that should be applied for horizon-level preview and capture relative to gravity. @param device The device for which to monitor rotation. @param previewLayer A layer displaying the camera's video preview. If nil, the coordinator will return 0 degrees of rotation for horizon-level preview. @result An AVCaptureDeviceRotationCoordinator from which rotation angles for preview and capture can be obtained. @discussion An AVCaptureDeviceRotationCoordinator is only applicable to video devices. The given device and layer determine the amount of rotation that should be applied for horizon-level preview and capture.
     */
    initWithDevice$previewLayer$(device: _AVCaptureDevice, previewLayer: _CALayer | null): _AVCaptureDeviceRotationCoordinator;
    /**
     * @property device @abstract The the device for which the coordinator provides video rotation angles. @discussion The value of this property is the AVCaptureDevice instance that was used to create the coordinator. The coordinator holds a weak reference to the device.
     */
    device(): _AVCaptureDevice | null;
    /**
     * @property previewLayer @abstract The CALayer for which the coordinator calculates video rotation angles for horizon-level preview. @discussion The value of this property is the CALayer instance that was used to create the coordinator. Clients may specify an AVCaptureVideoPreviewLayer or other CALayer instance that displays a camera's video preview. The coordinator holds a weak reference to the layer. The coordinator will return 0 degrees of rotation from -videoRotationAngleForHorizonLevelPreview if a layer was not specified at initialization, the layer is not in a view hierarchy, or the layer has been deallocated.
     */
    previewLayer(): _CALayer | null;
    /**
     * @property videoRotationAngleForHorizonLevelPreview @abstract Returns a video rotation angle in degrees for displaying the camera's video preview in the given CALayer. @discussion The video rotation angle represents by how much the camera's video preview should be rotated for display in the CALayer to be horizon-level relative to gravity. An angle of 0 degrees means that video will be output in the camera's unrotated, native sensor orientation. The video rotation angle for preview may differ between cameras at different positions. For example when an iOS device is held in portrait orientation, the video preview for built-in cameras may need to be rotated by 90 degrees while the video preview for an external camera should not be rotated. External cameras return 0 degrees of rotation even if they physically rotate when their position in physical space is unknown. This property is key-value observable and delivers updates on the main queue.
     */
    videoRotationAngleForHorizonLevelPreview(): number;
    /**
     * @property videoRotationAngleForHorizonLevelCapture @abstract Returns a video rotation angle in degrees for horizon-level capture from this camera. @discussion The video rotation angle represents by how much the photos or movies captured from the camera should be rotated to be horizon-level relative to gravity. A video rotation angle of 0 degrees means that the output will be in the camera's unrotated, native sensor orientation. The video rotation angle for capture may differ between cameras. For example when an iOS device is held in portrait orientation, photos and movies captured from built-in cameras may need to be rotated by 90 degrees while the photos and movies from an external camera should not be rotated. External cameras return 0 degrees of rotation even if they physically rotate when their position in physical space is unknown. The video rotation angle returned from this property is distinct from the angle returned by -videoRotationAngleForHorizonLevelPreview because in certain combinations of device and interface orientations, the video rotation angle needed for horizon-level preview may not match the amount of rotation needed for horizon-level capture. This property is key-value observable and delivers updates on the main queue.
     */
    videoRotationAngleForHorizonLevelCapture(): number;
}
