import { EventHandler, InitModelOf, SimpleTab, SimpleTabArea, SimpleTabAreaTabSelectEvent, SimpleTabBox, SimpleTabBoxControllerModel, SimpleTabBoxViewActivateEvent, SimpleTabBoxViewAddEvent, SimpleTabBoxViewDeactivateEvent, SimpleTabBoxViewRemoveEvent, SimpleTabView } from '../index';
/**
 * The {@link SimpleTabBoxController} is used to link a {@link SimpleTabBox} with a {@link SimpleTabArea}.
 * There are {@link SimpleTabBox} with more than one {@link SimpleTabArea} to be actualized.
 * Therefore, the linking is separated in a controller.
 * The controller basically listens to 'viewAdd', 'viewRemove', 'viewActivate', 'viewDeactivate' on the {@link SimpleTabBox} and
 * updates the {@link SimpleTabArea}.
 */
export declare class SimpleTabBoxController<TView extends SimpleTabView = SimpleTabView> implements SimpleTabBoxControllerModel<TView> {
    model: SimpleTabBoxControllerModel<TView>;
    tabBox: SimpleTabBox<TView>;
    tabArea: SimpleTabArea<TView>;
    protected _viewAddHandler: EventHandler<SimpleTabBoxViewAddEvent<TView>>;
    protected _viewRemoveHandler: EventHandler<SimpleTabBoxViewRemoveEvent<TView>>;
    protected _viewActivateHandler: EventHandler<SimpleTabBoxViewActivateEvent<TView>>;
    protected _viewDeactivateHandler: EventHandler<SimpleTabBoxViewDeactivateEvent<TView>>;
    protected _viewTabSelectHandler: EventHandler<SimpleTabAreaTabSelectEvent<TView>>;
    constructor();
    init(model: InitModelOf<this>): void;
    install(tabBox: SimpleTabBox<TView>, tabArea?: SimpleTabArea<TView>): void;
    uninstall(): void;
    protected _installListeners(): void;
    protected _uninstallListeners(): void;
    createTabArea(): SimpleTabArea<TView>;
    /** @internal */
    _onViewAdd(event: {
        view: TView;
        siblingView?: TView;
    }): void;
    protected _shouldCreateTabForView(view: TView): boolean;
    protected _onViewRemove(event: SimpleTabBoxViewRemoveEvent<TView>): void;
    /** @internal */
    _onViewActivate(event: {
        view: TView;
    }): void;
    protected _onViewDeactivate(event: SimpleTabBoxViewDeactivateEvent<TView>): void;
    protected _onViewTabSelect(event: SimpleTabAreaTabSelectEvent<TView>): void;
    protected _createTab(view: TView): SimpleTab<TView>;
    getTab(view: TView): SimpleTab<TView>;
    getTabs(): SimpleTab<TView>[];
    static hasViewTab(view: SimpleTabView): boolean;
}
//# sourceMappingURL=SimpleTabBoxController.d.ts.map