import Intl from 'intl-ts'; import { User } from '@gecogvidanto/shared'; import { langType } from '../../locale'; /** * The user store is used to manipulate the logged user. */ export default class UserStore { private readonly lang; private _logged?; private _loading; /** * Create the store. * * @param lang - The language. * @param logged - The logged users, if any. */ constructor(lang: Intl, logged?: User); /** * The logged user, if any. * * @returns The logged user. */ get logged(): User | undefined; /** * Indicate if user is currently being loaded. * * @returns The loading state. */ get loading(): boolean; /** * Sign-in for the user. * * @param email - The e-mail address. * @param password - The password. */ signIn: (email: string, password: string) => Promise; /** * Sign-out the current logged user. */ signOut: () => Promise; /** * Refresh the logged in user data. * * @param user - The user loaded from server if any. */ refresh: (user?: User) => Promise; }