import { HttpClient } from '@angular/common/http';
import { Injector } from '@angular/core';
import { OAuthService } from 'angular-oauth2-oidc';
import { ApplicationContextService } from '../app-context/application-context.service';
import { ColumnSchemaBase, ModelSchema } from '../classes/form-schema';
import { ModuleConfig } from '../configs/module-config';
import { BasicUserInfo } from '../models/basic-user-info';
import { Filter, GridInfo } from '../models/grid-info';
import { PageOptionBase } from '../models/page-option';
import { ResponseResult } from '../models/response-result';
import { TnUser } from '../models/tn-user';
import { AuthenService } from './authen.service';
import { BaseService } from './base.service';
import { ExceptionHandlerService } from './exception-handler.service';
import { ModuleConfigService } from './module-config.service';
import { SignalRService } from './signalr.service';
export declare class UserService extends BaseService {
    private _authenService;
    private _oauthService;
    private _signalrService;
    private _exceptionHandlerService;
    private _applicationContext;
    readonly USER_INFO_KEY = "user_info";
    readonly CURRENT_USER_KEY = "current_user_info";
    readonly ACCESS_TOKEN_KEY = "access_token";
    readonly RETRY_COUNT: number;
    readonly REPLAY_COUNT: number;
    readonly DEFAULT_AVATAR_MALE: any;
    readonly DEFAULT_AVATAR_FEMALE: any;
    readonly organizationEndpoint: any;
    readonly _moduleConfig: ModuleConfig;
    constructor(http: HttpClient, injector: Injector, _moduleConfigService: ModuleConfigService, _authenService: AuthenService, _oauthService: OAuthService, _signalrService: SignalRService, _exceptionHandlerService: ExceptionHandlerService, _applicationContext: ApplicationContextService);
    private getServiceUrl;
    private isUseOldOrganization;
    getFullCanBoLabel(item: any, getDisplayName?: boolean): any;
    getAllWithInfo(filters: Filter[]): Promise<ResponseResult>;
    getPageWithInfo(gridInfo: GridInfo): Promise<ResponseResult>;
    getInfo(id: string): Promise<ResponseResult>;
    getInfoForWorkflow(id: string): Promise<ResponseResult>;
    getClaim(key: string): any;
    getJwtDecoded(): unknown;
    handleUserInfoChange(data: any): void;
    getForAutoComplete(key: string): Promise<ResponseResult>;
    populateCurrentUser(): void;
    private getUserInfoFromLocalAndAccessToken;
    private getUserIdFromToken;
    private getUserInfoFromLocal;
    private mergePublicAndPrivateInfo;
    private mergeTokenInfo;
    private mergePublicInfo;
    /**
     * function de map property tu destination => original
     * @param destination object muon map sang
     * @param original object muon map tu
     * @param customProcess xu ly khac luong, tra ve true neu tim thay key => ham addProperty se khong xu ly gi tiep
     * @private
     */
    private addProperty;
    private getUserPublicInfo;
    private mapUserInfo;
    getProfileInfo(): any;
    isKhoaVien(idLoaiDonVi: any): boolean;
    isBoMon(idLoaiDonVi: any): boolean;
    getCurrentUser(): TnUser;
    getUserName(item: any): string;
    getUserIdCombine(): string;
    getStaffInfo(userId: any): Promise<TnUser>;
    private getUserAvatar;
    getId(): string;
    getInstanceId(): string;
    registerOnline(formData: FormData): Promise<ResponseResult>;
    getBasicUserInfo(userId: number): Promise<BasicUserInfo>;
    getBasicUsersInfo(userIds: string): Promise<BasicUserInfo[]>;
    /**
     * Hàm dùng để lấy thông tin cơ bản nhiều người dùng dựa vào userName,
     * hiện tại chưa có thông tin về đơn vị và chức vụ người dùng để giảm load và vì chưa dùng đến
     * @param {string} userName
     * @return {Promise<BasicUserInfo[]>}
     */
    getBasicUserInfoByUserName(userName: string): Promise<BasicUserInfo>;
    /**
     * Hàm dùng để lấy thông tin cơ bản nhiều người dùng dựa vào userName,
     * hiện tại chưa có thông tin về đơn vị và chức vụ người dùng để giảm load và vì chưa dùng đến
     * @param {string} userNames
     * @return {Promise<BasicUserInfo[]>
     */
    getBasicUsersInfoByUserNames(userNames: string): Promise<BasicUserInfo[]>;
    convertListUserIdToString(userIds: number[]): string;
    fillBasicUserInfo(dataSource: any[], propertyName: string): any[];
    restorePassword(item: any): Promise<ResponseResult>;
    changePassword(userId: string, item: any): Promise<ResponseResult>;
    resetPassword(item: any): Promise<ResponseResult>;
    GetsByManagerIdArrayId(id: string): Promise<ResponseResult>;
    markAsAdmin(userId: number, isAdmin: boolean): Promise<ResponseResult>;
    markAsRepresent(userId: number, isRepresent: number): Promise<ResponseResult>;
    getsByOrganizationListId(pageOption: PageOptionBase, funGetName?: string, optionParameter?: string, defaultParameter?: string): Promise<ResponseResult>;
    getsByOrganizationId(organizationId: string, keyword?: string, offset?: number, limit?: number): Promise<ResponseResult>;
    getDefaultAvatar(): any;
    handleError(error: any, injector: Injector): Promise<ResponseResult>;
    lockUser(item: any): Promise<ResponseResult>;
    unlockUser(item: any): Promise<ResponseResult>;
    isSuperUser(): boolean;
    isAdmin(): boolean;
    isValidAccessToken(): boolean;
    getUsersByGroupCode(groupCode: string): Promise<ResponseResult>;
    getServiceEndpoint(): string;
    isSinhVienAccount(): boolean;
    getPageUserInfo(userIds: string): Promise<BasicUserInfo[]>;
    removeUser(id: string): Promise<ResponseResult>;
    modifyUserInfo(id: string, userInfo: any): Promise<ResponseResult>;
    changeFirstTimeLogin(userId: any): Promise<ResponseResult>;
    getModelSchemas(): ModelSchema[];
    getColumnSchemaBase(isInUserList?: boolean): ColumnSchemaBase[];
    validatePassword(password: string): Promise<ResponseResult>;
}
//# sourceMappingURL=user.service.d.ts.map