///
import { EventEmitter } from 'events';
import { IPty } from 'node-pty';
import { DriverData, DriverError, DriverOptions } from './interfaces';
declare type Listener = (event: O) => void;
interface Em extends EventEmitter {
on(name: Name, listener: Listener): this;
once(name: Name, listener: Listener): this;
emit(name: Name, options: Event): boolean;
on(event: string | symbol, listener: (...args: any[]) => void): this;
once(event: string | symbol, listener: (...args: any[]) => void): this;
emit(event: string | symbol, ...args: any[]): boolean;
}
interface DriverEmitter extends Em<'start', DriverOptions> {
eventNames(): EventNames[];
}
declare type EventNames = 'start' | 'data' | 'destroy' | 'exit' | 'error';
/**
* Core base part of Driver implementation. Takes care of node-pty and emit "data", "exit" and "start" events
*/
export declare class DriverCore extends EventEmitter implements DriverEmitter {
eventNames(): EventNames[];
/**
* Configuration options of the current instance. Driver is configured on [[start]] but options can be changed
* later while is running.
*/
options: DriverOptions;
protected ptyProcess: IPty;
protected defaultOptions: DriverOptions;
/**
* Starts the client with given options. Will spawn a new terminal
*/
start(options?: DriverOptions): Promise;
private _started;
get started(): boolean;
private registerDataListeners;
static systemIsWindows(): boolean;
private _destroyed;
get destroyed(): boolean;
/**
* destroy current terminal
*/
destroy(): Promise;
currentSize: {
columns: number;
rows: number;
};
getCurrentSize(): {
columns: number;
rows: number;
};
/**
* Resizes the dimensions of the pty.
* @param columns THe number of columns to use.
* @param rows The number of rows to use.
*/
resize(columns: number, rows: number): Promise;
private data;
protected getData(): Array;
/**
* Cleans the data buffer. Useful for making sure that the next data chunk is independent from current state.
*/
cleanData(): this;
private handleData;
static ERROR_TYPE: 'cli-driver-error';
protected buildError(code: string, description?: any): DriverError;
/**
* Return a promise resolved after given number of milliseconds
* @param ms will resolve the promise only when given number of milliseconds passed
*/
waitTime(ms: number): Promise;
time: (ms: number) => Promise;
sleep: (ms: number) => Promise;
}
export {};