export type IWord = { name: string, pronounciation: { text: string, audio: string, // URL for the audio file }, similarWords: Array, gramaticalDetails: Array<{ type: 'NOUN' | 'PRONOUN' | 'ADJECTIVE' | 'VERB' | 'ADVERB' | 'PREPOSITION' | 'CONJUNCTION' | 'INTERJECTION', description: string, examples: Array, }> } export type IShelf = { name: string, description: string, viewType: 'PUBLIC' | 'PRIVATE' | 'FRIENDS' | 'FOLLOWERS', isArchived: boolean, addedWords: Array<{ word: IWord, notes: Array, isFavourite: boolean, nextRevisionDateTime: Date, revisionHistory : Array<{ day: Date, wasRecallSuccessful: boolean, }> }> } export type ICategory = { name: string, icon: string, shelves: Array, isArchived: boolean, } export type IUser = { // For Auth purposes _id: string, name: string, email: string, password: string, isVerified: boolean, otp: number, // Other records categories: Array }