import { AfterViewInit, ElementRef, EventEmitter, Injector, OnDestroy, QueryList, ViewContainerRef } from '@angular/core';
import { MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs';
import { ActivatedRoute, Router } from '@angular/router';
import { BehaviorSubject, Subject, Subscription } from 'rxjs';
import { ILayoutManagerComponent } from '../../../interfaces/layout-manager-component.interface';
import { OFormLayoutManagerMode } from '../../../interfaces/o-form-layout-manager-mode.interface';
import { DialogService } from '../../../services/dialog.service';
import { OFormLayoutManagerComponentStateClass } from '../../../services/state/o-form-layout-manager-component-state.class';
import { FormLayoutCloseDetailOptions, FormLayoutDetailComponentData } from '../../../types/form-layout-detail-component-data.type';
import { OFormLayoutManagerContentDirective } from '../directives/o-form-layout-manager-content.directive';
import { OFormLayoutManagerBase } from '../o-form-layout-manager-base.class';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_FORM_LAYOUT_TABGROUP: string[];
export declare const DEFAULT_OUTPUTS_O_FORM_LAYOUT_TABGROUP: string[];
export declare class OFormLayoutTabGroupComponent implements OFormLayoutManagerMode, AfterViewInit, OnDestroy {
    protected injector: Injector;
    protected location: ViewContainerRef;
    protected elementRef: ElementRef;
    formLayoutManager: OFormLayoutManagerBase;
    data: FormLayoutDetailComponentData[];
    title: string;
    options: any;
    showLoading: BehaviorSubject<boolean>;
    stretchTabs: boolean;
    tabGroup: MatTabGroup;
    tabsDirectives: QueryList<OFormLayoutManagerContentDirective>;
    protected subscriptions: Subscription;
    protected router: Router;
    protected dialogService: DialogService;
    onMainTabSelected: EventEmitter<any>;
    onSelectedTabChange: EventEmitter<any>;
    onCloseTab: EventEmitter<any>;
    protected previousSelectedIndex: number;
    updateTabComponentsState: Subject<any>;
    tabsModificationsCache: any[];
    actRoute: ActivatedRoute;
    constructor(injector: Injector, location: ViewContainerRef, elementRef: ElementRef, formLayoutManager: OFormLayoutManagerBase);
    get state(): OFormLayoutManagerComponentStateClass;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    get mainTabTitle(): string;
    get disableAnimation(): any;
    get headerPosition(): any;
    get color(): any;
    get backgroundColor(): any;
    get templateMatTabLabel(): any;
    get icon(): any;
    get isIconPositionLeft(): boolean;
    get maxTabs(): number;
    addTab(compData: FormLayoutDetailComponentData): void;
    reloadTab(compData: FormLayoutDetailComponentData): void;
    onTabSelectChange(arg: MatTabChangeEvent): void;
    closeTab(index: number, options?: FormLayoutCloseDetailOptions): void;
    createTabComponent(tabData: FormLayoutDetailComponentData, content: OFormLayoutManagerContentDirective): void;
    getFormCacheData(): FormLayoutDetailComponentData;
    getRouteOfActiveItem(): any[];
    setModifiedState(formAttr: string, modified: boolean, confirmExit: boolean): void;
    updateNavigation(data: any, keysValues: any, insertionMode?: boolean): void;
    updateActiveData(data: any): void;
    getDataToStore(): any;
    initializeComponentState(): void;
    getParams(): any;
    isMainComponent(comp: ILayoutManagerComponent): boolean;
    openDetail(detail: FormLayoutDetailComponentData): void;
    closeDetail(options?: FormLayoutCloseDetailOptions): void;
    canAddDetailComponent(): boolean;
    isTabDataModified(tabData: FormLayoutDetailComponentData): boolean;
    closeDetails(detailsKeysData?: any[], options?: FormLayoutCloseDetailOptions): void;
    getIdOfActiveItem(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<OFormLayoutTabGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OFormLayoutTabGroupComponent, "o-form-layout-tabgroup", never, { "title": "title"; "options": "options"; "stretchTabs": "stretch-tabs"; }, { "onMainTabSelected": "onMainTabSelected"; "onSelectedTabChange": "onSelectedTabChange"; "onCloseTab": "onCloseTab"; }, never, ["*"], false, never>;
}
