/** * Leser der Lager-Antworten: aus dem Draht `/v3` werden die Modelle in * `typen.ts`. Paketintern, nicht Teil der Oberflaeche. * * Regel wie beim Lager an der Kasse (`pos/lager.ts`): eine Menge, ein Betrag * oder eine Folgenummer ist eine Ganzzahl, sonst endet der Aufruf mit * `KasseneckValidationError` (`scope: 'response'`). Ein Ersatzwert wie `0` * waere eine falsche Aussage („kein Bestand“ statt „Antwort kaputt“). Texte * sind nachsichtiger: ein fehlender oder fremder Wert wird `null`. * * Optionale Felder (Einkaufswerte, `externalIds` …) erscheinen im Modell nur, * wenn der Server sie sendet: „fehlt“ heisst dort „kein Recht“, nicht „leer“. */ import { KasseneckValidationError } from '../client/errors.js'; import type { Article, GoodsReceiptPreviewLine, InventoryShortfall, InventoryWebhook, InventoryWebhookDelivery, InventoryWebhookTestDelivery, Location, Reservation, StockBelowMinimumEventData, StockChangedEventData, StockLevel, StockMovement, StockOperation, StockValue, Stocktake, StocktakeCount, StocktakeCountResult, StocktakeItem, StocktakePdfDownload, StocktakeWarning, VariantGroup } from './typen.js'; type Roh = Record; /** Ein Leser bekommt den Vorgang (fuer die Meldung) und den Pfad im Rumpf. */ export interface Ort { name: string; pfad: string; } export declare function antwortfehler(name: string, grund: string): KasseneckValidationError; export declare function objekt(w: unknown): Roh | null; export declare function artikel(ort: Ort, w: unknown): Article; export declare function standort(ort: Ort, w: unknown): Location; export declare function bestand(ort: Ort, w: unknown): StockLevel; export declare function wert(ort: Ort, w: unknown): StockValue; export declare function bewegung(ort: Ort, w: unknown): StockMovement; export declare function webhook(ort: Ort, w: unknown): InventoryWebhook; export declare function zustellung(ort: Ort, w: unknown): InventoryWebhookDelivery; export declare function probeZustellung(ort: Ort, w: unknown, webhookId: string): InventoryWebhookTestDelivery; export declare function bestandGeaendert(ort: Ort, w: unknown): StockChangedEventData; export declare function unterMindestbestand(ort: Ort, w: unknown): StockBelowMinimumEventData; /** Antwort einer Buchung; ohne `operationId` ist nicht belegt, dass gebucht wurde. */ export declare function vorgang(name: string, daten: unknown): StockOperation; /** Eine Zeile der Wareneingangs-Vorschau; Werte nur, wenn der Server sie sendet (Recht `costs`). */ export declare function vorschauZeile(ort: Ort, w: unknown): GoodsReceiptPreviewLine; export declare function reservierung(ort: Ort, w: unknown): Reservation; /** Die fehlenden Positionen aus `insufficient_available` (`data.details[]`); ein kaputter Eintrag faellt weg. */ export declare function fehlmengen(roh: unknown): InventoryShortfall[]; /** * Eine Variantengruppe. `attributes` und `variants` sind zugesagte Listen: * fehlen sie, ist die Antwort kaputt (eine leere Liste hiesse „keine Merkmale“ * bzw. „keine Varianten“). */ export declare function variantengruppe(ort: Ort, w: unknown): VariantGroup; /** Hinweise einer Inventur; fehlt die Liste, gibt es keine. */ export declare function inventurWarnungen(ort: Ort, w: unknown): StocktakeWarning[]; /** * Kopf einer Inventur. Was erst nach dem Abschluss kommt (Summen, Hinweise, * Siegel, Pruefsumme, Protokoll), steht im Modell nur, wenn der Server es * sendet; Werte nur mit dem Kosten-Recht. */ export declare function inventur(ort: Ort, w: unknown): Stocktake; /** * Eine Position. Soll, Differenz und alles aus Pruefung und Abschluss stehen * im Modell nur, wenn der Server sie sendet (blind: vor `review` nie). */ export declare function inventurPosition(ort: Ort, w: unknown): StocktakeItem; /** Eine Zaehlung: Menge, Runde und Kennungen muessen da sein. */ export declare function inventurZaehlung(ort: Ort, w: unknown): StocktakeCount; /** Antwort von Zaehlen und Stornieren: beide Teile sind zugesagt. */ export declare function zaehlungMitPosition(name: string, daten: unknown): StocktakeCountResult; /** Lese-Link auf ein grosses Inventurprotokoll; ohne Adresse, Ablauf, Groesse oder Pruefsumme ist er unbrauchbar. */ export declare function protokollLink(name: string, w: unknown): StocktakePdfDownload; /** Eine zugesagte Liste `data.`, Eintrag fuer Eintrag gelesen. */ export declare function liste(name: string, daten: unknown, feld: string, lesen: (ort: Ort, e: unknown) => T): T[]; /** Der Cursor der naechsten Seite; `null` am Ende. Etwas anderes als Text oder `null` ist kaputt. */ export declare function naechsterCursor(name: string, daten: unknown): string | null; export {};