import { IModule, IRow, ITabulator } from '../../../../../types/src/table';
import { default as CoreFeature } from './CoreFeature';
import { default as Popup } from './tools/Popup';

export default class Module extends CoreFeature implements IModule {
    static readonly moduleExtensions?: Record<string, Record<string, Record<string, any>>>;
    static readonly moduleName: string;
    static readonly moduleInitOrder?: number;
    moduleCore?: boolean;
    _handler: ((rows: IRow[]) => IRow[]) | string;
    constructor(table: ITabulator);
    initialize(): void;
    /**
     * Options Registration
     */
    registerTableOption(key: string, value?: unknown): void;
    registerColumnOption(key: string, value?: unknown): void;
    /**
     * Public Function Registration
     */
    registerTableFunction<TName extends string, TFunc extends (...args: any[]) => any>(name: TName, func: TFunc): void;
    registerComponentFunction(component: string, func: string, handler: any): any;
    /**
     * Data Pipeline
     */
    registerDataHandler(handler: (rows: IRow[]) => IRow[], priority: number): void;
    registerDisplayHandler(handler: (rows: IRow[], renderInPosition?: boolean) => IRow[], priority: number): void;
    displayRows(adjust?: number): IRow[] | undefined;
    activeRows(): IRow[];
    refreshData(renderInPosition?: boolean, handler?: ((rows: IRow[]) => IRow[]) | string): void;
    /**
     * Footer Management
     */
    footerAppend(element: HTMLElement): HTMLElement;
    footerPrepend(element: HTMLElement): HTMLElement;
    footerRemove(element: HTMLElement): HTMLElement;
    /**
     * Popups Management
     */
    popup(menuEl: HTMLElement, menuContainer?: Popup): Popup;
    /**
     * Alert Management
     */
    alert(content: any, type?: string): void;
    clearAlert(): void;
}
