import { InvoicingNamedOption } from '../../entity/invoicing/invoicingCommonPayload'; export interface InvoicingTabIdsFromConfigParams { /** * The `as const` id set that backs the tab-id union. Used as the fallback * before config lands, so the tabs are never empty on first paint. */ allTabIds: readonly TabId[]; /** The config status/type list that decides membership and order. */ statusOptions: InvoicingNamedOption[] | undefined; /** * FE-derived tabs that are not backend statuses and so never appear in config * (the customer list's `trial` / `at_risk`, the discount list's `inactive`). * Appended after the config-driven ids, preserving today's display order. */ localTabIds?: readonly TabId[]; } /** * Build a list's filter-tab ids from the config option list rather than a * hardcoded array, so adding a status backend-side widens the tabs. * * `all` always leads and is never taken from config. Codes config sends that the * tab-id union does not know still render: the union types state, the per-tab * cache and URL parsing, but it is a frontend snapshot of a backend enum, and * dropping unknown codes would silently hide a status the backend already has — * the exact drift this is meant to end. */ export declare function invoicingTabIdsFromConfig({ allTabIds, localTabIds, statusOptions, }: InvoicingTabIdsFromConfigParams): TabId[];