import { PosPrintingService } from './pos-printing.service';
import { PosPrintBridgeService } from './pos-print-bridge.service';
import { PosEscPosService } from './pos-escpos.service';
import { CreatePosPaperSizeDto, CreatePosPrinterDto, CreatePosReceiptTemplateDto, UpdatePosReceiptTemplateDto, CreatePosPrintJobDto } from './dto/pos-printing.dto';
export declare class PosPrintingController {
    private readonly service;
    private readonly bridgeService;
    private readonly escposService;
    constructor(service: PosPrintingService, bridgeService: PosPrintBridgeService, escposService: PosEscPosService);
    paperSizes(): Promise<import("./entities/pos-print-paper-size.entity").PosPrintPaperSize[]>;
    createPaperSize(body: CreatePosPaperSizeDto): Promise<import("./entities/pos-print-paper-size.entity").PosPrintPaperSize>;
    printers(storeId?: string): Promise<import("./entities/pos-printer.entity").PosPrinter[]>;
    createPrinter(body: CreatePosPrinterDto): Promise<import("./entities/pos-printer.entity").PosPrinter>;
    templates(storeId?: string, type?: string): Promise<import("./entities/pos-receipt-template.entity").PosReceiptTemplate[]>;
    createTemplate(body: CreatePosReceiptTemplateDto): Promise<import("./entities/pos-receipt-template.entity").PosReceiptTemplate>;
    updateTemplate(id: number, body: UpdatePosReceiptTemplateDto): Promise<import("./entities/pos-receipt-template.entity").PosReceiptTemplate>;
    jobs(storeId?: string, status?: string, referenceType?: string, referenceId?: string): Promise<import("./entities/pos-print-job.entity").PosPrintJob[]>;
    createJob(body: CreatePosPrintJobDto, userId: number): Promise<import("./entities/pos-print-job.entity").PosPrintJob[]>;
    retryJob(id: number): Promise<import("./entities/pos-print-job.entity").PosPrintJob>;
    markPrinted(id: number): Promise<import("./entities/pos-print-job.entity").PosPrintJob>;
    renderSaleReceipt(saleId: number, templateCode?: string, storeId?: string): Promise<{
        store: {
            name: string;
            code: any;
            address: any;
            phone: any;
        } | null;
        sale: {
            sale_code: string;
            sold_at: string;
            sold_at_local: string;
            subtotal_amount: number;
            discount_amount: number;
            tax_amount: number;
            total_amount: number;
            paid_amount: number;
            change_amount: number;
            payment_status: string;
            sale_status: string;
            order_source: string;
            cashier_user_id: number;
        };
        items: {
            product_name: string;
            variant_name: string;
            sku: string;
            barcode: string;
            quantity: number;
            unit_price: number;
            discount_amount: number;
            tax_amount: number;
            line_total: number;
        }[];
        payments: {
            method_id: number;
            provider_id: number;
            amount: number;
            currency: string;
            payment_status: string;
            reference_code: string;
            paid_at: string | null;
        }[];
        totals: {
            item_count: number;
            subtotal: number;
            discount: number;
            tax: number;
            total: number;
            paid: number;
            change: number;
        };
        printed_at: string;
        template: {
            code: string;
            name: string;
            template_type: string;
            render_engine: string;
        } | null;
    }>;
    bridgeContract(): any;
    formatForBridge(body: {
        bridge_type: string;
        template_html: string;
        variables: Record<string, any>;
        printer_name: string;
        paper_width_mm?: number;
        auto_cut?: boolean;
        cash_drawer?: boolean;
    }): Promise<any>;
    testBridge(storeId: number): Promise<{
        connected: boolean;
        error?: string;
    }>;
    renderEscPos(body: {
        store_name: string;
        sale_code: string;
        items: Array<{
            name: string;
            quantity: number;
            unit_price: number;
            total: number;
        }>;
        subtotal: number;
        tax?: number;
        total: number;
        payments: Array<{
            method: string;
            amount: number;
        }>;
        cashier?: string;
        receipt_no?: string;
        footer_text?: string;
    }): Promise<{
        base64: string;
        length: number;
    }>;
    buildEscPosCommands(body: {
        commands: Array<{
            type: string;
            value?: any;
            options?: Record<string, any>;
        }>;
    }): {
        base64: string;
        length: number;
    };
}
