/// <reference types="node" />
import { MainStateManager } from './MainStateManager';
import { Login } from './Login/Login';
import { IData } from './Data';
import { IReportInfoing } from './ReportInfo';
interface IUser {
    id: number;
    accessToken: string;
    userName: string;
    firstName: string;
    lastName: string;
    picture: string;
    smallPicture: string;
    reportInfo: IReportInfoing[];
    attachedData: IData[];
    roles: string[];
    userOptions: IUserOption[];
    userColumns: IUserColumn[];
}
interface IUserOption {
    key: string;
    form: any;
    value: any;
}
export declare class UserOption {
    key: string;
    form: any;
    value: any;
    constructor(key: string, form: any, value: any);
    static deserialize(userOption: IUserOption): UserOption;
}
interface IUserColumn {
    key: string;
    form: any;
    width: any;
}
export declare class UserColumn {
    key: string;
    form: any;
    width: number;
    constructor(key: string, form: any, width: number);
    static deserialize(userColumn: IUserColumn): UserColumn;
}
type IUserLoginFormState = 'login' | 'signup' | 'verify' | 'error' | 'MobileRegistered';
export declare class User {
    mainStateManager: MainStateManager;
    isInRole: <T extends {
        selfRole: string;
    }>(main: T, role: keyof T) => boolean;
    private _isThisUserAdmin;
    userLoginFormState: IUserLoginFormState;
    headers: () => {
        Authorization: string;
    } | undefined;
    id: number;
    accessToken: string;
    userName: string;
    firstName: string;
    lastName: string;
    picture: string;
    smallPicture: string;
    rememberMe: boolean;
    roles: string[];
    userOptions: UserOption[];
    userColumns: UserColumn[];
    isThisUserAdmin: boolean;
    LoginFactory: Login;
    intervalForBackgroundChangePage?: NodeJS.Timeout;
    initializingUserBackground: boolean;
    userBackgrounDiv?: HTMLElement;
    constructor(mainStateManager: MainStateManager);
    unMountUserPage(): void;
    loginDataLoad: () => void;
    logOut: () => void;
    gotoLoginPage: () => void;
    userLogin: (response: IUser, rememberMe: boolean) => void;
    userChangeData: (response: IUser) => void;
    getFormUserOptions: (keyOfForm: any) => UserOption[];
    private updateUserOptionTabPage;
}
export {};
