/**
 * InfiniteHits Component
 *
 * Displays search results with infinite scroll or "Show More" button
 * Accumulates results as user loads more pages
 */
import React from 'react';
import type { ResultItem, FieldMapping } from '@seekora-ai/ui-sdk-types';
export interface InfiniteHitsTheme {
    root?: string;
    list?: string;
    item?: string;
    loadMore?: string;
    loadMoreDisabled?: string;
    empty?: string;
    sentinel?: string;
}
export interface InfiniteHitsProps {
    /** Custom render function for each hit */
    renderHit?: (hit: ResultItem, index: number) => React.ReactNode;
    /** Custom render for empty state */
    renderEmpty?: () => React.ReactNode;
    /** Custom render for "Show More" button */
    renderShowMore?: (props: {
        isLoading: boolean;
        isLastPage: boolean;
        onClick: () => void;
    }) => React.ReactNode;
    /** Whether to show the "Show More" button (default: true) */
    showMoreButton?: boolean;
    /** Whether to use infinite scroll with IntersectionObserver (default: false) */
    useInfiniteScroll?: boolean;
    /** Threshold for IntersectionObserver (default: 0.1) */
    scrollThreshold?: number;
    /** Field mapping for extracting data from hits */
    fieldMapping?: FieldMapping;
    /** Text for "Show More" button */
    showMoreLabel?: string;
    /** Callback when a hit is clicked */
    onHitClick?: (hit: ResultItem, index: number) => void;
    /** Custom className */
    className?: string;
    /** Custom styles */
    style?: React.CSSProperties;
    /** Custom theme */
    theme?: InfiniteHitsTheme;
    /** Whether to sync with SearchStateManager (default: true) */
    syncWithState?: boolean;
}
export declare const InfiniteHits: React.FC<InfiniteHitsProps>;
//# sourceMappingURL=InfiniteHits.d.ts.map