package dev.inmo.tgbotapi.requests.chat.abstracts import korlibs.time.DateTime import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.DeserializationStrategy interface ChatInviteLinkRequest : SimpleRequest { val chatId: ChatIdentifier } interface KnownChatInviteLinkRequest : ChatInviteLinkRequest { val inviteLink: String } interface LimitedMembersChatInviteLinkRequest : ChatInviteLinkRequest { val membersLimit: MembersLimit override val resultDeserializer: DeserializationStrategy get() = ChatInviteLinkWithLimitedMembers.serializer() } interface WithJoinRequestChatInviteLinkRequest : ChatInviteLinkRequest { override val resultDeserializer: DeserializationStrategy get() = ChatInviteLinkWithJoinRequest.serializer() } interface EditChatInviteLinkRequest : ChatInviteLinkRequest { val expireDate: DateTime? val name: String? }