import { ReactElement } from 'react'; export interface EmailTemplateDefinition { id: string; name: string; description?: string; category?: string; variables?: TemplateVariable[]; preview?: string; createdAt: Date; updatedAt: Date; } export interface TemplateVariable { name: string; type: 'string' | 'number' | 'boolean' | 'date' | 'array' | 'object'; required?: boolean; default?: any; description?: string; } export interface ReactEmailTemplate> { id: string; name: string; component: (props: T) => ReactElement; previewData?: T; } export interface CompiledTemplate { html: string; text?: string; subject: string; preview?: string; } export interface TemplateEngine { compile(template: string, data: T): string; registerHelper(name: string, helper: Function): void; registerPartial(name: string, partial: string): void; } export interface EmailTheme { colors: { primary: string; secondary: string; background: string; text: string; border: string; [key: string]: string; }; fonts: { heading: string; body: string; mono: string; }; spacing: { small: string; medium: string; large: string; [key: string]: string; }; } export interface TemplateLayout { header?: string | ReactElement; footer?: string | ReactElement; styles?: string; theme?: EmailTheme; }