import type { InternerTransport } from '../client/aufrufe.js'; import type { ReceiptLayout } from '../receipt/layout.js'; import type { PrintLogo } from '../receipt/layout-escpos.js'; /** * Netzwerk-Bondrucker ueber Epson "Server Direct Print": das Backend fuehrt * je Konto Drucker mit einer geheimen Abhol-URL; die Kasse legt Druckjobs * aus einem Zeilenmodell an, der Drucker holt sie selbst ab (alle paar * Sekunden) und meldet das Ergebnis. So druckt jeder Browser -- ohne lokale * Software. Das ePOS-XML baut das Backend aus dem Zeichenraster (ein Setzweg). */ export interface NetworkPrinter { id: string; name: string; /** Art des Druckers; heute nur `epson-sdp`. */ kind: string; paperSize: 'mm58' | 'mm80'; active: boolean; createdAt: number | null; /** Letzter Abruf des Druckers (ms); null = noch nie verbunden. */ lastSeenAt: number | null; lastResult: { success: boolean; code: string | null; at: number; } | null; /** Kennung, die der Drucker selbst schickt (Feld ID im Drucker-Menue). */ printerSerial: string | null; /** Abhol-URL fuer das Drucker-Menue, nur fuer den Chef bzw. das Konto. */ sdpUrl?: string; } /** Stand eines Druckjobs (Katalog `DRUCKJOB`). */ export declare const PRINT_JOB_STATUSES: readonly ["pending", "sent", "printed", "failed", "expired"]; /** * Stand eines Druckjobs; `'unknown'` = der Server nannte einen Stand, den dieses * Paket nicht kennt (oder keinen). Er gilt als Ende der Abfrage (siehe * [isPrintJobFinished]): nie als gedruckt, aber auch kein Abfragen bis zum * Zeitlimit. */ export type PrintJobStatus = typeof PRINT_JOB_STATUSES[number] | 'unknown'; /** Endet die Abfrage bei diesem Stand? `printed`, `failed`, `expired` und `unknown`. */ export declare function isPrintJobFinished(status: PrintJobStatus): boolean; /** * Bekannte Werte fuer `source` (Katalog `DRUCK_QUELLE`): die Kasse oder das * Panel. Der Server nimmt Freitext bis 40 Zeichen an und uebersetzt nur diese * beiden. */ export declare const PRINT_JOB_SOURCES: readonly ["pos", "panel"]; export type PrintJobSource = typeof PRINT_JOB_SOURCES[number] | (string & {}); export interface PrintJob { jobId: string; status: PrintJobStatus; createdAt?: number | null; sentAt?: number | null; result: { success: boolean; code: string | null; status?: string | null; at?: number; } | null; } export declare function listMyPrinters(transport: InternerTransport): Promise; export interface CreatePrintJobOptions { printerId: string; layout: ReceiptLayout; receiptId?: string; title?: string; source?: PrintJobSource; /** Firmenlogo als fertiges Rasterbild (`rasterizeLogo`); der Server dekodiert keine Bilder. */ logo?: PrintLogo | null; /** * Das Kasseneck-Logo am Ende (Konto-Flag `kreiseck_logo`). Heisst wie bei * den Druckwegen (`escPosLayoutBytes`, `eposPrintXml`, `receiptSheet`), damit * dieselben Optionen ueberall wirken; am Draht heisst der Wert `brand`. */ brandMark?: boolean; } export declare function createPrintJob(transport: InternerTransport, o: CreatePrintJobOptions): Promise; /** * Stand eines Druckjobs abfragen. Der Aufrufer fragt, bis [isPrintJobFinished] * wahr ist, und begrenzt die Abfrage trotzdem selbst (Anzahl oder Zeit): ein * Drucker, der nie abholt, bleibt `pending`. */ export declare function getPrintJob(transport: InternerTransport, o: { printerId: string; jobId: string; }): Promise;