import { UserProfile } from '../model/common-model';
import { Datacontext } from '../data/data-context';
import { Config, PermissionSetting, RouteSettings } from "../config";
export declare abstract class AuthService {
    protected config: Config;
    currentUser: UserProfile;
    authProfile: any;
    abstract navigateToSavedInstruction(): void;
    abstract getProfile(): Promise<void>;
    abstract isAuthenticated(): Promise<boolean>;
    abstract accessToken(): Promise<string>;
    abstract checkAccess(resource: string, action: string): boolean;
    abstract logout(): Promise<void>;
    abstract login(navInstruction: string): Promise<void>;
    abstract handleAuthentication(): Promise<void>;
    abstract addBearerTokenToHttpClient(): void;
    abstract onUserPermissionsChanged(): Promise<void>;
    abstract get usernameType(): 'email' | 'username';
    constructor(config: Config);
    checkRouteAccess(route: RouteSettings): boolean;
    checkPermissonAccess(permission: PermissionSetting): boolean;
    extractActions(setting: RouteSettings): string[];
    protected requestRequiresAuth(message: Request): boolean;
}
export declare class FakeAuthService extends AuthService {
    private dataContext;
    constructor(config: Config, dataContext: Datacontext);
    get usernameType(): "email" | "username";
    addBearerTokenToHttpClient(): void;
    navigateToSavedInstruction(): void;
    login(navInstruction: string): Promise<void>;
    logout(): Promise<void>;
    handleAuthentication(): Promise<void>;
    isAuthenticated(): Promise<boolean>;
    accessToken(): Promise<string>;
    checkAccess(resource: string, action: string): boolean;
    getProfile(): Promise<void>;
    onUserPermissionsChanged(): Promise<void>;
}
