import { IDataLoader, ITabulator } from '../../../../../../types/src/table';
import { default as CoreFeature } from '../CoreFeature';

export default class DataLoader extends CoreFeature implements IDataLoader {
    requestOrder: number;
    loading: boolean;
    externalLoading: boolean;
    private debounceTimer;
    pendingPromise: Promise<void> | null;
    private pendingResolve;
    private pendingReject;
    private static readonly DEBOUNCE_DELAY;
    constructor(table: ITabulator);
    initialize(): void;
    /**
     * Load data into the table. This is a wrapper around the private _executeLoad method.
     * It debounces the load requests to prevent multiple requests from being made in quick succession.
     * Debounced calls share the same promise.
     * @param data - The data to load
     * @param params - The parameters to pass to the load function
     * @param config - The configuration to pass to the load function
     * @param replace - Whether to replace the existing data
     * @param silent - Whether to suppress alerts
     * @param columnsChanged - Whether to update the columns
     * @returns A promise that resolves when the data is loaded
     */
    load(data: any, params?: any, config?: any, replace?: any, silent?: any, columnsChanged?: any): Promise<void>;
    private _executeLoad;
    mapParams(params: Record<string, any>, map: Record<string, string>): Record<string, any>;
    objectInvert(obj: Record<string, string>): Record<string, string>;
    blockActiveLoad(): void;
    setExternalLoading(value: boolean): void;
    alertLoader(): void;
    alertError(): void;
    clearAlert(): void;
}
