import React from 'react';
import { PaginationProps } from '../OffsetPagination';
import { OffsetPaginationLocalization } from '../OffsetPagination/OffsetPagination';
import { PillTabItem } from '../PillTabs';
import { SearchLocalization } from '../Search/types';
import { TableColumn, TableItem, TableProps, TableSelectable, TableSortDirection } from '../Table';
type Localization = OffsetPaginationLocalization | SearchLocalization | (OffsetPaginationLocalization & SearchLocalization);
export interface StatefulTablePillTabFilter<T> {
    pillTabs: PillTabItem[];
    filter(itemId: string, items: T[]): T[];
}
export type StatefulTableSortFn<T> = (a: T, b: T, direction: TableSortDirection) => number;
export interface StatefulTableColumn<T> extends Omit<TableColumn<T>, 'isSortable'> {
    sortKey?: keyof T;
    sortFn?: StatefulTableSortFn<T>;
}
export interface StatefulTableProps<T> extends Omit<TableProps<T>, 'columns' | 'pagination' | 'filters' | 'search' | 'selectable' | 'sortable' | 'onRowDrop' | 'localization'> {
    columns: Array<StatefulTableColumn<T>>;
    localization?: Localization;
    pagination?: boolean;
    filters?: StatefulTablePillTabFilter<T>;
    selectable?: boolean;
    defaultSelected?: T[];
    search?: boolean;
    getRangeLabel?: PaginationProps['getRangeLabel'];
    onRowDrop?(items: T[]): void;
    onSelectionChange?: TableSelectable<T>['onSelectionChange'];
}
export declare const StatefulTable: <T extends TableItem>({ columns, defaultSelected, itemName, items, keyField, localization: localizationProp, getRangeLabel, onSelectionChange, onRowDrop, search, pagination, filters, selectable, stickyHeader, ...rest }: StatefulTableProps<T>) => React.ReactElement<StatefulTableProps<T>>;
export {};
//# sourceMappingURL=StatefulTable.d.ts.map