import { Creative } from '../../../api/core/creative';
import { PluginProperty } from '../../../api/core/plugin/PluginPropertyInterface';
import { EmailRendererPluginResponse } from '../../../api/plugin/emailtemplaterenderer/EmailRendererPluginResponse';
import { EmailRenderRequest } from '../../../api/plugin/emailtemplaterenderer/EmailRendererRequestInterface';
import { BasePlugin, PropertiesWrapper } from '../../common';
export interface EmailRendererBaseInstanceContext {
    creative: Creative;
    properties: PropertiesWrapper;
}
export declare abstract class EmailRendererPlugin<T extends EmailRendererBaseInstanceContext = EmailRendererBaseInstanceContext> extends BasePlugin<T> {
    instanceContext: Promise<T>;
    constructor(enableThrottling?: boolean);
    fetchCreative(id: string, forceReload?: boolean): Promise<Creative>;
    fetchCreativeProperties(id: string, forceReload?: boolean): Promise<PluginProperty[]>;
    protected instanceContextBuilder(creativeId: string, forceReload?: boolean): Promise<T>;
    protected getInstanceContext(creativeId: string, forceReload?: boolean): Promise<T>;
    protected abstract onEmailContents(request: EmailRenderRequest, instanceContext: T): Promise<EmailRendererPluginResponse>;
    private initEmailContents;
}
