import { TenantConnectionService } from '@/modules/tenant/tenant-connection.service';
import { BaseTenantService } from '@/common/base/service/base-crud.service';
import { PosPrintPaperSize } from './entities/pos-print-paper-size.entity';
import { PosPrinter } from './entities/pos-printer.entity';
import { PosReceiptTemplate } from './entities/pos-receipt-template.entity';
import { PosPrintJob } from './entities/pos-print-job.entity';
export declare class PosPrintingService extends BaseTenantService<PosPrintPaperSize> {
    protected readonly tenantConnectionService: TenantConnectionService;
    protected entity: typeof PosPrintPaperSize;
    constructor(tenantConnectionService: TenantConnectionService);
    listPaperSizes(): Promise<PosPrintPaperSize[]>;
    createPaperSize(data: Partial<PosPrintPaperSize>): Promise<PosPrintPaperSize>;
    listPrinters(storeId?: number): Promise<PosPrinter[]>;
    createPrinter(data: Partial<PosPrinter>): Promise<PosPrinter>;
    listTemplates(storeId?: number, type?: string): Promise<PosReceiptTemplate[]>;
    createTemplate(data: Partial<PosReceiptTemplate>): Promise<PosReceiptTemplate>;
    updateTemplate(id: number, data: Partial<PosReceiptTemplate>): Promise<PosReceiptTemplate>;
    listJobs(filters: {
        store_id?: number;
        status?: string;
        reference_type?: string;
        reference_id?: number;
    }): Promise<PosPrintJob[]>;
    createJob(data: Partial<PosPrintJob>, userId?: number): Promise<PosPrintJob[]>;
    retryJob(id: number): Promise<PosPrintJob>;
    markPrinted(id: number): Promise<PosPrintJob>;
    renderSaleReceipt(saleId: number, options?: {
        template_code?: string;
        store_id?: number;
    }): 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;
    }>;
    private renderTemplateHtml;
    private formatCurrency;
}
