tgbotapi/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Abstracts.kt

51 lines
1.3 KiB
Kotlin

package dev.inmo.tgbotapi.types.chat
import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded
import dev.inmo.tgbotapi.types.*
import kotlinx.serialization.Serializable
@Serializable(PreviewChatSerializer::class)
sealed interface ChannelChat : SuperPublicChat
@Serializable(PreviewChatSerializer::class)
sealed interface GroupChat : PublicChat
@Serializable(PreviewChatSerializer::class)
sealed interface PrivateChat : Chat, UsernameChat {
override val id: UserId
val firstName: String
val lastName: String
}
@Serializable(PreviewChatSerializer::class)
sealed interface PublicChat : Chat {
val title: String
}
@Serializable(PreviewChatSerializer::class)
sealed interface SupergroupChat : GroupChat, SuperPublicChat
@Serializable(PreviewChatSerializer::class)
sealed interface SuperPublicChat : PublicChat, UsernameChat
@Serializable(PreviewChatSerializer::class)
sealed interface UsernameChat : Chat {
val username: Username?
}
@Serializable(PreviewChatSerializer::class)
sealed interface PossiblyPremiumChat : Chat {
val isPremium: Boolean
}
@Serializable(PreviewChatSerializer::class)
sealed interface AbleToAddInAttachmentMenuChat : Chat {
val addedToAttachmentMenu: Boolean
}
@Serializable(PreviewChatSerializer::class)
@ClassCastsIncluded
sealed interface Chat {
val id: ChatId
}