import { AdaptableStyle } from '../AdaptableState/Common/AdaptableStyle';
import { AdaptableObject, AdaptableObjectTag } from '../AdaptableState/Common/AdaptableObject';
import { AdaptableModule, CustomIcon } from '../types';
import { CustomWindowConfig } from '../AdaptableState/Common/CustomWindowConfig';
import { ProgressIndicatorConfig } from '../AdaptableState/Common/ProgressIndicatorConfig';
import { UserInterfaceState } from '../AdaptableState/UserInterfaceState';
/**
 * Functions relating to User Interface section of Adaptable State
 */
export interface UserInterfaceApi {
    /**
     * Retrieves Color Palette currently being used
     */
    getColorPalette(): string[];
    /**
     * Retrieves Custom Icons provided by users
     */
    getCustomIcons(): CustomIcon[];
    /**
     * Retrieves any Style Class Names from User Interface Options
     */
    getStyleClassNames(): string[] | undefined;
    /**
     * Returns Style set for Editable cells
     */
    getEditableCellStyle(): AdaptableStyle | undefined;
    /**
     * Returns Style for Cells that have been edited
     */
    getEditedCellStyle(): AdaptableStyle | undefined;
    /**
     * Returns Style set for ReadOnly Cells
     */
    getReadOnlyCellStyle(): AdaptableStyle | undefined;
    /**
     * Retrieves any Object Tags (provided in User Interface Options)
     */
    getAdaptableObjectTags(): AdaptableObjectTag[] | undefined;
    /**
     * Retrieves all objects in list which contain the given Tag
     * @param tag Tag to check
     * @param adaptableModule optional Module to check
     */
    getAdaptableObjectsWithTag(tag: AdaptableObjectTag, adaptableModule?: AdaptableModule): AdaptableObject[] | undefined;
    /**
     * Displays a progress indicator
     * @param config.progressText - text to display in the progress indicator
     * @param config.render - render function for a custom progress indicator (if not using a framework component)
     * @param config.frameworkComponent - the framework (React/Angular/Vue) component to render as progress indicator
     * @param config.renderMode - how to render the custom component ('content' or 'dialog'). Applies to both render and frameworkComponent.
     * @param config.delay - delay before showing the progress indicator (in milliseconds)
     * @returns An object with a close method to close the window
     */
    showProgressIndicator(config: ProgressIndicatorConfig): {
        close: () => void;
    };
    /**
     * Hides the progress indicator
     */
    hideProgressIndicator(): void;
    /**
     * Opens a custom window popup
     * @param config - The configuration for the custom window
     * @param config.id - Unique identifier for the custom window
     * @param config.title - Title of the custom window
     * @param config.icon - Icon to display in the custom window heading
     * @param config.render - Render function to display custom content in the window (if not using a framework component)
     * @param config.frameworkComponent - A React, Angular or Vue Framework component to use for the custom window content
     * @param config.onFrameworkComponentDestroyed - Callback function to be called when the framework component is destroyed
     * @param config.renderMode - How to render the custom component ('content' or 'dialog'). Applies to both render and frameworkComponent.
     * @returns An object with a close method to close the window
     */
    openCustomWindowPopup(config: CustomWindowConfig): {
        close: () => void;
    };
    /**
     * Closes a custom window
     *
     * @param windowId window popup id
     */
    closeCustomWindowPopup(windowId: string): void;
    /**
     * Retrieves the current User Interface State
     */
    getUserInterfaceState(): UserInterfaceState;
    /**
     * Returns whether the AdapTable UI is currently visible
     */
    isAdaptableUIVisible(): boolean;
    /**
     * Hides all AdapTable UI elements (Dashboard, Tool Panel, Status Bar, Column and Context Menus etc.)
     */
    hideAdaptableUI(): void;
    /**
     * Shows all AdapTable UI elements (Dashboard, Tool Panel, Status Bar, Column and Context Menus etc.)
     */
    showAdaptableUI(): void;
}
