/**
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
/**
* @module comments/comments/ui/view/commentview
* @publicApi
*/
import { type Locale } from "@ckeditor/ckeditor5-utils";
import { ButtonView, type TemplateDefinition, type DropdownView, type FocusableView, type ViewCollection } from "@ckeditor/ckeditor5-ui";
import { UserView, type ConfirmMixinConstructor } from "@ckeditor/ckeditor5-collaboration-core";
import { BaseCommentView } from "./basecommentview.js";
import type { Comment } from "../../commentsrepository.js";
import type { CommentViewConfig } from "../../../config.js";
declare const _CommentViewBase: ConfirmMixinConstructor<typeof BaseCommentView>;
/**
* The default view for comment.
*/
export declare class CommentView extends _CommentViewBase {
	locale: Locale;
	cancelConfirm: () => void;
	showConfirm: (key: string, element: unknown) => Promise<void>;
	/**
	* A property used by the template.
	*
	* It works as a visual indicator for the user that an action is about to be performed.
	* The value of this property is used in setting the CSS class.
	* The property is used when the user interacts with the view.
	*
	* @observable
	*/
	actionIndicator: string | null;
	/**
	* Comment editor placeholder value.
	*
	* @observable
	*/
	placeholder: string;
	/**
	* Comment creation date.
	*
	* @observable
	*/
	authoredAt: Date;
	/**
	* Comment resolved date.
	*
	* @observable
	*/
	resolvedAt: Date | null;
	/**
	* Collection for UI elements that manage the comment.
	*
	* Elements that may be found in the action bar (depending on the comment view properties):
	*
	* * the resolve comment thread button (only if the comment is the first comment),
	* * a dropdown with actions ({@link ~CommentView#dropdown `dropdown`}).
	*/
	actionBar: ViewCollection<FocusableView>;
	/**
	* View collection which holds all the comments dropdown elements.
	*
	* May include, depending on the view properties:
	*
	* * {@link ~CommentView#editButton `editButton`},
	* * {@link ~CommentView#removeButton `removeButton`}.
	*/
	items: ViewCollection<ButtonView>;
	/**
	* Dropdown containing comment action buttons defined in {@link ~CommentView#items `items`}.
	*/
	dropdown: DropdownView;
	/**
	* Edit button view. Edit button switches the comment to the editing mode.
	*/
	editButton: ButtonView;
	/**
	* Remove button view. Remove button shows a confirmation box that fires the `removeComment` event when submitted.
	*/
	removeButton: ButtonView;
	/**
	* User view for the comment. Presents the comment author.
	*/
	userView: UserView;
	/**
	* @inheritDoc
	*/
	constructor(locale: Locale, model: Comment, config: CommentViewConfig);
	/**
	* Returns a template definition that will be passed to {@link module:ui/view~View#setTemplate}.
	*
	* Overwrite this method if you want to set a custom template for the comment view.
	*
	* The default template looks as follows:
	*
	* ```ts
	* const bind = this.bindTemplate;
	*
	* {
	* 	tag: 'li',
	*
	* 	attributes: {
	* 		class: [ 'ck-comment__wrapper' ],
	* 		tabindex: -1,
	* 		'aria-label': bind.to( 'ariaLabel' ),
	* 		'aria-describedby': this.ariaDescriptionView.id,
	* 		role: 'listitem'
	* 	},
	*
	* 	children: [
	* 		{
	* 			tag: 'div',
	*
	* 			attributes: {
	* 				class: [
	* 					'ck-comment',
	* 					'ck-annotation',
	* 					bind.if( 'isSystemComment', 'ck-comment--info' ),
	* 					bind.if( 'isEditMode', 'ck-comment--edit' ),
	* 					bind.to( 'actionIndicator', value => value ? `ck-comment--${ value }` : '' )
	* 				],
	* 				'data-author-id': this._model.author.id,
	* 				'data-comment-id': this._model.id,
	* 				role: 'group'
	* 			},
	*
	* 			children: [
	* 				this.userView,
	* 				{
	* 					tag: 'div',
	*
	* 					attributes: {
	* 						class: [ 'ck-comment__main', 'ck-annotation__main' ]
	* 					},
	*
	* 					children: [
	* 						{
	* 							tag: 'div',
	*
	* 							attributes: {
	* 								class: [ 'ck-comment__info', 'ck-annotation__info' ]
	* 							},
	*
	* 							children: [
	* 								{
	* 									tag: 'span',
	*
	* 									children: [
	* 										{
	* 											text: this.userView.name
	* 										}
	* 									],
	*
	* 									attributes: {
	* 										class: [ 'ck-comment__info-name', 'ck-annotation__info-name' ]
	* 									}
	* 								},
	* 								{
	* 									tag: 'time',
	*
	* 									attributes: {
	* 										datetime: bind.to( 'authoredAt' ),
	* 										class: [ 'ck-comment__info-time', 'ck-annotation__info-time' ]
	* 									},
	*
	* 									children: [
	* 										{
	* 											text: bind.to( 'authoredAt', value => this._config.formatDateTime( value ) )
	* 										}
	* 									]
	* 								}
	* 							]
	* 						},
	* 						{
	* 							tag: 'div',
	*
	* 							attributes: {
	* 								class: [
	* 									'ck-comment__actions',
	* 									'ck-annotation__actions',
	* 									bind.if( 'isEditMode', 'ck-comment__actions--hidden' ),
	* 									bind.if( 'isEditMode', 'ck-annotation__actions--hidden' )
	* 								]
	* 							},
	*
	* 							children: this.actionBar
	* 						},
	* 						{
	* 							tag: 'div',
	*
	* 							attributes: {
	* 								class: [ 'ck-annotation__content-wrapper' ]
	* 							},
	*
	* 							children: this.visibleView
	* 						},
	* 						this.ariaDescriptionView,
	* 						{
	* 							tag: 'div',
	*
	* 							attributes: {
	* 								class: [ 'ck-comment__external' ]
	* 							},
	*
	* 							children: [ {
	* 								text: this.getExternalCommentNote()
	* 							} ]
	* 						}
	* 					]
	* 				}
	*
	* 			]
	* 		}
	* 	]
	* }
	* ```
	*
	* @returns Definition of comment thread view's template.
	*/
	getTemplate(): TemplateDefinition;
	/**
	* @inheritDoc
	*/
	override render(): void;
}
declare module "@ckeditor/ckeditor5-ui" {
	interface DropdownView {
		isVisible: boolean;
	}
}
export {};
