declare module Levelup { namespace Core { namespace Users { export namespace Entity { export type Sex = 'male' | 'female'; export interface IUserProfile { full_name?: string; first_name: string; family_name: string; sex: Sex | null; photo: Core.Utils.Common.FileAttribute; phones: string[]; website: string | null; address: Core.Utils.Entity.Snapshots.Locations.Address; has_work_address: boolean; work_address: Core.Utils.Entity.Snapshots.Locations.Address | null; social_links?: { network: Core.Utils.Common.SocialNetworks, url: string }[]; } export interface IUserPreferences { ui_mode?: UI.Mode; ui_language?: Core.Localization.Entity.TLanguageCode; } export interface IUserInsights { last_updated: Date | null; rating: number; balance: number; } export interface IUserAttributes { is_suspended?: boolean; is_approved?: boolean; is_active?: boolean; inactive_since?: Date | null; } export interface IUserSnapshots { } export interface IUserAuthMeta { last_login: Date | null; last_logout: Date | null; last_password_change: Date | null; last_password_reset: Date | null; last_password_reset_request: Date | null; password_reset_token: string | null; password_reset_token_expiration: Date | null; password_reset_token_used: boolean; password_reset_token_used_at: Date | null; } export interface User extends Core.Utils.Entity.General.ICreatable, Core.Utils.Entity.General.IHasSearchMeta { _id: Core.Utils.Common.ID; tracking_id: Core.Utils.Common.TrackingID; // email: string; password?: string; salt?: string; role_group: Auth.Entity.TRoleGroup; role: Auth.Entity.TDefaultUserRoles | string; permissions: Core.Utils.Common.ID[]; permissions_other_than_role?: boolean; /** * @description Embedded Objects */ profile: IUserProfile; attributes: IUserAttributes; snapshots?: IUserSnapshots; preferences?: IUserPreferences; insights?: IUserInsights; auth_meta?: IUserAuthMeta | null; } export type ExposedUser = Omit } } } }