import { FetchStateAndError, ID } from '../../../commonStateTypes/common'; import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport'; import { InvoicingInvoice, InvoicingInvoiceKPIs } from '../../../entity/invoicing/invoice/invoiceState'; import { InvoicingListCounts, InvoicingNamedOption } from '../../../entity/invoicing/invoicingCommonPayload'; import { RootState } from '../../../rootStateTypes'; import { InvoiceListFilters, InvoicingInvoiceTabId } from './invoiceListState'; export interface InvoiceListView extends SelectorView { activeTab: InvoicingInvoiceTabId; counts: InvoicingListCounts; countsFetchState: FetchStateAndError; filters: InvoiceListFilters; invoices: InvoicingInvoice[]; kpisFetchState: FetchStateAndError; nextCursor: string | null; /** Config status list; the page labels tabs and row badges from it. */ statusOptions: InvoicingNamedOption[]; tabIds: InvoicingInvoiceTabId[]; kpis?: InvoicingInvoiceKPIs; /** * The invoice whose action is in flight, so the list disables that row * without reaching into the action slice itself. */ runningActionId?: ID; } /** * Bundled read view for the invoices list page: the denormalized invoice rows * plus list counts, KPIs and their fetch states. Memoized so the `invoices` * array (and the wrapping view object) keep referential identity until the * invoice entity slice or the list-view slice actually change. */ export declare const getInvoiceListView: (state: RootState) => InvoiceListView;