import { HttpClientAdapter } from "../adapters/HttpClientAdapter";
import { AuthAdapter, AuthOptions } from "../adapters/AuthAdapter";
import { UserModel } from "../models/UserModel";
import { CacheController } from "./CacheController";
export declare class AuthController {
    private readonly appName;
    private readonly restApi;
    private readonly cacheController;
    private readonly authAdapter;
    userCacheColl: string;
    constructor(appName: string, restApi: HttpClientAdapter, cacheController: CacheController, authAdapter: AuthAdapter);
    authenticated<T extends UserModel>(userId: string, options?: AuthOptions): Promise<any>;
    currentUser<T extends UserModel>(): Promise<T | null>;
    getEmail(): Promise<any>;
    getToken(): Promise<any>;
    getUsername(): Promise<any>;
    logIn<T extends UserModel>(username: string, password: string, dtl?: number, options?: AuthOptions): Promise<T>;
    logOut(options?: AuthOptions): Promise<boolean>;
    requestPasswordReset<T extends UserModel>(email: string, options?: AuthOptions): Promise<any>;
    signUp<T extends UserModel>(username: string, password: string, attrs?: {
        [key: string]: any;
    }, dtl?: number, options?: AuthOptions): Promise<T>;
    updateUser<T extends UserModel>(userId: string, attrs?: {
        [key: string]: any;
    }, options?: AuthOptions): Promise<any>;
    setCurrentUser(user: {
        [key: string]: any;
    } | null, dtl?: number): Promise<any>;
    requestEmailVerification(email: string, options?: AuthOptions): Promise<any>;
}
