import * as _angular_core from '@angular/core';

type ZQrCodeErrorCorrectionLevel = 'L' | 'M' | 'Q' | 'H';
type ZQrCodeDotStyle = 'square' | 'dots' | 'rounded';
type ZQrCodeEyeStyle = 'square' | 'circle' | 'rounded';
type ZQrCodeFrame = 'none' | 'border' | 'text-bottom' | 'text-top';
interface ZQrCodeGradient {
    type: 'linear' | 'radial';
    colors: string[];
    angle?: number;
}

declare class ZQrCodeComponent {
    readonly zValue: _angular_core.InputSignal<string>;
    readonly zSize: _angular_core.InputSignal<number>;
    readonly zLevel: _angular_core.InputSignal<ZQrCodeErrorCorrectionLevel>;
    readonly zLogo: _angular_core.InputSignal<string>;
    readonly zLogoSize: _angular_core.InputSignal<number>;
    readonly zLogoBgColor: _angular_core.InputSignal<string>;
    readonly zLogoBgShape: _angular_core.InputSignal<"square" | "circle" | "none">;
    readonly zLogoPadding: _angular_core.InputSignal<number>;
    readonly zFgColor: _angular_core.InputSignal<string>;
    readonly zBgColor: _angular_core.InputSignal<string>;
    readonly zDotStyle: _angular_core.InputSignal<ZQrCodeDotStyle>;
    readonly zEyeStyle: _angular_core.InputSignal<ZQrCodeEyeStyle>;
    readonly zEyeColor: _angular_core.InputSignal<string>;
    readonly zMargin: _angular_core.InputSignal<number>;
    readonly zFgGradient: _angular_core.InputSignal<ZQrCodeGradient | undefined>;
    readonly zFrame: _angular_core.InputSignal<ZQrCodeFrame>;
    readonly zFrameText: _angular_core.InputSignal<string>;
    readonly zFrameColor: _angular_core.InputSignal<string>;
    readonly zFramePadding: _angular_core.InputSignal<number>;
    readonly zFrameBorderRadius: _angular_core.InputSignal<number>;
    readonly zDownloadable: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zDownloadButton: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zShadow: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    readonly zLoading: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
    private readonly _canvasRef;
    private readonly _platformId;
    protected readonly downloadText: _angular_core.WritableSignal<string>;
    constructor();
    /**
     * Renders the stylized QR code onto the canvas element
     */
    renderQrCode(): Promise<void>;
    /**
     * Helper function to get gradient style fill (no else branches)
     */
    private _getGradientStyle;
    /**
     * Helper function to draw dynamic dot module style (no else branches)
     */
    private _drawDot;
    /**
     * Helper path function for rounded corners (no else branches)
     */
    private _drawRoundedRectPath;
    /**
     * Draw eye pattern (no else branches)
     */
    private _drawEye;
    /**
     * Load and render the central logo on canvas (no else branches)
     */
    private _drawLogo;
    private _drawFrame;
    /**
     * Download the generated canvas QR Code as a PNG image file
     */
    protected downloadQr(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZQrCodeComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZQrCodeComponent, "z-qrcode", never, { "zValue": { "alias": "zValue"; "required": true; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zLevel": { "alias": "zLevel"; "required": false; "isSignal": true; }; "zLogo": { "alias": "zLogo"; "required": false; "isSignal": true; }; "zLogoSize": { "alias": "zLogoSize"; "required": false; "isSignal": true; }; "zLogoBgColor": { "alias": "zLogoBgColor"; "required": false; "isSignal": true; }; "zLogoBgShape": { "alias": "zLogoBgShape"; "required": false; "isSignal": true; }; "zLogoPadding": { "alias": "zLogoPadding"; "required": false; "isSignal": true; }; "zFgColor": { "alias": "zFgColor"; "required": false; "isSignal": true; }; "zBgColor": { "alias": "zBgColor"; "required": false; "isSignal": true; }; "zDotStyle": { "alias": "zDotStyle"; "required": false; "isSignal": true; }; "zEyeStyle": { "alias": "zEyeStyle"; "required": false; "isSignal": true; }; "zEyeColor": { "alias": "zEyeColor"; "required": false; "isSignal": true; }; "zMargin": { "alias": "zMargin"; "required": false; "isSignal": true; }; "zFgGradient": { "alias": "zFgGradient"; "required": false; "isSignal": true; }; "zFrame": { "alias": "zFrame"; "required": false; "isSignal": true; }; "zFrameText": { "alias": "zFrameText"; "required": false; "isSignal": true; }; "zFrameColor": { "alias": "zFrameColor"; "required": false; "isSignal": true; }; "zFramePadding": { "alias": "zFramePadding"; "required": false; "isSignal": true; }; "zFrameBorderRadius": { "alias": "zFrameBorderRadius"; "required": false; "isSignal": true; }; "zDownloadable": { "alias": "zDownloadable"; "required": false; "isSignal": true; }; "zDownloadButton": { "alias": "zDownloadButton"; "required": false; "isSignal": true; }; "zShadow": { "alias": "zShadow"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

export { ZQrCodeComponent };
export type { ZQrCodeDotStyle, ZQrCodeErrorCorrectionLevel, ZQrCodeEyeStyle, ZQrCodeFrame, ZQrCodeGradient };
