import { ElementRef, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';
import { ScrollEventService } from '../services';
import * as i0 from "@angular/core";
export declare class WillChangeDirective implements OnInit, OnChanges, OnDestroy {
    private htmlElement;
    private renderer;
    private scrollEventService;
    /**
     * Area where element has will-change property.
     * Default is window height / 4 * 6.
     * @type {number}
     */
    triggerArea: number;
    /**
     * If disabled, element will have will-change
     * property set to 'auto'.
     * @type {boolean}
     */
    isDisabled: boolean;
    /**
     * Range in pixels where the element has
     * will-change property.
     * @type {SectionAreaModel | undefined}
     */
    private willChangeArea;
    /**
     * Element will change value.
     * @type {boolean}
     */
    private willChange;
    /**
     * Subscription to scroll event.
     * @type {Subscription | undefined}
     */
    private scrollEventListener;
    constructor(htmlElement: ElementRef, renderer: Renderer2, scrollEventService: ScrollEventService);
    ngOnInit(): void;
    ngOnDestroy(): void;
    /**
     * Create listener for scroll event.
     */
    private createListener;
    /**
     * Destroy scroll event listener.
     */
    private destroyListener;
    /**
     * Refresh will-change area if some properties changed.
     * @param {SimpleChanges} changes - Changes.
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * Check will-change property and
     * update if needed.
     * @param {number} scroll - Scroll position.
     */
    private checkWillChange;
    /**
     * Check if element is in will-change area.
     * @param {number} scroll - Scroll position.
     * @param {SectionAreaModel} willChangeArea - Will-change area.
     * @returns {boolean} - Is element in will-change area.
     */
    private isElementInArea;
    /**
     * Calculate area where element is probably going to be animated soon.
     * @returns {number} - Will-change area.
     */
    private getWillChangeArea;
    /**
     * Set element will-change property.
     * @param {boolean} willChange - will-change enabled or disabled.
     */
    private setWillChange;
    static ɵfac: i0.ɵɵFactoryDeclaration<WillChangeDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<WillChangeDirective, "[libWillChange]", never, { "triggerArea": "triggerArea"; "isDisabled": "isDisabled"; }, {}, never>;
}
