/** * Style options for QR code dots (data modules). */ export type QrDotsStyle = 'square' | 'dots' | 'rounded' | 'extra-rounded' | 'classy' | 'classy-rounded'; /** * Style options for QR code corner squares. */ export type QrCornersSquareStyle = 'square' | 'dot' | 'extra-rounded'; /** * Style options for QR code corner dots. */ export type QrCornersDotStyle = 'square' | 'dot'; /** * Output format for the generated QR code. */ export type QrOutputFormat = 'svg' | 'png' | 'jpeg' | 'webp'; /** * Error correction level for QR codes. * Higher levels allow more damage tolerance but reduce data capacity. */ export type QrErrorCorrectionLevel = 'L' | 'M' | 'Q' | 'H'; /** * Logo/image configuration for the QR code center. */ export interface QrLogoConfig { /** Image source URL or base64 */ src: string; /** Logo width (default: 25% of QR size) */ width?: number; /** Logo height (default: same as width) */ height?: number; /** Margin around the logo */ margin?: number; /** Border radius for rounded corners */ borderRadius?: number; /** Whether to hide dots behind the logo */ hideBackgroundDots?: boolean; } /** * Gradient configuration for QR elements. */ export interface QrGradient { /** Gradient type */ type: 'linear' | 'radial'; /** Rotation angle in degrees (for linear) */ rotation?: number; /** Color stops */ colorStops: Array<{ offset: number; color: string; }>; } /** * Color configuration - can be solid color or gradient. */ export type QrColorConfig = string | QrGradient; /** * Complete configuration for QR code generation. */ export interface QrConfig { /** The data to encode (URL, text, etc.) */ data: string; /** QR code width in pixels (default: 300) */ width?: number; /** QR code height in pixels (default: same as width) */ height?: number; /** Quiet zone margin in modules (default: 0) */ margin?: number; /** Color/gradient for data dots */ dotsColor?: QrColorConfig; /** Background color (default: white) */ backgroundColor?: QrColorConfig; /** Color for corner squares */ cornersSquareColor?: QrColorConfig; /** Color for corner dots */ cornersDotColor?: QrColorConfig; /** Style of data dots (default: 'square') */ dotsStyle?: QrDotsStyle; /** Style of corner squares (default: 'square') */ cornersSquareStyle?: QrCornersSquareStyle; /** Style of corner dots (default: 'square') */ cornersDotStyle?: QrCornersDotStyle; /** Logo/image configuration */ logo?: QrLogoConfig; /** Error correction level (default: 'M') */ errorCorrectionLevel?: QrErrorCorrectionLevel; /** Output format (default: 'png') */ format?: QrOutputFormat; /** Quality for jpeg/webp (0-1, default: 1) */ quality?: number; } /** * Result from QR code generation. */ export interface QrResult { /** Original configuration used */ config: QrConfig; /** Generated data as base64 data URL */ dataUrl: string; /** Generated data as Blob */ blob: Blob; /** SVG string (only when format is 'svg') */ svg?: string; /** MIME type of the generated image */ mimeType: string; /** File extension */ extension: string; /** Timestamp of generation */ generatedAt: Date; } /** * Options for downloading the QR code. */ export interface QrDownloadOptions { /** Custom filename (without extension) */ filename?: string; /** Override format for download */ format?: QrOutputFormat; } /** * Options for sharing the QR code. */ export interface QrShareOptions { /** Share title */ title?: string; /** Share text/description */ text?: string; /** Custom filename for the shared file */ filename?: string; } /** * Preset configurations for common use cases. */ export interface QrPreset { name: string; config: Partial; } /** * Default presets for quick styling. */ export declare const QR_PRESETS: Record>;