import { IUserManager } from './Interfaces/IUserManager';
import { IObserver } from '../observer/IObserver';
import { ISubject } from '../observer/ISubject';
import { User } from '../models/user';
import { RealmManager } from './RealmManager';
import { ClientManager } from './ClientManager';
export default class UserManager extends IUserManager implements IObserver {
    private readonly url;
    private accessToken;
    private allowedUserFields;
    private realmManager;
    private clientManager;
    constructor(url: string, realmManager: RealmManager, clientManager: ClientManager, allowedUserFields?: string[]);
    /**
     *
     * @param queryParameter
     *   - briefRepresentation: Defines whether brief representations are returned
     *   - email: User's email
     *   - emailVerified: whether the email has been verified
     *   - enabled: User is enabled or not
     *   - firstName
     *   - lastName
     * @param queryValue
     * @returns { User[] }
     */
    getUsers: (queryParameter: string, queryValue: string) => Promise<User[]>;
    getUserId: (username: string) => Promise<string>;
    get: (userId: string) => Promise<User>;
    create: (email: string, username: string, enabled: boolean, firstName: string, lastName: string, password: string, isTemporaryPassword: boolean, verifyEmail: boolean, attributes: string, clientId?: string, redirectURL?: string) => Promise<string>;
    modify(userId: string, user: User, isReplaceOperation: boolean): Promise<User>;
    resetPassword: (userId: string, newPassword: string, isTemporary: boolean) => Promise<void>;
    forgotPassword: (userId: string, clientId?: string, redirectURL?: string) => Promise<void>;
    sendVerificationMail: (userId: string, clientId?: string, redirectURL?: string) => Promise<void>;
    update(subject: ISubject, args: string[]): void;
    protected trimUserInfo(user: User): User;
    protected fuseUsers(a: User, b: User): User;
    protected getRoles(userId: string): Promise<never>;
    protected modifyRoles(userId: string, realmRoles?: string[], clientRoles?: Map<string, string[]>): Promise<void>;
    delete: (userId: string) => Promise<void>;
}
