import { GetDataFn, ITableOptions, Table, TableRow } from "./table";
import { SurveyModel } from "survey-core";
import { IColumnData, QuestionLocation } from "./config";
import type { DownloadType, SortDirection, TabulatorFull } from "tabulator-tables";
import "./tabulator.scss";
interface ITabulatorOptions extends ITableOptions {
    tabulatorOptions?: any;
    downloadHiddenColumns?: boolean;
    actionsColumnWidth?: number;
    columnMinWidth?: number;
    downloadButtons?: Array<string>;
    downloadOptions?: {
        [type: string]: any;
    };
    onDownloadCallbacks?: {
        [type: string]: (tabulator: Tabulator, options: any) => void;
    };
    xlsx?: any;
    jspdf?: any;
}
export declare const defaultDownloadOptions: {
    fileName: string;
    pdf: {
        orientation: string;
        autoTable: (doc: any) => {
            styles: {
                font: string;
                fontStyle: string;
                minCellWidth: number;
            };
            margin: {
                top: number;
                right: number;
                bottom: number;
                left: number;
            };
        };
    };
    csv: {
        delimiter: string;
    };
    xlsx: {
        sheetName: string;
    };
};
export declare const defaultOptions: ITabulatorOptions;
type TabulatorParameters = ConstructorParameters<typeof TabulatorFull>;
type TabulatorConstuctor = {
    new (...args: TabulatorParameters): TabulatorFull;
};
export declare class Tabulator extends Table {
    private static tabulatorTablesConstructor;
    static initTabulatorConstructor(tabulatorTablesConstructor: TabulatorConstuctor): void;
    static set haveCommercialLicense(val: boolean);
    constructor(survey: SurveyModel, data: Array<Object> | GetDataFn, options?: ITabulatorOptions, _columnsData?: Array<IColumnData>);
    private readonly COLUMN_MIN_WIDTH;
    tabulatorTables: TabulatorFull;
    private tableContainer;
    private currentDownloadType;
    protected supportSoftRefresh(): boolean;
    protected softRefresh(): void;
    render(targetNode: HTMLElement | string): void;
    private createDownloadsBar;
    destroy: () => void;
    private columnMovedCallback;
    private columnResizedCallback;
    private rowFormatter;
    private accessorDownload;
    private getTitleFormatter;
    private getHeaderActions;
    getColumns(): Array<any>;
    setColumnVisibility(columnName: string, isVisible: boolean): void;
    setColumnLocation(columnName: string, location: QuestionLocation): void;
    setColumnWidth(columnName: string, width: number): void;
    sortByColumn(columnName: string, direction: SortDirection): void;
    applyColumnFilter(columnName: string, value: string): void;
    applyFilter(value: string): void;
    getPageNumber(): number;
    setPageNumber(value: number): void;
    setPageSize(value: number): void;
    private getDownloadOptions;
    download(type: DownloadType): void;
    layout(hard?: boolean): void;
    protected processLoadedDataItem(item: any): any;
}
export declare class TabulatorRow extends TableRow {
    protected table: Table;
    protected extensionsContainer: HTMLElement;
    protected detailsContainer: HTMLElement;
    protected innerRow: any;
    constructor(table: Table, extensionsContainer: HTMLElement, detailsContainer: HTMLElement, innerRow: any);
    getElement(): HTMLElement;
    getRowData(): HTMLElement;
    getDataPosition(): number;
    remove(): void;
}
export {};
