/**
 * Slide Renderers
 *
 * Standalone render functions for each slide type.
 * Extracted from SlideGenerator to keep functions under 300 lines.
 *
 * @module presentation/slideRenderers
 */
import type { BackgroundStyle, BulletPoint, ColumnData, PptxChartName, PptxSlide, PresentationTheme, RenderContentSlideOptions, SlideContent, SlideLayout, SlideType } from "../../types/index.js";
export declare const LAYOUT_POSITIONS: {
    margin: {
        x: number;
        y: number;
    };
    title: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    subtitle: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    content: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    contentFull: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    contentLeft: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    contentRight: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    imageRight: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    imageLeft: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    imageFull: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    imageCentered: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    columnLeft: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    columnRight: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    col1: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    col2: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    col3: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    chart: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    statRow: {
        y: number;
        h: number;
    };
    footer: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    logo: {
        "top-left": {
            x: number;
            y: number;
        };
        "top-right": {
            x: number;
            y: number;
        };
        "bottom-left": {
            x: number;
            y: number;
        };
        "bottom-right": {
            x: number;
            y: number;
        };
    };
    quote: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
    quoteAuthor: {
        x: number;
        y: number;
        w: number;
        h: number;
    };
};
/**
 * Add enhanced background with gradient or multi-color designs
 * Creates visually appealing slides with sophisticated styling
 */
export declare function addEnhancedBackground(slide: PptxSlide, theme: PresentationTheme, style?: BackgroundStyle): void;
/**
 * Add subtle colored background to slides (legacy - use addEnhancedBackground for more options)
 */
export declare function addColoredBackground(slide: PptxSlide, theme: PresentationTheme, opacity?: number): void;
/**
 * Add modern card-style container with border
 */
export declare function addCardContainer(slide: PptxSlide, pos: {
    x: number;
    y: number;
    w: number;
    h: number;
}, theme: PresentationTheme, borderWidth?: number): void;
/**
 * Add accent bar for visual hierarchy
 */
export declare function addAccentBar(slide: PptxSlide, pos: {
    x: number;
    y: number;
    w: number;
    h: number;
}, theme: PresentationTheme, position?: "left" | "top" | "bottom"): void;
/**
 * Calculate text width in inches based on font size and character count.
 * Uses typographic metrics for Arial font family.
 *
 * @param text - The text string to measure
 * @param fontSize - Font size in points
 * @param isBold - Whether the text is bold (adds ~10% width)
 * @returns Width in inches
 */
export declare function calculateTextWidth(text: string, fontSize: number, isBold?: boolean): number;
export declare function addTitle(slide: PptxSlide, title: string, theme: PresentationTheme, showUnderline?: boolean): void;
/**
 * Add individual bullet items (each as separate text element)
 * This creates cleaner spacing and no bounding box around bullets
 * Useful for column layouts and when you want more control over spacing
 */
export declare function addIndividualBullets(options: {
    slide: PptxSlide;
    bullets: BulletPoint[];
    startX: number;
    startY: number;
    width: number;
    theme: PresentationTheme;
    itemSpacing?: number;
}): void;
/**
 * Add bullets to a slide with hybrid formatting
 *
 * Priority: bullet-level > slide-level > type-defaults > theme-defaults
 *
 * @param slide - The pptxgenjs slide
 * @param bullets - Array of bullet points (normalized)
 * @param pos - Position and dimensions
 * @param theme - Presentation theme
 * @param slideType - Slide type for default formatting (optional)
 */
export declare function addBullets(slide: PptxSlide, bullets: BulletPoint[], pos: {
    x: number;
    y: number;
    w: number;
    h: number;
}, theme: PresentationTheme, slideType?: SlideType, options?: {
    useIndividualBullets?: boolean;
    itemSpacing?: number;
}): void;
export declare function addImage(slide: PptxSlide, imageBuffer: Buffer, pos: {
    x: number;
    y: number;
    w: number;
    h: number;
}): void;
export declare function getPptxChartType(slideType: SlideType): PptxChartName;
export declare function renderTitleSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme, imageBuffer?: Buffer): void;
export declare function renderSectionHeaderSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
export declare function renderThankYouSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme, imageBuffer?: Buffer): void;
export declare function renderContentSlide(options: RenderContentSlideOptions): void;
export declare function renderImageSlide(slide: PptxSlide, title: string, content: SlideContent, layout: SlideLayout, theme: PresentationTheme, imageBuffer?: Buffer): void;
/**
 * Generic column slide renderer
 * Handles 2, 3, or more columns dynamically
 * Renders each bullet as separate element (comparison-style)
 */
export declare function renderColumnSlide(slide: PptxSlide, title: string, columns: ColumnData[], theme: PresentationTheme, options?: {
    headerY?: number;
    headerHeight?: number;
    bulletsStartY?: number;
    columnGap?: number;
    highlightFirstColumn?: boolean;
}): void;
export declare function renderTwoColumnSlide(slide: PptxSlide, title: string, content: SlideContent, layout: SlideLayout, theme: PresentationTheme, imageBuffer?: Buffer): void;
export declare function renderThreeColumnSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
export declare function renderQuoteSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
export declare function renderStatisticsSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
export declare function renderChartSlide(slide: PptxSlide, title: string, content: SlideContent, chartType: SlideType, theme: PresentationTheme): void;
export declare function renderTableSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
export declare function renderTimelineSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
export declare function renderProcessFlowSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
export declare function renderComparisonSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
export declare function renderFeaturesSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
export declare function renderTeamSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
export declare function renderConclusionSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
/**
 * Predefined grid layouts for composite slides
 */
export declare const COMPOSITE_LAYOUTS: {
    "left-right": {
        x: number;
        y: number;
        w: number;
        h: number;
    }[];
    "top-bottom": {
        x: number;
        y: number;
        w: number;
        h: number;
    }[];
    "three-cols": {
        x: number;
        y: number;
        w: number;
        h: number;
    }[];
    quadrants: {
        x: number;
        y: number;
        w: number;
        h: number;
    }[];
    "five-boxes": {
        x: number;
        y: number;
        w: number;
        h: number;
    }[];
    "six-boxes": {
        x: number;
        y: number;
        w: number;
        h: number;
    }[];
    "main-sidebar": {
        x: number;
        y: number;
        w: number;
        h: number;
    }[];
    "top-three": {
        x: number;
        y: number;
        w: number;
        h: number;
    }[];
};
/**
 * Render a composite/dashboard slide with multiple content zones
 *
 * @example
 * // Left: bullets, Right: chart
 * renderDashboardSlide(slide, "Overview", {
 *   layout: "left-right",
 *   zones: [
 *     { type: "bullets", title: "Key Points", data: bullets },
 *     { type: "chart", title: "Trend", data: chartData }
 *   ]
 * }, theme);
 */
export declare function renderDashboardSlide(slide: PptxSlide, title: string, content: {
    layout: keyof typeof COMPOSITE_LAYOUTS;
    zones: Array<{
        type: "bullets" | "chart" | "stats" | "icon-box" | "text-box";
        title?: string;
        data?: unknown;
        isPrimary?: boolean;
    }>;
}, theme: PresentationTheme): void;
/**
 * Render a mixed content slide with left bullets and right chart
 * Common pattern: explanation on left, visualization on right
 */
export declare function renderMixedContentSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
/**
 * Render a stats grid slide with multiple stat boxes
 */
export declare function renderStatsGridSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
/**
 * Render an icon grid slide with multiple icon boxes
 */
export declare function renderIconGridSlide(slide: PptxSlide, title: string, content: SlideContent, theme: PresentationTheme): void;
