import { BehaviorSubject, Subject, Subscription } from 'rxjs';
import { MatTableDataSource } from '@angular/material/table';
import { DataSource } from '@angular/cdk/collections';
export interface TVSDataSource<T> {
    dataToRender$: Subject<T[]>;
    dataOfRange$: Subject<T[]>;
}
export declare function isTVSDataSource<T>(dataSource: unknown): dataSource is TVSDataSource<T>;
export declare class CdkTableVirtualScrollDataSource<T> extends DataSource<T> implements TVSDataSource<T> {
    /** Stream that emits when a new data array is set on the data source. */
    private readonly _data;
    /** Stream emitting render data to the table (depends on ordered data changes). */
    private readonly _renderData;
    /**
     * Subscription to the changes that should trigger an update to the table's rendered rows, such
     * as filtering, sorting, pagination, or base data changes.
     */
    _renderChangesSubscription: Subscription | null;
    /** Array of data that should be rendered by the table, where each object represents one row. */
    get data(): T[];
    set data(data: T[]);
    dataToRender$: Subject<T[]>;
    dataOfRange$: Subject<T[]>;
    private streamsReady;
    constructor(initialData?: T[]);
    _updateChangeSubscription(): void;
    connect(): BehaviorSubject<T[]>;
    disconnect(): void;
    private initStreams;
}
export declare class TableVirtualScrollDataSource<T> extends MatTableDataSource<T> implements TVSDataSource<T> {
    dataToRender$: Subject<T[]>;
    dataOfRange$: Subject<T[]>;
    private streamsReady;
    _updateChangeSubscription(): void;
    private initStreams;
}
