import { BasePlugin } from '../base';
import { LOADING_CLASS_NAME } from '../../helpers/constants';
export declare const PLUGIN_KEY = "loading";
export declare const PLUGIN_PRIORITY = 350;
export { LOADING_CLASS_NAME };
/**
* @plugin Loading
* @class Loading
*
* @description
* The loading plugin provides a loading overlay system for Handsontable using the Dialog plugin.
* It displays a loading indicator with customizable title, icon, and description.
*
* In order to enable the loading mechanism, {@link Options#loading} option must be set to `true`.
*
* The plugin provides several configuration options to customize the loading behavior and appearance:
* - `icon`: Loading icon to display HTML (as string) in svg format (default: ``).
* - `title`: Loading title to display (default: 'Loading...').
* - `description`: Loading description to display (default: '').
*
* @example
*
* ::: only-for javascript
* ```js
* // Enable loading plugin with default options
* loading: true,
*
* // Enable loading plugin with custom configuration
* loading: {
* icon: 'A custom loading icon in SVG format',
* title: 'Custom loading title',
* description: 'Custom loading description',
* }
*
* // Access to loading plugin instance:
* const loadingPlugin = hot.getPlugin('loading');
*
* // Show a loading programmatically:
* loadingPlugin.show();
*
* // Hide the loading programmatically:
* loadingPlugin.hide();
*
* // Check if dialog is visible:
* const isVisible = loadingPlugin.isVisible();
* ```
* :::
*
* ::: only-for react
* ```jsx
* const MyComponent = () => {
* const hotRef = useRef(null);
*
* useEffect(() => {
* const hot = hotRef.current.hotInstance;
* const loadingPlugin = hot.getPlugin('loading');
*
* loadingPlugin.show();
* }, []);
*
* return (
*
* );
* }
* ```
* :::
*
* ::: only-for angular
* ```ts
* hotSettings: Handsontable.GridSettings = {
* data: data,
* loading: {
* icon: 'A custom loading icon in SVG format',
* title: 'Custom loading title',
* description: 'Custom loading description',
* }
* }
* ```
*
* ```html
*
*
* ```
* :::
*/
export declare class Loading extends BasePlugin {
#private;
/**
* Returns the plugin key used to identify this plugin in Handsontable settings.
*/
static get PLUGIN_KEY(): string;
/**
* Returns the priority order used to determine the order in which plugins are initialized.
*/
static get PLUGIN_PRIORITY(): number;
/**
* Returns the default settings applied when the plugin is enabled without explicit configuration.
*/
static get DEFAULT_SETTINGS(): {
icon: string;
title: string | undefined;
description: string;
};
/**
* Returns an object of validator functions used to type-check each settings property at runtime.
*/
static get SETTINGS_VALIDATORS(): {
icon: (value: unknown) => value is string;
title: (value: unknown) => value is string;
description: (value: unknown) => value is string;
};
/**
* Check if the plugin is enabled in the handsontable settings.
*
* @returns {boolean}
*/
isEnabled(): boolean;
/**
* Enable plugin for this Handsontable instance.
*/
enablePlugin(): void;
/**
* Update plugin state after Handsontable settings update.
*/
updatePlugin(): void;
/**
* Disable plugin for this Handsontable instance.
*/
disablePlugin(): void;
/**
* Check if loading dialog is currently visible.
*
* @returns {boolean}
*/
isVisible(): boolean;
/**
* Show loading dialog with optional custom options.
*
* @param {object} options Custom loading options.
* @param {string} options.icon Custom loading icon.
* @param {string} options.title Custom loading title.
* @param {string} options.description Custom loading description.
*/
show(options?: {}): void;
/**
* Hide loading dialog.
*/
hide(): void;
/**
* Update loading description without hiding/showing the dialog.
*
* @param {object} options Custom loading options.
* @param {string} options.icon Custom loading icon.
* @param {string} options.title Custom loading title.
* @param {string} options.description Custom loading description.
*/
update(options?: unknown): void;
/**
* Destroy plugin instance.
*/
destroy(): void;
}