/** * Canonical voucher status values, as the Lexware API spells them. * * The API is inconsistent about casing across endpoints and returns the status * under `status` on some responses and `voucherStatus` on others, so both the * values it returns and the values a caller filters on are folded to one form * before anything compares them. Without that, a filter for "Open" silently * matches nothing — the worst failure shape here, since an empty result set * looks like a legitimate answer. */ export declare const VOUCHER_STATUSES: readonly ["unchecked", "open", "paid", "paidoff", "voided", "transferred", "sepadebit"]; /** * Fold a status to canonical form. * * Deliberately does NOT validate against VOUCHER_STATUSES. That list is what * Lexware documents today; a status added later must still fold to something that * compares sensibly on both sides rather than throwing on a value the API itself * considers valid. */ export declare function normalizeVoucherStatus(status: string): string; /** * SQL-style wildcard match: `%` is any run of characters, `_` exactly one. * Case-insensitive. * * Implemented as an O(m×n) dynamic program rather than by translating the pattern * into a RegExp. The pattern is caller-supplied, and a translated `%`-heavy pattern * is exactly the shape that backtracks catastrophically — this cannot, since each * cell is computed once. */ export declare function wildcardMatch(pattern: string, text: string): boolean; /** * Read a voucher's status from either field name, fold it, and write it back under * the canonical `voucherStatus` key — dropping the `status` alias so a caller never * has to decide which of two disagreeing fields to trust. * * Mutates and returns the same object: the response is freshly deserialized per * request and not shared, and copying whole voucher payloads to change one key * would be wasteful. */ export declare function normalizeVoucherResponse(voucher: Record): Record;