import { Location } from '@angular/common';
import { Injector } from '@angular/core';
import { ActivatedRouteSnapshot, Router } from '@angular/router';
import { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';
import { ILocalStorageComponent } from '../interfaces/local-storage-component.interface';
import { OBreadcrumb } from '../types/o-breadcrumb-item.type';
import { LocalStorageService } from './local-storage.service';
import { OBreadcrumbService } from './o-breadcrumb.service';
import * as i0 from "@angular/core";
export type ONavigationRoutes = {
    mainFormLayoutManagerComponent?: boolean;
    isMainNavigationComponent?: boolean;
    detailFormRoute: string;
    editFormRoute: string;
    insertFormRoute: string;
};
export declare class ONavigationItem {
    url: string;
    queryParams: object;
    activeFormMode: string;
    formRoutes: ONavigationRoutes;
    formLayoutRoutes: ONavigationRoutes;
    keysValues: any;
    queryConfiguration: any;
    constructor(value: any);
    getActiveModePath(): string;
    isInsertFormRoute(): boolean;
    getInsertFormRoute(): string;
    getEditFormRoute(): string;
    getDetailFormRoute(): string;
    isMainFormLayoutManagerComponent(): boolean;
    isMainNavigationComponent(): boolean;
    getFormRoutes(): ONavigationRoutes;
    setFormRoutes(arg: ONavigationRoutes): void;
    deleteActiveFormMode(): void;
}
export declare class NavigationService implements ILocalStorageComponent {
    protected injector: Injector;
    static NAVIGATION_STORAGE_KEY: string;
    currentTitle: string;
    visible: boolean;
    protected navigationItems: Array<ONavigationItem>;
    protected allNavigationItems: ONavigationItem[];
    protected router: Router;
    protected oBreadcrumbService: OBreadcrumbService;
    protected localStorageService: LocalStorageService;
    protected location: Location;
    navigationEvents$: ReplaySubject<Array<ONavigationItem>>;
    private readonly _titleEmitter;
    private readonly _visibleEmitter;
    private readonly _sidenavEmitter;
    protected isNavigationSubject: BehaviorSubject<boolean>;
    isNavigation$: Observable<boolean>;
    constructor(injector: Injector);
    set isNavigating(value: boolean);
    get isNavigating(): boolean;
    initialize(): void;
    protected buildBreadcrumbsForRoute(activatedRoute: ActivatedRouteSnapshot): void;
    protected parseRoute(route: string, activatedRoute: ActivatedRouteSnapshot): OBreadcrumb;
    protected parseNavigationItems(): void;
    setNavigationItems(navigationItems: ONavigationItem[]): void;
    getDataToStore(): object;
    getComponentKey(): string;
    protected storeNavigation(): void;
    setTitle(title: string): void;
    setVisible(visible: boolean): void;
    openSidenav(): void;
    closeSidenav(): void;
    onTitleChange(onNext: (value: any) => void): object;
    onVisibleChange(onNext: (value: boolean) => void): object;
    onSidenavChange(onNext: (value: any) => void): object;
    private _emitTitleChanged;
    private _emitVisibleChanged;
    private _emitOpenSidenav;
    private _emitCloseSidenav;
    storeFormRoutes(routes: ONavigationRoutes, activeMode: string, queryConf?: any): void;
    protected getStoredData(): any[];
    getPreviousRouteData(): ONavigationItem;
    getLastMainNavigationRouteData(): ONavigationItem;
    removeLastItem(): void;
    removeLastItemsUntilMain(): boolean;
    isCurrentRoute(route: string): boolean;
    getLastItem(): ONavigationItem;
    deleteActiveFormMode(arg: ONavigationItem): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NavigationService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<NavigationService>;
}
