import { SmzMenuItem } from '../../modules/smz-menu/models/smz-menu-item';
import { SmzTableState } from '../../modules/smz-tables/models/table-state';
import { SmzColumnCollectionBuilder } from './column-builder';
import { SmzMenuTableBuilder } from './menu-builder';
import { SmzBatchMenuBuilder } from './batch-menu-builder';
import { SmzEditableTableBuilder } from './editable-builder';
import { Observable } from 'rxjs';
import { SmzTableExcelBuilder } from './excel-builder';
import { SmzTableViewportBuilder } from './viewport';
import { SmzCaptionButtonsBuilder } from './caption-buttons-builder';
import { SmzBuilderUtilities } from '../common/smz-builder-utilities';
export declare class SmzTableBuilder<TData> extends SmzBuilderUtilities<SmzTableBuilder<TData>> {
    protected that: this;
    _state: SmzTableState;
    constructor(uiDefinitionName?: string);
    setTitle(title: string): SmzTableBuilder<TData>;
    addSource(items$: Observable<any[]>): SmzTableBuilder<TData>;
    enableGlobalFilter(): SmzTableBuilder<TData>;
    expandGlobalFilterInput(): SmzTableBuilder<TData>;
    enableColumnVisibility(showColumnHideButton?: boolean): SmzTableBuilder<TData>;
    setLocale(language: 'pt-BR' | 'en-US'): SmzTableBuilder<TData>;
    setPaginatorTemplate(template: string): SmzTableBuilder<TData>;
    enableClearFilters(): SmzTableBuilder<TData>;
    enableExportToPdf(): SmzTableBuilder<TData>;
    setClearFilterCallback(callback: () => void): SmzTableBuilder<TData>;
    setToolbarAlignment(alignment: 'start' | 'end'): SmzTableBuilder<TData>;
    buttons(): SmzCaptionButtonsBuilder<TData>;
    /**
     * Enables the checkbox for multiselection in the table
     * The user cannot disable this feature
     */
    allowDefaultMultiSelection(): SmzTableBuilder<TData>;
    /**
   * Enables the checkbox for multiselection in the table
   * and a creates a button to allow the user to disable the selection mode
   */
    allowUserMultiSelection(initialState?: 'enabled' | 'disabled'): SmzTableBuilder<TData>;
    /**
     * The table will emit a validation statement through the variable isValid
     * So that the Dialog can control the submit button based on that
     * If the user select one or more items the table will be valid
     * otherwise the table is always invalid.
     */
    setSelectionAsRequired(): SmzTableBuilder<TData>;
    /**
     * This callback is called when the user click on the selection activation button
     * and everytime a selection changes
     */
    setMultiSelectionCallback(callback: (selection: any[]) => void): SmzTableBuilder<TData>;
    setMultiSelectioncolumnWidth(width: string): SmzTableBuilder<TData>;
    allowDefaultRowExpansion(): SmzTableBuilder<TData>;
    allowRowExpansion(label?: string, initialState?: 'enabled' | 'disabled'): SmzTableBuilder<TData>;
    disableRowExpansionSincronization(): SmzTableBuilder<TData>;
    setNewItemsMessage(label: string): SmzTableBuilder<TData>;
    hideNewItemsMessage(): SmzTableBuilder<TData>;
    setRowExpansionCallback(callback: () => void): SmzTableBuilder<TData>;
    setRowExpansionColumnWidth(pixels: number): SmzTableBuilder<TData>;
    hideHeader(): SmzTableBuilder<TData>;
    setSkeletonRowsCount(rows: number): SmzTableBuilder<TData>;
    setEmptyFeedbackMessage(message: string): SmzTableBuilder<TData>;
    useTableEmptyMessage(): SmzTableBuilder<TData>;
    setEmptyFeedbackExtraInfo(text: string): SmzTableBuilder<TData>;
    addEmptyFeedbackButton(label: string, callback: () => void, icon?: string): SmzTableBuilder<TData>;
    setEmptyFeedbackImage(path: string): SmzTableBuilder<TData>;
    usePagination(): SmzTableBuilder<TData>;
    setPaginationDefaultRows(value: number): SmzTableBuilder<TData>;
    setPaginationPageOptions(value: number[]): SmzTableBuilder<TData>;
    setPaginationInitialPage(page: number): SmzTableBuilder<TData>;
    hidePaginationReport(): SmzTableBuilder<TData>;
    setPaginationReportTemplateText(template: string): SmzTableBuilder<TData>;
    setInitialSorting(field: string, order: 1 | -1): SmzTableBuilder<TData>;
    setCustomInitialSorting(data: {
        field?: string;
        mode?: 'single' | 'multiple';
        order?: 1 | -1;
        multiSortMeta?: {
            field: string;
            order: 1 | -1;
        }[];
    }): SmzTableBuilder<TData>;
    useStrippedStyle(): SmzTableBuilder<TData>;
    useGridStyle(): SmzTableBuilder<TData>;
    setSize(size: 'extra-small' | 'small' | 'regular' | 'large'): SmzTableBuilder<TData>;
    useEstimatedColWidth(maxWidthPx?: number): SmzTableBuilder<TData>;
    setEstimatedSamplesCount(samplesCount: number): SmzTableBuilder<TData>;
    setEstimatedFontBase(fontBase: string): SmzTableBuilder<TData>;
    setEstimatedPadding(padding: number): SmzTableBuilder<TData>;
    setTableStyleClass(styleClass: string): SmzTableBuilder<TData>;
    reorder(...properties: string[]): SmzTableBuilder<TData>;
    relabel(...operations: {
        property: string;
        header: string;
    }[]): SmzTableBuilder<TData>;
    resizeIgnoringCheck(...operations: {
        property: string;
        width: string;
    }[]): SmzTableBuilder<TData>;
    resize(...operations: {
        property: string;
        width: string;
    }[]): SmzTableBuilder<TData>;
    useCustomActions(columnWidthPixels: number): SmzTableBuilder<TData>;
    disableRowHoverEffect(): SmzTableBuilder<TData>;
    setRowClickCallback<T>(callback: (event: T) => void): SmzTableBuilder<TData>;
    expandOnRowClick(): SmzTableBuilder<TData>;
    setHighlightedRows(ids: string[]): SmzTableBuilder<TData>;
    setPreserveLayoutInSmallDevices(): SmzTableBuilder<TData>;
    setCellStyleClass(styleClass: string): SmzTableBuilder<TData>;
    menu(items?: SmzMenuItem[]): SmzMenuTableBuilder<TData, TData>;
    dynamicMenu(callback: (row: any) => SmzMenuItem[]): SmzTableBuilder<TData>;
    batchMenu(items?: SmzMenuItem[]): SmzBatchMenuBuilder<TData>;
    editable(): SmzEditableTableBuilder<TData>;
    setScrollDirection(direction?: 'vertical' | 'horizontal' | 'both'): SmzTableBuilder<TData>;
    useVerticalScrollHeight(height: string): SmzTableBuilder<TData>;
    debugMode(): SmzTableBuilder<TData>;
    columns(): SmzColumnCollectionBuilder<TData>;
    viewport(): SmzTableViewportBuilder<TData>;
    excel(): SmzTableExcelBuilder<TData>;
    build(): SmzTableState;
}
export declare function applyTableContentNgStyle(state: SmzTableState, size: number, finalWidth?: string): any;
