import { Pinned, ColumnsDef, ColumnOptions, BaseColumnOptions, GetColumnMenuItemsParams, MenuItem, GroupData } from "../../../types";
import { Store as BaseStore } from "../../../grid/store";
export interface Actions {
    updateColumnPinned: {
        field: string;
        pinned: Pinned;
    };
    updateColumnVisible: {
        field: string;
        visible: boolean;
    };
    updateColumnWidth: {
        field: string;
        width?: number;
        flex?: number;
    };
    updateColumnName: {
        field: string;
        name: string;
    };
    updateGroupCollapsed: {
        group: string;
        collapsed: boolean;
    };
    updateGroupName: {
        group: string;
        name: string;
    };
    setColumns: {
        columns: ColumnsDef;
        defaultOptions?: BaseColumnOptions;
    };
    setHeight: number;
}
export interface State {
    columnsDef: ColumnsDef;
    pinnedLeftColumns: string[];
    pinnedRightColumns: string[];
    normalColumns: string[];
    columns: Record<string, ColumnOptions>;
    groups: string[][];
    groupsData: Record<string, GroupData>;
    height: number;
    getColumnMenuItems?: (params: GetColumnMenuItemsParams) => MenuItem[];
}
export declare const defaultColumnOptions: BaseColumnOptions;
export declare class Store extends BaseStore<State, Actions> {
    constructor(initial?: Partial<State>);
    protected setColumns: (columnOptions: ColumnOptions[], defaultColumnOption?: BaseColumnOptions) => {
        pinnedLeftColumns: string[];
        pinnedRightColumns: string[];
        normalColumns: string[];
        columns: Record<string, ColumnOptions>;
    };
    /**
     * Actions
     */
    getColumnOptions(column: string): ColumnOptions;
    getColumnOptionsByIndex(x: number): ColumnOptions;
    getColumnIndex(field: string): number;
    getColumnByIndex(x: number): string;
    getGroupWidth(id: string, columns?: string[]): {
        width: number;
        flex: number;
    };
    toggleGroupCollapsed(group: string): void;
    protected lookForColumn(columnsDef: ColumnsDef, field: string): {
        parent: ColumnsDef;
        index: number;
    };
    moveColumn(column: string, toColumn: string): void;
}
export default Store;
