import WidgetBase from '@dojo/framework/core/WidgetBase';
import I18nMixin from '@dojo/framework/core/mixins/I18n';
import ThemedMixin from '@dojo/framework/core/mixins/Themed';
import { ColumnConfig, SortOptions } from './interfaces';
import { DNode } from '@dojo/framework/core/interfaces';
export interface SortRenderer {
    (column: ColumnConfig, direction: undefined | 'asc' | 'desc', sorter: () => void): DNode;
}
export interface FilterRenderer {
    (column: ColumnConfig, filterValue: string, doFilter: (value: string) => void, title?: string | DNode): DNode;
}
export interface HeaderProperties {
    /** Configuration for grid columns (id, title, properties, and custom renderer) */
    columnConfig: ColumnConfig[];
    /** Handles changing the sort order of a column */
    sorter: (columnId: string, direction: 'asc' | 'desc') => void;
    /** Handles filtering rows based on a given column */
    filterer: (columnId: string, value: any) => void;
    /** Applied filters */
    filter?: {
        [index: string]: string;
    };
    /** Applied sort options */
    sort?: SortOptions;
    /** Custom column renderer for displaying sort options */
    sortRenderer?: SortRenderer;
    /** Custom renderer displaying applied filters */
    filterRenderer?: FilterRenderer;
    /** Callback on column resize */
    onColumnResize?: (index: number, value: number) => void;
    /** Calculated column widths */
    columnWidths?: {
        [index: string]: number;
    };
}
declare const Header_base: import("@dojo/framework/core/interfaces").Constructor<ThemedMixin<{}>> & typeof WidgetBase & import("@dojo/framework/core/interfaces").Constructor<I18nMixin>;
export default class Header extends Header_base<HeaderProperties> {
    private _getColumnTitle;
    private _sortColumn;
    private _sortRenderer;
    private _filterRenderer;
    protected render(): DNode;
}
export {};
