import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _GCPhysicalInputProfile } from "./GCPhysicalInputProfile.js";
export interface _GCDevice {
    /**
     * The dispatch queue that element value change handlers are submitted on. The default queue is main, and setting this to any other queue will make value change handlers dispatch async on the given queue. This is useful if the main game loop of the application is not on main, or if input logic is handled on another thread from the main game loop. @see GCControllerAxisInput.valueChangedHandler @see GCControllerButtonInput.valueChangedHandler @see GCControllerButtonInput.pressedChangedHandler @see GCControllerDirectionPad.valueChangedHandler @see GCMotion.valueChangedHandler
     */
    handlerQueue?(): _NSObject;
    setHandlerQueue$?(value: _NSObject): void;
    /**
     * A vendor supplied name. May be nil, and is not guaranteed to be unique. This should not be used as a key in a dictionary, but simply as a way to present some basic information about the device in testing or to the user.
     */
    vendorName?(): _NSString | null;
    /**
     * The product category the device belongs to. This is useful for setting appropriate UI elements based on what type of device is connected. @see GCProductCategories.h
     */
    productCategory?(): _NSString;
    /**
     * Gets the physical input profile for the device. @note This is equivalent to the controller's gamepad, microGamepad, or extendedGamepad instance. @see GCController.microGamepad @see GCController.extendedGamepad
     * @deprecated Use the physicalInputProfile property on GCController instead.  For GCKeyboard, use the keyboardInput property.  For GCMouse, use the mouseInput property.
     */
    physicalInputProfile?(): _GCPhysicalInputProfile;
}
