import * as metaast from './meta_ast';
import type * as ThingTalkUtils from '../../utils/thingtalk';
import type * as SentenceGeneratorRuntime from '../runtime';
import type { GrammarOptions } from '../types';
import type * as I18n from '../../i18n';
import type SentenceGenerator from '../generator';
export declare class Compiler {
    private _target;
    private _files;
    private _nonTerm;
    private _typeMap;
    private _keyFnMap;
    constructor(target: 'js' | 'ts');
    private _loadFile;
    private _assignAllTypes;
    visit(visitor: metaast.NodeVisitor): void;
    parse(filename: string): Promise<void>;
    process(filename: string): Promise<void>;
    private _outputAllFiles;
    private _outputFile;
}
export declare function compile(filename: string): Promise<void>;
declare type CompiledTemplate = (runtime: typeof SentenceGeneratorRuntime, ttUtils: typeof ThingTalkUtils, options: GrammarOptions, langPack: I18n.LanguagePack, grammar: SentenceGenerator<any, any, any>, loader?: any) => Promise<void>;
export declare function importGenie(filename: string, searchPath?: string): Promise<CompiledTemplate>;
export {};
