import { SortType } from '../../../utils/data-source/data-source.types';
import { CellFormatter, CellRenderer, ColumnDefinition, ColumnFilter, ColumnHeaderFormatter, ColumnHeaderRenderer, DataType, FilterType, OptionsProvider, PinnedType, TableOverflow } from '../table.types';
import { ValidationRule } from '../validation-rule/validation-rule';
import { IntlFormatFn } from '../../locale/i18n.provider';
export declare class Column implements ColumnDefinition {
    private renderer;
    element: HTMLAnjColumnElement;
    /**
     * @internal
     */
    translator: IntlFormatFn;
    injectedPropWatcher(): void;
    /**
     * Label for the column, otherwise the name is used
     */
    caption: string;
    /**
     * Formatter for cell data
     */
    cellFormatter: CellFormatter;
    /**
     * Renderer for cell data
     */
    cellRenderer: CellRenderer;
    /**
     * Name of the template to use
     */
    cellTemplate: string;
    /**
     * The type of data
     */
    dataType: DataType;
    /**
     * The default value to use for editing.
     * Can be a static value or a function fitting: (c: Column) => any;
     */
    defaultValue: any;
    /**
     * Formatter for cell data when editing
     */
    editFormatter: CellFormatter;
    /**
     * Renderer for cell data when editing
     */
    editRenderer: CellRenderer;
    /**
     * Name of the template to use when editing
     */
    editTemplate: string;
    /**
     * Is the column editable
     */
    editable: boolean;
    /**
     * Name of the column which pairs it with a property in a row object
     */
    field: string | undefined;
    /**
     * Is the active filter for the column which.
     * Will be in { field: string, type: FilterType, query: any } format.
     */
    filter: ColumnFilter;
    /**
     * Is the column filterable
     */
    filterable: boolean;
    /**
     * The types of filtering supported by the column, all other things being equal (ie. boolean data types will only ever filter "equal").
     * Default is: ['contains', 'ends-with', 'equals', 'starts-with'].
     * This can be constrained by passing an array with your chosen subset.
     */
    filterTypes: FilterType[];
    /**
     * Order in which rows should be grouped according to this column
     */
    groupIndex: number | undefined;
    /**
     * The property that holds child items for grouping
     */
    groupKey: string;
    /**
     * Array of keys of note for the columns grouping.
     * Tracks expanded groups for the default behavior, otherwise it tracks collapsed keys.
     */
    groupKeys: string[];
    /**
     * Format of the column header
     */
    headerFormatter: ColumnHeaderFormatter;
    /**
     * Renderer of the column header
     */
    headerRenderer: ColumnHeaderRenderer;
    /**
     * The order the column appears in
     */
    index: number;
    /**
     * Is the column defined by an internal component
     */
    internal: boolean;
    /**
     * Name of the column which pairs it with a property in a row object
     */
    name: string;
    /**
     * Is the column pinnable
     */
    pinnable: boolean;
    /**
     * Is the column pinned
     * Possible values are: `"left"`, `"right"`, `null`.
     */
    pinned: PinnedType;
    /**
     * Options to display as a select in edit scenarios.
     * See the anj-look up docs for the API.
     */
    options: OptionsProvider;
    /**
     * Is the column re-orderable by users
     */
    orderable: boolean;
    /**
     * Is the column re-orderable by users
     */
    overflow: TableOverflow;
    /**
     * Validation rules for editing.
     * See the anj-validation-rule docs.
     */
    rules: ValidationRule[];
    /**
     * Is the column selectable by users
     */
    selectable: boolean;
    /**
     * Is the column re-sizable by users
     */
    sizable: boolean;
    /**
     * Is the column sortable by users
     */
    sortable: boolean;
    /**
     * Sort priority when using multi-sort
     */
    sortIndex: number;
    /**
     * Is the column sorted
     * Possible values are: `"asc"`, `"desc"`, `undefined`.
     */
    sortOrder: SortType;
    /**
     * The number of columns to span
     */
    span: number;
    table: HTMLAnjTableElement;
    /**
     * Width of the column default is auto
     */
    width: string;
    /**
     * Is the column visible
     */
    visible: boolean;
    componentWillLoad(): void;
    componentDidLoad(): void;
    onOptionsLoaded({ target }: CustomEvent): void;
    onValidationRuleLoaded({ target }: CustomEvent): void;
    contextMenu(): Promise<HTMLAnjContextMenuItemElement[] | undefined>;
    setOffset(offset: string): Promise<void>;
    setWidth(width: string): Promise<void>;
    initCell(cell: HTMLElement, offset?: string): Promise<void>;
    private configEditRenderer;
}
