import { P63Context } from './P63Context';
import { OrgRoleT } from '../Interfaces/OrgRoleI';
/** Информация по пользователю */
interface UserInfoI {
    user_id: number;
    username: string;
    consumer_rating: number;
}
/** Группы пользователей */
interface GroupUserI {
    group_id: number;
    alias: string;
}
/**
 * Класс который глобально знает все данные пользователя
 */
export declare class UserSys {
    idUser: number;
    private apikey;
    private vUserInfo;
    private ixUserGroups;
    private ctx;
    private errorSys;
    /** Глобальные роли */
    private ixRole;
    /** роуты, доступные по глобальным ролям */
    private ixRoleRoute;
    /** Роли в организациях */
    private ixOrgRole;
    /** роуты, доступные по ролям в организациях */
    private ixOrgRoleRoute;
    constructor(ctx: P63Context);
    /**
     * Инициализация данных пользователя
     * только если this.isAuth() == true
     *
     * @return void
     */
    init(param?: {
        vUser: UserInfoI;
        aGroup: GroupUserI[];
        ixRole: Record<string, boolean>;
        ixRoleRoute: Record<string, boolean>;
        ixOrgRole: Record<string | number, Record<OrgRoleT, boolean>>;
        ixOrgRoleRoute: Record<string | number, Record<string, boolean>>;
    }): void;
    /**
     * Проверка является ли пользователь организатором
     */
    isOrg(): boolean;
    /**
     * Проверка является ли пользователь администратором организаторов на пр Ольга Проданова
     */
    isOrgAdmin(): boolean;
    /**
     * Проверка является ли пользователь администратором
     */
    isAdmin(): boolean;
    /**
     * Проверка является ли пользователь модератором
     */
    isModerator(): boolean;
    /**
     * Проверка имеет ли пользователь доступ к ПВЗ
     */
    isPvzUser(): boolean;
    /**
     * Проверка является ли пользователь модератором ПВЗ
     */
    isPvzModerator(): boolean;
    /**
     * Проверка является ли пользователь авторизированным
     */
    isAuth(): boolean;
    /**
     * возвращает apikey
     */
    fGetApikey(): string;
    /**
     * Получить ID пользователя
     */
    getIdUser(): number;
    /**
     * Получить рейтинг пользователя
     */
    getUserRating(): number;
    /**
     * Получить инфу о пользователе
     */
    getUserInfo(): UserInfoI;
    /**
     * Список ID групп в которых состоит пользователь
     * @todo вырезать из абстрактного класса UserSys
     */
    getUserGroupIds(): number[];
    /**
     * Проверяет состоит ли пользователь в группе
     * @param groupAlias Алиас группы на принадлежность к которой нужно проверить пользователя
     */
    isUserInGroup(groupAlias: string): boolean;
    /**
     * Получить глобальные роли пользователя
     * @todo вырезать из абстрактного класса UserSys
     */
    getIxRole(): Record<string, boolean>;
    /**
     * Получить роли пользователя в организациях
     * @todo вырезать из абстрактного класса UserSys
     */
    getIxOrgRole(): Record<string | number, Record<OrgRoleT, boolean>>;
    /**
     * Получить роуты, доступные по глобальным ролям
     * @todo вырезать из абстрактного класса UserSys
     */
    getIxRoleRoute(): Record<string, boolean>;
    /**
     * Получить роуты, доступные по ролям в организациях
     * @todo вырезать из абстрактного класса UserSys
     */
    getIxOrgRoleRoute(): Record<string | number, Record<string, boolean>>;
    /**
     * Проверить, есть ли у пользователя конкретная роль
     */
    isRole(role: string): boolean;
    /**
     * Проверить, есть ли у пользователя роль в конкретной или любой организаци
     */
    isRoleInOrganization(role: OrgRoleT, idOrg: number): boolean;
    /**
     * Проверить, если доступ к роуту по глобальной роли
     */
    isAccessByRole(): boolean;
    /**
     * Проверить, если доступ к роуту по орг роли
     */
    isAccessByOrgRole(idOrg: number): boolean;
    /**
     * Получить IDs организаций, в которых доступен данный роут
     */
    getAvailableOrganizationId(): number[];
}
export {};
