import { SvgCanvas } from 'red-agate-svg-canvas/modules/drawing/canvas/SvgCanvas';
import { ShapeProps, Shape, ImagingShapeBasePropsMixin } from 'red-agate/modules/red-agate/tags/Shape';
import { BitStreamWriter } from 'red-agate-util/modules/io/BitStream';
import { Bitmap } from 'red-agate-util/modules/imaging/Bitmap';
import { QrSourceDataTypes, QrDataChunkType } from "./Qr.defs";
export interface QrProps extends ShapeProps, ImagingShapeBasePropsMixin {
    data?: Array<Uint8Array | string | number> | Uint8Array | string;
    version?: number | "auto";
    ecLevel?: "L" | "M" | "Q" | "H";
    encoding?: "number" | "alnum" | "8bit" | "auto";
    cellSize?: number;
    unit?: string;
    asDataUrl?: boolean;
    asImgTag?: boolean;
}
export interface QrPropsNoUndefined extends ShapeProps, ImagingShapeBasePropsMixin {
    data?: Array<Uint8Array | string | number> | Uint8Array | string;
    version: number | "auto";
    ecLevel: "L" | "M" | "Q" | "H";
    encoding: "number" | "alnum" | "8bit" | "auto";
    cellSize: number;
    unit?: string;
    asDataUrl?: boolean;
    asImgTag?: boolean;
}
export declare const qrPropsDefault: QrPropsNoUndefined;
export declare class Qr extends Shape<QrProps> {
    constructor(props: QrProps);
    toImgTag(): string;
    toElementStyle(): string;
    toDataUrl(): string;
    toSvg(): string;
    toRendered(): string;
    render(contexts: Map<string, any>, children: string): string;
    protected evaluteMask(bitmap: Bitmap): number;
    protected encodeNumberData(data: string): {
        data: BitStreamWriter;
        charLength: number;
    } | null;
    protected encodeAlnumData(data: string): {
        data: BitStreamWriter;
        charLength: number;
    } | null;
    protected encode8bitData(data: string): {
        data: BitStreamWriter;
        charLength: number;
    };
    protected encodeChunks(data: QrSourceDataTypes[] | QrSourceDataTypes): Array<{
        type: QrDataChunkType;
        data: BitStreamWriter;
        charLength: number;
    }>;
    protected determineSymbolVersion(chunks: Array<{
        type: QrDataChunkType;
        data: BitStreamWriter;
    }>): {
        version: number;
        segments: number[][];
        dataLength: number;
        maxDataLength: number;
    };
    protected encodeData(data: QrSourceDataTypes[] | QrSourceDataTypes): {
        version: number;
        data: Uint8Array;
        ecLevel: "L" | "M" | "Q" | "H";
    };
    protected applyMask(bitmap: Bitmap, funcPatternsMap: Bitmap, fn: (x: number, y: number) => boolean): void;
    protected buildBitmap(data: Uint8Array, version: number): Bitmap;
    protected drawBitmap(canvas: SvgCanvas, bitmap: Bitmap): void;
}
