interface Chunk { type: Mode; text: string; } interface ByteChunk { type: Mode.Byte | Mode.Kanji; bytes: number[]; } interface ECIChunk { type: Mode.ECI; assignmentNumber: number; } type Chunks = Array; interface DecodedQR { text: string; bytes: number[]; chunks: Chunks; version: number; } declare enum Mode { Numeric = 'numeric', Alphanumeric = 'alphanumeric', Byte = 'byte', Kanji = 'kanji', ECI = 'eci' } interface Point { x: number; y: number; } interface QRCode { binaryData: number[]; data: string; chunks: Chunks; version: number; location: { topRightCorner: Point; topLeftCorner: Point; bottomRightCorner: Point; bottomLeftCorner: Point; topRightFinderPattern: Point; topLeftFinderPattern: Point; bottomLeftFinderPattern: Point; bottomRightAlignmentPattern?: Point; }; } interface Options { inversionAttempts?: 'dontInvert' | 'onlyInvert' | 'attemptBoth' | 'invertFirst'; } export interface Decoder { (data: Uint8ClampedArray, width: number, height: number, providedOptions?: Options): QRCode | null; } export interface IEncodeOption { text: string; correctLevel?: 0 | 1 | 2 | 3; // 3 纠错级别,可取0、1、2、3,数字越大说明所需纠错级别越大 size?: number; // 256 二维码的宽和高,单位是px,只允许生成正方形二维码 background?: string; // '#ffffff' foreground?: string; // '#000000' pdground?: string; // 三个角的颜色 image?: string; // 码正中间图片的url,只支持配置正方形图片 imageSize?: number; // image的宽和高,单位px 30 } interface IQrcodeEncodeOption extends IEncodeOption { render?: 'canvas' | 'svg' | 'table'; // canvas 配置用哪个节点元素画二维码 } export class Encoder { constructor(options: IQrcodeEncodeOption); }