import type { OptionsType } from '@diplodoc/transform/lib/typings';
import type { PopupPlacement } from '@gravity-ui/uikit';
import { ChatStatus } from "../../../types/index.js";
import type { DefaultMessageAction, MessageExtraInfoComponent, TAssistantMessage, TChatMessage, TMessageContent, TMessageMetadata, TUserMessage } from "../../../types/messages.js";
import { type MessageRendererRegistry } from "../../../utils/messageTypeRegistry.js";
import { AlertProps } from "../../atoms/Alert/index.js";
import { type RatingBlockProps } from "../../molecules/RatingBlock/RatingBlock.js";
import "./MessageList.css";
export declare enum MessageListQa {
    Root = "message-list",
    Messages = "message-list-messages"
}
/** Configuration for action popup behavior */
export interface MessageListActionPopupConfig {
    /** Override title for all popups (overrides action-specific title) */
    title?: string;
    /** Override subtitle for all popups (overrides action-specific subtitle) */
    subtitle?: string;
    /** Override placement for all popups (overrides action-specific placement) */
    placement?: PopupPlacement;
    /** Additional CSS class for popup */
    className?: string;
    /** QA/test identifier for popup */
    qa?: string;
}
export type MessageListProps<TContent extends TMessageContent = never> = {
    messages: TChatMessage<TContent, TMessageMetadata>[];
    status?: ChatStatus;
    errorMessage?: AlertProps;
    onRetry?: () => void;
    messageRendererRegistry?: MessageRendererRegistry;
    transformOptions?: OptionsType;
    shouldParseIncompleteMarkdown?: boolean;
    showActionsOnHover?: boolean;
    showTimestamp?: boolean;
    showAvatar?: boolean;
    userActions?: DefaultMessageAction<TUserMessage<TMessageMetadata>>[];
    assistantActions?: DefaultMessageAction<TAssistantMessage<TContent, TMessageMetadata>>[];
    /** Component rendered alongside action buttons for each user message. Receives message as prop. */
    userExtraInfo?: MessageExtraInfoComponent<TUserMessage<TMessageMetadata>>;
    /** Component rendered alongside action buttons for each assistant message. Receives message as prop. */
    assistantExtraInfo?: MessageExtraInfoComponent<TAssistantMessage<TContent, TMessageMetadata>>;
    /** Array of chat statuses that should display the loader */
    loaderStatuses?: ChatStatus[];
    className?: string;
    qa?: string;
    hasPreviousMessages?: boolean;
    onLoadPreviousMessages?: () => void;
    /** Rating block configuration (for CSAT or other feedback use cases) - renders after messages list */
    ratingBlockProps?: RatingBlockProps;
    /** Action popup configuration - applies to all action popups */
    actionPopupProps?: MessageListActionPopupConfig;
};
export declare function MessageList<TContent extends TMessageContent = never>({ messages, messageRendererRegistry, transformOptions, shouldParseIncompleteMarkdown, showActionsOnHover, showTimestamp, showAvatar, userActions, assistantActions, userExtraInfo: UserExtraInfo, assistantExtraInfo: AssistantExtraInfo, loaderStatuses, className, qa, status, errorMessage, onRetry, hasPreviousMessages, onLoadPreviousMessages, ratingBlockProps, actionPopupProps, }: MessageListProps<TContent>): import("react/jsx-runtime").JSX.Element;
