import { Contact, Customer, AttributeFilter } from '@propeller-commerce/propeller-sdk-v2'; import { Availability } from '@propeller-commerce/propeller-v2-core-ui'; export interface GridFiltersProps { /** Currency symbol shown in the price-range inputs. Resolved from when omitted; defaults to '€'. */ currency?: string; /** * Attribute filter definitions from the ProductGrid API response. * Each entry describes one filterable attribute (e.g. colour, brand, size). */ filters: AttributeFilter[]; /** * Price bounds { min, max } from the current product set. * When absent the price section is hidden. */ priceMin?: number; priceMax?: number; /** Language code. Defaults to 'NL'. */ language?: string; /** Notification called after every filter change. */ getSelectedFilters?: () => void; /** * Called on every checkbox toggle. * `filter` is the AttributeFilter; `value` is the toggled option string. */ onFilterChange: (filter: AttributeFilter, value: string | number) => void; /** * Called when the price range changes (on blur / slider release). */ onPriceChange?: (minPrice: number, maxPrice: number) => void; /** Called when "Clear all" is clicked. */ onClearFilters?: () => void; /** Enable mobile-specific behaviour (drops sticky positioning). */ isMobile?: boolean; /** * 'open' — show price filter for all users. * 'semi-closed' — hide price filter for unauthenticated users. */ portalMode?: string; /** Authenticated user — price filter visibility depends on this in semi-closed mode. */ user?: Contact | Customer | null; /** * Whether filter accordions start collapsed. * Defaults to true. */ collapsed?: boolean; /** Increment this counter to reset all selected filters and price inputs externally. */ clearSignal?: number; /** Currently active text filters (URL-driven). Syncs internal checkbox state when filters are removed externally. */ activeTextFilters?: Record; /** Currently active price filter range (URL-driven). When undefined, resets price inputs to bounds. */ activePriceMin?: number; activePriceMax?: number; /** * Show the availability (stock) section. Defaults to false so hosts opt in * rather than gaining a new filter section on upgrade. * * The host should pass its own "show stock" setting here — a stock filter * is meaningless when no stock is displayed anywhere in the grid. When * truthy the section is still subject to the same semi-closed-portal * visibility rule as the price filter (hidden for anonymous users). */ showAvailabilityFilter?: boolean; /** * Currently active availability selection (URL-driven). Seeds the toggle * on the first render so a restored filtered URL renders it correctly. */ activeAvailability?: Availability; /** Currently active minimum stock quantity (URL-driven). Undefined means the minimum. */ activeMinStock?: number; /** Called on every toggle or stepper change with both values. */ onAvailabilityChange?: (sel: Availability, minStock: number) => void; /** * When true, all checkboxes and price inputs are disabled. * Wire to ProductGrid's `onLoadingChange` to block rapid re-clicks while a fetch is in flight. */ isLoading?: boolean; /** Extra CSS class on the root element. */ className?: string; /** Translated labels keyed by the slugs used inside the component (see * `getLabel` calls). Missing keys fall back to the English defaults. */ labels?: Record; } declare const _default: import('vue').DefineComponent & Readonly<{}>, { collapsed: boolean; showAvailabilityFilter: boolean; }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>; export default _default;