import { Element, LogicCondition, LogicIteration, PageElement } from "../../typings"; import { MjmlOutputFormat } from "../isProductionMode"; export declare enum PluginType { RESPONSIVE = "RESPONSIVE", TEMPLATE_ENGINE = "TEMPLATE_ENGINE" } export declare abstract class ResponsivePlugin { static type: PluginType; enabledResponsive: boolean; abstract generateResponsive(params: { node: Element; mode: "testing" | "production"; context: { content: PageElement; }; children?: React.ReactNode; displayMode: "only-desktop" | "only-mobile" | "desktop-mobile" | undefined; keepEmptyAttributes: boolean; mergetagsData?: Record; idx?: string | null | undefined; outputFormat: MjmlOutputFormat; }): React.ReactNode; } export declare abstract class TemplateEnginePlugin { static type: PluginType; abstract generateIterationTemplate(option: LogicIteration, content: React.ReactNode): React.ReactNode; abstract generateConditionTemplate(option: LogicCondition | string, content: React.ReactNode, fallback?: React.ReactNode): React.ReactNode; abstract isVariable(variable: string): boolean; abstract generateVariable(variable: string, defaultValue?: string): string; abstract renderWithData(html: string, data: Record): string; } export declare abstract class ElementPlugin { abstract generateElement(): void; } type Plugin = ResponsivePlugin | TemplateEnginePlugin | ElementPlugin; export declare class PluginManager { static enabledResponsive: boolean; static generateResponsive: ResponsivePlugin["generateResponsive"]; static generateIterationTemplate: TemplateEnginePlugin["generateIterationTemplate"]; static isVariable: TemplateEnginePlugin["isVariable"]; static generateConditionTemplate: TemplateEnginePlugin["generateConditionTemplate"]; static generateVariable: TemplateEnginePlugin["generateVariable"]; static renderWithData: TemplateEnginePlugin["renderWithData"]; static registerPlugins(plugins: Array Plugin>): void; static registerPlugin(Plug: new () => Plugin): void; } export {};