import { TransitionEffect } from '../types/presentationTypes';

export interface CustomTransitionConfig {
    /** Unique identifier for the transition */
    id: string;
    /** Display name */
    name: string;
    /** Description */
    description?: string;
    /** CSS for outgoing slide */
    outgoingStyles: TransitionKeyframes;
    /** CSS for incoming slide */
    incomingStyles: TransitionKeyframes;
    /** Default duration in ms */
    defaultDuration: number;
    /** Default easing function */
    defaultEasing: string;
    /** Whether this transition supports direction */
    supportsDirection?: boolean;
    /** Preview thumbnail URL */
    previewUrl?: string;
    /** Category for grouping */
    category?: TransitionCategory;
}
export type TransitionCategory = 'basic' | 'slide' | 'zoom' | 'rotate' | '3d' | 'blur' | 'creative' | 'custom';
export interface TransitionKeyframes {
    /** Start state (0%) */
    from: React.CSSProperties;
    /** End state (100%) */
    to: React.CSSProperties;
    /** Optional intermediate keyframes */
    keyframes?: Array<{
        offset: number;
        style: React.CSSProperties;
    }>;
}
export interface TransitionState {
    /** Progress of transition (0-1) */
    progress: number;
    /** Current outgoing slide styles */
    outgoingStyle: React.CSSProperties;
    /** Current incoming slide styles */
    incomingStyle: React.CSSProperties;
    /** Whether transition is complete */
    isComplete: boolean;
}
export interface TransitionRegistry {
    /** Get a transition by ID */
    get(id: string): CustomTransitionConfig | undefined;
    /** Register a custom transition */
    register(config: CustomTransitionConfig): void;
    /** Remove a transition */
    unregister(id: string): void;
    /** Get all transitions */
    getAll(): CustomTransitionConfig[];
    /** Get transitions by category */
    getByCategory(category: TransitionCategory): CustomTransitionConfig[];
}
export declare const TRANSITION_FADE: CustomTransitionConfig;
export declare const TRANSITION_SLIDE_LEFT: CustomTransitionConfig;
export declare const TRANSITION_SLIDE_RIGHT: CustomTransitionConfig;
export declare const TRANSITION_SLIDE_UP: CustomTransitionConfig;
export declare const TRANSITION_SLIDE_DOWN: CustomTransitionConfig;
export declare const TRANSITION_ZOOM_IN: CustomTransitionConfig;
export declare const TRANSITION_ZOOM_OUT: CustomTransitionConfig;
export declare const TRANSITION_FLIP_HORIZONTAL: CustomTransitionConfig;
export declare const TRANSITION_FLIP_VERTICAL: CustomTransitionConfig;
export declare const TRANSITION_CUBE_LEFT: CustomTransitionConfig;
export declare const TRANSITION_ROTATE_IN: CustomTransitionConfig;
export declare const TRANSITION_BLUR_FADE: CustomTransitionConfig;
export declare const TRANSITION_WIPE_LEFT: CustomTransitionConfig;
export declare const TRANSITION_WIPE_RIGHT: CustomTransitionConfig;
export declare const TRANSITION_CIRCLE_REVEAL: CustomTransitionConfig;
export declare const TRANSITION_GLITCH: CustomTransitionConfig;
export declare const TRANSITION_MORPH: CustomTransitionConfig;
export declare const BUILT_IN_TRANSITIONS: CustomTransitionConfig[];
/** Global transition registry */
export declare const transitionRegistry: TransitionRegistry;
/**
 * Compute the current transition state at a given progress
 */
export declare function computeCustomTransitionState(transitionId: string, progress: number): TransitionState;
/**
 * Map a SlideTransition to a CustomTransitionConfig id
 */
export declare function mapTransitionEffectToId(effect: TransitionEffect, direction?: string): string;
/**
 * Apply easing function to progress
 */
export declare function applyEasing(progress: number, easing: string): number;
/**
 * Create a custom transition from CSS keyframes definition (like GSAP-style)
 */
export declare function createCustomTransition(id: string, name: string, outgoing: {
    from: React.CSSProperties;
    to: React.CSSProperties;
}, incoming: {
    from: React.CSSProperties;
    to: React.CSSProperties;
}, options?: Partial<Omit<CustomTransitionConfig, 'id' | 'name' | 'outgoingStyles' | 'incomingStyles'>>): CustomTransitionConfig;
/**
 * Generate CSS keyframes string for a transition (for use with Web Animations API)
 */
export declare function transitionToKeyframes(config: CustomTransitionConfig, type: 'outgoing' | 'incoming'): Keyframe[];
declare const _default: {
    transitionRegistry: TransitionRegistry;
    computeCustomTransitionState: typeof computeCustomTransitionState;
    mapTransitionEffectToId: typeof mapTransitionEffectToId;
    applyEasing: typeof applyEasing;
    createCustomTransition: typeof createCustomTransition;
    transitionToKeyframes: typeof transitionToKeyframes;
    BUILT_IN_TRANSITIONS: CustomTransitionConfig[];
};
export default _default;
//# sourceMappingURL=customTransitions.d.ts.map