import { AnimationReferenceMetadata } from '@angular/animations';
import { ChangeDetectorRef, EventEmitter, InjectionToken } from '@angular/core';
import { AnimationPlayer, AnimationService } from '../services/animation/animation';
import { CarouselAnimationType, CarouselIndicatorsOrientation } from './enums';
export declare enum Direction {
    NONE = 0,
    NEXT = 1,
    PREV = 2
}
export interface CarouselAnimationSettings {
    enterAnimation: AnimationReferenceMetadata;
    leaveAnimation: AnimationReferenceMetadata;
}
export interface ICarouselComponentBase {
    id: string;
    role: string;
    cssClass: string;
    loop: boolean;
    pause: boolean;
    navigation: boolean;
    indicators: boolean;
    vertical: boolean;
    keyboardSupport: boolean;
    gesturesSupport: boolean;
    maximumIndicatorsCount: number;
    indicatorsOrientation: CarouselIndicatorsOrientation;
    animationType: CarouselAnimationType;
    total: number;
    current: number;
    interval: number;
    slideChanged: EventEmitter<any>;
    slideAdded: EventEmitter<any>;
    slideRemoved: EventEmitter<any>;
    carouselPaused: EventEmitter<any>;
    carouselPlaying: EventEmitter<any>;
    next(): void;
    prev(): void;
    play(): void;
    stop(): void;
}
/** @hidden */
export declare const IGX_CAROUSEL_COMPONENT: InjectionToken<ICarouselComponentBase>;
/** @hidden */
export interface IgxSlideComponentBase {
    direction: Direction;
    previous: boolean;
}
/** @hidden */
export declare abstract class IgxCarouselComponentBase {
    private animationService;
    protected cdr: ChangeDetectorRef;
    /** @hidden */
    animationType: CarouselAnimationType;
    /** @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;
    /** @hidden */
    protected vertical: boolean;
    constructor(animationService: AnimationService, cdr: ChangeDetectorRef);
    /** @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;
}
