/** * Printer Configuration Manager * * Manages persistent printer configurations including: * - Saved devices and their settings * - Default print parameters * - User preferences * * Supports localStorage and file-based storage backends. * * @example * ```typescript * const configManager = new PrinterConfigManager(); * * // Save a printer configuration * configManager.savePrinter({ * id: 'my-printer', * deviceId: 'XX:XX:XX:XX:XX:XX', * name: 'Kitchen Printer', * isDefault: true * }); * * // Get all saved printers * const printers = configManager.getSavedPrinters(); * * // Load configuration for a printer * const config = configManager.loadPrinterConfig('my-printer'); * ``` */ /** * Print configuration for a device */ export interface PrintConfig { /** Encoding (default: 'GBK') */ encoding?: string; /** Chunk size for data transfer */ chunkSize?: number; /** Delay between chunks in ms */ chunkDelay?: number; /** Number of retries */ retries?: number; } /** * Saved printer configuration */ export interface SavedPrinter { /** Unique printer ID */ id: string; /** Bluetooth device ID */ deviceId: string; /** Friendly name */ name: string; /** Printer model/type */ model?: string; /** Whether this is the default printer */ isDefault?: boolean; /** Print configuration */ printConfig?: PrintConfig; /** Auto-reconnect on disconnect */ autoReconnect?: boolean; /** Last connected timestamp */ lastConnected?: number; /** Creation timestamp */ createdAt: number; /** Update timestamp */ updatedAt: number; } /** * Global configuration */ export interface GlobalConfig { /** Default encoding */ defaultEncoding: string; /** Default chunk size */ defaultChunkSize: number; /** Default chunk delay */ defaultChunkDelay: number; /** Default retries */ defaultRetries: number; /** Auto-reconnect by default */ defaultAutoReconnect: boolean; /** Scan timeout in ms */ scanTimeout: number; /** Enable logging */ enableLogging: boolean; } /** * Configuration storage interface */ export interface IConfigStorage { get(key: string, defaultValue: T): T; set(key: string, value: T): void; remove(key: string): void; clear(): void; } /** * LocalStorage-based implementation */ export declare class LocalStorage implements IConfigStorage { private prefix; constructor(prefix?: string); get(key: string, defaultValue: T): T; set(key: string, value: T): void; remove(key: string): void; clear(): void; } /** * Printer Configuration Manager */ export declare class PrinterConfigManager { private readonly logger; private readonly storage; private printers; private globalConfig; private lastUsedPrinterId; /** * Creates a new PrinterConfigManager instance * * @param storage - Storage backend (defaults to LocalStorage) */ constructor(storage?: IConfigStorage); /** * Load configuration from storage */ private load; /** * Save configuration to storage */ private save; /** * Save a printer configuration * * @param printer - Printer configuration to save * @returns The saved printer ID */ savePrinter(printer: SavedPrinter): string; /** * Get a saved printer by ID */ getPrinter(id: string): SavedPrinter | undefined; /** * Get all saved printers */ getSavedPrinters(): SavedPrinter[]; /** * Get default printer */ getDefaultPrinter(): SavedPrinter | undefined; /** * Remove a saved printer */ removePrinter(id: string): boolean; /** * Set printer as default */ setDefaultPrinter(id: string): void; /** * Update last used printer */ setLastUsed(id: string): void; /** * Get last used printer ID */ getLastUsedId(): string | null; /** * Get global configuration */ getGlobalConfig(): GlobalConfig; /** * Update global configuration */ updateGlobalConfig(updates: Partial): void; /** * Reset global config to defaults */ resetGlobalConfig(): void; /** * Load print config for a printer (with defaults applied) */ loadPrinterConfig(printerId: string): PrintConfig; /** * Export all configuration as JSON */ export(): string; /** * Import configuration from JSON * * @param json - JSON string to import * @param merge - If true, merge with existing config; if false, replace * @returns Number of printers imported */ import(json: string, merge?: boolean): number; /** * Clear all configuration */ clear(): void; /** * Get statistics */ getStats(): { printerCount: number; hasDefault: boolean; lastUsed: string | null; }; } export declare const printerConfigManager: PrinterConfigManager;