import { OnInit, OnDestroy, NgZone } from '@angular/core';
import { Directionality } from '@angular/cdk/bidi';
import { Observable, Subject, Subscription } from 'rxjs';
import { NgScrollbar } from 'ngx-scrollbar';
declare abstract class ScrollReached implements OnDestroy {
    protected scrollbar: NgScrollbar;
    protected zone: NgZone;
    /** offset: Reached offset value in px */
    offset: number;
    /**
     * Stream that emits scroll event when `NgScrollbar.scrolled` is initialized.
     *
     * **NOTE:** This subject is used to hold the place of `NgScrollbar.scrolled` when it's not initialized yet
     */
    protected scrollEvent: Subject<any>;
    /** subscription: Scrolled event subscription, used to unsubscribe from the event on destroy */
    protected subscription: Subscription;
    /** A stream used to assign the reached output */
    protected reachedEvent: Observable<any>;
    protected constructor(scrollbar: NgScrollbar, zone: NgZone);
    ngOnDestroy(): void;
    protected scrollReached(): Observable<any>;
    protected abstract reached(offset: number, e?: any): boolean;
}
declare abstract class VerticalScrollReached extends ScrollReached implements OnInit {
    protected scrollbar: NgScrollbar;
    protected zone: NgZone;
    protected constructor(scrollbar: NgScrollbar, zone: NgZone);
    ngOnInit(): void;
}
declare abstract class HorizontalScrollReached extends ScrollReached implements OnInit {
    protected scrollbar: NgScrollbar;
    protected zone: NgZone;
    protected constructor(scrollbar: NgScrollbar, zone: NgZone);
    ngOnInit(): void;
}
export declare class NgScrollbarReachedTop extends VerticalScrollReached implements OnInit {
    protected scrollbar: NgScrollbar;
    protected zone: NgZone;
    /** Stream that emits when scroll has reached the top */
    reachedTop: Observable<any>;
    constructor(scrollbar: NgScrollbar, zone: NgZone);
    ngOnInit(): void;
    /**
     * Check if scroll has reached the top (vertically)
     * @param offset Scroll offset
     * @param e Scroll event
     */
    protected reached(offset: number, e: any): boolean;
}
export declare class NgScrollbarReachedBottom extends VerticalScrollReached implements OnInit {
    protected scrollbar: NgScrollbar;
    protected zone: NgZone;
    /** Stream that emits when scroll has reached the bottom */
    reachedBottom: Observable<any>;
    constructor(scrollbar: NgScrollbar, zone: NgZone);
    ngOnInit(): void;
    /**
     * Check if scroll has reached the bottom (vertically)
     * @param offset Scroll offset
     * @param e Scroll event
     */
    protected reached(offset: number, e: any): boolean;
}
export declare class NgScrollbarReachedStart extends HorizontalScrollReached implements OnInit {
    protected scrollbar: NgScrollbar;
    protected zone: NgZone;
    private dir;
    /** Stream that emits when scroll has reached the start */
    reachedStart: Observable<any>;
    constructor(scrollbar: NgScrollbar, zone: NgZone, dir: Directionality);
    ngOnInit(): void;
    /**
     * Check if scroll has reached the start (horizontally)
     * @param offset Scroll offset
     * @param e Scroll event
     */
    protected reached(offset: number, e: any): boolean;
}
export declare class NgScrollbarReachedEnd extends HorizontalScrollReached implements OnInit {
    protected scrollbar: NgScrollbar;
    protected zone: NgZone;
    private dir;
    /** Stream that emits when scroll has reached the end */
    reachedEnd: Observable<any>;
    constructor(scrollbar: NgScrollbar, zone: NgZone, dir: Directionality);
    ngOnInit(): void;
    /**
     * Check if scroll has reached the end (horizontally)
     * @param offset Scroll offset
     * @param e Scroll event
     */
    protected reached(offset: number, e: any): boolean;
}
export {};
