/// <reference types="node" />
import * as lean_client from "lean-client-js-node";
import { EventEmitter } from "events";
declare type SyncString = any;
declare type Client = any;
declare type LeanServer = any;
declare type Message = any;
declare type Messages = Message[];
interface State {
    tasks: any;
    paths: {
        [key: string]: Messages;
    };
}
export declare class Lean extends EventEmitter {
    paths: {
        [key: string]: SyncString;
    };
    client: Client;
    _server: LeanServer | undefined;
    _state: State;
    private running;
    dbg: Function;
    constructor(client: Client);
    close(): void;
    is_running(path: string): boolean;
    private server;
    register(path: string): Promise<void>;
    unregister(path: string): void;
    kill(): void;
    restart(): Promise<void>;
    info(path: string, line: number, column: number): Promise<lean_client.InfoResponse>;
    complete(path: string, line: number, column: number, skipCompletions?: boolean): Promise<lean_client.CompleteResponse>;
    version(): Promise<string>;
    state(): State;
    messages(path: string): any[];
}
export declare function lean_server(client: Client): Lean;
export {};
