import { FetchStateAndError, ID } from '../../../commonStateTypes/common'; import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport'; import { InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingListCounts } from '../../../entity/invoicing/invoicingCommonPayload'; import { InvoicingPlan } from '../../../entity/invoicing/plan/planState'; import { InvoicingProduct } from '../../../entity/invoicing/product/productState'; import { RootState } from '../../../rootStateTypes'; import { InvoicingListSort } from '../invoicingApiHelper'; import { InvoicingCatalogPlanFilters, InvoicingCatalogProductFilters, InvoicingProductColumnConfig } from './invoicingCatalogListViewState'; export interface InvoicingCatalogListView extends SelectorView { /** Config-owned; folded in so the screen reads one selector. */ catalogItemLifecycleActionOptions: InvoicingCatalogLifecycleActionOption[]; count: InvoicingListCounts; countsFetchState: FetchStateAndError; planFilters: InvoicingCatalogPlanFilters; planNextCursor: string | null; plans: InvoicingPlan[]; productColumns: InvoicingProductColumnConfig[]; productFetchState: FetchStateAndError; productFilters: InvoicingCatalogProductFilters; productNextCursor: string | null; products: InvoicingPlan[]; planSort?: InvoicingListSort; productSort?: InvoicingListSort; /** * The catalog item whose lifecycle action is in flight, so the list disables * that row's menu without reaching into the action slice itself. */ runningActionId?: ID; } export declare const getInvoicingCatalogPrices: (items: InvoicingPlan[]) => InvoicingProduct[]; /** * Bundled read view for the single catalog page (plans + products tabs). * Memoized over the plan + product entity slices and the list-view slice so the * denormalized arrays keep referential identity. The base `fetchState`/`error` * track the plan list; the product list has its own `productFetchState`. */ export declare const getInvoicingCatalogListView: (state: RootState) => InvoicingCatalogListView;