import { FetchStateAndError, FetchedState, ID } from '../../../commonStateTypes/common'; import { InvoicingListCounts } from '../../../entity/invoicing/invoicingCommonPayload'; import { InvoicingListSort } from '../invoicingApiHelper'; export interface InvoicingCouponFilters { search?: string; } export declare const ALL_INVOICING_COUPON_SORT_KEYS: readonly ["code", "coupon", "discount", "duration", "created", "valid_till", "apply_on", "status", "redemptions"]; export declare const toInvoicingCouponSortKey: (v: string) => "code" | "status" | "discount" | "coupon" | "duration" | "created" | "valid_till" | "apply_on" | "redemptions"; export type InvoicingCouponSortKey = ReturnType; /** * Structural column descriptor owned by CES so the discounts-list column set, * ordering and sortability live next to the `InvoicingCoupon` model rather than * being hardcoded in web-components. Header labels, cell rendering and layout * (alignment, widths) stay in the view layer; this only carries the column set, * order and sort metadata. */ export interface InvoicingCouponColumnConfig { key: InvoicingCouponSortKey; sortable: boolean; } export declare const INVOICING_COUPON_COLUMNS: InvoicingCouponColumnConfig[]; export declare const ALL_INVOICING_COUPON_TAB_IDS: readonly ["all", "active", "inactive"]; export declare const toInvoicingCouponTabId: (v: string) => "active" | "inactive" | "all"; export type InvoicingCouponTabId = ReturnType; export interface InvoicingCouponViewState extends FetchedState { /** Selected status tab (CES-owned so it persists across page revisits). */ activeTab: InvoicingCouponTabId; counts: InvoicingListCounts; countsFetchState: FetchStateAndError; filters: InvoicingCouponFilters; ids: ID[]; nextCursor: string | null; sort?: InvoicingListSort; }