import { QrResult } from '../../../services/qr-generator/types';
/**
 * Theme presets for quick styling.
 */
export type QrDisplayTheme = 'default' | 'minimal' | 'gradient-purple' | 'gradient-blue' | 'gradient-sunset' | 'gradient-mint' | 'dark' | 'neon';
/**
 * Label position options.
 */
export type QrLabelPosition = 'top' | 'bottom';
/**
 * Gradient direction options.
 */
export type QrGradientDirection = 'to-right' | 'to-left' | 'to-bottom' | 'to-top' | 'to-bottom-right' | 'to-bottom-left' | 'to-top-right' | 'to-top-left';
/**
 * Gradient configuration for backgrounds.
 */
export interface QrDisplayGradient {
    /** Start color */
    from: string;
    /** End color */
    to: string;
    /** Optional middle color */
    via?: string;
    /** Gradient direction */
    direction?: QrGradientDirection;
}
/**
 * Label configuration for QR display.
 */
export interface QrLabelConfig {
    /** Label text */
    text: string;
    /** Position (top or bottom) */
    position?: QrLabelPosition;
    /** Text color */
    color?: string;
    /** Font size in pixels */
    fontSize?: number;
    /** Font weight */
    fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold';
    /** Icon name (ionicon) to show with label */
    icon?: string;
    /** Icon position */
    iconPosition?: 'start' | 'end';
}
/**
 * Metadata for the QR code display component.
 */
export interface QrCodeMetadata {
    /** QR result from QrGeneratorService */
    qr: QrResult;
    /** Alt text for accessibility */
    alt?: string;
    /** Whether to show download button */
    showDownload?: boolean;
    /** Download button label */
    downloadLabel?: string;
    /** Whether to show copy button */
    showCopy?: boolean;
    /** Copy button label */
    copyLabel?: string;
    /** Whether to show share button */
    showShare?: boolean;
    /** Share button label */
    shareLabel?: string;
    /** Custom CSS class */
    cssClass?: string;
    /** Size override (will scale the image) */
    displaySize?: number;
    /** Border radius for the container */
    borderRadius?: number;
    /** Show border around QR */
    showBorder?: boolean;
    /** Border color */
    borderColor?: string;
    /** Padding around the QR code */
    padding?: number;
    /** Background color for container */
    containerBackground?: string;
    /** Loading state */
    loading?: boolean;
    /** Custom filename for download (without extension) */
    downloadFilename?: string;
    /** Share title */
    shareTitle?: string;
    /** Share text/description */
    shareText?: string;
    /** Custom filename for share */
    shareFilename?: string;
    /** Theme preset for quick styling */
    theme?: QrDisplayTheme;
    /** Label/caption configuration */
    label?: QrLabelConfig;
    /** Gradient background (overrides containerBackground) */
    gradient?: QrDisplayGradient;
    /** Box shadow (e.g., 'sm', 'md', 'lg', 'xl', or custom CSS) */
    shadow?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | string;
    /** Glow effect color (for neon theme) */
    glowColor?: string;
    /** Enable pulse animation on hover */
    pulseOnHover?: boolean;
    /** Enable scale animation on hover */
    scaleOnHover?: boolean;
    /** QR image border radius (to round the QR itself) */
    qrBorderRadius?: number;
    /** Reactive content keys */
    downloadLabelContentKey?: string;
    copyLabelContentKey?: string;
    shareLabelContentKey?: string;
    contentClass?: string;
}
/**
 * Event emitted after QR code action.
 */
export interface QrCodeActionEvent {
    /** Action type */
    action: 'download' | 'copy' | 'share';
    /** Whether action was successful */
    success: boolean;
    /** QR result */
    qr: QrResult;
    /** Error if action failed */
    error?: Error;
}
