/**
* @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
*/
import type { TrackChanges, TrackChangesData, TrackChangesEditing, TrackChangesConfig, AcceptSuggestionCommand, DiscardSuggestionCommand, ExecuteOnAllSuggestionsCommand, ExecuteOnSelectedSuggestionsCommand, TrackChangesCommand, PreviewFinalContentCommand, TrackChangesPreview } from "./index.js";
import type { Editor } from "@ckeditor/ckeditor5-core";
declare module "@ckeditor/ckeditor5-core" {
	interface EditorConfig {
		/**
		* The configuration of the {@link module:track-changes/trackchanges~TrackChanges} feature.
		*
		* Read more in {@link module:track-changes/trackchangesconfig~TrackChangesConfig}.
		*/
		trackChanges?: TrackChangesConfig;
		/**
		* The configuration of the track changes data feature.
		*/
		trackChangesData?: {
			/**
			* Callback that creates an editor instances.
			*
			* Used in non-standard integrations. See track changes data
			* {@glink features/collaboration/track-changes/track-changes-data#configuring-track-changes-data-plugin configuration guide}.
			*/
			editorCreator?: (config: EditorConfig, createElement: Function) => Promise<Editor>;
		};
	}
	interface PluginsMap {
		[TrackChanges.pluginName]: TrackChanges;
		[TrackChangesData.pluginName]: TrackChangesData;
		[TrackChangesEditing.pluginName]: TrackChangesEditing;
		[TrackChangesPreview.pluginName]: TrackChangesPreview;
	}
	interface CommandsMap {
		acceptSuggestion: AcceptSuggestionCommand;
		discardSuggestion: DiscardSuggestionCommand;
		acceptAllSuggestions: ExecuteOnAllSuggestionsCommand<AcceptSuggestionCommand>;
		discardAllSuggestions: ExecuteOnAllSuggestionsCommand<DiscardSuggestionCommand>;
		acceptSelectedSuggestions: ExecuteOnSelectedSuggestionsCommand<AcceptSuggestionCommand>;
		discardSelectedSuggestions: ExecuteOnSelectedSuggestionsCommand<DiscardSuggestionCommand>;
		trackChanges: TrackChangesCommand;
		previewFinalContent: PreviewFinalContentCommand;
	}
}
