import { ElementRef, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { Router } from '@angular/router';
import { BooleanInput } from '@angular/cdk/coercion';
import { Platform } from '@angular/cdk/platform';
import PerfectScrollbar from 'perfect-scrollbar';
import { ScrollbarGeometry, ScrollbarPosition } from '../../lib/scrollbar/scrollbar.types';
import * as i0 from "@angular/core";
/**
 * Wrapper directive for the Perfect Scrollbar: https://github.com/mdbootstrap/perfect-scrollbar
 */
export declare class FuseScrollbarDirective implements OnChanges, OnInit, OnDestroy {
    private _elementRef;
    private _platform;
    private _router;
    static ngAcceptInputType_fuseScrollbar: BooleanInput;
    fuseScrollbar: boolean;
    fuseScrollbarOptions: PerfectScrollbar.Options;
    private _animation;
    private _options;
    private _ps;
    private _unsubscribeAll;
    /**
     * Constructor
     */
    constructor(_elementRef: ElementRef, _platform: Platform, _router: Router);
    /**
     * Getter for _elementRef
     */
    get elementRef(): ElementRef;
    /**
     * Getter for _ps
     */
    get ps(): PerfectScrollbar | null;
    /**
     * On changes
     *
     * @param changes
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * On init
     */
    ngOnInit(): void;
    /**
     * On destroy
     */
    ngOnDestroy(): void;
    /**
     * Is enabled
     */
    isEnabled(): boolean;
    /**
     * Update the scrollbar
     */
    update(): void;
    /**
     * Destroy the scrollbar
     */
    destroy(): void;
    /**
     * Returns the geometry of the scrollable element
     *
     * @param prefix
     */
    geometry(prefix?: string): ScrollbarGeometry;
    /**
     * Returns the position of the scrollable element
     *
     * @param absolute
     */
    position(absolute?: boolean): ScrollbarPosition;
    /**
     * Scroll to
     *
     * @param x
     * @param y
     * @param speed
     */
    scrollTo(x: number, y?: number, speed?: number): void;
    /**
     * Scroll to X
     *
     * @param x
     * @param speed
     */
    scrollToX(x: number, speed?: number): void;
    /**
     * Scroll to Y
     *
     * @param y
     * @param speed
     */
    scrollToY(y: number, speed?: number): void;
    /**
     * Scroll to top
     *
     * @param offset
     * @param speed
     */
    scrollToTop(offset?: number, speed?: number): void;
    /**
     * Scroll to bottom
     *
     * @param offset
     * @param speed
     */
    scrollToBottom(offset?: number, speed?: number): void;
    /**
     * Scroll to left
     *
     * @param offset
     * @param speed
     */
    scrollToLeft(offset?: number, speed?: number): void;
    /**
     * Scroll to right
     *
     * @param offset
     * @param speed
     */
    scrollToRight(offset?: number, speed?: number): void;
    /**
     * Scroll to element
     *
     * @param qs
     * @param offset
     * @param ignoreVisible If true, scrollToElement won't happen if element is already inside the current viewport
     * @param speed
     */
    scrollToElement(qs: string, offset?: number, ignoreVisible?: boolean, speed?: number): void;
    /**
     * Animate scrolling
     *
     * @param target
     * @param value
     * @param speed
     */
    animateScrolling(target: string, value: number, speed?: number): void;
    /**
     * Initialize
     *
     * @private
     */
    private _init;
    /**
     * Destroy
     *
     * @private
     */
    private _destroy;
    static ɵfac: i0.ɵɵFactoryDeclaration<FuseScrollbarDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FuseScrollbarDirective, "[fuseScrollbar]", ["fuseScrollbar"], { "fuseScrollbar": "fuseScrollbar"; "fuseScrollbarOptions": "fuseScrollbarOptions"; }, {}, never>;
}
