import { ApplicationState } from './ApplicationState';
import { AlertState } from './AlertState';
import { CalculatedColumnState } from './CalculatedColumnState';
import { ChartingState } from './ChartingState';
import { CustomSortState } from './CustomSortState';
import { DashboardState } from './DashboardState';
import { ExportState } from './ExportState';
import { FlashingCellState } from './FlashingCellState';
import { FormatColumnState } from './FormatColumnState';
import { FreeTextColumnState } from './FreeTextColumnState';
import { LayoutState } from './LayoutState';
import { NamedQueryState } from './NamedQueryState';
import { NoteState } from './NoteState';
import { PlusMinusState } from './PlusMinusState';
import { QuickSearchState } from './QuickSearchState';
import { ShortcutState } from './ShortcutState';
import { StatusBarState } from './StatusBarState';
import { StyledColumnState } from './StyledColumnState';
import { ThemeState } from './ThemeState';
import { ToolPanelState } from './ToolPanelState';
import { UserInterfaceState } from './UserInterfaceState';
/**
 * The initial state of Adaptable which is populated at design-time and used to create the Adaptable State - must include at least one Layout.
 */
export interface InitialState {
    /**
     * Collection of `AlertDefinitions` which will fire Alerts when the rule is met
     */
    Alert?: AlertState;
    /**
     * Empty state section (only populated at Design Time) available for User to store their own data with the rest of AdapTable state.
     */
    Application?: ApplicationState;
    /**
     * Collection of *CalculatedColumn* objects that will display a value based on other cells in the row (using a Calculated Column Expression)
     */
    CalculatedColumn?: CalculatedColumnState;
    /**
     * Named Charts (wrapping Chart models)
     */
    Charting?: ChartingState;
    /**
     * Collection of *Custom Sort* objects to allow some columns to be sorted in non-standard (e.g. non alphabetical) ways
     */
    CustomSort?: CustomSortState;
    /**
     * Large series of properties to give users full control over the look and feel of the *Dashboard* - the section above the grid with toolbars and buttons
     */
    Dashboard?: DashboardState;
    /**
     * Collection of *Report* objects, together with name of the Current Report, as part of AdapTable export Module
     */
    Export?: ExportState;
    /**
     * Definitions of which cells flash in response to data changes
     */
    FlashingCell?: FlashingCellState;
    /**
     * Collection of *FormatColumn* objects that will style an entire column either fully or using a Condition
     */
    FormatColumn?: FormatColumnState;
    /**
     * Collection of *FreeText* objects so users can make their own notes in bespoke columns that will get stored with their state (and not with the DataSource).  Useful if needing a 'Comments' column.
     */
    FreeTextColumn?: FreeTextColumnState;
    /**
     * Collection of *Layouts* to name (and manage) sets of column visibility, order, grouping, sorts, aggregations, filters etc.
     */
    Layout: LayoutState;
    /**
     * Named Queries available for use across multiple AdapTable Modules
     */
    NamedQuery?: NamedQueryState;
    /**
     * Collection of personal Notes that are edited at Cell level
     */
    Note?: NoteState;
    /**
     * Plus Minus module: nudge rules. Optional `IncrementKey` / `DecrementKey` on each nudge
     * accept either a single key or a keyboard shortcut combination (e.g. `shift+Enter`); when
     * omitted, `AdaptableOptions.plusMinusOptions` applies, then `+` / `-`.
     */
    PlusMinus?: PlusMinusState;
    /**
     * Configues how Quick Search will run i.e. how and whether to highlight matching cells and to filter out non-matching rows
     */
    QuickSearch?: QuickSearchState;
    /**
     * Collection of *Shortcut* objects to aid data entry and prevent 'fat finger' issues
     */
    Shortcut?: ShortcutState;
    /**
     * Configures the Adaptable Status Bar
     */
    StatusBar?: StatusBarState;
    /**
     * Collection of Special Column Styles
     */
    StyledColumn?: StyledColumnState;
    /**
     * Specifies current Theme and lists User and System themes available for selection
     */
    Theme?: ThemeState;
    /**
     * Sets order & visibility of Tool Panel controls in AdapTable ToolPanel (on right of grid)
     */
    ToolPanel?: ToolPanelState;
    /**
     * Controls the visibility of AdapTable UI elements (Dashboard, Tool Panel, Status Bar, Menus etc.)
     */
    UserInterface?: UserInterfaceState;
}
