import { EventEmitter, Injector } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Observable, Subscription } from 'rxjs';
import { OFormLayoutDialogComponent } from '../../../layouts/form-layout/dialog/o-form-layout-dialog.component';
import { NavigationService } from '../../../services/navigation.service';
import { OFormConfirmExitService } from './o-form-confirm-exit.service';
import { OFormBase } from '../o-form-base.class';
import { OFormLayoutManagerBase } from '../../../layouts/form-layout/o-form-layout-manager-base.class';
export declare class OFormNavigationClass {
    protected injector: Injector;
    protected form: OFormBase;
    protected router: Router;
    protected actRoute: ActivatedRoute;
    formLayoutManager: OFormLayoutManagerBase;
    formLayoutDialog: OFormLayoutDialogComponent;
    protected navigationService: NavigationService;
    protected confirmExitService: OFormConfirmExitService;
    protected qParamSub: Subscription;
    protected queryParams: any;
    protected urlParamSub: Subscription;
    protected urlParams: object;
    protected urlSub: Subscription;
    protected urlSegments: any;
    protected combinedNavigationStream: Observable<any>;
    protected combinedNavigationStreamSubscription: Subscription;
    protected onUrlParamChangedStream: EventEmitter<boolean>;
    navigationStream: EventEmitter<boolean>;
    protected onCloseTabSubscription: Subscription;
    protected cacheStateSubscription: Subscription;
    constructor(injector: Injector, form: OFormBase, router: Router, actRoute: ActivatedRoute);
    initialize(): void;
    destroy(): void;
    subscribeToQueryParams(): void;
    private parseQueryParams;
    subscribeToUrlParams(): void;
    private parseUrlParams;
    subscribeToUrl(): void;
    subscribeToCacheChanges(): void;
    getCurrentKeysValues(): object;
    private getFilterFromObject;
    getFilterFromUrlParams(): object;
    getUrlSegments(): any;
    getQueryParams(): any;
    setUrlParams(val: object): void;
    getUrlParams(): object;
    protected setModifiedState(modified: boolean, confirmExit: boolean): void;
    updateNavigation(): void;
    navigateBack(options?: any): void;
    closeDetailAction(options?: any): void;
    stayInRecordAfterInsert(insertedKeys: object): void;
    goInsertMode(options?: any): void;
    goEditMode(options?: any): void;
    getNestedLevelsNumber(): number;
    getFullUrlSegments(): any[];
    showConfirmDiscardChanges(ignoreAttrs?: string[]): Promise<boolean>;
    protected storeNavigationFormRoutes(activeMode: string, mainFormLayoutManagerComponent?: boolean): void;
}
