import type { VenueEventWithMarkets } from "../../events/item/event-list-item.types";
import type { PlaceOrderResolvedClaimSummary } from "../../trading";
export type EventMarketPageClassNames = Partial<{
    root: string;
    content: string;
    main: string;
    sidebar: string;
    hero: string;
    markets: string;
    settlement: string;
    trade: string;
    tradeBody: string;
    tradeHeader: string;
    tradeContent: string;
    tradeFooter: string;
    mobileTrade: string;
    mobileTradeBody: string;
    mobileTradeHeader: string;
    mobileTradeContent: string;
    mobileTradeFooter: string;
    mobileTradeCta: string;
    mobileTradeModal: string;
}>;
export type EventMarketPageStickyOrderPanelConfig = {
    /** Enable sticky order panel */
    enabled?: boolean;
    /** Extend or override desktop sticky classes for the order panel rail. */
    className?: string;
    /** Sticky top offset in px when a number is provided, or a raw CSS length value. */
    top?: number | string;
    /**
     * Optional desktop breathing space below the sticky rail viewport.
     * This value is subtracted from the rail max height.
     * When omitted and `top` is numeric, spacing is derived from the header offset.
     */
    spacing?: number | string;
};
export type EventMarketPageBaseProps = {
    /** Called when the expanded market accordion item changes. */
    onExpandedMarketChange?: (marketId: string | null) => void;
    /** Market ID to preselect in the event details hero. */
    defaultMarketId?: string;
    /** Outcome ID to preselect alongside defaultMarketId. */
    defaultOutcomeId?: string;
    /** Whether to render the place-order panel. */
    showPlaceOrder?: boolean;
    executionMode?: "live" | "paper";
    /** Optional resolved-event claim summary shown inside the read-only order panel. */
    resolvedClaim?: PlaceOrderResolvedClaimSummary;
    /** Class name overrides for page layout slots. */
    classNames?: EventMarketPageClassNames;
    /** Sticky order panel behavior configuration. */
    stickyOrderPanel?: EventMarketPageStickyOrderPanelConfig;
    /** Accessible label applied to the page root. */
    ariaLabel?: string;
    /** Whether the page should render its loading state. */
    isLoading?: boolean;
};
export type EventMarketPageLoadingProps = EventMarketPageBaseProps & {
    /** Forces the page into its loading state. */
    isLoading: true;
    /** Prevents passing a resolved event while loading. */
    event?: never;
    /** Optional event ID used to fetch the event data. */
    eventId?: string;
};
export type EventMarketPageWithEventProps = EventMarketPageBaseProps & {
    /** Fully resolved event rendered by the page. */
    event: VenueEventWithMarkets;
    /** Optional explicit event ID override. */
    eventId?: string;
    /** Marks the page as loaded when event data is present. */
    isLoading?: false;
};
export type EventMarketPageWithEventIdProps = EventMarketPageBaseProps & {
    /** Prevents passing a full event object in ID-driven mode. */
    event?: never;
    /** Event ID used to fetch the page data. */
    eventId: string;
    /** Marks the page as loaded when ID-driven fetching is used. */
    isLoading?: false;
};
export type EventMarketPageProps = EventMarketPageLoadingProps | EventMarketPageWithEventProps | EventMarketPageWithEventIdProps;
