import { AfterViewChecked, AfterViewInit, ChangeDetectorRef } from '@angular/core';
import { IStepperState } from './stepper-state.interface';
import { NgbTabChangeEvent, NgbTabset } from '@ng-bootstrap/ng-bootstrap';
import { StepDirective } from './step.directive';
export declare class StepperDirective implements AfterViewChecked, AfterViewInit {
    cd: ChangeDetectorRef;
    constructor(cd: ChangeDetectorRef);
    blockStepsUntilComplete: boolean;
    disableAllSteps: boolean;
    tabSet: NgbTabset;
    steps: StepDirective[];
    state: IStepperState;
    hasSubscribedToTabset: boolean;
    /**
     * Set up the steps
     */
    ngAfterViewInit(): void;
    /**
     * Update the `stepNumber` prop for each of the child steps
     */
    updateStepNumbers(): void;
    /**
     * Updates each tab's disabled status based on the previous tab's
     * isComplete status. Will not disable any tabs if blockStepsUntilComplete
     * is true. The first tab is never disabled.
     * Force a changeDetection to prevent ExpressionChangedAfterItHasBeenCheckedError.
     */
    updateTabsStatus(): void;
    /**
     * Checks for tabset for that we can subscribe to change events
     * Updates tabset.destroyOnHide so that the form states are not lost
     * Updates all tab status so that enable/disabled states are up to date
     */
    ngAfterViewChecked(): void;
    /**
     * Subscribes to tab change events, call an initial tabChange event,
     * because we are calling this method from ngAfterViewChecked we are
     * setting a flag so that this only gets called once.
     */
    subscribeToTabChange(): void;
    /**
     * Called before a tabChange event
     * @param change
     */
    handlePreTabChange(change: NgbTabChangeEvent): void;
    /**
     * Gathers information about the current state of the stepper
     * to simplify other methods and to enable devs to use the data to
     * in their stepper implementations.
     * @param currentTabId
     */
    updateCurrentState(currentTabId: string): void;
    /**
     * Selects the next tab (in order)
     */
    selectNext(): void;
    /**
     * Selects the preceding tab (in order)
     */
    selectPrevious(): void;
    /**
     * Gets the index of the given tabId, defaults to the currently active tab
     * @param tabId
     */
    getTabIndex(tabId?: string): number;
}
