/// <reference types="node" />
import { SpawnOptions } from 'child_process';
import { CLIOptions } from '../../models/options';
import { Terminal } from './Terminal';
export interface ReadableStream {
    on(event: 'data', listener: (buf: string | Buffer) => void): this;
}
export interface ChildProcess {
    stdout: ReadableStream;
    stderr: ReadableStream;
    killed: boolean;
    kill(signal?: string): void;
    on(event: 'error', listener: (err: Error) => void): this;
}
export interface CommandExecutor {
    (command: string, args?: string[], options?: SpawnOptions): ChildProcess;
}
export declare class Server {
    private options;
    private terminal;
    private spawn;
    private url;
    private proc;
    constructor(options: CLIOptions, terminal: Terminal, spawn: CommandExecutor);
    private static optionsToCommandArgs;
    private static matchServerURL;
    start(): Promise<{}>;
    getURL(): string;
    stop(): void;
}
