import type { AggUiLabels, VenueMarket, VenueMarketOutcome } from "@agg-build/hooks";
import type { EventListItemEvent, EventListItemVenueInfoMap, VenueEventWithMarkets } from "./event-list-item.types";
export declare const resolveEventListItemEvent: (fetchedEvent: VenueEventWithMarkets | undefined) => EventListItemEvent | undefined;
export declare const normalizeProbability: (value: number | null | undefined) => number | undefined;
export declare const isYesLabel: (label: string) => boolean;
export declare const resolveYesOutcome: (market: Pick<VenueMarket, "venueMarketOutcomes">) => VenueMarketOutcome | undefined;
export declare const resolveYesOutcomeProbability: (market: Pick<VenueMarket, "venueMarketOutcomes">) => number | undefined;
export declare const formatMarketProbabilityPercent: (value: number | null | undefined, formatPercent?: (value: number) => string) => string;
export declare const formatPriceGapPercent: (value: number | null | undefined) => string | undefined;
export declare const sortOutcomes: (outcomes: VenueMarketOutcome[]) => VenueMarketOutcome[];
export type EventListItemVisibleOutcome = {
    venue: VenueMarket["venue"];
    market: VenueMarket;
    outcome: VenueMarketOutcome;
    title: string;
};
export declare const resolveVisibleOutcomes: (venueMarkets: VenueMarket[]) => EventListItemVisibleOutcome[];
export declare const dedupeVenueMarketsById: (venueMarkets: VenueMarket[]) => VenueMarket[];
/** Returns the outcome's display text. Prefers `title` (the descriptive
 *  human-readable text — e.g. "Trump Wins") when present and non-empty,
 *  falls back to `label` (the canonical short identifier — e.g. "Yes").
 *  For semantic checks (isYesLabel, sort keys, lookup keys) keep using
 *  `outcome.label` directly — never this helper. */
export declare const resolveOutcomeTitle: (outcome: VenueMarketOutcome) => string;
export declare const selectPrimaryVenueMarket: (venueMarkets: VenueMarket[]) => VenueMarket | undefined;
export declare const resolveTileTitle: (event: VenueEventWithMarkets, primaryVenueMarket: VenueMarket | undefined, titleOverride: string | undefined) => string;
export declare const resolveTileImage: (event: VenueEventWithMarkets, primaryVenueMarket: VenueMarket | undefined, imageOverride: string | null | undefined) => string | undefined;
export declare const formatCountLabel: (count: number, singular: string, plural: string) => string;
export declare const getVenueSummary: (venueMarkets: VenueMarket[]) => {
    marketCount: number;
    venueCount: number;
    singleVenue: import("@agg-build/hooks").Venue | undefined;
};
export declare const resolveVenueLabel: (venue: VenueMarket["venue"] | undefined, venueInfo: EventListItemVenueInfoMap | undefined, labels: AggUiLabels) => string;
type DisplayVolumeMarket = {
    id: string;
    venue: string;
    volume?: number | null;
    matchedVenueMarkets?: readonly DisplayVolumeMarket[] | null;
    matchEntry?: {
        targetVenueMarketId?: string | null;
        targetVenueMarket?: DisplayVolumeMarket | null;
    } | null | undefined;
};
export declare const resolveDisplayVolume: (eventVolume: number | null | undefined, venueMarkets: ReadonlyArray<DisplayVolumeMarket>) => number | undefined;
export {};
