import { InjectionToken } from '@angular/core';
import { Observable } from 'rxjs';
import { NgxPermission } from '../model/permission.model';
import { ValidationFn } from '../model/permissions-router-data.model';
import { NgxPermissionsStore } from '../store/permissions.store';
import * as i0 from "@angular/core";
export interface NgxPermissionsObject {
    [name: string]: NgxPermission;
}
export declare const USE_PERMISSIONS_STORE: InjectionToken<unknown>;
export declare class NgxPermissionsService {
    private isolate;
    private permissionsStore;
    private permissionsSource;
    permissions$: Observable<NgxPermissionsObject>;
    constructor(isolate: boolean, permissionsStore: NgxPermissionsStore);
    /**
     * Remove all permissions from permissions source
     */
    flushPermissions(): void;
    hasPermission(permission: string | string[]): Promise<boolean>;
    loadPermissions(permissions: string[], validationFunction?: ValidationFn): void;
    addPermission(permission: string | string[], validationFunction?: ValidationFn): void;
    removePermission(permissionName: string): void;
    getPermission(name: string): NgxPermission | undefined;
    getPermissions(): NgxPermissionsObject;
    private reducePermission;
    private hasArrayPermission;
    private hasPermissionValidationFunction;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxPermissionsService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<NgxPermissionsService>;
}
