UNPKG

tethr

Version:

Controlls USB-connected cameras, webcam, and smartphone camera from browser

51 lines (50 loc) 1.52 kB
/// <reference types="w3c-web-usb" /> import EventEmitter from 'eventemitter3'; interface PTPSendCommandOption { label?: string; opcode: number; parameters?: number[]; expectedResCodes?: number[]; } type PTPSendDataOption = PTPSendCommandOption & { data: ArrayBuffer; }; type PTPReceiveDataOption = PTPSendCommandOption & { maxByteLength?: number; }; interface PTPResponse { resCode: number; parameters: number[]; } type PTPDataResponse = PTPResponse & { data: ArrayBuffer; }; export interface PTPEvent { eventCode: number; parameters: number[]; } type PTPEventCallback = (event: PTPEvent) => void; interface EventTypes { [name: `ptpevent:${string}`]: PTPEvent; idle: void; disconnect: void; } interface PTPDeviceOptions { log?: boolean; } export declare class PTPDevice extends EventEmitter<EventTypes> { #private; readonly usb: USBDevice; constructor(usb: USBDevice, { log }?: PTPDeviceOptions); open: () => Promise<void>; close: () => Promise<void>; get opened(): boolean; setLog(log: boolean): void; onEventCode(eventCode: number, callback: PTPEventCallback): void; offEventCode(eventCode: number, callback?: PTPEventCallback): void; sendCommand: (option: PTPSendCommandOption) => Promise<PTPResponse | void>; sendData: (option: PTPSendDataOption) => Promise<PTPResponse>; receiveData: (option: PTPReceiveDataOption) => Promise<PTPDataResponse>; waitEvent: (code: number) => Promise<PTPEvent>; } export {};