import { PluginProperty } from '../../api/core/plugin/PluginPropertyInterface';
import { CheckEmailsRequest, EmailRoutingRequest } from '../../api/plugin/emailtemplaterouter/EmailRouterRequestInterface';
import { BasePlugin, PropertiesWrapper } from '../common/BasePlugin';
export interface EmailRouterBaseInstanceContext {
    properties: PropertiesWrapper;
}
export interface EmailRoutingPluginResponse {
    result: boolean;
}
export interface CheckEmailsPluginResponse {
    result: boolean;
}
export declare abstract class EmailRouterPlugin extends BasePlugin<EmailRouterBaseInstanceContext> {
    instanceContext: Promise<EmailRouterBaseInstanceContext>;
    constructor(enableThrottling?: boolean);
    fetchEmailRouterProperties(id: string): Promise<PluginProperty[]>;
    protected instanceContextBuilder(routerId: string): Promise<EmailRouterBaseInstanceContext>;
    protected abstract onEmailRouting(request: EmailRoutingRequest, instanceContext: EmailRouterBaseInstanceContext): Promise<EmailRoutingPluginResponse>;
    protected getInstanceContext(emailRouterId: string): Promise<EmailRouterBaseInstanceContext>;
    protected abstract onEmailCheck(request: CheckEmailsRequest, instanceContext: EmailRouterBaseInstanceContext): Promise<CheckEmailsPluginResponse>;
    private initEmailRouting;
    private initEmailCheck;
}
