import { ScrollToRowPosition } from '../../../../../types/src/table';
import { default as ColumnComponent } from './column/ColumnComponent';
import { default as FooterManager } from './FooterManager';
import { default as Module } from './Module';
import { default as RowComponent } from './row/RowComponent';
import { default as Alert } from './tools/Alert';
import { default as ComponentFunctionBinder } from './tools/ComponentFunctionBinder';
import { default as DataLoader } from './tools/DataLoader';
import { default as DependencyRegistry } from './tools/DependencyRegistry';
import { default as DeprecationAdvisor } from './tools/DeprecationAdvisor';
import { default as ExternalEventBus } from './tools/ExternalEventBus';
import { default as InteractionMonitor } from './tools/InteractionMonitor';
import { default as InternalEventBus } from './tools/InternalEventBus';
import { default as ModuleBinder } from './tools/ModuleBinder';
import { default as OptionsList } from './tools/OptionsList';
import { AddRowPos, ColumnDefinition, ColumnLookup, IColumnComponent, IColumnManager, IRow, IRowComponent, IRowManager, ITabulator, Options, RowLookup, RowRangeLookup, ScrollToColumnPosition } from './types';

declare class Tabulator extends ModuleBinder implements ITabulator {
    static readonly defaultOptions: Options;
    options: Options;
    columnManager: IColumnManager | null;
    rowManager: IRowManager | null;
    footerManager: FooterManager | null;
    toolbar: HTMLElement | undefined;
    alertManager: Alert | null;
    vdomHoz: any;
    externalEvents: ExternalEventBus | null;
    eventBus: InternalEventBus | null;
    interactionMonitor: InteractionMonitor | false;
    browser: string;
    browserSlow: boolean;
    browserMobile: boolean;
    rtl: boolean;
    originalElement: HTMLElement | null;
    componentFunctionBinder: ComponentFunctionBinder;
    dataLoader: DataLoader | null;
    deprecationAdvisor: DeprecationAdvisor;
    optionsList: OptionsList;
    dependencyRegistry: DependencyRegistry;
    initialized: boolean;
    destroyed: boolean;
    element: HTMLElement;
    tableWidth: number;
    isResizingRow: boolean;
    isResizingColumn: boolean;
    hasResized: boolean;
    static extendModule(...args: Parameters<typeof ModuleBinder._extendModule>): void;
    static registerModule(...args: Parameters<typeof ModuleBinder._registerModule>): void;
    constructor(element: string | HTMLElement, options?: Partial<Options>, modules?: Record<string, typeof Module> | false);
    initializeElement(element?: HTMLElement | string): boolean;
    initializeCoreSystems(options?: Partial<Options>): void;
    _mapDeprecatedFunctionality(): void;
    _clearSelection(): void;
    _create(): void;
    _rtlCheck(): void;
    _clearObjectPointers(): void;
    _buildElement(): void;
    _initializeTable(): void;
    _loadInitialData(): Promise<void>;
    destroy(): void;
    _detectBrowser(): void;
    initGuard(func?: string | boolean, msg?: string): boolean;
    blockRedraw(): void;
    restoreRedraw(): void;
    setData(data: any, params?: any, config?: any): Promise<void>;
    clearData(): void;
    getData(active?: RowRangeLookup): any[];
    getDataCount(active?: RowRangeLookup): number;
    replaceData(data: any, params?: any, config?: any): Promise<void>;
    private parseJsonInput;
    updateData(data: any[] | string): Promise<void>;
    addData(data: any[] | string, pos?: AddRowPos, index?: any): Promise<any[]>;
    updateOrAddData(data: any[] | string): Promise<any[]>;
    /**
     * Get row by index/element. Possible argument can be found at https://tabulator.info/docs/6.3/components#lookup
     */
    getRow(index: RowLookup): RowComponent | false;
    getRowFromPosition(position: number): any | false;
    deleteRow(index: any | any[]): Promise<void>;
    addRow(data: any | string, pos?: AddRowPos, index?: any): Promise<IRowComponent | IRow> | undefined;
    updateOrAddRow(index: any, data: any | string): Promise<IRowComponent | IRow> | undefined;
    updateRow(index: any, data: any | string): Promise<any>;
    scrollToRow(index: any, position?: ScrollToRowPosition, ifVisible?: boolean): Promise<unknown> | undefined;
    moveRow(from: any, to: any, after?: boolean): void;
    getRows(active?: RowRangeLookup): any[];
    getRowPosition(index: any): number | false;
    /**
     * Column Functions
     */
    setColumns(definition: any): void;
    getColumns(structured?: boolean): any[];
    getColumn(field: string): any | false;
    getColumnDefinitions(): any[];
    showColumn(field: string): Promise<boolean | void>;
    hideColumn(field: ColumnLookup): boolean | void;
    toggleColumn(field: string): Promise<boolean | void>;
    addColumn(definition: any, before?: boolean, field?: ColumnLookup): Promise<IColumnComponent | ColumnComponent> | undefined;
    deleteColumn(field: string): Promise<void>;
    updateColumnDefinition(field: string, definition: ColumnDefinition): Promise<IColumnComponent>;
    moveColumn(from: string, to: string, after?: boolean): void;
    scrollToColumn(field: ColumnLookup, position?: ScrollToColumnPosition, ifVisible?: boolean): Promise<void>;
    /**
     * General Public Functions
     */
    redraw(force?: boolean): void;
    /**
     * Event Bus
     */
    on(key: string, callback: (...args: any[]) => any): void;
    off(key: string, callback?: (...args: any[]) => any): void;
    dispatchEvent(...args: any[]): any;
    /**
     * Alerts
     */
    alert(contents: any, type?: string): void;
    clearAlert(): void;
    isLoading(): boolean;
    /**
     * Extension Management
     */
    modExists(plugin: string, required?: boolean): boolean;
    module(key: string): any;
}
export default Tabulator;
