import { AnimationBuilder, AnimationPlayer, AnimationReferenceMetadata } from '@angular/animations';
import { EventEmitter } from '@angular/core';
export declare enum Direction {
    NONE = 0,
    NEXT = 1,
    PREV = 2
}
export declare const HorizontalAnimationType: {
    none: "none";
    slide: "slide";
    fade: "fade";
};
export declare type HorizontalAnimationType = (typeof HorizontalAnimationType)[keyof typeof HorizontalAnimationType];
export interface CarouselAnimationSettings {
    enterAnimation: AnimationReferenceMetadata;
    leaveAnimation: AnimationReferenceMetadata;
}
/** @hidden */
export interface IgxSlideComponentBase {
    direction: Direction;
    previous: boolean;
}
/** @hidden */
export declare abstract class IgxCarouselComponentBase {
    private builder;
    /** @hidden */
    animationType: HorizontalAnimationType;
    /** @hidden @internal */
    enterAnimationDone: EventEmitter<any>;
    /** @hidden @internal */
    leaveAnimationDone: EventEmitter<any>;
    /** @hidden */
    protected currentItem: IgxSlideComponentBase;
    /** @hidden */
    protected previousItem: IgxSlideComponentBase;
    /** @hidden */
    protected enterAnimationPlayer?: AnimationPlayer;
    /** @hidden */
    protected leaveAnimationPlayer?: AnimationPlayer;
    /** @hidden */
    protected defaultAnimationDuration: number;
    /** @hidden */
    protected animationPosition: number;
    /** @hidden */
    protected newDuration: number;
    constructor(builder: AnimationBuilder);
    /** @hidden */
    protected triggerAnimations(): void;
    /** @hidden */
    protected animationStarted(animation: AnimationPlayer): boolean;
    /** @hidden */
    protected playAnimations(): void;
    private resetAnimations;
    private getAnimation;
    private playEnterAnimation;
    private playLeaveAnimation;
    protected abstract getPreviousElement(): HTMLElement;
    protected abstract getCurrentElement(): HTMLElement;
}
