import { ElementRef, OnInit, EventEmitter, QueryList, AfterContentInit } from '@angular/core';
import { CfCoreComponent } from '../core/core.component';
import { TabsModel } from '../../models/tabs/tabs.model';
import { TabsStylingModel } from '../../models/tabs/tabs-styling.model';
import { CfTabsCardComponent } from '../tabs-card/tabs-card.component';
import { TemplateService } from '../../services/template-service/template.service';
/**
 * <p>Tabs component based on Angular Material Tabs and Angular animations system</p>
 * <p>Example of using:</p>
 * <pre>
 * <code><</code>cf-tabs [properties]="myTabs" [styling]="myTabsStyles"<code>></code><code><</code><code>/</code>cf-tabs<code>></code>
 * </pre>
 */
export declare class CfTabsComponent extends CfCoreComponent implements OnInit, AfterContentInit {
    elementRef: ElementRef;
    /**
     * It is an TabsModel object with options to be rendered into component template
     */
    cfTabs: TabsModel;
    /**
     * It is an attribute <b>[properties]</b> of directive <b>cf-tabs</b> which take TabsModel object.
     * <p>Example of model:</p>
     * <pre>{
     *  showStepNumberAsIcon: true
     *  showStepNumberAsPrefix: true
     * }</pre>
     * <h4>showStepNumberAsIcon: boolean</h4>
     * Showing step number as icon in tabs header steps buttons
     * <h4>showStepNumberAsPrefix: boolean</h4>
     * Showing step prefix as icon in tabs header steps buttons
     */
    properties: TabsModel;
    /**
     * It is an attribute <b>[styling]</b> of directive <b>cf-tabs</b> which take WizardStylingModel object with next properties:
     * <h4>container: StylingModel</h4>
     * Styling properties for main tabs container
     */
    styling: TabsStylingModel;
    /**
     * It is an array of tabs cards
     */
    tabsCards: QueryList<CfTabsCardComponent>;
    /**
     * It is an array of tabs cards
     */
    private _cards;
    /**
     * Property which means if tabs cards list container is scrollable based on tabs container width and total width of all cards
     */
    private _scrollable;
    /**
     * Property which means one card offset width to move cards list container to the left/right
     */
    private _scrollableCard;
    /**
     * It is width in pixels and means how much tabs cards list container is bigger than cards container
     */
    private _scrollableOffset;
    /**
     * Current tabs card index
     */
    private _currentCardIndex;
    /**
     * It is card part width which is hidden inside cards list container on init
     */
    private _scrollableCardLast;
    /**
     * It is number which means how mush in pixels to move left/right cards list container
     */
    private _scrollablePosition;
    /**
     * It is number of possible moving cards
     */
    private _availableScrollCards;
    /**
     * It is index of current card of all possible moving cards
     */
    private _currentAvailableCard;
    /**
     * Link to tabs cards html section
     */
    tabsPaginationSection: any;
    /**
     * Link to tabs cards html container
     */
    tabsPaginationContainer: any;
    /**
     * Link to tabs cards html list container
     */
    tabsPaginationList: any;
    /**
     * It is <b>(onCardChanged)</b> attribute of <b>cf-tabs</b> component. Is emmiting event with active card.
     */
    onCardChanged: EventEmitter<CfTabsCardComponent>;
    constructor(elementRef: ElementRef, /**@hidden */ templateService: TemplateService);
    /**
     * Initialize all data
     */
    ngOnInit(): void;
    /**
     * Angular 2 event triggered after component content was initialized. Here all cards are collected to an array and first array card became active.
     */
    ngAfterContentInit(): void;
    /**
     * Private function to buils cards array
     */
    private readonly cards;
    /**
     * Private function to find active card
     */
    /**
     * Private function to set active card
     */
    private activeCard;
    /**
     * Private function to find active card index
     */
    private readonly activeCardIndex;
    /**
     * Private function to set if card has next card
     */
    private readonly hasNextCard;
    /**
     * Private function to set if card has previous card
     */
    private readonly hasPrevCard;
    /**
     * Function to calculate possible scroll steps
     */
    calculatePossibleScrollCards(): void;
    /**
     * Function make tabs scrollable
     */
    makeScrollable(): boolean;
    /**
     * Function to take tabs scrollable length
     */
    takeScrollableOffset(): void;
    /**
     * Function to make tabs scrollable step
     */
    makeScrollableCard(): void;
    /**
     * Function to check tabs scrollable position
     */
    checkScrollablePosition(): void;
    /**
     * Function to move tabs cards to the right
     */
    moveRight(): void;
    /**
     * Function to move tabs cards to the left
     */
    moveLeft(): void;
    /**
     * Function to set animation to each step according to active card index
     * @param card  it is json step object
     * @param cardIndex  it is step index
     */
    setCardsAnmations(card: CfTabsCardComponent, cardIndex: number): void;
    /**
     * Function to go to tabs card
     * @param card  it is json card object
     * @param cardIndex  it is card index
     */
    goToCard(card: CfTabsCardComponent, cardIndex: number): void;
    /**
     * Function to go to the next card
     */
    next(): void;
    /**
     * Function to go to the previous card
     */
    previous(): void;
}
