import { AfterViewInit, ElementRef, EventEmitter, Injector, OnDestroy, OnInit } from '@angular/core';
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
import { ActivatedRoute, ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';
import { Observable, Subscription } from 'rxjs';
import { ILayoutManagerComponent } from '../../interfaces/layout-manager-component.interface';
import { ILocalStorageComponent } from '../../interfaces/local-storage-component.interface';
import { OFormLayoutManagerMode } from '../../interfaces/o-form-layout-manager-mode.interface';
import { LocalStorageService } from '../../services/local-storage.service';
import { NavigationService } from '../../services/navigation.service';
import { OFormLayoutManagerService } from '../../services/o-form-layout-manager.service';
import { OFormLayoutManagerComponentStateClass } from '../../services/state/o-form-layout-manager-component-state.class';
import { OFormLayoutManagerComponentStateService } from '../../services/state/o-form-layout-manager-component-state.service';
import { OTranslateService } from '../../services/translate/o-translate.service';
import { FormLayoutCloseDetailOptions, FormLayoutDetailComponentData } from '../../types/form-layout-detail-component-data.type';
import { OFormLayoutDialogComponent } from './dialog/o-form-layout-dialog.component';
import { OFormLayoutManagerBase } from './o-form-layout-manager-base.class';
import { OFormLayoutManagerContext } from '../../types/form-layout-manager-context.type';
import { IOFormLayoutManager } from '../../interfaces/form-layout-manager.interface';
import { OFormLayoutSidenavOptions } from '../../types/form-layout-sidenav-options.type';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_FORM_LAYOUT_MANAGER: string[];
export declare const DEFAULT_OUTPUTS_O_FORM_LAYOUT_MANAGER: string[];
export declare class OFormLayoutManagerComponent implements AfterViewInit, OnInit, OnDestroy, ILocalStorageComponent, IOFormLayoutManager {
    protected injector: Injector;
    protected router: Router;
    protected actRoute: ActivatedRoute;
    protected dialog: MatDialog;
    protected elRef: ElementRef;
    parentFormLayoutManager: OFormLayoutManagerBase;
    OFormLayoutManagerComponent: typeof OFormLayoutManagerComponent;
    static readonly DIALOG_MODE = "dialog";
    static readonly TAB_MODE = "tab";
    static readonly SPLIT_PANE_MODE = "split-pane";
    static readonly SIDENAV_MODE = "sidenav";
    oattr: string;
    _mode: string;
    stretchTabs: boolean;
    protected _sidenavOptions: OFormLayoutSidenavOptions;
    get mode(): string;
    set mode(value: string);
    protected _separator: string;
    set separator(value: string);
    get separator(): string;
    title: string;
    storeState: boolean;
    titleDataOrigin: string;
    dialogWidth: string;
    dialogMinWidth: string;
    dialogMaxWidth: string;
    dialogHeight: string;
    dialogMinHeight: string;
    dialogMaxHeight: string;
    dialogClass: string;
    dialogTitleSeparator: string;
    showFullscreenButton: boolean;
    sidenavPosition: 'start' | 'end';
    sidenavWidth: string;
    oTabGroup: OFormLayoutManagerMode;
    dialogRef: MatDialogRef<OFormLayoutDialogComponent>;
    oSplitPane: OFormLayoutManagerMode;
    oSidenav: OFormLayoutManagerMode;
    onMainTabSelected: EventEmitter<any>;
    onSelectedTabChange: EventEmitter<any>;
    onCloseTab: EventEmitter<any>;
    protected _labelColumns: string;
    get labelColumns(): string;
    set labelColumns(value: string);
    protected _labelColsArray: string[];
    get labelColsArray(): string[];
    set labelColsArray(value: string[]);
    protected translateService: OTranslateService;
    protected oFormLayoutManagerService: OFormLayoutManagerService;
    protected localStorageService: LocalStorageService;
    protected _tabGroupOptions: any;
    get tabGroupOptions(): any;
    addTabGroupOptions(value: any): void;
    protected _dialogOptions: any;
    get dialogOptions(): any;
    addDialogOptions(value: any): void;
    protected _splitPaneOptions: any;
    get splitPaneOptions(): any;
    addSplitPaneOptions(value: any): void;
    protected addingGuard: boolean;
    protected _canActivateChildFn: (childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) => any;
    navigationService: NavigationService;
    _markForUpdate: boolean;
    onTriggerUpdate: EventEmitter<any>;
    protected subscription: Subscription;
    protected componentStateService: OFormLayoutManagerComponentStateService;
    constructor(injector: Injector, router: Router, actRoute: ActivatedRoute, dialog: MatDialog, elRef: ElementRef, parentFormLayoutManager: OFormLayoutManagerBase);
    private getInjectionTokenConfig;
    get state(): OFormLayoutManagerComponentStateClass;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    getAttribute(): string;
    getComponentKey(): string;
    isSidenavMode(): boolean;
    getRouteKey(): string;
    getDataToStore(): any;
    beforeunloadHandler(): void;
    getLabelFromUrlParams(urlParams: object): string;
    getFormDataFromLabelColumns(data: any): {};
    addActivateChildGuard(): void;
    destroyActivateChildGuard(): void;
    isDialogMode(): boolean;
    isTabMode(): boolean;
    isSplitPaneMode(): boolean;
    addDetailComponent(childRoute: ActivatedRouteSnapshot, url: string, context?: OFormLayoutManagerContext): void;
    closeDetail(options?: FormLayoutCloseDetailOptions): void;
    closeDetails(detailsData?: any[], options?: FormLayoutCloseDetailOptions): void;
    openFormLayoutDialog(detailComp: FormLayoutDetailComponentData): void;
    getFormCacheData(): FormLayoutDetailComponentData;
    setModifiedState(formAttr: string, modified: boolean, confirmExit: boolean): void;
    getLabelFromData(data: any): string;
    updateNavigation(data: any, keysValues: any, insertionMode: boolean): void;
    updateActiveData(data: any): void;
    getRouteOfActiveItem(): any[];
    isMainComponent(comp: ILayoutManagerComponent): boolean;
    getRouteForComponent(comp: ILayoutManagerComponent): any[];
    setAsActiveFormLayoutManager(): void;
    reloadMainComponents(): void;
    allowToUpdateNavigation(formAttr: string): boolean;
    updateStateStorage(): void;
    private getParentActRouteRoute;
    updateIfNeeded(): void;
    getParams(): any;
    set markForUpdate(arg: boolean);
    get markForUpdate(): boolean;
    get ignoreCanDeactivate(): boolean;
    protected getLayoutModeComponent(): OFormLayoutManagerMode;
    allowNavigation(): boolean;
    canAddDetailComponent(): Observable<boolean>;
    hasToConfirmExit(data: FormLayoutDetailComponentData, options?: FormLayoutCloseDetailOptions): boolean;
    getIdOfActiveItem(): string;
    get sidenavOptions(): any;
    addSidenavOptions(value: any): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<OFormLayoutManagerComponent, [null, null, null, null, null, { optional: true; skipSelf: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OFormLayoutManagerComponent, "o-form-layout-manager", never, { "oattr": { "alias": "attr"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "storeState": { "alias": "store-state"; "required": false; }; "title": { "alias": "title"; "required": false; }; "labelColumns": { "alias": "label-columns"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; "titleDataOrigin": { "alias": "title-data-origin"; "required": false; }; "dialogWidth": { "alias": "dialog-width"; "required": false; }; "dialogMinWidth": { "alias": "dialog-min-width"; "required": false; }; "dialogMaxWidth": { "alias": "dialog-max-width"; "required": false; }; "dialogHeight": { "alias": "dialog-height"; "required": false; }; "dialogMinHeight": { "alias": "dialog-min-height"; "required": false; }; "dialogMaxHeight dialog-max-height": { "alias": "dialogMaxHeight dialog-max-height"; "required": false; }; "dialogClass": { "alias": "dialog-class"; "required": false; }; "dialogTitleSeparator": { "alias": "dialog-title-separator"; "required": false; }; "sidenavPosition": { "alias": "sidenav-position"; "required": false; }; "sidenavWidth": { "alias": "sidenav-width"; "required": false; }; }, { "onMainTabSelected": "onMainTabSelected"; "onSelectedTabChange": "onSelectedTabChange"; "onCloseTab": "onCloseTab"; }, never, ["*", "*", "*", "*", "*"], true, never>;
}
