///
///
import { EventEmitter } from "events";
import { USBDevice } from "./device";
/**
* @hidden
*/
export interface Adapter {
getConnected(handle: string): boolean;
getOpened(handle: string): boolean;
listUSBDevices(preFilters?: Array): Promise>;
open(handle: string): Promise;
close(handle: string): Promise;
selectConfiguration(handle: string, id: number): Promise;
claimInterface(handle: string, address: number): Promise;
releaseInterface(handle: string, address: number): Promise;
selectAlternateInterface(handle: string, interfaceNumber: number, alternateSetting: number): Promise;
controlTransferIn(handle: string, setup: USBControlTransferParameters, length: number): Promise;
controlTransferOut(handle: string, setup: USBControlTransferParameters, data: ArrayBuffer | ArrayBufferView): Promise;
clearHalt(handle: string, direction: USBDirection, endpointNumber: number): Promise;
transferIn(handle: string, endpointNumber: number, length: number): Promise;
transferOut(handle: string, endpointNumber: number, data: BufferSource): Promise;
isochronousTransferIn(_handle: string, _endpointNumber: number, _packetLengths: Array): Promise;
isochronousTransferOut(_handle: string, _endpointNumber: number, _data: BufferSource, _packetLengths: Array): Promise;
reset(handle: string): Promise;
}
/**
* @hidden
*/
export declare class USBAdapter extends EventEmitter implements Adapter {
static EVENT_DEVICE_CONNECT: string;
static EVENT_DEVICE_DISCONNECT: string;
private devices;
constructor();
private getDeviceHandle;
private serialPromises;
private serialDevicePromises;
private delay;
private retryPromise;
private loadDevices;
private preFilterDevices;
private loadDevice;
private getCapabilities;
private getWebCapability;
private decodeUUID;
private getWebUrl;
private devicetoUSBDevice;
private decodeVersion;
private getStringDescriptor;
private bufferToDataView;
private bufferSourceToBuffer;
private getEndpoint;
private getInEndpoint;
private getOutEndpoint;
private endpointToUSBEndpoint;
private interfaceToUSBAlternateInterface;
private interfacesToUSBInterface;
private configToUSBConfiguration;
private getDevice;
private controlTransferParamsToType;
private openDevice;
getConnected(handle: string): boolean;
getOpened(handle: string): boolean;
listUSBDevices(preFilters?: Array): Promise>;
open(handle: string): Promise;
close(handle: string): Promise;
selectConfiguration(handle: string, id: number): Promise;
claimInterface(handle: string, address: number): Promise;
releaseInterface(handle: string, address: number): Promise;
selectAlternateInterface(handle: string, interfaceNumber: number, alternateSetting: number): Promise;
controlTransferIn(handle: string, setup: USBControlTransferParameters, length: number): Promise;
controlTransferOut(handle: string, setup: USBControlTransferParameters, data?: ArrayBuffer | ArrayBufferView): Promise;
clearHalt(handle: string, direction: USBDirection, endpointNumber: number): Promise;
transferIn(handle: string, endpointNumber: number, length: number): Promise;
transferOut(handle: string, endpointNumber: number, data: BufferSource): Promise;
isochronousTransferIn(_handle: string, _endpointNumber: number, _packetLengths: Array): Promise;
isochronousTransferOut(_handle: string, _endpointNumber: number, _data: BufferSource, _packetLengths: Array): Promise;
reset(handle: string): Promise;
}
/**
* @hidden
*/
export declare const adapter: USBAdapter;