import { QrConfig, QrResult, QrDownloadOptions, QrShareOptions, QR_PRESETS } from './types';
import * as i0 from "@angular/core";
/**
 * QrGeneratorService
 *
 * A comprehensive service for generating, customizing, and manipulating QR codes.
 * Uses qr-code-styling library for high-quality, customizable QR code generation.
 *
 * @example Basic usage
 * ```typescript
 * const qr = await this.qrService.generate({ data: 'https://example.com' });
 * console.log(qr.dataUrl); // base64 image
 * ```
 *
 * @example With customization
 * ```typescript
 * const qr = await this.qrService.generate({
 *   data: 'https://example.com',
 *   width: 400,
 *   dotsStyle: 'rounded',
 *   dotsColor: '#3880ff',
 *   logo: { src: 'logo.png', width: 60 }
 * });
 * ```
 *
 * @example Using presets
 * ```typescript
 * const qr = await this.qrService.generateFromPreset('modern', 'https://example.com');
 * ```
 */
export declare class QrGeneratorService {
    /**
     * Generate a QR code with the given configuration.
     *
     * @param config - QR code configuration
     * @returns Promise<QrResult> - Generated QR code result
     *
     * @example
     * ```typescript
     * const qr = await this.qrService.generate({
     *   data: 'https://myapp.com/product/123',
     *   width: 300,
     *   dotsStyle: 'rounded',
     *   dotsColor: '#000000',
     *   backgroundColor: '#ffffff'
     * });
     * ```
     */
    generate(config: QrConfig): Promise<QrResult>;
    /**
     * Generate a QR code using a preset configuration.
     *
     * @param preset - Preset name ('default', 'rounded', 'dots', 'classy', 'modern')
     * @param data - Data to encode
     * @param overrides - Optional configuration overrides
     * @returns Promise<QrResult>
     */
    generateFromPreset(preset: keyof typeof QR_PRESETS | string, data: string, overrides?: Partial<QrConfig>): Promise<QrResult>;
    /**
     * Download the QR code as a file.
     *
     * @param qr - QR result to download
     * @param options - Download options
     */
    download(qr: QrResult, options?: QrDownloadOptions): Promise<void>;
    /**
     * Copy the QR code to clipboard as an image.
     *
     * @param qr - QR result to copy
     * @returns Promise<boolean> - Whether copy was successful
     */
    copyToClipboard(qr: QrResult): Promise<boolean>;
    /**
     * Share the QR code using Web Share API.
     *
     * @param qr - QR result to share
     * @param options - Share options
     * @returns Promise<boolean> - Whether share was successful
     */
    share(qr: QrResult, options?: QrShareOptions): Promise<boolean>;
    /**
     * Get the QR code as a base64 string (without data URL prefix).
     *
     * @param qr - QR result
     * @returns Base64 string
     */
    toBase64(qr: QrResult): string;
    /**
     * Get the QR code as a data URL.
     *
     * @param qr - QR result
     * @returns Data URL string
     */
    toDataUrl(qr: QrResult): string;
    /**
     * Get the QR code as a Blob.
     *
     * @param qr - QR result
     * @returns Blob
     */
    toBlob(qr: QrResult): Blob;
    /**
     * Check if Web Share API is available.
     */
    canShare(): boolean;
    /**
     * Check if Clipboard API is available for images.
     */
    canCopyToClipboard(): boolean;
    private buildColorOptions;
    private getMimeType;
    private blobToDataUrl;
    static ɵfac: i0.ɵɵFactoryDeclaration<QrGeneratorService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<QrGeneratorService>;
}
