/// <reference types="bunyan" />
import { ITemplateContentProvider, ITemplateProcessor, ITemplateProcessorFactory } from "./core";
import { NestedTemplateProcessor } from "./nestedTemplateProcessor";
import { Logger } from "rokot-log";
export declare type ITemplateFragmentProvider = {
    [name: string]: ITemplateProcessor<any>;
};
export declare class UnderscoreTemplateProcessorFactory implements ITemplateProcessorFactory {
    private contentProvider;
    private fragmentProvider?;
    constructor(contentProvider: ITemplateContentProvider, fragmentProvider?: () => Promise<ITemplateFragmentProvider>);
    create<T>(templateKey: string): Promise<ITemplateProcessor<T>>;
    protected createWithFragment<T>(templateKey: string): Promise<ITemplateProcessor<T>>;
    protected createWithoutFragment<T>(templateKey: string): Promise<ITemplateProcessor<T>>;
    protected createTemplateProcessorWithoutFragment<T>(content: string): Promise<ITemplateProcessor<T>>;
}
export declare class UnderscoreFileSystemNestedTemplateProcessor extends NestedTemplateProcessor {
    basePath: string;
    constructor(basePath: string, logger: Logger, fragmentsRelativeFolder?: string);
}
export declare class UnderscoreFileSystemTemplateProcessorFactory extends UnderscoreTemplateProcessorFactory {
    basePath: string;
    private logger;
    constructor(basePath: string, logger: Logger, fragmentsRelativeFolder?: string);
    private cachedFragments;
    private fragmentProviderFactory;
}
