import { AdaptableColumn } from '../PredefinedConfig/Common/AdaptableColumn';
import { AdaptableStyle } from '../PredefinedConfig/Common/AdaptableStyle';
import { BulkUpdatePermittedValues, CustomSortPermittedValues, EditLookUpPermittedValues, FilterPermittedValues, PermittedValues } from '../AdaptableOptions/UserInterfaceOptions';
import { GridCell } from '../PredefinedConfig/Selection/GridCell';
import { AdaptableObjectTag } from '../PredefinedConfig/Common/AdaptableObject';
import { AdaptableIcon } from '../types';
import { CustomWindowConfig } from '../PredefinedConfig/Common/CustomWindowConfig';
import { ProgressIndicatorConfig } from '../PredefinedConfig/Common/ProgressIndicatorConfig';
/**
 * Functions relating to User Interface section of Adaptable State
 */
export interface UserInterfaceApi {
    /**
     * Retrieves Color Palette currently being used
     */
    getColorPalette(): string[];
    /**
     * Retrieves any Style Class Names from User Interface Options
     */
    getStyleClassNames(): string[] | undefined;
    /**
     * Retrieves `permittedValues` property from User Interface Options
     */
    getPermittedValuesItems(): PermittedValues[];
    /**
     * Retrieves Permitted Values for a given Column
     * @param column column for which to retrieve Permitted Values
     */
    getPermittedValuesForColumn(column: AdaptableColumn): any[];
    /**
     * Retrieves Permitted values for filtering by column values in Floating Filter and Quick Filter Bar
     */
    getFilterPermittedValuesForColumn(column: AdaptableColumn): FilterPermittedValues | undefined;
    /**
     * Retrieves Permitted values for Custom Sort Module
     */
    getCustomSortPermittedValuesForColumn(column: AdaptableColumn): CustomSortPermittedValues | undefined;
    /**
     * Retrieves Permitted values for Bulk Update Module
     */
    getBulkUpdatePermittedValuesForColumn(column: AdaptableColumn): BulkUpdatePermittedValues | undefined;
    /**
     * Retrieves `editLookUpItems` property from User Interface Options
     */
    getEditLookUpItems(): EditLookUpPermittedValues[];
    /**
     * Retrieves EditLookUpItems for a given Column
     * @param columnId Column for which to retrieve EditLookUpItems
     */
    getEditLookUpItemForColumn(column: AdaptableColumn): EditLookUpPermittedValues | undefined;
    /**
     * Retrieves actual Look Up Values from an EditLookUpItem
     * @param editLookUpItem editLookUpItem to check
     * @param  gridCell: the currently edited Grid Cell
     */
    getEditLookUpValuesForEditLookUpItem(editLookUpItem: EditLookUpPermittedValues, gridCell: GridCell): any[] | 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;
    /**
     * Returns AdapTable Icon with given name
     * @param name name of Icon
     */
    getCustomIconDefinition(name: string): AdaptableIcon | 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) component to render as progress indicator
     * @param config.delay - delay before showing the progress indicator (in milliseconds)
     */
    showProgressIndicator(config: ProgressIndicatorConfig): void;
    /**
     * Hides the progress indicator
     */
    hideProgressIndicator(): void;
    /**
     * Opens window with custom content
     * @param config
     */
    openCustomWindowPopup(config: CustomWindowConfig): {
        close: () => void;
    };
    /**
     * Closes a custom window
     *
     * @param windowId window popup id
     */
    closeCustomWindowPopup(windowId: string): void;
}
