import { ListRange } from "@angular/cdk/collections";
import { CdkVirtualScrollViewport } from "@angular/cdk/scrolling";
import { MonoTypeOperatorFunction, Observable } from "rxjs";
import { IFilter, IFilterPub } from "./data-source/public-api";
import { IVirtualPageConfig, IVirtualViewportResetOptions } from "./public-api";
/**
 * <example-url>./../examples/index.html#/common/virtual-viewport-manager</example-url>
 */
export declare class VirtualViewportManager implements IFilterPub {
    private _viewportRef;
    private _currentPageRange;
    private _pageSize;
    /**
     * Entry point for VirtualViewportManager
     * @param  viewportRef - CDK Viewport reference on which you want to perform observations
     * @returns self (VirtualViewportManager)
     */
    setViewport(viewportRef: CdkVirtualScrollViewport): VirtualViewportManager;
    get currentPageRange(): Readonly<ListRange>;
    /**
     * Observes the changes of viewport and emits when current range has been rendered
     * and a new one should be loaded
     * @param  config accepts and IVirtualPageConfig which contains page observer's configuration
     * It is requiring pageSize prop to be set to delegate responsibility of pagination to ViewportManager
     * @returns Stream of pages with fixed size
     */
    observeNextPage$(config: IVirtualPageConfig): Observable<ListRange>;
    getFilters(): IFilter<ListRange>;
    /**
     * Resetting viewportManager to initial state
     * @param  options In case VirtualViewportManager is used along with filters (sorting, search...)
     * we can prevent default behaviour of emitting firstPageEvent and let user to set first batch of data
     * @returns void
     */
    reset(options?: IVirtualViewportResetOptions): void;
    private updateCurrentPage;
    private checkViewportUntilValid;
    protected mapToPageSize(pageSize: number): MonoTypeOperatorFunction<ListRange>;
}
