import type { VenueEventWithMarkets, VenueMarket, VenueMarketOutcome } from "../../events/item";
import type { EventListProps } from "../../events/list";
import type { IconName } from "../../primitives/icon";
import { EventMarketPageStickyOrderPanelConfig } from "../event-market/event-market.types";
export type HomePageTabValue = string;
export type HomePageTab = {
    value: HomePageTabValue;
    label: string;
    iconName?: IconName;
    search?: EventListProps["search"];
    categoryIds?: EventListProps["categoryIds"];
    disabled?: boolean;
};
export type HomePageEventSectionItem = {
    id?: string;
    title: EventListProps["title"];
    limit?: EventListProps["limit"];
    maxVisibleItems?: EventListProps["maxVisibleItems"];
    search?: EventListProps["search"];
    categoryIds?: EventListProps["categoryIds"];
};
export type HomePageClassNames = Partial<{
    root: string;
    header: string;
    tabs: string;
    sections: string;
}>;
export type HomePageProps = {
    /** Available top-level tabs rendered in the page header. */
    tabs?: HomePageTab[];
    /** Initially selected tab when the page mounts. */
    defaultActiveTab?: HomePageTabValue;
    /** Called when the active tab changes. */
    onTabChange?: (value: HomePageTabValue) => void;
    /** Event list sections rendered for the active tab. */
    eventSectionItems?: HomePageEventSectionItem[];
    /** Class name overrides for page layout slots. */
    classNames?: HomePageClassNames;
    /** Maximum number of categories to request for the category tabs. */
    categoriesLimit?: number;
    /** Label used for the catch-all categories tab. */
    allCategoryTabLabel?: string;
    /** Custom actions rendered in the page header area. */
    actions?: React.ReactNode;
    /**
     * Whether to render the built-in Header with search and logo.
     * Set to `false` when you render the Header yourself in your app layout.
     * @default true
     */
    withHeader?: boolean;
    /**
     * Controlled mode: when provided, clicking an event card calls this callback
     * instead of showing inline event details. Use this when you want to handle
     * navigation externally (e.g., routing to a dedicated event page).
     */
    onEventClick?: (event: VenueEventWithMarkets) => void;
    /**
     * Called when an outcome price badge is clicked. Receives the event, the specific market,
     * and the outcome — use this to navigate to the event with a preselected market and outcome.
     */
    onMarketClick?: (event: VenueEventWithMarkets, market: VenueMarket, outcome: VenueMarketOutcome) => void;
    /**
     * Returns an href for each outcome badge, enabling native browser link behaviors
     * (cmd/ctrl-click → new tab, middle-click → new tab, right-click → "Open in new tab").
     */
    getMarketHref?: (event: VenueEventWithMarkets, market: VenueMarket, outcome: VenueMarketOutcome) => string;
    /**
     * Override handler for when "See all results" is clicked in the search dropdown.
     * When provided, prevents the default inline full-results behavior.
     * Use this when you want to navigate to a search results page instead.
     */
    onSeeAllEvents?: (searchPhrase: string) => void;
    /**
     * Returns an href for each event card, enabling native browser link behaviors
     * (cmd/ctrl-click → new tab, middle-click → new tab, right-click → "Open in new tab").
     * When omitted, event cards render as div elements (current behavior).
     */
    getEventHref?: (event: VenueEventWithMarkets) => string;
    /** Sticky order panel behavior configuration. */
    stickyOrderPanel?: EventMarketPageStickyOrderPanelConfig;
};
export type HomePageCategory = {
    id: string;
    name: string;
    displayName?: string | null;
};
