import { AfterViewInit, ChangeDetectorRef, EventEmitter, NgZone, TemplateRef, TrackByFunction } from '@angular/core';
import * as i0 from "@angular/core";
/**
 * The `PaginatedListComponent` is a utility element that can display a list of any items. It uses infinite scrolls to load more elements. Providing the data to display, is the responsibility of the parent component.
 */
export declare class PaginatedListComponent<T> implements AfterViewInit {
    private ngZone;
    private cdRef;
    /**
     * The items to display
     */
    items: T[];
    /**
     * If `true`, the loading indicator will be displayed
     */
    isLoading: boolean;
    /**
     * If `false` the component won't ask for more data vua the `loadMore` output
     */
    hasMore: boolean;
    /**
     * The `trackBy` to use with the `NgFor` directive
     * @param i
     * @returns the track by id
     */
    trackBy: TrackByFunction<T>;
    itemTempalteRef: TemplateRef<{
        item: T;
        index: number;
    }> | undefined;
    /**
     * The component will signal via this output when more items should be fetched
     *
     * The new items should be appended to the `items` array
     */
    readonly loadMore: EventEmitter<void>;
    isScrollable: boolean;
    isAtBottom: boolean;
    private scrollContainer;
    constructor(ngZone: NgZone, cdRef: ChangeDetectorRef);
    ngAfterViewInit(): void;
    private scrolled;
    static ɵfac: i0.ɵɵFactoryDeclaration<PaginatedListComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PaginatedListComponent<any>, "stream-paginated-list", never, { "items": { "alias": "items"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "hasMore": { "alias": "hasMore"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; }, { "loadMore": "loadMore"; }, ["itemTempalteRef"], never, false, never>;
}
