import { AnimationBuilder } from '@angular/animations';
import { ChangeDetectorRef } from '@angular/core';
import { AfterViewInit, EventEmitter, OnDestroy, QueryList } from '@angular/core';
import { IgxCarouselComponentBase } from '../carousel/carousel-base';
import { IBaseEventArgs } from '../core/utils';
import { IgxTabItemDirective } from './tab-item.directive';
import { IgxTabContentBase, IgxTabsBase } from './tabs.base';
export interface ITabsBaseEventArgs extends IBaseEventArgs {
    readonly owner: IgxTabsDirective;
}
export interface ITabsSelectedIndexChangingEventArgs extends ITabsBaseEventArgs {
    cancel: boolean;
    readonly oldIndex: number;
    newIndex: number;
}
export interface ITabsSelectedItemChangeEventArgs extends ITabsBaseEventArgs {
    readonly oldItem: IgxTabItemDirective;
    readonly newItem: IgxTabItemDirective;
}
export declare abstract class IgxTabsDirective extends IgxCarouselComponentBase implements IgxTabsBase, AfterViewInit, OnDestroy {
    /**
     * An @Input property that gets/sets the index of the selected item.
     * Default value is 0 if contents are defined otherwise defaults to -1.
     */
    get selectedIndex(): number;
    set selectedIndex(value: number);
    /**
     * Enables/disables the transition animation of the contents.
     */
    get disableAnimation(): boolean;
    set disableAnimation(value: boolean);
    /**
     * Output to enable support for two-way binding on [(selectedIndex)]
     */
    selectedIndexChange: EventEmitter<number>;
    /**
     * Emitted when the selected index is about to change.
     */
    selectedIndexChanging: EventEmitter<ITabsSelectedIndexChangingEventArgs>;
    /**
     * Emitted when the selected item is changed.
     */
    selectedItemChange: EventEmitter<ITabsSelectedItemChangeEventArgs>;
    /**
     * Returns the items.
     */
    items: QueryList<IgxTabItemDirective>;
    /**
     * Gets the selected item.
     */
    get selectedItem(): IgxTabItemDirective;
    /** @hidden */
    panels: QueryList<IgxTabContentBase>;
    /** @hidden */
    protected _disableAnimation: boolean;
    /** @hidden */
    protected currentItem: IgxTabItemDirective;
    /** @hidden */
    protected previousItem: IgxTabItemDirective;
    /** @hidden */
    protected componentName: string;
    private _selectedIndex;
    private _itemChanges$;
    /** @hidden */
    constructor(builder: AnimationBuilder, cdr: ChangeDetectorRef);
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden */
    selectTab(tab: IgxTabItemDirective, selected: boolean): void;
    /** @hidden */
    protected getPreviousElement(): HTMLElement;
    /** @hidden */
    protected getCurrentElement(): HTMLElement;
    /** @hidden */
    protected scrollTabHeaderIntoView(): void;
    /** @hidden */
    protected onItemChanges(): void;
    private setAttributes;
    private setHeaderAttribute;
    private setPanelAttribute;
    private get hasPanels();
    private updateSelectedTabs;
    private triggerPanelAnimations;
    /** @hidden */
    protected abstract getNextTabId(): any;
}
