/// <reference types="node" />
import { ChildProcess } from 'child_process';
import tsp from 'typescript/lib/protocol';
import { CommandArgs, CommandBody } from './commands';
import { Logger } from './Logger';
export default class TSServer {
    private childProcess;
    private readonly logger;
    private readonly reader;
    private emitter;
    private nextSeq;
    private requestsBySeq;
    private killed;
    constructor(childProcess: ChildProcess, logger: Logger);
    kill(): void;
    sendRequest<C extends tsp.CommandTypes>(command: C, args: CommandArgs<C>): Promise<CommandBody<C>>;
    onEvent(listener: (event: tsp.Event) => void): () => void;
    private write;
    private handleData;
    private handleResponse;
    private handleEvent;
    private initChildProcessListeners;
    private initChildProcessStderrListeners;
}
