import EventEmitter from "node:events";
import { Readable } from "node:stream";
import type { PortConf } from "./types.js";
type SetOptions = {
    brk?: boolean;
    cts?: boolean;
    dsr?: boolean;
    dtr?: boolean;
    rts?: boolean;
};
declare class TransportWriter extends Readable {
    writeBuffer(buffer: Buffer): void;
    _read(): void;
}
export declare enum TransportEvent {
    CLOSED = "closed",
    DATA = "data",
    FAILED = "failed"
}
interface SerialEventMap {
    [TransportEvent.CLOSED]: [];
    [TransportEvent.DATA]: [data: Buffer];
    [TransportEvent.FAILED]: [];
}
/**
 * Serial or Socket based transport based on passed conf.
 */
export declare class Transport extends EventEmitter<SerialEventMap> {
    #private;
    connected: boolean;
    readonly portConf: PortConf;
    portWriter: TransportWriter | undefined;
    constructor(portConf: PortConf);
    get isSerial(): boolean;
    close(emitClosed: boolean, emitFailed?: boolean): Promise<void>;
    initPort(customPortWriter?: TransportWriter, baudRate?: number): Promise<void>;
    serialSet(options: SetOptions, afterDelayMS?: number): Promise<void>;
    write(buffer: Buffer): void;
    private emitData;
    private onPortClose;
    private onPortError;
}
export {};
