import Parser = require("../../lib/compiler/parser");
declare type Logger = (names?: string | string[], ast?: any) => void;
export declare class Options {
    inputs: string[];
    output: string;
    namespace: string;
    parser: ReturnType<typeof Parser>;
    debug: boolean;
    emit: boolean;
    errors: Array<any>;
    commandLine: boolean;
    constructor(inputs: string[], output: string, namespace?: string, debug?: boolean, emit?: boolean);
    static from(options: any): Options;
}
declare type OptionsJSON = {
    inputs?: string[];
    output?: string;
    namespace?: string;
    parser?: ReturnType<typeof Parser>;
    debug?: boolean;
    emit?: boolean;
    commandLine?: boolean;
};
declare type CompileSingleResult = {
    output?: string;
    error?: Error;
    map?: any;
};
export declare function compileSingle(source: string, debug?: boolean, name?: string, ext?: ".mjs" | ".js"): CompileSingleResult;
export declare function compileSample(text: string, name?: string, debug?: boolean, ext?: ".mjs" | ".js"): string | Error;
export declare type Results = {
    phases: Map<Function, any>;
    errors: Error[];
};
export default class Compiler {
    logger: Logger;
    constructor(logger?: Logger);
    watch(optionsOrJson: Options | OptionsJSON): void;
    compile(optionsOrJson: Options | OptionsJSON, files?: {
        [path: string]: string;
    }, phases?: any, logger?: Logger): Results;
}
export {};
