import { LitElement } from 'lit'; import '../ok-qr/ok-qr.js'; /** Cabecera del negocio (lo que va arriba del tiquet). */ export interface ReceiptBusiness { name: string; address?: string; /** NIF / CIF. */ tax_id?: string; phone?: string; /** URL del logo (opcional; alternativamente usa el slot `logo`). */ logo_url?: string; } /** Una línea de venta. */ export interface ReceiptLine { name: string; qty: number; unit_price: number; total: number; /** Nota/observación bajo la línea (opcional). */ note?: string; } /** Desglose de un impuesto (p.ej. IVA 21%). */ export interface ReceiptTax { label: string; base: number; amount: number; } /** Datos del cobro. */ export interface ReceiptPayment { method: string; paid?: number; change?: number; } export interface OkReceiptLabels { /** Mensaje cuando no hay datos de tiquet. */ empty: string; /** Prefijo del teléfono del negocio (p.ej. 'Tel.'). */ phone: string; /** Etiqueta del nº de tiquet. */ receipt: string; /** Etiqueta de quien atiende (cajero/a). */ servedBy: string; /** Etiqueta del cliente. */ customer: string; /** Cabecera de columna: concepto/artículo. */ item: string; /** Cabecera de columna: importe. */ amount: string; /** Mensaje cuando no hay líneas. */ noLines: string; /** Etiqueta del subtotal. */ subtotal: string; /** Etiqueta del total. */ total: string; /** Etiqueta del cambio devuelto. */ change: string; } /** JSON completo del tiquet. */ export interface ReceiptData { business: ReceiptBusiness; /** Nº de tiquet/ticket. */ number: string; /** Fecha/hora ya formateada o ISO (se muestra tal cual si es string legible). */ datetime?: string; cashier?: string; customer?: string; lines: ReceiptLine[]; subtotal?: number; taxes?: ReceiptTax[]; total: number; payment?: ReceiptPayment; /** Símbolo de moneda (def. '€'). */ currency?: string; /** Mensaje de pie (gracias / leyenda legal). */ footer?: string; /** Payload del QR (VeriFactu / URL de verificación). Si vacío, no se pinta QR. */ qr?: string; /** Leyenda bajo el QR. */ qr_note?: string; /** QR promocional del negocio (reseñas Google, redes, web). Va SIEMPRE al final, * después del fiscal (que es el legal) y más pequeño. Si vacío, no deja rastro. */ promo_qr?: string; /** Leyenda sobre el QR promocional (p.ej. «Escanea y déjanos una reseña»). */ promo_note?: string; } export declare class OkReceipt extends LitElement { static styles: import("lit").CSSResult; /** JSON del tiquet a renderizar. */ receipt?: ReceiptData; /** Tamaño del QR en px (lado). */ qrSize: number; /** Textos traducibles (merge sobre los defaults en inglés). */ labels: Partial; private get t(); private cur; private money; render(): import("lit-html").TemplateResult<1>; private renderHeader; private renderMeta; private renderLines; private renderTotals; private renderQr; /** QR promocional (reseñas/redes): al final del papel y más pequeño que el fiscal. */ private renderPromo; } declare global { interface HTMLElementTagNameMap { 'ok-receipt': OkReceipt; } }