import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _VZUSBDevice } from "./VZUSBDevice.js";
export declare class _VZUSBController extends _NSObject {
    static alloc(): _VZUSBController;
    static new(): _VZUSBController;
    init(): _VZUSBController;
    /**
     * @abstract Attach a USB device. @discussion If the device is successfully attached to the controller, it will appear in the usbDevices property, its usbController property will be set to point to the USB controller that it is attached to and completion handler will return nil. If the device was previously attached to this or another USB controller, attach function will fail with the `VZErrorDeviceAlreadyAttached`. If the device cannot be initialized correctly, attach function will fail with `VZErrorDeviceInitializationFailure`. This method must be called on the virtual machine's queue. @param device USB device to attach. @param completionHandler Block called after the device has been attached or on error. The error parameter passed to the block is nil if the attach was successful. It will be also invoked on an virtual machine's queue. @see VZUSBDevice
     */
    attachDevice$completionHandler$(device: _VZUSBDevice, completionHandler: ((errorOrNil: _NSError) => void) | null): void;
    /**
     * @abstract Detach a USB device. @discussion If the device is successfully detached from the controller, it will disappear from the usbDevices property, its usbController property will be set to nil and completion handler will return nil. If the device wasn't attached to the controller at the time of calling detach method, it will fail with the `VZErrorDeviceNotFound` error. This method must be called on the virtual machine's queue. @param device USB device to detach. @param completionHandler Block called after the device has been detached or on error. The error parameter passed to the block is nil if the detach was successful. It will be also invoked on an virtual machine's queue. @see VZUSBDevice
     */
    detachDevice$completionHandler$(device: _VZUSBDevice, completionHandler: ((errorOrNil: _NSError) => void) | null): void;
    /**
     * @abstract Return a list of USB devices attached to controller. @discussion If corresponding USB controller configuration included in VZVirtualMachineConfiguration contained any USB devices, those devices will appear here when virtual machine is started. @see VZUSBDevice @see VZUSBDeviceConfiguration @see VZUSBControllerConfiguration @see VZVirtualMachineConfiguration
     */
    usbDevices(): _NSArray;
}
