import React from 'react';

// Component Props Interfaces
export interface TextEditorProps {
  initialContent?: string;
  logo?: string;
  logoWidth?: string;
  logoHeight?: string;
  onChange?: (content: string) => void;
  className?: string;
  showExportMenu?: boolean;
  showPreview?: boolean;
  [key: string]: any;
}

export interface EditorPaneProps {
  content: string;
  onChange: (content: string) => void;
}

export interface PreviewPaneProps {
  content: string;
}

export interface SplitViewProps {
  content: string;
  onChange: (content: string) => void;
  previewRef: React.RefObject<HTMLDivElement>;
  showPreview?: boolean;
}

export interface ExportMenuProps {
  previewRef: React.RefObject<HTMLDivElement>;
  logo: string;
  logoWidth?: string;
  logoHeight?: string;
  
  // Header customization
  headerBgColor?: string;
  headerStyle?: React.CSSProperties;
  
  // Main download button customization
  downloadButtonBgColor?: string;
  downloadButtonTextColor?: string;
  downloadButtonStyle?: React.CSSProperties;
  downloadButtonText?: string;
  
  // Popup customization
  popupBgColor?: string;
  popupStyle?: React.CSSProperties;
  
  // PDF button customization
  pdfButtonBgColor?: string;
  pdfButtonTextColor?: string;
  pdfButtonStyle?: React.CSSProperties;
  pdfButtonText?: string;
  
  // DOC button customization
  docButtonBgColor?: string;
  docButtonTextColor?: string;
  docButtonStyle?: React.CSSProperties;
  docButtonText?: string;
  
  // Print button customization
  printButtonBgColor?: string;
  printButtonTextColor?: string;
  printButtonStyle?: React.CSSProperties;
  printButtonText?: string;
  
  // Input and label customization
  inputBorderColor?: string;
  inputStyle?: React.CSSProperties;
  labelTextColor?: string;
  labelStyle?: React.CSSProperties;
}

// Component Declarations
export declare const TextEditor: React.FC<TextEditorProps>;
export declare const EditorPane: React.FC<EditorPaneProps>;
export declare const PreviewPane: React.ForwardRefExoticComponent<PreviewPaneProps & React.RefAttributes<HTMLDivElement>>;
export declare const SplitView: React.FC<SplitViewProps>;
export declare const ExportMenu: React.FC<ExportMenuProps>;

// Utility Functions
export declare function exportToPdf(
  element: HTMLElement, 
  paperSize?: string, 
  filename?: string
): Promise<void>;

export declare function exportToDocx(
  element: HTMLElement, 
  filename?: string
): Promise<void>;
