/** * Hardware-transport abstraction for the Web Serial polyfill. * * `SerialTransport` is the single interface that the `Serial`/`SerialPort` * classes depend on to talk to "the device". The production implementation * (`UsbSerialModule`, backed by the `NativeUsbSerial` TurboModule — see * {@link ./UsbSerial}) and the in-memory test/dev double * (`InMemorySerialTransport` — see {@link ./testing/in-memory-serial-transport}) both * implement it. * * This module is intentionally free of any `react-native` import. That is what * lets the virtual transport — and therefore the conformance suite built on top * of it — run unchanged under Node/Jest, in a browser, and on a device. */ export type ControlLine = 'RTS' | 'CTS' | 'DTR' | 'DSR' | 'CD' | 'RI'; export type FlowControl = 'NONE' | 'RTS_CTS' | 'DTR_DSR' | 'XON_XOFF' | 'XON_XOFF_INLINE'; export type PortFilter = { usbVendorId?: number; usbProductId?: number; }; export type PortPickerLabels = { titleSelectPort?: string; titleNoPortsAvailable?: string; messageNoPortsAvailable?: string; }; export type PortId = { deviceId: number; portNumber: number; usbVendorId: number; usbProductId: number; /** * Whether the app currently holds Android USB permission to access this * device (via the system attach dialog or a prior permission request). */ hasPermission: boolean; }; export type DataEvent = { deviceId: number; portNumber: number; data: number[]; }; export type ErrorEvent = { deviceId: number; portNumber: number; error: string; /** * Optional spec error name (e.g. "BreakError", "BufferOverrunError", * "FramingError", "ParityError") for a typed read error. When present the * polyfill surfaces a DOMException of that name on the readable stream * (otherwise it defaults to "NetworkError"); the WPT-derived spec tests in * src/__tests__/conformance-suite.ts exercise this (BreakError, * BufferOverrunError). */ errorName?: string; }; export type ConnectEvent = { deviceId: number; usbVendorId: number; usbProductId: number; }; export declare const Parity: { readonly NONE: 0; readonly ODD: 1; readonly EVEN: 2; readonly MARK: 3; readonly SPACE: 4; }; export declare const DataBits: { readonly FIVE: 5; readonly SIX: 6; readonly SEVEN: 7; readonly EIGHT: 8; }; export declare const StopBits: { readonly ONE: 1; readonly ONE_FIVE: 3; readonly TWO: 2; }; export type OpenOptions = { baudRate: number; dataBits?: number; stopBits?: number; parity?: number; }; export declare const DEFAULT_OPEN_OPTIONS: Required>; /** Handle returned by the `on*` subscription methods. */ export type Subscription = { remove: () => void; }; /** * The contract every serial transport must satisfy. It mirrors the JS-friendly * surface of `UsbSerialModule` exactly, so `UsbSerialModule implements * SerialTransport` is a faithful 1:1 and any conforming double (e.g. * `InMemorySerialTransport`) is a drop-in replacement. * * Ports are addressed by the pair `(deviceId, portNumber)`. Inbound bytes, * read errors and device attach/detach arrive through the `on*` subscriptions. */ export interface SerialTransport { findAllDrivers(): Promise>; showPortPicker(filter: ReadonlyArray, labels?: PortPickerLabels): Promise; requestPermission(deviceId: number): Promise; open(deviceId: number, portNumber: number, options: OpenOptions): Promise; close(deviceId: number, portNumber: number): Promise; isOpen(deviceId: number, portNumber: number): boolean; write(deviceId: number, portNumber: number, data: number[], timeout?: number): Promise; startReading(deviceId: number, portNumber: number): Promise; stopReading(deviceId: number, portNumber: number): Promise; setParameters(deviceId: number, portNumber: number, options: OpenOptions): Promise; setDTR(deviceId: number, portNumber: number, value: boolean): Promise; setRTS(deviceId: number, portNumber: number, value: boolean): Promise; getDTR(deviceId: number, portNumber: number): Promise; getRTS(deviceId: number, portNumber: number): Promise; getCD(deviceId: number, portNumber: number): Promise; getCTS(deviceId: number, portNumber: number): Promise; getDSR(deviceId: number, portNumber: number): Promise; getRI(deviceId: number, portNumber: number): Promise; getControlLines(deviceId: number, portNumber: number): Promise; getSupportedControlLines(deviceId: number, portNumber: number): Promise; setFlowControl(deviceId: number, portNumber: number, flowControl: FlowControl): Promise; getFlowControl(deviceId: number, portNumber: number): Promise; getSupportedFlowControl(deviceId: number, portNumber: number): Promise; setBreak(deviceId: number, portNumber: number, value: boolean): Promise; purgeHwBuffers(deviceId: number, portNumber: number, purgeWriteBuffers: boolean, purgeReadBuffers: boolean): Promise; getSerial(deviceId: number, portNumber: number): Promise; onData(listener: (event: DataEvent) => void): Subscription; onError(listener: (event: ErrorEvent) => void): Subscription; onConnect(listener: (event: ConnectEvent) => void): Subscription; onDisconnect(listener: (event: ConnectEvent) => void): Subscription; } //# sourceMappingURL=transport.d.ts.map