import { HttpClient } from '@angular/common/http';
import { AuthService } from '@igo2/auth';
import { Tool } from '@igo2/common/tool';
import { ConfigService } from '@igo2/core/config';
import { LanguageService } from '@igo2/core/language';
import { MessageService } from '@igo2/core/message';
import { RouteService } from '@igo2/core/route';
import { StorageService } from '@igo2/core/storage';
import type { AnyLayer, IgoMap } from '@igo2/geo';
import { ExportService } from '@igo2/geo';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { TypePermission } from './context.enum';
import { Context, ContextPermission, ContextProfils, ContextsList, DetailedContext } from './context.interface';
import * as i0 from "@angular/core";
export declare class ContextService {
    private http;
    private authService;
    private languageService;
    private config;
    private messageService;
    private storageService;
    private exportService;
    private route;
    context$: BehaviorSubject<DetailedContext>;
    contexts$: BehaviorSubject<ContextsList>;
    defaultContextId$: BehaviorSubject<string>;
    editedContext$: BehaviorSubject<DetailedContext>;
    importedContext: DetailedContext[];
    toolsChanged$: Subject<DetailedContext>;
    private mapViewFromRoute;
    private options;
    private baseUrl;
    private tools;
    private toolbar;
    get defaultContextUri(): string;
    set defaultContextUri(uri: string);
    private _defaultContextUri;
    constructor(http: HttpClient, authService: AuthService, languageService: LanguageService, config: ConfigService, messageService: MessageService, storageService: StorageService, exportService: ExportService, route: RouteService);
    get(permissions?: string[], hidden?: boolean): Observable<ContextsList>;
    getById(id: string): Observable<Context>;
    getDetails(id: string): Observable<DetailedContext>;
    getDefault(): Observable<DetailedContext>;
    getProfilByUser(): Observable<ContextProfils[]>;
    setDefault(id: string): Observable<any>;
    hideContext(id: string): Observable<Object>;
    showContext(id: string): Observable<Object>;
    delete(id: string, imported?: boolean): Observable<void>;
    create(context: DetailedContext): Observable<Context>;
    clone(id: string, properties?: {}): Observable<Context>;
    update(id: string, context: DetailedContext): Observable<Context>;
    addToolAssociation(contextId: string, toolId: string): Observable<void>;
    deleteToolAssociation(contextId: string, toolId: string): Observable<any>;
    getPermissions(id: string): Observable<ContextPermission[]>;
    addPermissionAssociation(contextId: string, profil: string, type: TypePermission): Observable<ContextPermission[]>;
    deletePermissionAssociation(contextId: string, permissionId: string): Observable<void>;
    getLocalContexts(): Observable<ContextsList>;
    getLocalContext(uri: string): Observable<DetailedContext>;
    loadContexts(permissions?: string[], hidden?: boolean): void;
    loadDefaultContext(): void;
    loadContext(uri: string): void;
    setContext(context: DetailedContext): void;
    loadEditedContext(uri: string): void;
    setEditedContext(context: DetailedContext): void;
    getContextFromMap(igoMap: IgoMap, empty?: boolean): DetailedContext;
    getContextFromLayers(igoMap: IgoMap, layers: AnyLayer[], name: string, keepCurrentView?: boolean): DetailedContext;
    private getExtraFeatures;
    setTools(tools: Tool[]): void;
    setToolbar(toolbar: string[]): void;
    private handleContextMessage;
    private getContextByUri;
    getContextLayers(map: IgoMap): readonly AnyLayer[];
    private readParamsFromRoute;
    private getPath;
    private handleError;
    private handleContextsChange;
    private addContextToList;
    private findContext;
    static ɵfac: i0.ɵɵFactoryDeclaration<ContextService, [null, null, null, null, null, null, null, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ContextService>;
}
