import { BaseGridPlugin, ScrollEvent } from '../../core/plugin/base-plugin';
import { ServerSideConfig, ServerSideDataSource } from './types';
/**
 * Server-Side Plugin for tbw-grid
 *
 * @example
 * ```ts
 * const plugin = new ServerSidePlugin({ cacheBlockSize: 100 });
 * plugin.setDataSource(myDataSource);
 * ```
 */
export declare class ServerSidePlugin extends BaseGridPlugin<ServerSideConfig> {
    readonly name = "serverSide";
    protected get defaultConfig(): Partial<ServerSideConfig>;
    private dataSource;
    private totalRowCount;
    private loadedBlocks;
    private loadingBlocks;
    private lastRequestId;
    private scrollDebounceTimer?;
    detach(): void;
    /**
     * Check current viewport and load any missing blocks.
     */
    private loadRequiredBlocks;
    processRows(rows: readonly unknown[]): unknown[];
    onScroll(event: ScrollEvent): void;
    /**
     * Set the data source for server-side loading.
     * @param dataSource - Data source implementing the getRows method
     */
    setDataSource(dataSource: ServerSideDataSource): void;
    /**
     * Refresh all data from the server.
     */
    refresh(): void;
    /**
     * Clear all cached data without refreshing.
     */
    purgeCache(): void;
    /**
     * Get the total row count from the server.
     */
    getTotalRowCount(): number;
    /**
     * Check if a specific row is loaded in the cache.
     * @param rowIndex - Row index to check
     */
    isRowLoaded(rowIndex: number): boolean;
    /**
     * Get the number of loaded cache blocks.
     */
    getLoadedBlockCount(): number;
}
//# sourceMappingURL=ServerSidePlugin.d.ts.map