diff --git a/core/src/main/java/org/futo/circles/core/mapping/RoomSummaryMapping.kt b/core/src/main/java/org/futo/circles/core/mapping/RoomSummaryMapping.kt
index d2f894d7db0bcfa040cd465a9e4ea6d1d8a440ea..ca2bb9521a78dd04888782f88c8045f31c7217fc 100644
--- a/core/src/main/java/org/futo/circles/core/mapping/RoomSummaryMapping.kt
+++ b/core/src/main/java/org/futo/circles/core/mapping/RoomSummaryMapping.kt
@@ -1,12 +1,8 @@
 package org.futo.circles.core.mapping
 
-import org.futo.circles.core.extensions.notEmptyDisplayName
-import org.futo.circles.core.model.InvitedGalleryListItem
 import org.futo.circles.core.model.JoinedGalleryListItem
 import org.futo.circles.core.model.RoomInfo
 import org.futo.circles.core.model.SelectableRoomListItem
-import org.futo.circles.core.provider.MatrixSessionProvider
-import org.matrix.android.sdk.api.session.getUserOrDefault
 import org.matrix.android.sdk.api.session.room.model.RoomSummary
 
 fun RoomSummary.nameOrId() = displayName.takeIf { it.isNotEmpty() } ?: roomId
@@ -25,15 +21,4 @@ fun RoomSummary.toSelectableRoomListItem(selected: Boolean = false) = Selectable
 fun RoomSummary.toJoinedGalleryListItem() = JoinedGalleryListItem(
     id = roomId,
     info = toRoomInfo()
-)
-
-fun RoomSummary.toInvitedGalleryListItem(shouldBlurIcon: Boolean) = InvitedGalleryListItem(
-    id = roomId,
-    info = toRoomInfo(),
-    inviterName = getInviterName(),
-    shouldBlurIcon = shouldBlurIcon
-)
-
-fun RoomSummary.getInviterName() =
-    MatrixSessionProvider.currentSession?.getUserOrDefault(inviterId ?: "")?.notEmptyDisplayName()
-        ?: ""
\ No newline at end of file
+)
\ No newline at end of file
diff --git a/core/src/main/java/org/futo/circles/core/model/InviteListItem.kt b/core/src/main/java/org/futo/circles/core/model/InviteListItem.kt
new file mode 100644
index 0000000000000000000000000000000000000000..51039bda2e837edb1e882ea34a11e1574198ed06
--- /dev/null
+++ b/core/src/main/java/org/futo/circles/core/model/InviteListItem.kt
@@ -0,0 +1,41 @@
+package org.futo.circles.core.model
+
+import org.futo.circles.core.base.list.IdEntity
+import org.futo.circles.core.extensions.notEmptyDisplayName
+import org.futo.circles.core.mapping.toRoomInfo
+import org.futo.circles.core.provider.MatrixSessionProvider
+import org.matrix.android.sdk.api.session.getUserOrDefault
+import org.matrix.android.sdk.api.session.room.model.RoomSummary
+
+sealed class InviteListItem(
+    override val id: String,
+    open val inviteType: InviteTypeArg
+) : IdEntity<String>
+
+data class RoomInviteListItem(
+    val roomId: String,
+    override val inviteType: InviteTypeArg,
+    val info: RoomInfo,
+    val isEncrypted: Boolean,
+    val inviterName: String,
+    val shouldBlurIcon: Boolean
+) : InviteListItem(roomId, inviteType)
+
+data class FollowRequestListItem(
+    val user: CirclesUserSummary,
+    val reasonMessage: String?
+) : InviteListItem(user.id, InviteTypeArg.People)
+
+fun RoomSummary.toRoomInviteListItem(inviteType: InviteTypeArg, shouldBlurIcon: Boolean) =
+    RoomInviteListItem(
+        roomId = roomId,
+        info = toRoomInfo(),
+        inviterName = getInviterName(),
+        isEncrypted = isEncrypted,
+        shouldBlurIcon = shouldBlurIcon,
+        inviteType = inviteType
+    )
+
+fun RoomSummary.getInviterName() =
+    MatrixSessionProvider.currentSession?.getUserOrDefault(inviterId ?: "")?.notEmptyDisplayName()
+        ?: ""
\ No newline at end of file