import { ContextBlock } from '../model/rules.model';
import { BasicUserAttributesModel } from '../model/basic-user-attributes.model';
import { DatabaseController } from './database.controller';
import { BFastDatabaseOptions } from "../bfast-database.option";
import { SecurityController } from "./security.controller";
import { AuthAdapter } from "../adapters/auth.adapter";
import { DatabaseAdapter } from "../adapters/database.adapter";
export declare class AuthController {
    constructor();
    private policyDomainName;
    private static validateData;
    private static sanitizePolicy;
    addPolicyRule(ruleId: string, rule: string, databaseController: DatabaseController, securityController: SecurityController, databaseAdapter: DatabaseAdapter, context: ContextBlock, options: BFastDatabaseOptions): Promise<any>;
    listPolicyRule(databaseController: DatabaseController, securityController: SecurityController, databaseAdapter: DatabaseAdapter, context: ContextBlock, options: BFastDatabaseOptions): Promise<any>;
    removePolicyRule(ruleId: string, databaseController: DatabaseController, securityController: SecurityController, databaseAdapter: DatabaseAdapter, context: ContextBlock, options: BFastDatabaseOptions): Promise<any>;
    hasPermission(ruleId: string, databaseController: DatabaseController, securityController: SecurityController, databaseAdapter: DatabaseAdapter, context: ContextBlock, options: BFastDatabaseOptions): Promise<boolean>;
    deleteUser(context?: ContextBlock): Promise<any>;
    resetPassword(authAdapter: AuthAdapter, email: string, context: ContextBlock): Promise<any>;
    sendVerificationEmail(email: string, authAdapter: AuthAdapter, context: ContextBlock, options: BFastDatabaseOptions): Promise<any>;
    signIn<T extends BasicUserAttributesModel>(userModel: T, databaseController: DatabaseController, securityController: SecurityController, authAdapter: AuthAdapter, databaseAdapter: DatabaseAdapter, context: ContextBlock, options: BFastDatabaseOptions): Promise<T>;
    signUp<T extends BasicUserAttributesModel>(userModel: T, databaseController: DatabaseController, securityController: SecurityController, databaseAdapter: DatabaseAdapter, authAdapter: AuthAdapter, context: ContextBlock, options: BFastDatabaseOptions): Promise<T>;
    update<T extends BasicUserAttributesModel>(userModel: T, databaseController: DatabaseController, securityController: SecurityController, authAdapter: AuthAdapter, databaseAdapter: DatabaseAdapter, context: ContextBlock, options: BFastDatabaseOptions): Promise<T>;
    updatePassword(password: string, databaseController: DatabaseController, securityController: SecurityController, authAdapter: AuthAdapter, databaseAdapter: DatabaseAdapter, context: ContextBlock, options: BFastDatabaseOptions): Promise<any>;
}
