import { HttpClient } from 'aurelia-fetch-client';
import { Aurelia } from "aurelia-framework";
import { Router } from "aurelia-router";
import { Datacontext } from '../data/data-context';
import { Config } from '../config';
import { BaseOAuthService, OAuthClientWrapper } from './oauth-service';
import { LoginMsg } from './login-msg';
declare class DWAuthClientWrapper extends OAuthClientWrapper {
    private client;
    init(): Promise<this>;
    accessToken(): Promise<string>;
    loginWithRedirect(loginMsg?: LoginMsg): Promise<void>;
    handleSignInRedirect(): Promise<void>;
    isAuthenticated(): Promise<boolean>;
    logout(): Promise<void>;
    getUserProfile(): Promise<any>;
    onUserPermissionsChanged(): Promise<void>;
}
export declare class DWAuthService extends BaseOAuthService<DWAuthClientWrapper> {
    constructor(router: Router, app: Aurelia, dataContext: Datacontext, config: Config, httpClient: HttpClient);
    protected makeClient(): Promise<DWAuthClientWrapper>;
    loginWithRedirect(navInstruction: string, loginMsg?: LoginMsg): Promise<void>;
    get usernameType(): "email" | "username";
    onUserPermissionsChanged(): Promise<void>;
}
export {};
