/** * QRCodeDiscoveryService - 二维码打印机配对服务 * * 用于扫描打印机屏幕二维码获取设备信息并直连 * * 支持的二维码格式: * 1. 商米格式 (Sunmi): 包含蓝牙地址和服务信息 * 2. 标准格式: 包含 MAC 地址 * 3. 自定义格式: 可扩展 */ /** * 二维码发现服务配置选项 */ export interface QRCodeDiscoveryOptions { /** 二维码格式类型 */ format: 'sunmi' | 'standard' | 'custom'; /** 是否自动连接 */ autoConnect?: boolean; /** 自定义解析函数 */ parser?: (content: string) => ParsedDeviceInfo; } /** * 解析后的设备信息 */ export interface ParsedDeviceInfo { /** 设备名称 */ name?: string; /** 蓝牙 MAC 地址 */ address?: string; /** 服务 UUID */ serviceUuid?: string; /** 设备类型 */ type?: 'printer' | 'scanner' | 'other'; /** 其他元数据 */ metadata?: Record; } /** * 发现结果 */ export interface DiscoveryResult { /** 解析后的设备信息 */ device: ParsedDeviceInfo; /** 原始二维码内容 */ raw: string; /** 解析格式 */ format: string; } /** * 二维码发现服务 */ export declare class QRCodeDiscoveryService { private readonly logger; private options; constructor(options: QRCodeDiscoveryOptions); /** * 解析二维码内容 * @param content 二维码字符串内容 * @returns 解析结果 */ parse(content: string): DiscoveryResult; /** * 解析商米格式二维码 * 商米打印机二维码通常包含: * - 设备名称 * - 蓝牙地址 * - 连接参数 * * 支持的格式: * 1. JSON: {"name":"SUNMI P2","mac":"AA:BB:CC:DD:EE:FF","type":"printer"} * 2. 分隔符: SUNMI P2|AA:BB:CC:DD:EE:FF|printer */ parseSunmi(content: string): DiscoveryResult; /** * 解析商米 JSON 格式 */ private parseSunmiJson; /** * 解析商米分隔符格式 (name|MAC|type) */ private parseSunmiPipe; /** * 解析标准格式二维码 * 标准格式通常是 MAC 地址或蓝牙设备信息 * * 支持的格式: * 1. AA:BB:CC:DD:EE:FF (冒号分隔) * 2. AA-BB-CC-DD-EE-FF (连字符分隔) * 3. AABBCCDDEEFF (无分隔符) */ parseStandard(content: string): DiscoveryResult; /** * 解析 MAC 地址 */ private parseMacAddress; /** * 标准化 MAC 地址格式(转换为大写冒号分隔) */ private normalizeMacAddress; /** * 格式化 MAC 地址为冒号分隔格式 */ private formatMacWithColons; /** * 标准化设备类型 */ private normalizeDeviceType; /** * 从 JSON 字符串中提取元数据 */ private extractJsonMetadata; /** * 获取配置选项 */ getOptions(): QRCodeDiscoveryOptions; /** * 验证解析结果是否有效 */ static isValidResult(result: DiscoveryResult): boolean; } export { parseQRCode, parseMultipleQRCodes, detectQRCodeFormat, addQRCodeFormat, removeQRCodeFormat, getSupportedFormats, QR_CODE_FORMATS, } from './QRCodeParser'; export type { QRCodeFormat } from './QRCodeParser';