import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSUUID } from "../Foundation/NSUUID.js";
import type { _CMIOExtensionDeviceSource } from "./CMIOExtensionDeviceSource.js";
import type { _CMIOExtensionStream } from "./CMIOExtensionStream.js";
export declare class _CMIOExtensionDevice extends _NSObject {
    static alloc(): _CMIOExtensionDevice;
    static new(): _CMIOExtensionDevice;
    init(): _CMIOExtensionDevice;
    /**
     * Returns a device instance. The localized name of the device. The device id (as a UUID). The device identifier as a string (for backward compatibility with existing CMIO DAL clients, it may differ from deviceID.UUIDString). May be nil if your device has no compatibility requirements. The device source, a client instantiated object for the device that conforms to the CMIOExtensionDeviceSource protocol. A CMIOExtensionDevice instance.
     */
    static deviceWithLocalizedName$deviceID$legacyDeviceID$source$(localizedName: _NSString, deviceID: _NSUUID, legacyDeviceID: _NSString | null, source: _CMIOExtensionDeviceSource): _CMIOExtensionDevice;
    /**
     * Returns a device instance. The localized name of the device. The device unique identifier. The device source, a client instantiated object for the device that conforms to the CMIOExtensionDeviceSource protocol. A CMIOExtensionDevice instance.
     */
    static deviceWithLocalizedName$deviceID$source$(localizedName: _NSString, deviceID: _NSUUID, source: _CMIOExtensionDeviceSource): _CMIOExtensionDevice;
    /**
     * Initialize a device instance. The localized name of the device. The device id (as a UUID). The device identifier as a string (for backward compatibility with existing CMIO DAL clients, it may differ from deviceID.UUIDString). May be nil if your device has no compatibility requirements. The device source, a client instantiated object for the device that conforms to the CMIOExtensionDeviceSource protocol. A CMIOExtensionDevice instance.
     */
    initWithLocalizedName$deviceID$legacyDeviceID$source$(localizedName: _NSString, deviceID: _NSUUID, legacyDeviceID: _NSString | null, source: _CMIOExtensionDeviceSource): _CMIOExtensionDevice;
    /**
     * Initialize a device instance. The localized name of the device. The device unique identifier. The device source, a client instantiated object for the device that conforms to the CMIOExtensionDeviceSource protocol. A CMIOExtensionDevice instance.
     */
    initWithLocalizedName$deviceID$source$(localizedName: _NSString, deviceID: _NSUUID, source: _CMIOExtensionDeviceSource): _CMIOExtensionDevice;
    /**
     * Add a stream to the device streams array. The stream to be added to the device streams array. An error return on failure. Return YES on success, NO otherwise.
     */
    addStream$error$(stream: _CMIOExtensionStream, outError: NobjcObject | null): boolean;
    /**
     * Remove a stream from the device streams array. The stream to be removed from the device streams array. An error return on failure. Return YES on success, NO otherwise.
     */
    removeStream$error$(stream: _CMIOExtensionStream, outError: NobjcObject | null): boolean;
    /**
     * Notify client(s) of device properties changes. The dictionary of properties having changed.
     */
    notifyPropertiesChanged$(propertyStates: _NSDictionary): void;
    /** The localized name of the device. */
    localizedName(): _NSString;
    /** The device identifier as UUID. */
    deviceID(): _NSUUID;
    /**
     * The device identifier as a string (for backward compatibility with AVCaptureDevice.uniqueIdentifier)
     */
    legacyDeviceID(): _NSString;
    /** The device source. */
    source(): _CMIOExtensionDeviceSource | null;
    /** The streams array of the device. This property is not key-value observable. */
    streams(): _NSArray;
}
