/** * 生成一个 QR 码 * @description * 根据给定的数据段和编码参数生成 QR 码。输出时会自动选择给定范围内尽可能小的 QR 码版本 * @param {Readonly} segs - 要编码的 QR 数据段 * @param {Ecc} ecl - 纠错级别 * @param {IntRange<1, 41>} [minVersion=1] - 最小版本(默认为 1) * @param {IntRange<1, 41>} [maxVersion=40] - 最大版本(默认为 40) * @param {-1 | IntRange<0, 8>} [mask=-1] - 掩码模式(默认为 -1,表示自动选择) * @param {boolean} [boostEcl=true] - 在数据仍然适合当前版本号的情况下提高纠错级别(默认为 true)。 * @returns {QrCode} 返回生成的 QR 码。 */ export declare function encodeSegments(segs: Readonly, ecl: Ecc, minVersion?: IntRange<1, 41>, maxVersion?: IntRange<1, 41>, mask?: -1 | IntRange<0, 8>, boostEcl?: boolean): QrCode; export declare function makeSegments(text: string): QrSegment[]; declare class QrCode { readonly version: IntRange<1, 41>; readonly errorCorrectionLevel: Ecc; private readonly modules; private readonly isFunction; /** * 获取 QR Code 的宽度和高度,以模块为单位。 * 宽度和高度范围为 21 至 177(包括边界)。宽度和高度的计算公式为:`version * 4 + 17`。 */ readonly size: number; /** * 获取 QR Code 所使用的掩膜模式的索引值。掩膜模式索引值范围为 0 到 7(包括边界)。即使 QR Code 是通过自动掩膜(mask = -1)生成的,最终的掩膜值仍然是 0 到 7 之间的有效值。 */ readonly mask: IntRange<0, 8>; static readonly VERSION: { readonly MIN: 1; readonly MAX: 40; }; private static readonly PENALTY; private selectMask; constructor(version: IntRange<1, 41>, errorCorrectionLevel: Ecc, dataCodewords: Readonly, msk: -1 | IntRange<0, 8>); getModule(x: number, y: number): boolean; private drawFunctionPatterns; private drawFormatBits; private drawVersion; private drawFinderPattern; private drawAlignmentPattern; private setFunctionModule; private addEccAndInterleave; private drawCodewords; private readonly MASK_PATTERNS; private applyMask; private getPenaltyScore; private getAlignmentPatternPositions; private finderPenaltyCountPatterns; private finderPenaltyTerminateAndCount; private finderPenaltyAddHistory; } declare class QrSegment { readonly mode: QrMode; readonly numChars: number; readonly bitData: number[]; constructor(mode: QrMode, numChars: number, bitData: number[]); getData(): number[]; } export declare class Ecc { readonly ordinal: IntRange<0, 4>; readonly formatBits: IntRange<0, 4>; private constructor(); private static readonly LEVELS; static get(level: keyof typeof Ecc.LEVELS): Ecc; } declare class QrMode { readonly modeBits: IntRange<0, 16>; private readonly numBitsCharCount; private constructor(); private static readonly modes; static get(mode: keyof typeof QrMode.modes): QrMode; numCharCountBits(version: number): number; } type Enumerate = Acc['length'] extends N ? Acc[number] : Enumerate; export type IntRange = Exclude, Enumerate>; export {};