export interface PrintBridgeConfig {
    bridge_type: 'qz_tray' | 'browser_print' | 'escpos_net' | 'raw_tcp' | 'cups';
    host?: string;
    port?: number;
    shared_printer_name?: string;
    ssl?: boolean;
    timeout_ms?: number;
    retries?: number;
}
export interface PrintJobPayload {
    printer_name: string;
    content_type: 'raw' | 'html' | 'pdf' | 'image';
    content: string;
    encoding?: string;
    language?: string;
    paper_width_mm?: number;
    copies?: number;
    auto_cut?: boolean;
    cash_drawer?: boolean;
}
export interface PrintBridgeStatus {
    bridge_type: string;
    host?: string;
    port?: number;
    connected: boolean;
    last_heartbeat_at?: Date;
    printers: Array<{
        name: string;
        status: 'ready' | 'busy' | 'error' | 'offline';
        paper_status?: 'ready' | 'low' | 'out';
        error_message?: string;
    }>;
}
export declare class PosPrintBridgeService {
    getBridgeConfig(storeId: number): Promise<PrintBridgeConfig | null>;
    testConnection(config: PrintBridgeConfig): Promise<{
        connected: boolean;
        error?: string;
    }>;
    buildPrintPayload(params: {
        template_html: string;
        variables: Record<string, any>;
        printer_name: string;
        paper_width_mm?: number;
        auto_cut?: boolean;
        cash_drawer?: boolean;
    }): Promise<PrintJobPayload>;
    formatForQzTray(payload: PrintJobPayload): Promise<any>;
    formatForBrowserPrint(payload: PrintJobPayload): Promise<any>;
    formatForEscposNet(payload: PrintJobPayload): Promise<any>;
    formatForRawTcp(_config: PrintBridgeConfig, payload: PrintJobPayload): Promise<any>;
    formatPrintJob(bridgeType: string, payload: PrintJobPayload): Promise<any>;
    buildBridgeContract(): any;
}
