/**
 * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
 */
/**
 * @module ai/aicore/ui/suggestioncontainer/aisuggestionbodyview
 */
import { type Locale } from 'ckeditor5/src/utils.js';
import { View } from 'ckeditor5/src/ui.js';
import { AISuggestionBodyViewContentPartView, type AIContentRenderingStrategy } from './aisuggestioncontentpartview.js';
import { type AISuggestionContentPartDefinition } from '../../utils/getsuggestionpartsfromreply.js';
import { type AISuggestionActionName } from '../../../aichat/ui/feed/aichatfeedsuggestionitemactionsview.js';
import { type AIReplyChangeGroupState } from '../../model/aireply.js';
/**
 * The inner view of the suggestion container that displays the content of the suggestion (or multiple parts of it).
 */
export declare class AISuggestionBodyView extends View<HTMLDivElement> {
    hasPendingParts: boolean;
    constructor(locale: Locale, options: {
        areActionsDisabled: boolean;
        showUnchangedParts: boolean;
        availableActions: Array<AISuggestionActionName>;
    });
    get partsCount(): number;
    updateContentParts({ parts, renderingStrategy, abortSignal }: {
        parts: Array<AISuggestionContentPartDefinition>;
        renderingStrategy: AIContentRenderingStrategy;
        abortSignal?: AbortSignal;
    }): Promise<void>;
    updatePartState(index: number, state: AIReplyChangeGroupState): void;
    getPartView(index: number): AISuggestionBodyViewContentPartView | null;
    /**
     * Marks the body view as done.
     *
     * Updates the visibility of the empty parts warning that will show up if some parts in the suggestion are empty.
     */
    markAsDone(): void;
    /**
     * Specifies whether the suggestion body view has some parts that have any content that can be browsed or accepted.
     */
    get hasNonEmptyParts(): boolean;
}
