import { FetchStateAndError, FetchedState, ID } from '../../../commonStateTypes/common'; import { InvoicingListCounts } from '../../../entity/invoicing/invoicingCommonPayload'; import { InvoicingListSort } from '../invoicingApiHelper'; export declare const ALL_INVOICING_PRODUCT_SORT_KEYS: readonly ["product_name", "product_code", "type", "pricing", "usage", "updated", "status"]; export declare const toInvoicingProductSortKey: (v: string) => "type" | "status" | "product_name" | "product_code" | "pricing" | "usage" | "updated"; export type InvoicingProductSortKey = ReturnType; /** * Structural column descriptor owned by CES for the catalog product table * (add-ons / one-time charges), so the column set, order and sortability live * next to the `InvoicingProduct` model rather than being hardcoded in * web-components. Header labels, cell rendering and layout (alignment, widths) * stay in the view layer. (The plans table keeps its own columns in web-c.) */ export interface InvoicingProductColumnConfig { key: InvoicingProductSortKey; sortable: boolean; } export declare const INVOICING_PRODUCT_COLUMNS: InvoicingProductColumnConfig[]; export interface InvoicingCatalogPlanFilters { search?: string; status?: string; type?: string; } export interface InvoicingCatalogProductFilters { search?: string; status?: string; type?: string; } /** * One catalog page renders plans and products as tabs, so this single list view * holds both lists (the base `fetchState`/`error` track the plan list; the * product list has its own `productFetchState`) plus shared counts. */ export interface InvoicingCatalogListViewState extends FetchedState { counts: InvoicingListCounts; countsFetchState: FetchStateAndError; planFilters: InvoicingCatalogPlanFilters; planIds: ID[]; planNextCursor: string | null; productFetchState: FetchStateAndError; productFilters: InvoicingCatalogProductFilters; productIds: ID[]; productNextCursor: string | null; /** Active server-side sort for the plans list (undefined = backend default). */ planSort?: InvoicingListSort; /** Active server-side sort for the products list (undefined = backend default). */ productSort?: InvoicingListSort; }