import { TransactionPage, TransactionStatus } from '@zeniai/client-analytics';
import { ID, Runway, TransactionLineRecommendationFieldTypes } from '@zeniai/client-epic-state';
import { ReactFragment } from '../../../types/common';
import * as React from "react";
export type TooltipVariant = "standard" | "runway" | "small-description" | "list-description" | "informative" | "chain-of-thought" | "multi-information-points" | "categorized-list";
export type TooltipPlacement = "bottom" | "bottom-end" | "bottom-start" | "left-end" | "left-start" | "left" | "right-end" | "right-start" | "right" | "top-end" | "top-start" | "top";
export type TooltipData = Runway | ListDescriptionTooltipProps | InformativeData | ChainOfThoughtData | MultiInformationPointData[] | CategorizedListData | string | null;
export interface RunwayData {
    date: string;
    period: string;
    subtitle: string;
    title: string;
}
export interface ListItem {
    amount: string;
    text: string;
}
export interface ListDescriptionTooltipProps {
    items: ListItem[];
    title: string;
}
export interface InformativeData {
    buttonText: string;
    description: string;
    heading: string;
    preHeading: string;
    buttonStyle?: React.CSSProperties;
    showCloseButton?: boolean;
    tooltipContentStyle?: React.CSSProperties;
    tooltipHeaderStyle?: React.CSSProperties;
    tooltipIntroductionStyle?: React.CSSProperties;
    onButtonClick?: () => void;
    onClose?: (e: React.MouseEvent<SVGSVGElement>) => void;
}
export interface MultiInformationPointData {
    description: string;
    title: string;
}
export type CategorizedListBullet = string | {
    body: string;
    title: string;
};
export interface CategorizedListSection {
    bullets: ReadonlyArray<CategorizedListBullet>;
    label: string;
    icon?: React.ComponentType<{
        className?: string;
    }>;
}
export interface CategorizedListData {
    heading: string;
    sections: CategorizedListSection[];
}
export interface ChainOfThoughtData {
    existingOption: {
        label?: string;
        value?: string;
    };
    isCOTEnabled: boolean;
    isThoughtProcessOnly: boolean;
    pageSource: TransactionPage;
    recommendations: RecommendationWithChainOfThought[];
    transactionStatus: TransactionStatus | null;
    isAlternateLoading?: boolean;
    isPrimaryLoading?: boolean;
    width?: number;
    onAlternateRecommendationConfirmationClick: (recommendationID: ID) => void;
    onAlternateRecommendationExpandClick: (isExpanded: boolean) => void;
    onPrimaryRecommendationConfirmationClick: (recommendationID: ID) => void;
}
export interface RecommendationWithChainOfThought {
    cot: string[];
    id: ID;
    isSelected: boolean;
    name: string;
    reason: string;
    confidencePercentage?: number;
    isDisabled?: boolean;
    source?: string;
    type?: TransactionLineRecommendationFieldTypes;
}
export interface RootProps {
    maxWidth?: string;
    style?: React.CSSProperties;
    /** Overrides the variant default border-radius on the tooltip surface (not the anchor). */
    tooltipBorderRadius?: string;
    variant?: TooltipVariant;
}
export interface ToolTipProps extends RootProps {
    children: React.ReactNode;
    arrow?: boolean;
    data?: TooltipData;
    disableFocusListener?: boolean;
    disableHoverListener?: boolean;
    disableIntersectionObserver?: boolean;
    /** When true, Popper will not flip to the opposite side (e.g. keeps `placement="top"`). */
    disablePopperFlip?: boolean;
    /** When true, the preventOverflow modifier is off so the tooltip can extend past narrow panels instead of shifting off the anchor. */
    disablePopperPreventOverflow?: boolean;
    disableTouchListener?: boolean;
    display?: string;
    enterDelay?: number;
    enterTouchDelay?: number;
    /** MUI Fade `easing` for a softer show/hide. */
    fadeEasing?: string | {
        enter?: string;
        exit?: string;
    };
    fadeTimeout?: number;
    leaveDelay?: number;
    leaveTouchDelay?: number;
    /** Popper offset `[skidding, distance]` (see @popperjs/core offset modifier). */
    offset?: [number, number];
    open?: boolean;
    placement?: TooltipPlacement;
    /** When true, the tooltip Popper is not portaled to `document.body` (helps correct anchor in drawers / transformed layouts). */
    popperDisablePortal?: boolean;
    /** Popper positioning strategy; `fixed` works well with portaling for overflow/transform issues. */
    popperStrategy?: "absolute" | "fixed";
    position?: "static" | "relative" | "absolute" | "sticky" | "fixed";
    title?: string | ReactFragment | React.ReactElement;
    variant?: TooltipVariant;
    onClose?: () => void;
    onOpen?: () => void;
}
