import { ApplicationState } from './ApplicationState';
import { AlertState } from './AlertState';
import { CalculatedColumnState } from './CalculatedColumnState';
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 { ScheduleState } from './ScheduleState';
import { PlusMinusState } from './PlusMinusState';
import { QuickSearchState } from './QuickSearchState';
import { ShortcutState } from './ShortcutState';
import { ThemeState } from './ThemeState';
import { ToolPanelState } from './ToolPanelState';
import { StatusBarState } from './StatusBarState';
import { ChartingState } from './ChartingState';
import { StyledColumnState } from './StyledColumnState';
import { NoteState } from './NoteState';
import { NamedQueryState } from '../types';
/**
 * This is the main Predefined Config interface which developers will populate at design-time
 */
export interface PredefinedConfig {
    /**
     * 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;
    /**
     * Supplies a 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;
    /**
     * Supplies a 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;
    /**
     * Supplies a collection of *Report* objects, together with name of the Current Report, as part of AdapTable export Module
     */
    Export?: ExportState;
    /***
     * Objects which define which cells flash in response to data changes
     */
    FlashingCell?: FlashingCellState;
    /**
     * Supplies a collection of *FormatColumn* objects that will style an entire column either fully or using a Condition
     */
    FormatColumn?: FormatColumnState;
    /**
     * Supplies a 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;
    /**
     * Supplies a collection of *Layout* objects to name and manage groups of column visibility, order and sorts.
     */
    Layout?: LayoutState;
    /**
     * Named Queries available for use across multiple AdapTable Modules; and `CurrentQuery` - an Expression to run at start-up
     */
    NamedQuery?: NamedQueryState;
    /**
     * Collection of personal Notes that are edited at Cell level
     */
    Note?: NoteState;
    /**
     * Supplies a collection of *PlusMinus* rule objects to stipulate what happens when the user clicks '+' or '-' in a numeric cell
     */
    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;
    /**
     * Supplies a collection of *Schedule* objects
     */
    Schedule?: ScheduleState;
    /**
     * Supplies a collection of *Shortcut* objects to aid data entry and prevent 'fat finger' issues
     */
    Shortcut?: ShortcutState;
    /**
     * Configures the Adaptable Status Bar
     */
    StatusBar?: StatusBarState;
    /**
     * Supplies a collection of Special Column Styles
     */
    StyledColumn?: StyledColumnState;
    /**
     * Specifies the current Theme and lists the User and System themes available for selection.
     */
    Theme?: ThemeState;
    /**
     * Sets the order and visibility of the Tool Panel controls in the AdapTable ToolPanel (on right of grid)
     */
    ToolPanel?: ToolPanelState;
}
