import { AsyncSeriesWaterfallHook, AsyncSeriesHook } from 'tapable';
import { ContextResource } from './resource';
import { FileWatcher } from './helper';
import { TwmExtension } from './translate';
export declare type TwmOptions = {
    root: string;
    output: string;
    watched: boolean;
    config: string;
    plugins?: Function[];
    translates?: TwmExtension[];
};
export default class Twm {
    defaultExtensions: TwmExtension[];
    defaultPlugins: import("./plugins").TwmPlugin[];
    hooks: {
        initialHooks: AsyncSeriesHook<any, any, any>;
        changeFileHooks: AsyncSeriesWaterfallHook<any, any, any>;
        distGenHooks: AsyncSeriesWaterfallHook<any, any, any>;
        removeFileHooks: AsyncSeriesHook<any, any, any>;
    };
    fileWatcher: FileWatcher;
    options: TwmOptions;
    context: ContextResource;
    constructor(options: TwmOptions);
    init(): Promise<void>;
    private applySinglePlugins;
    start(): Promise<void>;
    private initialFileWatcher;
    private updateFiles;
    private updateDirs;
}
