/**
 * HY Live Masonry Configuration Interface
 *
 * This interface defines all available configuration options for the HY Live Masonry component.
 * Each section is clearly documented with its purpose and usage.
 */
export interface MasonryConfig {
    /**
     * Number of columns in the masonry grid
     * @default 4
     * @min 1
     * @max 12
     */
    columns?: number;
    /**
     * Gap between masonry items in pixels
     * @default 16
     * @min 0
     * @max 50
     */
    gap?: number;
    /**
     * Padding around the masonry container in pixels
     * @default 20
     * @min 0
     * @max 100
     */
    padding?: number;
    /**
     * Layout algorithm to use for positioning items
     * - 'packed': Items are packed tightly (default)
     * - 'loose': Items are positioned with more space
     * - 'grid': Strict grid layout
     */
    layoutAlgorithm?: 'packed' | 'loose' | 'grid';
    /**
     * Whether to maintain aspect ratio of items
     * @default false
     */
    maintainAspectRatio?: boolean;
    /**
     * Minimum item width in pixels
     * @default 100
     */
    minItemWidth?: number;
    /**
     * Maximum item width in pixels
     * @default null (unlimited)
     */
    maxItemWidth?: number;
    /**
     * Enable/disable all animations
     * @default true
     */
    animation?: boolean;
    /**
     * Duration of animations in milliseconds
     * @default 300
     * @min 100
     * @max 2000
     */
    animationDuration?: number;
    /**
     * Animation easing function
     * @default 'ease'
     */
    animationEasing?: 'linear' | 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'cubic-bezier(0.4, 0, 0.2, 1)';
    /**
     * Enable breathing effect on items
     * @default true
     */
    breathingEffect?: boolean;
    /**
     * Speed of breathing animation in milliseconds
     * @default 2000
     * @min 1000
     * @max 10000
     */
    breathingSpeed?: number;
    /**
     * Intensity of breathing effect (0-1)
     * @default 0.05
     * @min 0
     * @max 0.2
     */
    breathingIntensity?: number;
    /**
     * Enable entrance animations when items are added
     * @default true
     */
    entranceAnimation?: boolean;
    /**
     * Stagger delay between entrance animations in milliseconds
     * @default 100
     */
    entranceStagger?: number;
    /**
     * Enable/disable morphing functionality
     * @default true
     */
    morphing?: boolean;
    /**
     * Duration of morphing animations in milliseconds
     * @default 500
     * @min 200
     * @max 2000
     */
    morphDuration?: number;
    /**
     * Enable morphing on hover
     * @default true
     */
    hoverMorph?: boolean;
    /**
     * Enable morphing on long press
     * @default true
     */
    longPressMorph?: boolean;
    /**
     * Enable morphing on click
     * @default false
     */
    clickMorph?: boolean;
    /**
     * Default morph size for items
     * @default '2x2'
     */
    defaultMorphSize?: string;
    /**
     * Whether to animate morphing transitions
     * @default true
     */
    animateMorphing?: boolean;
    /**
     * Morphing easing function
     * @default 'cubic-bezier(0.4, 0, 0.2, 1)'
     */
    morphEasing?: string;
    /**
     * Enable responsive behavior
     * @default true
     */
    responsive?: boolean;
    /**
     * Breakpoint configuration for different screen sizes
     */
    breakpoints?: BreakpointConfig;
    /**
     * Whether to automatically adjust columns based on container width
     * @default true
     */
    autoColumns?: boolean;
    /**
     * Minimum columns to show regardless of screen size
     * @default 1
     */
    minColumns?: number;
    /**
     * Maximum columns to show regardless of screen size
     * @default 8
     */
    maxColumns?: number;
    /**
     * Delay for long press detection in milliseconds
     * @default 500
     * @min 200
     * @max 2000
     */
    longPressDelay?: number;
    /**
     * Enable touch interactions
     * @default true
     */
    touchEnabled?: boolean;
    /**
     * Enable mouse interactions
     * @default true
     */
    mouseEnabled?: boolean;
    /**
     * Enable keyboard navigation
     * @default false
     */
    keyboardEnabled?: boolean;
    /**
     * Whether items are draggable
     * @default false
     */
    draggable?: boolean;
    /**
     * Whether items are sortable
     * @default false
     */
    sortable?: boolean;
    /**
     * Enable item selection
     * @default false
     */
    selectable?: boolean;
    /**
     * Allow multiple item selection
     * @default false
     */
    multiSelect?: boolean;
    /**
     * Theme to apply to the masonry
     * @default 'default'
     */
    theme?: 'default' | 'dark' | 'minimal' | 'glass' | 'neon' | 'custom';
    /**
     * Border radius for items in pixels
     * @default 8
     * @min 0
     * @max 50
     */
    borderRadius?: number;
    /**
     * Border width for items in pixels
     * @default 1
     * @min 0
     * @max 10
     */
    borderWidth?: number;
    /**
     * Enable shadows on items
     * @default true
     */
    shadow?: boolean;
    /**
     * Shadow intensity (0-1)
     * @default 0.1
     */
    shadowIntensity?: number;
    /**
     * Enable hover effects
     * @default true
     */
    hoverEffects?: boolean;
    /**
     * Scale factor on hover (1.0 = no scale)
     * @default 1.02
     * @min 1.0
     * @max 1.2
     */
    hoverScale?: number;
    /**
     * Custom CSS class to apply to the masonry container
     */
    containerClass?: string;
    /**
     * Custom CSS class to apply to masonry items
     */
    itemClass?: string;
    /**
     * Custom CSS variables for theming
     */
    cssVariables?: Record<string, string>;
    /**
     * Throttle resize events in milliseconds
     * @default 100
     * @min 50
     * @max 500
     */
    throttleResize?: number;
    /**
     * Use CSS transforms for better performance
     * @default true
     */
    useTransform?: boolean;
    /**
     * Enable hardware acceleration
     * @default true
     */
    hardwareAcceleration?: boolean;
    /**
     * Enable intersection observer for performance
     * @default true
     */
    intersectionObserver?: boolean;
    /**
     * Threshold for intersection observer (0-1)
     * @default 0.1
     */
    intersectionThreshold?: number;
    /**
     * Enable virtual scrolling for large datasets
     * @default false
     */
    virtualScrolling?: boolean;
    /**
     * Number of items to render in virtual scrolling
     * @default 50
     */
    virtualItemCount?: number;
    /**
     * Debounce time for layout updates in milliseconds
     * @default 50
     */
    layoutDebounce?: number;
    /**
     * Enable ARIA labels and roles
     * @default true
     */
    accessibility?: boolean;
    /**
     * Screen reader announcements
     * @default true
     */
    screenReaderAnnouncements?: boolean;
    /**
     * Focus management
     * @default true
     */
    focusManagement?: boolean;
    /**
     * High contrast mode support
     * @default false
     */
    highContrast?: boolean;
    /**
     * Enable debug mode
     * @default false
     */
    debug?: boolean;
    /**
     * Show layout grid overlay
     * @default false
     */
    showGrid?: boolean;
    /**
     * Log performance metrics
     * @default false
     */
    performanceLogging?: boolean;
    /**
     * Show item boundaries
     * @default false
     */
    showBoundaries?: boolean;
}
/**
 * Breakpoint configuration for responsive design
 */
export interface BreakpointConfig {
    /**
     * Mobile breakpoint (≤768px)
     */
    mobile?: Breakpoint;
    /**
     * Tablet breakpoint (769px-1024px)
     */
    tablet?: Breakpoint;
    /**
     * Desktop breakpoint (>1024px)
     */
    desktop?: Breakpoint;
    /**
     * Large desktop breakpoint (>1440px)
     */
    largeDesktop?: Breakpoint;
    /**
     * Custom breakpoints
     */
    [key: string]: Breakpoint | undefined;
}
/**
 * Individual breakpoint configuration
 */
export interface Breakpoint {
    /**
     * Minimum width for this breakpoint
     */
    minWidth?: number;
    /**
     * Maximum width for this breakpoint
     */
    maxWidth?: number;
    /**
     * Number of columns at this breakpoint
     */
    columns: number;
    /**
     * Gap between items at this breakpoint
     */
    gap: number;
    /**
     * Padding at this breakpoint
     */
    padding?: number;
    /**
     * Custom configuration for this breakpoint
     */
    config?: Partial<MasonryConfig>;
}
/**
 * Masonry item configuration
 */
export interface MasonryItem {
    /**
     * Unique identifier for the item
     */
    id: string;
    /**
     * Size of the item in format 'colsxrows' (e.g., '1x1', '2x1', '1x2', '2x2')
     */
    size: string;
    /**
     * Minimum size constraint
     */
    minSize?: string;
    /**
     * Maximum size constraint
     */
    maxSize?: string;
    /**
     * HTML content for the item
     */
    content?: string;
    /**
     * Background image URL
     */
    image?: string;
    /**
     * Background color
     */
    backgroundColor?: string;
    /**
     * Text color
     */
    textColor?: string;
    /**
     * Animation type for the item
     */
    animationType?: 'breathing' | 'pulse' | 'float' | 'none';
    /**
     * Delay before animation starts in milliseconds
     */
    animationDelay?: number;
    /**
     * Custom animation function
     */
    customAnimation?: AnimationFunction;
    /**
     * Whether item morphs on hover
     */
    morphOnHover?: boolean;
    /**
     * Whether item morphs on long press
     */
    morphOnLongPress?: boolean;
    /**
     * Target size when morphing
     */
    morphSize?: string;
    /**
     * Duration of morphing animation
     */
    morphDuration?: number;
    /**
     * Whether item is clickable
     */
    clickable?: boolean;
    /**
     * Whether item is hoverable
     */
    hoverable?: boolean;
    /**
     * Whether item is draggable
     */
    draggable?: boolean;
    /**
     * Click event handler
     */
    onClick?: (event: Event, item: MasonryItem) => void;
    /**
     * Hover event handler
     */
    onHover?: (event: Event, item: MasonryItem) => void;
    /**
     * Long press event handler
     */
    onLongPress?: (event: Event, item: MasonryItem) => void;
    /**
     * Morph start event handler
     */
    onMorph?: (event: Event, item: MasonryItem) => void;
    /**
     * Morph end event handler
     */
    onMorphEnd?: (event: Event, item: MasonryItem) => void;
    /**
     * Custom CSS classes for the item
     */
    className?: string;
    /**
     * Custom data attributes
     */
    data?: Record<string, string>;
    /**
     * Whether item is visible
     */
    visible?: boolean;
    /**
     * Z-index for the item
     */
    zIndex?: number;
}
/**
 * Custom animation function type
 */
export interface AnimationFunction {
    (element: HTMLElement, deltaTime: number): void;
}
/**
 * Morphing state information
 */
export interface MorphingState {
    /**
     * Original size before morphing
     */
    originalSize: string;
    /**
     * Target size for morphing
     */
    targetSize: string;
    /**
     * Duration of morphing animation
     */
    duration: number;
    /**
     * Start time of morphing
     */
    startTime: number;
    /**
     * Current progress (0-1)
     */
    progress: number;
    /**
     * Update function for morphing
     */
    update: (currentTime: number) => number;
    /**
     * Check if morphing is complete
     */
    isComplete: () => boolean;
}
/**
 * Layout information
 */
export interface LayoutInfo {
    /**
     * Number of columns
     */
    columns: number;
    /**
     * Gap between items
     */
    gap: number;
    /**
     * Container padding
     */
    padding: number;
    /**
     * Container width
     */
    containerWidth: number;
    /**
     * Container height
     */
    containerHeight: number;
    /**
     * Number of items
     */
    itemCount: number;
    /**
     * Heights of each column
     */
    columnHeights: number[];
    /**
     * Current breakpoint
     */
    breakpoint?: string;
    /**
     * Layout algorithm used
     */
    algorithm?: string;
}
/**
 * Masonry event interface
 */
export interface MasonryEvent {
    detail: {
        item?: MasonryItem;
        layout?: LayoutInfo;
        animation?: string;
        morphing?: MorphingState;
        breakpoint?: string;
        performance?: PerformanceMetrics;
    };
}
/**
 * Custom event map for TypeScript
 */
export interface CustomEventMap {
    'item:added': MasonryEvent;
    'item:removed': MasonryEvent;
    'item:updated': MasonryEvent;
    'item:morphed': MasonryEvent;
    'layout:updated': MasonryEvent;
    'animation:start': MasonryEvent;
    'animation:end': MasonryEvent;
    'breakpoint:changed': MasonryEvent;
    'performance:metrics': MasonryEvent;
    'error:occurred': MasonryEvent;
}
/**
 * Animation options
 */
export interface AnimationOptions {
    /**
     * Animation speed
     */
    speed?: number;
    /**
     * Animation intensity
     */
    intensity?: number;
    /**
     * Animation phase
     */
    phase?: number;
    /**
     * Animation easing
     */
    easing?: string;
    /**
     * Animation delay
     */
    delay?: number;
}
/**
 * Size dimensions
 */
export interface SizeDimensions {
    /**
     * Number of columns
     */
    cols: number;
    /**
     * Number of rows
     */
    rows: number;
}
/**
 * Calculated dimensions
 */
export interface CalculatedDimensions {
    /**
     * Width in pixels
     */
    width: number;
    /**
     * Height in pixels
     */
    height: number;
}
/**
 * Theme configuration
 */
export interface ThemeConfig {
    /**
     * Theme name
     */
    name: string;
    /**
     * Color palette
     */
    colors: {
        background: string;
        text: string;
        border: string;
        shadow: string;
        hoverShadow: string;
        accent: string;
        secondary: string;
    };
    /**
     * Border radius
     */
    borderRadius: number;
    /**
     * Shadow configuration
     */
    shadow: string;
    /**
     * Hover shadow configuration
     */
    hoverShadow: string;
    /**
     * Custom CSS variables
     */
    variables?: Record<string, string>;
}
/**
 * Performance metrics
 */
export interface PerformanceMetrics {
    /**
     * Layout calculation time in milliseconds
     */
    layoutTime: number;
    /**
     * Animation frame rate
     */
    fps: number;
    /**
     * Memory usage in bytes
     */
    memoryUsage: number;
    /**
     * Number of DOM operations
     */
    domOperations: number;
    /**
     * Timestamp of measurement
     */
    timestamp: number;
}
//# sourceMappingURL=index.d.ts.map