import type { BlackmagicControllerControlDefinition } from './controlDefinition.js'; import type { Dimension } from './info.js'; import { BlackmagicControllerModelId } from './info.js'; import type { BlackmagicControllerProperties } from './models/base.js'; /** Blackmagic vendor id */ export declare const VENDOR_ID = 7899; /** A transport which a device can be connected over */ export type BlackmagicControllerTransport = 'usb' | 'bluetooth'; /** The properties of a usb device which identify it as a model */ export interface UsbMatch { vendorId: number; productId: number; /** * If needing to filter by usage */ hidUsage?: number; /** * If needing to filter by interface number */ hidInterface?: number; } /** The optional capabilities of a model */ export interface BlackmagicControllerModelFeatures { /** Whether the device has a battery */ battery: boolean; } /** * Static information about a model of Blackmagic controller. * This holds no functions, so can be consumed without pulling in the code needed to drive a device. */ export interface BlackmagicControllerModelInfo { id: BlackmagicControllerModelId; name: string; manufacturer: string; /** * The usb devices which identify as this model. Empty for models which are not connected over usb. * Over bluetooth these models report the same ids as a HID device, so these identify them there too */ usb: readonly UsbMatch[]; /** The transports this model can be connected over */ transports: readonly BlackmagicControllerTransport[]; controls: Readonly; /** The extent of the face, which every control's `bounds` is within */ faceSize: Dimension; features: BlackmagicControllerModelFeatures; } /** * A model's public info, paired with the properties needed to drive it. * * The two are built together from a single source, so they cannot describe * different models. The properties are internal and are never exported from * the package index. * @internal */ export interface BlackmagicControllerModelDefinition { readonly info: BlackmagicControllerModelInfo; readonly properties: BlackmagicControllerProperties; } /** * Every known model, as its public info paired with the properties to drive it. * @internal */ export declare const DEVICE_MODEL_DEFINITIONS: Readonly<{ [id in BlackmagicControllerModelId]: BlackmagicControllerModelDefinition; }>; /** * Static information about every known model. * @experimental Will become DEVICE_MODELS in v2 */ export declare const DEVICE_MODEL_INFO: Readonly<{ [id in BlackmagicControllerModelId]: BlackmagicControllerModelInfo; }>; /** * Get the information about a model, if it is known */ export declare function getModelInfo(id: BlackmagicControllerModelId): BlackmagicControllerModelInfo | undefined; /** * Find the model which a usb device identifies as, if any. * The `usage` and `hidInterface` are only checked when both the model requires it, and a value is provided. */ export declare function findModelByUsb(vendorId: number, productId: number, usage?: number, hidInterface?: number): BlackmagicControllerModelInfo | undefined; //# sourceMappingURL=modelInfo.d.ts.map