import { NicePuppetShowDocument, PresentationConversionOptions } from './puppetShowTypes';

export interface NicePresentationDocument {
    version: string;
    id: string;
    title: string;
    description?: string;
    author?: string;
    createdAt: string;
    updatedAt: string;
    layout: SlideLayout;
    slides: Slide[];
    theme?: PresentationTheme;
    metadata?: Record<string, unknown>;
}
export interface SlideLayout {
    width: number;
    height: number;
    aspectRatio: string;
}
export interface Slide {
    id: string;
    title?: string;
    elements: SlideElement[];
    background?: SlideBackground;
    transition?: SlideTransition;
    duration?: number;
    notes?: string;
}
export interface SlideElement {
    id: string;
    type: 'text' | 'image' | 'shape' | 'video' | 'audio' | 'chart' | 'code' | 'embed';
    position: ElementPosition;
    size: ElementSize;
    content: ElementContent;
    style?: ElementStyle;
    animation?: ElementAnimation;
    zIndex?: number;
}
export interface ElementPosition {
    x: number;
    y: number;
    rotation?: number;
}
export interface ElementSize {
    width: number;
    height: number;
}
export interface ElementContent {
    text?: string;
    src?: string;
    alt?: string;
    html?: string;
    data?: unknown;
}
export interface ElementStyle {
    opacity?: number;
    backgroundColor?: string;
    borderRadius?: number;
    border?: string;
    shadow?: string;
    transform?: string;
}
export interface ElementAnimation {
    enter?: AnimationEffect;
    exit?: AnimationEffect;
    emphasis?: AnimationEffect;
    timeline?: AnimationTimeline[];
}
export interface AnimationEffect {
    type: string;
    duration: number;
    delay?: number;
    easing?: string;
}
export interface AnimationTimeline {
    time: number;
    properties: Record<string, unknown>;
    easing?: string;
}
export interface SlideBackground {
    type: 'solid' | 'gradient' | 'image' | 'video';
    color?: string;
    gradient?: {
        type: 'linear' | 'radial';
        angle?: number;
        stops: Array<{
            color: string;
            position: number;
        }>;
    };
    image?: string;
    video?: string;
}
export interface SlideTransition {
    type: 'none' | 'fade' | 'slide' | 'zoom' | 'flip';
    duration?: number;
    direction?: 'left' | 'right' | 'up' | 'down';
}
export interface PresentationTheme {
    name: string;
    colors: {
        primary: string;
        secondary: string;
        background: string;
        text: string;
    };
    fonts: {
        heading: string;
        body: string;
    };
}
/**
 * Convert a puppet show document to a presentation document
 */
export declare function puppetShowToPresentation(puppetShow: NicePuppetShowDocument, options?: PresentationConversionOptions): NicePresentationDocument;
/**
 * Convert a presentation document to a puppet show document
 */
export declare function presentationToPuppetShow(presentation: NicePresentationDocument, options?: {
    defaultCharacterSize?: {
        width: number;
        height: number;
    };
    createCharacterFromImages?: boolean;
}): NicePuppetShowDocument;
/**
 * Validate puppet show document structure
 */
export declare function validatePuppetShowDocument(doc: NicePuppetShowDocument): {
    valid: boolean;
    errors: string[];
    warnings: string[];
};
/**
 * Merge multiple puppet shows into one
 */
export declare function mergePuppetShows(shows: NicePuppetShowDocument[], options?: {
    deduplicateCharacters?: boolean;
}): NicePuppetShowDocument;
//# sourceMappingURL=puppetShowConverter.d.ts.map