import * as Logger from "bunyan";
import { INotificationHandlerConstructor, INotificationHandlerDecoration } from "../core/core";
import { ITemplateProcessor, ITemplateProcessorProviderFunction } from "./core";
import 'reflect-metadata';
export interface ICachedTemplate {
    func: ITemplateProcessorProviderFunction<any>;
    proc: ITemplateProcessor<any>;
}
export interface ITemplatePreProcessorConfig {
    onTemplateCached?(notificationType: string, templateName: string, func: ITemplateProcessorProviderFunction<any>, proc: ITemplateProcessor<any>): void;
    onTemplateRendered?(notificationType: string, templateName: string, testCase: string, content: string): void;
}
export declare class TemplatePreProcessor {
    private logger;
    private handlerClassConstructor?;
    constructor(logger: Logger, handlerClassConstructor?: INotificationHandlerConstructor);
    private runSampleMessageRender;
    preProcess(decorations: INotificationHandlerDecoration[], config?: ITemplatePreProcessorConfig): Promise<void>;
}
