import { type Receipt, type ReceiptCompany, type ReportMonth } from '../models/index.js'; import type { InternerBinaerTransport, InternerTransport } from './aufrufe.js'; /** * Bericht-Downloads — Zwilling von `downloadDailyReport`/`downloadMonthlyReport` * in kasseneck_api/lib/kasseneck_api.dart (Zeilen 113-128). * * **Beide liefern ein PDF, also Binaerdaten.** Das Flutter-Vorbild liest die * Antwort als Zeichenkette und nimmt davon `codeUnits`; in JavaScript waere das * schlicht falsch — `response.text()` deutet die Bytes als UTF-8 und ersetzt * jedes Byte ueber 0x7F durch U+FFFD. Ein so "heruntergeladener" Tagesbericht * liesse sich in keinem Betrachter oeffnen. Dieses Paket weicht daher bewusst * ab: es liest `arrayBuffer()` und liefert `Uint8Array` (siehe * [createBinaryTransport] in transport.ts). * * **Kassen-Benutzer-Weg (`registerUserAuth`, Browser-Kasse):** Keiner der * beiden Download-Endpunkte setzt `allowRegisterUser`; sie funktionieren nur * mit `apiKeyAuth`. Dieses Paket bildet das **nicht** nach; wer darf, * entscheidet allein das Backend. Der Hinweis steht hier, damit ein Leser * nicht raten muss. */ /** * Tagesbericht als PDF. * * Der Kalendertag wird nach **Wiener** Wanduhrzeit bestimmt, nicht nach der * Zeitzone des ausfuehrenden Rechners: der Geschaeftstag ist ein * oesterreichischer Kalenderwert. Ein Zeitpunkt vom 1. Maerz 00:30 Wiener Zeit * gehoert in den Tagesbericht vom 1. Maerz — die eingebauten * `getDate()`/`getMonth()` wuerden auf einer UTC-Maschine den Bericht des * Vortags holen (das Dart-Vorbild nimmt hier die Geraetezeit, was auf einer * oesterreichischen Kasse zufaellig stimmt). * * @deprecated Since 1.10.0: use getCashregisterReport(...). The old endpoint keeps working * (closed periods as v2, current month / today as before) until it is switched off. */ export declare function downloadDailyReport(transport: InternerBinaerTransport, date: Date): Promise; /** * Monatsbericht als PDF. * * **Der Endpunkt heisst `downloadReport`**, nicht `downloadMonthlyReport` — * Methodenname und Endpunktname fallen hier auseinander (so im Dart-Vorbild und * so im Backend, `report-endpoints.js`). * * `month` geht als **Zahl 1-12** raus (im Flutter-Paket `reportMonth.month.id`, * wo `KeckMonth.january.id === 1` ist) — kein Name, kein nullbasierter Index. * * @deprecated Since 1.10.0: use getCashregisterReport(...). The old endpoint keeps working * (closed periods as v2, current month / today as before) until it is switched off. */ export declare function downloadMonthlyReport(transport: InternerBinaerTransport, reportMonth: ReportMonth): Promise; /** Zeitraum fuer [getCashregisterReport]: genau eine der drei Formen. */ export type CashregisterReportPeriod = { year: number; month: number; } | { year: number; month: number; day: number; } | { start: string; end: string; }; /** * Kassenbericht als PDF (v2) fuer einen abgeschlossenen Monat, einen * abgeschlossenen Tag (gestern oder frueher) oder einen Zeitraum (`end` * ausschliesslich, hoechstens 366 Tage). Laufender Monat und heutiger Tag * liefern `period_not_closed`, die Zukunft `period_in_future`. Nachfolger von [downloadMonthlyReport] und * [downloadDailyReport]. */ export declare function getCashregisterReport(transport: InternerBinaerTransport, options: CashregisterReportPeriod): Promise; /** Zeitfenster von [getReportV2]: Wiener Wanduhr, `YYYY-MM-DD` oder voller Zeitstempel, `end` ausschliesslich. */ export interface ReportV2Options { start: string; end: string; } /** Firmendaten des Berichts: die Beleg-Firmendaten plus die Bezeichnung der Kasse. */ export interface ReportV2Metadata extends ReceiptCompany { /** Bezeichnung der Kasse; leer, wenn keine gepflegt ist. */ label: string; } export interface ReportV2 { /** Alle Belege der angemeldeten Kasse mit `start <= timeStamp < end`. */ receipts: Receipt[]; metadata: ReportV2Metadata; } /** * Rohdaten eines Zeitraums (`getReportV2`): alle Belege der Kasse und die * Firmendaten fuer Kopf und Fuss. Der Server vergleicht die Zeitstempel als * Text (`start <= timeStamp < end`), darum Wiener Wanduhr im Serverformat. * Nur ueber den API-Schluessel-Weg (Kasse aus dem `cashregister-token`). */ export declare function getReportV2(transport: InternerTransport, options: ReportV2Options): Promise;