import type { CanvasConfig } from '../types/qr-generator';
export interface QRGeneratorConfig {
    text: string;
    width: number;
    height: number;
    qrPosition: {
        x: number;
        y: number;
    };
    qrSize: {
        width: number;
        height: number;
    };
    qrOptions: {
        typeNumber: number;
        mode: 'Numeric' | 'Alphanumeric' | 'Byte' | 'Kanji';
        errorCorrectionLevel: 'L' | 'M' | 'Q' | 'H';
    };
    imageOptions: {
        hideBackgroundDots: boolean;
        imageSize: number;
        margin: number;
        crossOrigin: string;
    };
    dotsOptions: {
        color: string;
        type: 'rounded' | 'dots' | 'classy' | 'classy-rounded' | 'square' | 'extra-rounded';
        gradient?: {
            type: 'linear' | 'radial';
            rotation: number;
            colorStops: any;
        };
    };
    backgroundOptions: {
        color: string;
        gradient?: {
            type: 'linear' | 'radial';
            rotation: number;
            colorStops: any;
        };
    };
    cornersSquareOptions: {
        color: string;
        type: 'dot' | 'square' | 'extra-rounded';
        gradient?: {
            type: 'linear' | 'radial';
            rotation: number;
            colorStops: Array<{
                offset: number;
                color: string;
            }>;
        };
    };
    cornersDotOptions: {
        color: string;
        type: 'dot' | 'square';
        gradient?: {
            type: 'linear' | 'radial';
            rotation: number;
            colorStops: Array<{
                offset: number;
                color: string;
            }>;
        };
    };
    logo?: {
        src: string;
        size: number;
        position?: {
            x: number;
            y: number;
        };
    };
    exportOptions: {
        format: 'png' | 'jpeg' | 'svg';
        quality: number;
        borderRadius: number;
    };
    backgrounds?: Array<{
        src: string;
        position: {
            x: number;
            y: number;
        };
        size: {
            width: number;
            height: number;
        };
        mode: 'fill' | 'contain' | 'cover' | 'stretch';
        zIndex: number;
        opacity: number;
    }>;
    texts?: Array<{
        content: string;
        position: {
            x: number;
            y: number;
        };
        fontSize: number;
        color: string;
        fontFamily: string;
        fontWeight: number;
        zIndex: number;
        opacity: number;
        textAlign?: 'left' | 'center' | 'right';
        lineHeight?: number;
    }>;
    htmlModules?: Array<{
        content: string;
        position: {
            x: number;
            y: number;
        };
        size: {
            width: number;
            height: number;
        };
        zIndex: number;
        opacity: number;
    }>;
}
export interface PlatformQRGeneratorConfig extends CanvasConfig {
    exportOptions?: {
        scale?: number;
        useCORS?: boolean;
        allowTaint?: boolean;
        backgroundColor?: string;
        logging?: boolean;
    };
}
export declare const defaultConfig: Partial<QRGeneratorConfig>;
export declare const calculateDefaultQRSettings: (canvasWidth: number, canvasHeight: number, qrRatio?: number) => {
    qrPosition: {
        x: number;
        y: number;
    };
    qrSize: {
        width: number;
        height: number;
    };
};
export declare class PlatformQRGenerator {
    private config;
    private previewElement;
    private isInitialized;
    constructor(config: PlatformQRGeneratorConfig);
    initialize(previewElement: HTMLElement): void;
    updateConfig(newConfig: Partial<PlatformQRGeneratorConfig>): void;
    getConfig(): PlatformQRGeneratorConfig;
    private checkInitialized;
    createSnapshot(): Promise<HTMLCanvasElement>;
    private applyRoundedCorners;
    exportAsPNG(options?: {
        quality?: number;
        borderRadius?: number;
        scale?: number;
    }): Promise<Blob>;
    exportAsDataURL(options?: {
        quality?: number;
        borderRadius?: number;
        scale?: number;
    }): Promise<string>;
    downloadAsPNG(filename?: string, options?: {
        quality?: number;
        borderRadius?: number;
        scale?: number;
    }): Promise<void>;
    getPreviewInfo(): {
        width: number;
        height: number;
        element: HTMLElement | null;
    };
    generateConfigString(): string;
    loadFromConfigString(configString: string): void;
    destroy(): void;
    validateConfig(): {
        isValid: boolean;
        errors: string[];
    };
    getEstimatedFileSize(): Promise<number>;
}
export declare const createPlatformQRGenerator: (config: PlatformQRGeneratorConfig) => PlatformQRGenerator;
export declare const exportPreviewAsPNG: (previewElement: HTMLElement, config: PlatformQRGeneratorConfig, options?: {
    quality?: number;
    borderRadius?: number;
    scale?: number;
}) => Promise<Blob>;
export declare const exportPreviewAsDataURL: (previewElement: HTMLElement, config: PlatformQRGeneratorConfig, options?: {
    quality?: number;
    borderRadius?: number;
    scale?: number;
}) => Promise<string>;
export declare class QRGenerator {
    private config;
    private container;
    private qrCode;
    private isRendered;
    constructor(config: Partial<QRGeneratorConfig>);
    private createCanvas;
    private createGradientStyle;
    private getObjectFitStyle;
    private addBackgrounds;
    private addQRCode;
    private addTexts;
    private addHtmlModules;
    render(): Promise<HTMLDivElement>;
    exportAsPNG(options?: {
        scale?: number;
        quality?: number;
        useCORS?: boolean;
        allowTaint?: boolean;
    }): Promise<Blob>;
    exportAsDataURL(options?: {
        scale?: number;
        quality?: number;
        useCORS?: boolean;
        allowTaint?: boolean;
    }): Promise<string>;
    downloadAsPNG(filename?: string, options?: {
        scale?: number;
        quality?: number;
        useCORS?: boolean;
        allowTaint?: boolean;
    }): Promise<void>;
    getPreviewElement(): HTMLDivElement | null;
    updateConfig(newConfig: Partial<QRGeneratorConfig>): void;
    getConfig(): QRGeneratorConfig;
    getConfigString(): string;
    loadFromConfigString(configString: string): void;
    validateConfig(): {
        isValid: boolean;
        errors: string[];
    };
    cleanup(): void;
    destroy(): void;
}
export declare const createQRGenerator: (config: Partial<QRGeneratorConfig>) => QRGenerator;
export declare const generateQRAsPNG: (config: Partial<QRGeneratorConfig>, exportOptions?: {
    scale?: number;
    quality?: number;
    useCORS?: boolean;
    allowTaint?: boolean;
}) => Promise<Blob>;
export declare const generateQRAsDataURL: (config: Partial<QRGeneratorConfig>, exportOptions?: {
    scale?: number;
    quality?: number;
    useCORS?: boolean;
    allowTaint?: boolean;
}) => Promise<string>;
export declare const generateAndDownloadQR: (config: Partial<QRGeneratorConfig>, filename?: string, exportOptions?: {
    scale?: number;
    quality?: number;
    useCORS?: boolean;
    allowTaint?: boolean;
}) => Promise<void>;
