import type { BaseCellInfo, CellInfo, MergeCellOption, SortOption } from '../../common';
import type { ICustomRender } from '../../customElement';
import type { ICustomLayout } from '../../customLayout';
import type { FieldDef, FieldFormat, FieldKeyDef } from '../../table-engine';
import type { ColumnIconOption } from '../../icon';
import type { MenuListItem } from '../../menu';
import type { BaseTableAPI } from '../../base-table';
import type { IEditor } from '@visactor/vtable-editors';
import type { Aggregation, CustomAggregation } from '../../new-data-set';
export interface IBasicHeaderDefine {
    title?: string | (() => string);
    headerIcon?: string | ColumnIconOption | (string | ColumnIconOption)[];
    sort?: SortOption;
    showSort?: boolean;
    disableHover?: boolean;
    disableSelect?: boolean | ((col: number, row: number, table: BaseTableAPI) => boolean);
    disableHeaderHover?: boolean;
    disableHeaderSelect?: boolean;
    description?: string;
    dropDownMenu?: MenuListItem[];
    headerCustomRender?: ICustomRender;
    headerCustomLayout?: ICustomLayout;
    dragHeader?: boolean;
    columnWidthComputeMode?: 'normal' | 'only-header' | 'only-body';
    disableColumnResize?: boolean;
    headerEditor?: string | IEditor | ((args: BaseCellInfo & {
        table: BaseTableAPI;
    }) => string | IEditor);
}
export interface IBasicColumnBodyDefine {
    field: FieldDef;
    fieldKey?: FieldKeyDef;
    key?: number | string;
    fieldFormat?: FieldFormat;
    width?: number | string;
    minWidth?: number | string;
    maxWidth?: number | string;
    levelSpan?: number;
    tree?: boolean;
    icon?: string | ColumnIconOption | (string | ColumnIconOption)[] | ((args: CellInfo & {
        table: BaseTableAPI;
    }) => undefined | string | ColumnIconOption | (string | ColumnIconOption)[]);
    mergeCell?: MergeCellOption;
    hide?: boolean;
    customRender?: ICustomRender;
    customLayout?: ICustomLayout;
    editor?: string | IEditor | ((args: BaseCellInfo & {
        table: BaseTableAPI;
    }) => string | IEditor);
    aggregation?: Aggregation | CustomAggregation | (Aggregation | CustomAggregation)[];
}
