import type { TablePipeline } from '../pipeline';
import type { ColumnResizeMode } from '../../base-table/table';
import type { ArtColumn, SortOrder } from '../../interfaces';
import type { FilterItem, IFormat, IWrapSettings, Sorter, SourceFilter } from '../../../grid-component/type';
type FilterState = {
    field: any;
    key: any;
    column: ArtColumn;
    filteredKeys: any[];
    operator: string | undefined;
};
export interface ColumnFeatureOptions {
    id: any;
    columns: any[];
    isDataTree?: boolean;
    dataSource: any[];
    /** Uncontrolled usage: default column widths array */
    defaultSizes?: number[];
    columnResizeMode?: ColumnResizeMode;
    /** Controlled usage: column widths array */
    sizes?: number[];
    /** Controlled usage: callback invoked when sizes change */
    onChangeSizes?: (nextSizes: number[]) => void;
    /** Minimum column width, default 60 */
    minSize?: number;
    /** If sizes array doesn't provide a valid width, fallbackSize will be used; default 150 */
    fallbackSize?: number;
    /** Maximum column width, default 1000 */
    maxSize?: number;
    /** Disable user-select while resizing, default true */
    disableUserSelectWhenResizing?: boolean;
    /** Handle background color */
    handleBackground?: string;
    /** Handle background color on hover */
    handleHoverBackground?: string;
    /** Handle background color when active */
    handleActiveBackground?: string;
    stopClickEventPropagation?: boolean;
    allowFiltering?: boolean;
    allowSortering?: boolean;
    allowResizing?: boolean;
    locale?: any;
    tableLocal?: any;
    t?: any;
    prefix?: string;
    format?: IFormat;
    dataSourceFilter?: SourceFilter[];
    ignoreAccents?: boolean;
    onFilter?: (filterState: FilterItem[]) => void;
    defaultFilter?: FilterState[];
    defaultSorter?: Sorter[];
    mode?: 'single' | 'multiple';
    keepDataSource?: boolean;
    orders?: SortOrder[];
    onSorter?: (sorterStates: Sorter[]) => void;
    wrapSettings?: IWrapSettings;
    currentPage?: number;
    pageSize?: number;
}
export declare function columnCustom(opts: ColumnFeatureOptions): (pipeline: TablePipeline) => TablePipeline;
export {};
