import { type MutableRefObject } from "react";
import { type TabsOverflowBehavior } from "../../primitives/tabs";
import type { EventListTab, EventListTabValue } from "./event-list.types";
export { useHorizontalScrollState } from "../../shared/use-horizontal-scroll-state";
export type { UseHorizontalScrollStateResult } from "../../shared/use-horizontal-scroll-state";
export type EventListTabsProps = {
    /** Override the canonical tab list. Disabled-venue filtering is still applied. */
    tabs?: EventListTab[];
    /** Currently selected tab value. */
    activeTab: EventListTabValue;
    /** Called when the active tab changes (including auto-fallback when the active tab disappears). */
    onTabChange: (value: EventListTabValue) => void;
    /** Accessible label forwarded to the underlying Tabs primitive. */
    ariaLabel?: string;
    /** Custom class name applied to the Tabs root. */
    className?: string;
    /** Behavior used when tabs overflow horizontally. */
    overflowBehavior?: TabsOverflowBehavior;
};
/**
 * Returns the canonical event list tabs, filtered by the partner's `disabledVenues`.
 * Use when a parent needs to read tab metadata (e.g., to derive `venues` /
 * `matchStatus` for a query) and still wants the same list rendered by `EventListTabs`.
 */
export declare const useEventListTabs: (tabs?: EventListTab[]) => EventListTab[];
/**
 * Canonical event list tab control. Renders the same tab list, icons,
 * ordering, and active styling everywhere event list tabs appear.
 */
export declare const EventListTabs: {
    ({ tabs, activeTab, onTabChange, ariaLabel, className, overflowBehavior, }: EventListTabsProps): JSX.Element;
    displayName: string;
};
export type EventListTabsHeaderOverflowResult<THeader extends HTMLElement, TTitle extends HTMLElement> = {
    headerRef: MutableRefObject<THeader | null>;
    titleRef: MutableRefObject<TTitle | null>;
    shouldUseSelectOverflow: boolean;
};
/**
 * Detects when the title + tabs row no longer fits and returns
 * `shouldUseSelectOverflow` so the consumer can switch the canonical
 * `EventListTabs` to its select fallback. Wire `headerRef` to the row
 * element and `titleRef` to the title element. Pass `recomputeOn` (e.g.
 * the resolved tab list) to re-measure when tab content changes.
 */
export declare const useEventListTabsHeaderOverflow: <THeader extends HTMLElement = HTMLElement, TTitle extends HTMLElement = HTMLElement>(recomputeOn?: unknown, options?: {
    /** Force select fallback when available tabs inline width drops below this threshold. */
    minTabsInlineWidthForSelect?: number;
    /** Whether natural tab overflow should switch to select. Default true for legacy behavior. */
    preferSelectOnOverflow?: boolean;
}) => EventListTabsHeaderOverflowResult<THeader, TTitle>;
