import { BaseState } from './BaseState';
import { AdaptableDashboardToolbars, AdaptableModuleButtons } from './Common/Types';
import { AdaptableObject } from './Common/AdaptableObject';
/**
 * Adaptable State Section for the AdapTable Dashboard
 */
export interface DashboardState extends BaseState {
    /**
     * Named group of Toolbars
     * @defaultValue Empty Array
     */
    Tabs?: DashboardTab[];
    /**
     * Toolbars displayed above Grid (and not in Tab)
     */
    PinnedToolbars?: AdaptableDashboardToolbars | string[];
    /**
     * Index of Active Tab (in Tabs collection)
     */
    ActiveTabIndex?: number;
    /**
     * Is Dashboard collapsed; if true, header is visible (but not Tabs' contents)
     *  @defaultValue false
     */
    IsCollapsed?: boolean;
    /**
     * Is Dashboard floating; if true, appears in draggable, minmised form (double-click to revert to default position)
     *  @defaultValue false
     */
    IsFloating?: boolean;
    /**
     * Whether Dashboard is completely hidden - can be made visible again in Column Menu and Tool Panel
     * @defaultValue false
     */
    IsHidden?: boolean;
    /**
     * Position of Dashboard when in Floating mode
     */
    FloatingPosition?: AdaptableCoordinate;
    /**
     * Buttons which open the Settings Panel screen for associated AdapTable Module
     * @defaultValue ['SettingsPanel']
     */
    ModuleButtons?: AdaptableModuleButtons;
    /**
     * Title displayed in Dashboard Header
     * @defaultValue `adaptableId` in Adaptable Options
     */
    DashboardTitle?: string;
}
/**
 * Defines a named set of Toolbars in the AdapTable Dashboard
 */
export interface DashboardTab extends AdaptableObject {
    /**
     * Name of the Dashboard Tab as it appears in the Dashboard header
     */
    Name: string;
    /**
     * List of Toolbars to show in the Tab
     */
    Toolbars: AdaptableDashboardToolbars | string[];
}
/**
 * Used by AdapTable to remember position of Floating Dashboard
 */
export interface AdaptableCoordinate extends AdaptableObject {
    /**
     * x axis number
     */
    x: number;
    /**
     * y axis number
     */
    y: number;
}
