import { NeovimClient } from '../api';
import { ILogger } from '../utils/logger';
import Transport, { Response } from './base';
import { VimCommands } from './connection';
export declare class VimTransport extends Transport {
    private pending;
    private nextRequestId;
    private connection;
    private attached;
    private client;
    /**
     * Cached error message
     */
    private errText;
    /**
     * Cached out message
     */
    private outText;
    constructor(logger: ILogger);
    attach(writer: NodeJS.WritableStream, reader: NodeJS.ReadableStream, client: NeovimClient): void;
    send(arr: any[]): void;
    detach(): void;
    vimCommand(command: VimCommands, ...args: any[]): void;
    vimRequest(command: 'call' | 'eval', args: any[]): Promise<any>;
    /**
     * Send request to vim
     */
    request(method: string, args: any[], cb: Function): any;
    notify(method: string, args: any[]): void;
    protected createResponse(_method: string, requestId: number): Response;
}
