import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _ICDeviceBrowserDelegate } from "./ICDeviceBrowserDelegate.js";
import type { ICAuthorizationStatus } from "./ICAuthorizationStatus.js";
import type { ICDeviceTypeMask } from "./ICDeviceTypeMask.js";
export declare class _ICDeviceBrowser extends _NSObject {
    static alloc(): _ICDeviceBrowser;
    static new(): _ICDeviceBrowser;
    /** @method init @abstract This is the designated initializer. */
    init(): _ICDeviceBrowser;
    /**
     * @method start: @abstract This message tells the receiver to start looking for devices. @discussion Make sure that the receiver's delegate is set prior to sending this message; otherwise this message will be ignored. The messages the delegate can expect to receive are described by ICDeviceBrowserDelegate protocol.
     */
    start(): void;
    /**
     * @method stop: @abstract This method tells the receiver to stop looking for devices. @discussion This will free all device instances that are not in use.
     */
    stop(): void;
    /**
     * @method requestContentsAuthorizationWithCompletion: @abstract This method requests the user’s permission, if needed, for accessing the conents of an external media device.
     */
    requestContentsAuthorizationWithCompletion$(completion: (status: ICAuthorizationStatus) => void): void;
    /**
     * @method requestControlAuthorizationWithCompletion: @abstract This method requests the user’s permission, if needed, for controlling the attached camera device.
     */
    requestControlAuthorizationWithCompletion$(completion: (status: ICAuthorizationStatus) => void): void;
    /**
     * @method resetContentsAuthorizationWithCompletion: @abstract This method resets the authorization status for the application accessing the conents of an external media device.
     */
    resetContentsAuthorizationWithCompletion$(completion: (status: ICAuthorizationStatus) => void): void;
    /**
     * @method resetControlAuthorizationWithCompletion: @abstract This method resets the authorization status for the application controlling the attached camera device. @discussion If the application already has been granted camera access, this will reset only the presentation dialog letting the user know the app has permission, not the camera access itself.
     */
    resetControlAuthorizationWithCompletion$(completion: (status: ICAuthorizationStatus) => void): void;
    /**
     * @property delegate @abstract The delegate. It must conform to ICDeviceBrowserDelegate protocol. The messages this delegate can expect to receive are described by ICDeviceBrowserDelegate protocol.
     */
    delegate(): _ICDeviceBrowserDelegate | null;
    setDelegate$(value: _ICDeviceBrowserDelegate | null): void;
    /**
     * @property browsing @abstract Indicates whether the device browser is browsing for devices.
     */
    browsing(): boolean;
    /**
     * @property suspended @abstract Indicates whether the devices in the browser have suspended communication.
     */
    suspended(): boolean;
    /**
     * @property browsedDeviceTypeMask @abstract A mask whose set bits indicate the type of device(s) being browsed after the receiver receives the start message. This property can be changed while the browser is browsing for devices. This property can be constructed by OR'd values of ICDeviceTypeMask with values of ICDeviceLocationTypeMask.
     */
    browsedDeviceTypeMask(): ICDeviceTypeMask;
    setBrowsedDeviceTypeMask$(value: ICDeviceTypeMask): void;
    /**
     * @property devices @abstract All devices found by the browser. This property will change as devices appear and disappear. This array is empty before the first invocation of the delegate method 'deviceBrowser:didAddDevice:moreComing:'.
     */
    devices(): _NSArray | null;
    /**
     * @property preferredDevice @abstract This property returns a device object that should be selected by the client application when it is launched. @discussion If the client application that calls this method is the auto-launch application associated with a device and that device is the last device attached (through USB, FireWire or network), then that device will be the preferred device. The best place to call this method is in the implmentation of the ICDeviceBrowser delegate method "deviceBrowser:didAddDevice:moreComing:", if the "moreComing" parameter passed to the delegate is "NO"; or in the delegate method "deviceBrowserDidEnumerateLocalDevices:".
     */
    preferredDevice(): NobjcObject;
    /**
     * @property contentsAuthorizationStatus @abstract This property returns a constant indicating whether the app has permission to acces the contents of an attached media device. @discussion A constant indicating authorization status.
     */
    contentsAuthorizationStatus(): NobjcObject;
    /**
     * @property controlAuthorizationStatus @abstract This property returns a constant indicating whether the app has permission to control the attached camera device.
     */
    controlAuthorizationStatus(): NobjcObject;
}
