import type { MarketStatus, VenueEventWithMarkets, VenueMarket, VenueMarketOutcome } from "@agg-build/hooks";
export type { VenueEventWithMarkets, VenueMarket, VenueMarketOutcome };
export type EventListItemEvent = VenueEventWithMarkets;
export type EventListItemVenueInfo = {
    label?: string;
};
export type EventListItemVenueInfoMap = Partial<Record<VenueMarket["venue"], EventListItemVenueInfo>>;
export type EventListItemClassNames = Partial<{
    root: string;
    header: string;
    title: string;
    outcomes: string;
    outcomeRow: string;
    footer: string;
    badge: string;
}>;
export type EventListItemBaseProps = {
    /** Whether the item should render its loading skeleton state. */
    isLoading?: boolean;
    /** Class name overrides for item layout slots. */
    classNames?: EventListItemClassNames;
    /** Venue metadata used to enrich venue labels in the card. */
    venueInfo?: EventListItemVenueInfoMap;
    /** Optional arbitrage values keyed by outcome ID for badge rendering. */
    arbitrageByOutcomeId?: Record<string, number | undefined>;
    /** Live midpoint-derived prices keyed by outcome ID. */
    midpointPrices?: Map<string, number>;
    /** Shared midpoint rows keyed by venueMarketId/matched rows for price-gap display. */
    midpointRows?: readonly unknown[];
    /** True while midpoints are being fetched — show skeleton on price badges. */
    midpointsLoading?: boolean;
    /** Called when the event card body is clicked. */
    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 market outcome badge. Used for native browser link behaviors on badge modifier-clicks. */
    getMarketHref?: (event: VenueEventWithMarkets, market: VenueMarket, outcome: VenueMarketOutcome) => string;
    /** When provided, the card renders as an `<a>` element, enabling native browser link behaviors (cmd/ctrl-click, middle-click, right-click → open in new tab). */
    href?: string;
    /** Accessible label applied to the clickable card element. */
    ariaLabel?: string;
    /** When set, scopes the lazy market fetch (used to expand the card chips beyond the inline set) to markets matching this status. The parent list passes its own status filter so the expanded chips stay consistent with the listing. */
    marketStatus?: MarketStatus;
};
export type EventListItemLoadingProps = EventListItemBaseProps & {
    /** Forces the component into its loading state. */
    isLoading: true;
    /** Prevents passing a resolved event while loading. */
    event?: never;
    /** Optional event ID used to derive loading-state cache context. */
    eventId?: string;
};
export type EventListItemWithEventProps = EventListItemBaseProps & {
    /** Fully resolved event rendered by the list item. */
    event: EventListItemEvent;
    /** Optional explicit event ID override. */
    eventId?: string;
    /** Marks the item as loaded when event data is present. */
    isLoading?: false;
};
export type EventListItemWithEventIdProps = EventListItemBaseProps & {
    /** Prevents passing a full event object in ID-driven mode. */
    event?: never;
    /** Event ID used to fetch or resolve the item data. */
    eventId: string;
    /** Marks the item as loaded when ID-driven fetching is used. */
    isLoading?: false;
};
export type EventListItemProps = EventListItemLoadingProps | EventListItemWithEventProps | EventListItemWithEventIdProps;
export type EventListItemContentProps = EventListItemBaseProps & {
    /** Resolved event content rendered by the presentational item body. */
    event: EventListItemEvent;
    /** Live midpoint-derived prices keyed by outcome ID. */
    midpointPrices?: Map<string, number>;
    /** Shared midpoint rows keyed by venueMarketId/matched rows for price-gap display. */
    midpointRows?: readonly unknown[];
};
