import type BaseDataGridOptions from '../../../DataGrid/DataGridOptions';
import type Component from '../Component';
import type Sync from '../Sync/Sync';
/**
 * Options to control the DataGrid component.
 */
export interface Options extends Component.Options {
    /**
     * The style class to add to the rendered data grid container.
     */
    dataGridClassName?: string;
    /**
     * The identifier for the rendered data grid container.
     */
    dataGridID?: string;
    /**
     * Callback to use when a change in the data grid occurs.
     *
     * @private
     *
     * @param e
     * Related keyboard event of the change.
     *
     * @param connector
     * Relate store of the change.
     */
    onUpdate(e: KeyboardEvent, connector: Component.ConnectorTypes): void;
    type: 'DataGrid';
    /**
     * Generic options to adjust behavior and styling of the rendered data
     * grid.
     */
    dataGridOptions?: BaseDataGridOptions;
    /**
     * The set of options like `dataGridClassName` and `dataGridID`.
     */
    chartClassName?: string;
    /**
     * The id that is applied to the chart's container.
     */
    chartID?: string;
    /** @private */
    tableAxisMap?: Record<string, string | null>;
    /**
     * Defines which elements should be synced.
     * ```
     * Example:
     * {
     *     highlight: true
     * }
     * ```
     * Try it:
     *
     * {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/dashboards/demo/sync-extremes/ | Extremes Sync }
     *
     * {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/dashboards/component-options/sync-highlight/ | Highlight Sync }
     *
     * {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/dashboards/component-options/sync-visibility/ | Visibility Sync }
     *
     */
    sync?: SyncOptions;
    /**
     * Sync options for the component.
     */
    syncHandlers?: Sync.OptionsRecord;
    /**
     * If the `visibleColumns` option is not provided, the data grid will
     * calculate and include each column from the data connector.
     * When declared, the data grid will only include the columns that are
     * listed.
     *
     * Alternatively, the column visibility can be controlled by the
     * `dataGridOptions.columns` option.
     * ```
     * Example
     * visibleColumns: ['Food', 'Vitamin A']
     * ```
     */
    visibleColumns?: Array<string>;
}
/**
 * Sync options available for the DataGrid component.
 *
 * Example:
 * ```
 * {
 *     highlight: true
 * }
 * ```
 */
export interface SyncOptions extends Sync.RawOptionsRecord {
    /**
     * Extremes sync is available for Highcharts, KPI, DataGrid and
     * Navigator components. Sets a common range of displayed data. For the
     * KPI Component sets the last value.
     *
     * Try it:
     *
     * {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/dashboards/demo/sync-extremes/ | Extremes Sync }
     *
     * @default false
     */
    extremes?: boolean | Sync.OptionsEntry;
    /**
     * Highlight sync is available for Highcharts and DataGrid components.
     * It allows to highlight hovered corresponding rows in the table and
     * chart points.
     *
     * Try it:
     *
     * {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/dashboards/component-options/sync-highlight/ | Highlight Sync }
     *
     * @default false
     */
    highlight?: boolean | Sync.HighlightSyncOptions;
    /**
     * Visibility sync is available for Highcharts and DataGrid components.
     * Synchronizes the visibility of data from a hidden/shown series.
     *
     * Try it:
     *
     * {@link https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/dashboards/component-options/sync-visibility/ | Visibility Sync }
     *
     * @default false
     */
    visibility?: boolean | Sync.OptionsEntry;
}
export default Options;
