/**
 * Facets Component
 *
 * Displays facet filters for search results with multiple display variants,
 * client-side search, count badges, and color swatch support.
 */
import React from 'react';
import type { SearchResponse } from '@seekora-ai/search-sdk';
export interface FacetItem {
    value: string;
    count: number;
    selected?: boolean;
}
export interface FacetStats {
    min: number;
    max: number;
    avg?: number;
    sum?: number;
}
export interface FacetRangeItem {
    label: string;
    from?: number;
    to?: number;
}
export interface FacetRangeConfig {
    field: string;
    ranges: FacetRangeItem[];
}
export interface Facet {
    field: string;
    label?: string;
    items: FacetItem[];
    stats?: FacetStats;
}
export interface FacetsTheme {
    container?: string;
    facet?: string;
    facetHeader?: string;
    facetTitle?: string;
    facetList?: string;
    facetItem?: string;
    facetItemActive?: string;
    facetItemCount?: string;
    facetItemLabel?: string;
    checkbox?: string;
    /** Color swatch circle/square */
    colorSwatch?: string;
    /** Color swatch when selected */
    colorSwatchSelected?: string;
    /** Inner element of color swatch (for checkmark overlay) */
    colorSwatchInner?: string;
    /** Search input within a facet group */
    searchInput?: string;
    /** Collapsible header row */
    collapsibleHeader?: string;
    /** Chevron/expand icon in collapsible header */
    collapsibleIcon?: string;
    /** Count badge pill */
    countBadge?: string;
    /** Range button (pre-configured range option) */
    rangeButton?: string;
    /** Active range button */
    rangeButtonActive?: string;
    /** Count badge on range button */
    rangeButtonCount?: string;
    /** Clear button for range filters */
    rangeClear?: string;
}
export type FacetVariant = 'checkbox' | 'color-swatch' | 'collapsible';
export type FacetSize = 'small' | 'medium' | 'large';
export interface FacetsProps {
    /** Search results response */
    results?: SearchResponse | null;
    /** Custom facets data */
    facets?: Facet[];
    /** Callback when facet is selected/deselected */
    onFacetChange?: (field: string, value: string, selected: boolean) => void;
    /** Custom render function for facet */
    renderFacet?: (facet: Facet, index: number) => React.ReactNode;
    /** Custom render function for facet item */
    renderFacetItem?: (item: FacetItem, facet: Facet, index: number) => React.ReactNode;
    /** Maximum number of items to show per facet */
    maxItems?: number;
    /** Show "Show more" button */
    showMore?: boolean;
    /** Custom className */
    className?: string;
    /** Custom styles */
    style?: React.CSSProperties;
    /** Custom theme */
    theme?: FacetsTheme;
    /** Display variant: checkbox (default), color-swatch, or collapsible */
    variant?: FacetVariant;
    /** When true, show a search input at the top of each facet group */
    searchable?: boolean;
    /** Show count badges (default: true) */
    showCounts?: boolean;
    /** Maps facet values to CSS colors (used by color-swatch variant) */
    colorMap?: Record<string, string>;
    /** For collapsible variant, whether facets start collapsed (default: false) */
    defaultCollapsed?: boolean;
    /** Size preset: small, medium (default), or large */
    size?: FacetSize;
    /** Pre-configured range button definitions for numeric facets */
    facetRanges?: FacetRangeConfig[];
    /** Use dedicated Filters API instead of extracting facets from search results */
    useFiltersApi?: boolean;
    /** Fields that should use disjunctive (OR) faceting (only with useFiltersApi) */
    disjunctiveFacets?: string[];
    /** Hide facets that have no selectable values (default: true) */
    hideEmptyFacets?: boolean;
    /** Fields that should start collapsed (collapsible variant only). Overrides defaultCollapsed for listed fields. */
    defaultCollapsedFields?: string[];
    /** Callback fired when facet availability changes. Receives true when facets are available, false when empty. */
    onFacetsAvailable?: (available: boolean) => void;
}
export declare const Facets: React.FC<FacetsProps>;
//# sourceMappingURL=Facets.d.ts.map