import { SmzContentType, SmzExportableContentType } from '../../modules/smz-tables/models/content-types';
import { SmzFilterType } from '../../modules/smz-tables/models/filter-types';
import { SmzTableColumn } from '../../modules/smz-tables/models/table-column';
import { SmzBuilderUtilities } from '../common/smz-builder-utilities';
import { SmzContentActionsBuilder } from './column-content-action-builder';
import { SmzEditableCollectionBuilder } from './editable-builder';
import { SmzTableBuilder } from './state-builder';
import { SmzHeaderActionsBuilder } from './column-header-action-builder';
export declare abstract class SmzBaseColumnBuilder<T extends SmzBaseColumnBuilder<T, TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzColumnCollectionBuilder<TData>;
    protected that: T;
    _column: SmzTableColumn;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzColumnCollectionBuilder<TData>, type: SmzContentType, filterType: SmzFilterType, field: string, header: string, isOrderable: boolean, width?: string);
    overrideFilter(propertyPath?: string, filterType?: SmzFilterType): T;
    overrideSort(propertyPath?: string): T;
    overrideGlobalFilter(propertyPath?: string): T;
    disableSort(): T;
    hide(condition?: boolean): T;
    setVisibility(callback: (field: string) => boolean): T;
    frozen(): T;
    addStyles(styleClass: string): T;
    overideContentStyleClass(styleClass: string): T;
    addTooltip(tooltip: (item: any) => string): T;
    useSubTotal(): T;
    ignoreOnGlobalFilter(): T;
    disableFilter(): T;
    ignoreOnExport(): T;
    overrideExportHeader(header: string): T;
    exportAs(type: SmzExportableContentType): T;
    setExportTransform(callback: (data: any, row: any, index: number) => any): T;
    setExportAsMultilined(overrideNewlineSeparator?: string): T;
    setExportDataFormat(format: string): T;
    editable(): SmzEditableCollectionBuilder<TData>;
    actions(): SmzContentActionsBuilder<T, TData>;
    headerActions(): SmzHeaderActionsBuilder<T, TData>;
    get columns(): SmzColumnCollectionBuilder<TData>;
}
export declare class SmzDateColumnBuilder<TData> extends SmzBaseColumnBuilder<SmzDateColumnBuilder<TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzColumnCollectionBuilder<TData>;
    protected that: this;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzColumnCollectionBuilder<TData>, field: string, header: string, width?: string);
    setDateFormat(format: 'shortDate' | 'short' | 'medium' | 'long' | 'mediumDate' | 'longDate' | 'shortTime'): SmzDateColumnBuilder<TData>;
    setFilter(type: SmzFilterType): SmzDateColumnBuilder<TData>;
}
export declare class SmzCurrencyColumnBuilder<TData> extends SmzBaseColumnBuilder<SmzCurrencyColumnBuilder<TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzColumnCollectionBuilder<TData>;
    protected that: this;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzColumnCollectionBuilder<TData>, field: string, header: string, width?: string);
}
export declare class SmzTextColumnBuilder<TData> extends SmzBaseColumnBuilder<SmzTextColumnBuilder<TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzColumnCollectionBuilder<TData>;
    protected that: this;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzColumnCollectionBuilder<TData>, field: string, header: string, width?: string);
    setFilter(type: SmzFilterType): SmzTextColumnBuilder<TData>;
}
export declare class SmzCustomColumnBuilder<TData> extends SmzBaseColumnBuilder<SmzCustomColumnBuilder<TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzColumnCollectionBuilder<TData>;
    protected that: this;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzColumnCollectionBuilder<TData>, field: string, header: string, width?: string);
    setFilter(type: SmzFilterType): SmzCustomColumnBuilder<TData>;
    enableSort(): SmzCustomColumnBuilder<TData>;
    forceGlobalFilter(): SmzCustomColumnBuilder<TData>;
    setFilterableData(getFilterableDataCallback: (data: any, row: any, index: number) => string): SmzCustomColumnBuilder<TData>;
}
export declare class SmzIconColumnBuilder<TData> extends SmzBaseColumnBuilder<SmzIconColumnBuilder<TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzColumnCollectionBuilder<TData>;
    protected that: this;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzColumnCollectionBuilder<TData>, field: string, header: string, width?: string);
    addIconConfiguration(icon: string, value: any, styleClass?: string, tooltip?: string): SmzIconColumnBuilder<TData>;
    setFilter(type: SmzFilterType): SmzIconColumnBuilder<TData>;
    forceGlobalFilter(): SmzIconColumnBuilder<TData>;
    setFilterableData(getFilterableDataCallback: (data: any, row: any, index: number) => string): SmzIconColumnBuilder<TData>;
}
export declare class SmzDataTransformColumnBuilder<TData> extends SmzBaseColumnBuilder<SmzDataTransformColumnBuilder<TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzColumnCollectionBuilder<TData>;
    protected that: this;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzColumnCollectionBuilder<TData>, field: string, header: string, callback: (data: any, row: any, index: number) => string, width?: string);
    setFilter(type: SmzFilterType): SmzDataTransformColumnBuilder<TData>;
    filterWithTransformedData(): SmzDataTransformColumnBuilder<TData>;
    ignoreTransformOnExport(): SmzDataTransformColumnBuilder<TData>;
    setFilterableData(getFilterableDataCallback: (data: any, row: any, index: number) => string): SmzDataTransformColumnBuilder<TData>;
}
export declare class SmzColumnCollectionBuilder<TData> extends SmzBuilderUtilities<SmzColumnCollectionBuilder<TData>> {
    private _tableBuilder;
    protected that: this;
    constructor(_tableBuilder: SmzTableBuilder<TData>);
    text(field: string, header: string, width?: string): SmzTextColumnBuilder<TData>;
    custom(field: string, header: string, width?: string): SmzCustomColumnBuilder<TData>;
    icon(field: string, header: string, width?: string): SmzIconColumnBuilder<TData>;
    date(field: string, header: string, width?: string): SmzDateColumnBuilder<TData>;
    currency(field: string, header: string, width?: string): SmzCurrencyColumnBuilder<TData>;
    dataTransform(field: string, header: string, callback: (data: any, row: any, index: number) => string, width?: string): SmzDataTransformColumnBuilder<TData>;
    get table(): SmzTableBuilder<TData>;
}
