import { ViewContainerRef, OnInit, OnDestroy, Renderer2, EventEmitter } from '@angular/core';
import { SlimScrollOptions, ISlimScrollOptions } from '../classes/slimscroll-options.class';
import { SlimScrollEvent } from '../classes/slimscroll-event.class';
import { ISlimScrollState } from '../classes/slimscroll-state.class';
import { Subscription } from 'rxjs/Subscription';
import 'rxjs/add/observable/fromEvent';
import 'rxjs/add/observable/merge';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/operator/takeUntil';
import 'rxjs/add/operator/map';
export declare const easing: {
    [key: string]: Function;
};
export declare class SlimScrollDirective implements OnInit, OnDestroy {
    private viewContainer;
    private renderer;
    private document;
    private optionsDefaults;
    options: SlimScrollOptions;
    scrollEvents: EventEmitter<SlimScrollEvent>;
    scrollChanged: EventEmitter<ISlimScrollState>;
    el: HTMLElement;
    wrapper: HTMLElement;
    grid: HTMLElement;
    bar: HTMLElement;
    body: HTMLElement;
    pageY: number;
    top: number;
    dragging: boolean;
    mutationThrottleTimeout: number;
    mutationObserver: MutationObserver;
    lastTouchPositionY: number;
    visibleTimeout: any;
    interactionSubscriptions: Subscription;
    constructor(viewContainer: ViewContainerRef, renderer: Renderer2, document: any, optionsDefaults: ISlimScrollOptions);
    ngOnInit(): void;
    ngOnDestroy(): void;
    handleEvent(e: SlimScrollEvent): void;
    setStyle(): void;
    onMutation(): void;
    wrapContainer(): void;
    initGrid(): void;
    initBar(): void;
    getBarHeight(): void;
    scrollTo(y: number, duration: number, easingFunc: string): void;
    scrollContent(y: number, isWheel: boolean, isJump: boolean): null | number;
    initWheel: () => void;
    initDrag: () => void;
    showBarAndGrid(): void;
    hideBarAndGrid(): void;
    preventDefaultEvent: (e: MouseEvent) => void;
    destroy(): void;
    unwrap(wrapper: HTMLElement): void;
    onResize($event: any): void;
}
