declare class QRBitBuffer {
    buffer: number[];
    length: number;
    constructor();
    get(index: number): boolean;
    put(num: number, length: number): void;
    getLengthInBits(): number;
    putBit(bit: boolean): void;
}

declare class QR8bitByte {
    mode: number;
    data: string;
    constructor(data: string);
    getLength(): number;
    write(buffer: QRBitBuffer): void;
}

declare class QRRSBlock {
    totalCount: number;
    dataCount: number;
    constructor(totalCount: number, dataCount: number);
    static RS_BLOCK_TABLE: number[][];
    static getRSBlocks(typeNumber: number, errorCorrectLevel: number): QRRSBlock[];
    static getRsBlockTable(typeNumber: number, errorCorrectLevel: number): number[] | undefined;
}

declare class QRCode {
    typeNumber: number;
    errorCorrectLevel: number;
    modules: (number | boolean | null)[][] | null;
    moduleCount: number;
    dataCache: number[] | null;
    dataList: QR8bitByte[];
    constructor(typeNumber: number, errorCorrectLevel: number);
    addData(data: string): void;
    isDark(row: number, col: number): number | boolean | null;
    getModuleCount(): number;
    make(): void;
    makeImpl(test: boolean, maskPattern: number): void;
    setupPositionProbePattern(row: number, col: number): void;
    getBestMaskPattern(): number;
    setupTimingPattern(): void;
    setupPositionAdjustPattern(): void;
    setupTypeNumber(test: boolean): void;
    setupTypeInfo(test: boolean, maskPattern: number): void;
    mapData(data: number[], maskPattern: number): void;
    static PAD0: number;
    static PAD1: number;
    static createData(typeNumber: number, errorCorrectLevel: number, dataList: QR8bitByte[]): number[];
    static createBytes(buffer: QRBitBuffer, rsBlocks: QRRSBlock[]): number[];
}

declare const ErrorCorrectLevel: {
    /**
     * Allows recovery of up to 7% data loss
     */
    L: 1;
    /**
     * Allows recovery of up to 15% data loss
     */
    M: 0;
    /**
     * Allows recovery of up to 25% data loss
     */
    Q: 3;
    /**
     * Allows recovery of up to 30% data loss
     */
    H: 2;
};

declare const qrcode: (data: string, opt?: {
    typeNumber?: number;
    errorCorrectLevel?: number;
}) => QRCode;

export { ErrorCorrectLevel, QRCode, qrcode };
