mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-11-22 16:23:48 +00:00
add primitives for Telegram Passport API
This commit is contained in:
parent
0846e816e9
commit
c0ea479fe3
@ -357,3 +357,13 @@ const val forceField = "force"
|
|||||||
|
|
||||||
const val regularPollType = "regular"
|
const val regularPollType = "regular"
|
||||||
const val quizPollType = "quiz"
|
const val quizPollType = "quiz"
|
||||||
|
|
||||||
|
const val dataField = "data"
|
||||||
|
const val credentialsField = "credentials"
|
||||||
|
const val hashField = "hash"
|
||||||
|
const val translationField = "translation"
|
||||||
|
const val filesField = "files"
|
||||||
|
const val frontSideField = "front_side"
|
||||||
|
const val reverseSideField = "reverse_side"
|
||||||
|
const val selfieField = "selfie"
|
||||||
|
const val secretField = "secret"
|
||||||
|
@ -5,6 +5,7 @@ import dev.inmo.tgbotapi.types.FileUniqueId
|
|||||||
|
|
||||||
internal const val fileIdField = "file_id"
|
internal const val fileIdField = "file_id"
|
||||||
internal const val fileSizeField = "file_size"
|
internal const val fileSizeField = "file_size"
|
||||||
|
internal const val fileDateField = "file_date"
|
||||||
internal const val filePathField = "file_path"
|
internal const val filePathField = "file_path"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.*
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
typealias Base64EncodedData = String
|
||||||
|
typealias EncryptedAndBase64EncodedData = String
|
||||||
|
typealias EncryptedByBotRSAAndBase64EncodedData = String
|
||||||
|
typealias EncryptedData = String
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class EncryptedCredentials(
|
||||||
|
@SerialName(dataField)
|
||||||
|
val data: EncryptedAndBase64EncodedData,
|
||||||
|
@SerialName(hashField)
|
||||||
|
val hash: Base64EncodedData,
|
||||||
|
@SerialName(secretField)
|
||||||
|
val secret: EncryptedByBotRSAAndBase64EncodedData
|
||||||
|
)
|
@ -0,0 +1,15 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.credentialsField
|
||||||
|
import dev.inmo.tgbotapi.types.dataField
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.EncryptedPassportElement
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class PassportData(
|
||||||
|
@SerialName(dataField)
|
||||||
|
val data: List<EncryptedPassportElement>,
|
||||||
|
@SerialName(credentialsField)
|
||||||
|
val credentials: EncryptedCredentials
|
||||||
|
)
|
@ -0,0 +1,16 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.*
|
||||||
|
import dev.inmo.tgbotapi.types.passport.Base64EncodedData
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.WithEmail
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class Email(
|
||||||
|
@SerialName(emailField)
|
||||||
|
override val email: String,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : WithEmail {
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.dataField
|
||||||
|
import dev.inmo.tgbotapi.types.hashField
|
||||||
|
import dev.inmo.tgbotapi.types.passport.*
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.WithData
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class EncryptedAddress(
|
||||||
|
@SerialName(dataField)
|
||||||
|
override val data: EncryptedAndBase64EncodedData,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : WithData
|
@ -0,0 +1,86 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.hashField
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.*
|
||||||
|
import dev.inmo.tgbotapi.types.typeField
|
||||||
|
import dev.inmo.tgbotapi.utils.nonstrictJsonFormat
|
||||||
|
import kotlinx.serialization.KSerializer
|
||||||
|
import kotlinx.serialization.Serializer
|
||||||
|
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||||
|
import kotlinx.serialization.encoding.Decoder
|
||||||
|
import kotlinx.serialization.encoding.Encoder
|
||||||
|
import kotlinx.serialization.json.*
|
||||||
|
|
||||||
|
@Serializer(EncryptedPassportElement::class)
|
||||||
|
object EncryptedElementSerializer : KSerializer<EncryptedPassportElement> {
|
||||||
|
private val jsonSerializer = JsonObject.serializer()
|
||||||
|
override val descriptor: SerialDescriptor = jsonSerializer.descriptor
|
||||||
|
|
||||||
|
override fun deserialize(decoder: Decoder): EncryptedPassportElement {
|
||||||
|
val json = jsonSerializer.deserialize(decoder)
|
||||||
|
return when (json[typeField] ?.jsonPrimitive ?.content) {
|
||||||
|
"personal_details" -> nonstrictJsonFormat.decodeFromJsonElement(EncryptedPersonalDetails.serializer(), json)
|
||||||
|
"passport" -> nonstrictJsonFormat.decodeFromJsonElement(CommonPassport.serializer(), json)
|
||||||
|
"driver_license" -> nonstrictJsonFormat.decodeFromJsonElement(DriverLicense.serializer(), json)
|
||||||
|
"identity_card" -> nonstrictJsonFormat.decodeFromJsonElement(IdentityCard.serializer(), json)
|
||||||
|
"internal_passport" -> nonstrictJsonFormat.decodeFromJsonElement(InternalPassport.serializer(), json)
|
||||||
|
"address" -> nonstrictJsonFormat.decodeFromJsonElement(EncryptedAddress.serializer(), json)
|
||||||
|
"utility_bill" -> nonstrictJsonFormat.decodeFromJsonElement(UtilityBill.serializer(), json)
|
||||||
|
"bank_statement" -> nonstrictJsonFormat.decodeFromJsonElement(BankStatement.serializer(), json)
|
||||||
|
"rental_agreement" -> nonstrictJsonFormat.decodeFromJsonElement(RentalAgreement.serializer(), json)
|
||||||
|
"passport_registration" -> nonstrictJsonFormat.decodeFromJsonElement(PassportRegistration.serializer(), json)
|
||||||
|
"temporary_registration" -> nonstrictJsonFormat.decodeFromJsonElement(TemporaryRegistration.serializer(), json)
|
||||||
|
"phone_number" -> nonstrictJsonFormat.decodeFromJsonElement(PhoneNumber.serializer(), json)
|
||||||
|
"email" -> nonstrictJsonFormat.decodeFromJsonElement(Email.serializer(), json)
|
||||||
|
else -> UnknownEncryptedPassportElement(json, json[hashField] ?.jsonPrimitive ?.content ?: "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun serialize(encoder: Encoder, value: EncryptedPassportElement) {
|
||||||
|
val json = when (value) {
|
||||||
|
is EncryptedPersonalDetails -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(EncryptedPersonalDetails.serializer(), value).jsonObject + (typeField to JsonPrimitive("personal_details"))
|
||||||
|
)
|
||||||
|
is CommonPassport -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(CommonPassport.serializer(), value).jsonObject + (typeField to JsonPrimitive("passport"))
|
||||||
|
)
|
||||||
|
is DriverLicense -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(DriverLicense.serializer(), value).jsonObject + (typeField to JsonPrimitive("driver_license"))
|
||||||
|
)
|
||||||
|
is IdentityCard -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(IdentityCard.serializer(), value).jsonObject + (typeField to JsonPrimitive("identity_card"))
|
||||||
|
)
|
||||||
|
is InternalPassport -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(InternalPassport.serializer(), value).jsonObject + (typeField to JsonPrimitive("internal_passport"))
|
||||||
|
)
|
||||||
|
is EncryptedAddress -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(EncryptedAddress.serializer(), value).jsonObject + (typeField to JsonPrimitive("address"))
|
||||||
|
)
|
||||||
|
is UtilityBill -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(UtilityBill.serializer(), value).jsonObject + (typeField to JsonPrimitive("utility_bill"))
|
||||||
|
)
|
||||||
|
is BankStatement -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(BankStatement.serializer(), value).jsonObject + (typeField to JsonPrimitive("bank_statement"))
|
||||||
|
)
|
||||||
|
is RentalAgreement -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(RentalAgreement.serializer(), value).jsonObject + (typeField to JsonPrimitive("rental_agreement"))
|
||||||
|
)
|
||||||
|
is PassportRegistration -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(PassportRegistration.serializer(), value).jsonObject + (typeField to JsonPrimitive("passport_registration"))
|
||||||
|
)
|
||||||
|
is TemporaryRegistration -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(TemporaryRegistration.serializer(), value).jsonObject + (typeField to JsonPrimitive("temporary_registration"))
|
||||||
|
)
|
||||||
|
is PhoneNumber -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(PhoneNumber.serializer(), value).jsonObject + (typeField to JsonPrimitive("phone_number"))
|
||||||
|
)
|
||||||
|
is Email -> JsonObject(
|
||||||
|
nonstrictJsonFormat.encodeToJsonElement(Email.serializer(), value).jsonObject + (typeField to JsonPrimitive("email"))
|
||||||
|
)
|
||||||
|
is UnknownEncryptedPassportElement -> value.rawJson
|
||||||
|
else -> return
|
||||||
|
}
|
||||||
|
jsonSerializer.serialize(encoder, json)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.dataField
|
||||||
|
import dev.inmo.tgbotapi.types.hashField
|
||||||
|
import dev.inmo.tgbotapi.types.passport.Base64EncodedData
|
||||||
|
import dev.inmo.tgbotapi.types.passport.EncryptedAndBase64EncodedData
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.WithData
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class EncryptedPersonalDetails(
|
||||||
|
@SerialName(dataField)
|
||||||
|
override val data: EncryptedAndBase64EncodedData,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : WithData
|
@ -0,0 +1,37 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.*
|
||||||
|
import dev.inmo.tgbotapi.types.passport.*
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.*
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
sealed class Passport : WithData, WithFrontSide, WithSelfie, Translatable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class CommonPassport(
|
||||||
|
@SerialName(dataField)
|
||||||
|
override val data: EncryptedAndBase64EncodedData,
|
||||||
|
@SerialName(frontSideField)
|
||||||
|
override val frontSide: PassportFile?,
|
||||||
|
@SerialName(selfieField)
|
||||||
|
override val selfie: PassportFile?,
|
||||||
|
@SerialName(translationField)
|
||||||
|
override val translations: List<PassportFile>,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : Passport()
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class InternalPassport(
|
||||||
|
@SerialName(dataField)
|
||||||
|
override val data: EncryptedAndBase64EncodedData,
|
||||||
|
@SerialName(frontSideField)
|
||||||
|
override val frontSide: PassportFile?,
|
||||||
|
@SerialName(selfieField)
|
||||||
|
override val selfie: PassportFile?,
|
||||||
|
@SerialName(translationField)
|
||||||
|
override val translations: List<PassportFile>,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : Passport()
|
@ -0,0 +1,25 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.requests.abstracts.FileId
|
||||||
|
import dev.inmo.tgbotapi.types.*
|
||||||
|
import dev.inmo.tgbotapi.types.files.abstracts.*
|
||||||
|
import dev.inmo.tgbotapi.types.files.abstracts.fileIdField
|
||||||
|
import dev.inmo.tgbotapi.types.files.abstracts.fileSizeField
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This object represents a file uploaded to Telegram Passport. Currently all Telegram Passport files are in JPEG format
|
||||||
|
* when decrypted and don't exceed 10MB.
|
||||||
|
*/
|
||||||
|
@Serializable
|
||||||
|
data class PassportFile(
|
||||||
|
@SerialName(fileIdField)
|
||||||
|
override val fileId: FileId,
|
||||||
|
@SerialName(fileUniqueIdField)
|
||||||
|
override val fileUniqueId: FileUniqueId,
|
||||||
|
@SerialName(fileSizeField)
|
||||||
|
override val fileSize: Long,
|
||||||
|
@SerialName(fileDateField)
|
||||||
|
val uploadingDate: TelegramDate
|
||||||
|
) : TelegramMediaFile
|
@ -0,0 +1,17 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.hashField
|
||||||
|
import dev.inmo.tgbotapi.types.passport.Base64EncodedData
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.WithPhoneNumber
|
||||||
|
import dev.inmo.tgbotapi.types.phoneNumberField
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class PhoneNumber(
|
||||||
|
@SerialName(phoneNumberField)
|
||||||
|
override val phoneNumber: String,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : WithPhoneNumber {
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.*
|
||||||
|
import dev.inmo.tgbotapi.types.passport.Base64EncodedData
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.FilesCollection
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.Translatable
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
sealed class TranslatableFilesCollection : Translatable, FilesCollection
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class UtilityBill(
|
||||||
|
@SerialName(filesField)
|
||||||
|
override val files: List<PassportFile>,
|
||||||
|
@SerialName(translationField)
|
||||||
|
override val translations: List<PassportFile>,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : TranslatableFilesCollection()
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class BankStatement(
|
||||||
|
@SerialName(filesField)
|
||||||
|
override val files: List<PassportFile>,
|
||||||
|
@SerialName(translationField)
|
||||||
|
override val translations: List<PassportFile>,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : TranslatableFilesCollection()
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class RentalAgreement(
|
||||||
|
@SerialName(filesField)
|
||||||
|
override val files: List<PassportFile>,
|
||||||
|
@SerialName(translationField)
|
||||||
|
override val translations: List<PassportFile>,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : TranslatableFilesCollection()
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class PassportRegistration(
|
||||||
|
@SerialName(filesField)
|
||||||
|
override val files: List<PassportFile>,
|
||||||
|
@SerialName(translationField)
|
||||||
|
override val translations: List<PassportFile>,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : TranslatableFilesCollection()
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class TemporaryRegistration(
|
||||||
|
@SerialName(filesField)
|
||||||
|
override val files: List<PassportFile>,
|
||||||
|
@SerialName(translationField)
|
||||||
|
override val translations: List<PassportFile>,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : TranslatableFilesCollection()
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.*
|
||||||
|
import dev.inmo.tgbotapi.types.passport.Base64EncodedData
|
||||||
|
import dev.inmo.tgbotapi.types.passport.EncryptedAndBase64EncodedData
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.*
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
sealed class TranslatableIDDocument : WithData, WithFrontSide, WithReverseSide, WithSelfie, Translatable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class DriverLicense(
|
||||||
|
@SerialName(dataField)
|
||||||
|
override val data: EncryptedAndBase64EncodedData,
|
||||||
|
@SerialName(frontSideField)
|
||||||
|
override val frontSide: PassportFile?,
|
||||||
|
@SerialName(reverseSideField)
|
||||||
|
override val reverseSide: PassportFile?,
|
||||||
|
@SerialName(selfieField)
|
||||||
|
override val selfie: PassportFile?,
|
||||||
|
@SerialName(translationField)
|
||||||
|
override val translations: List<PassportFile>,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : TranslatableIDDocument()
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class IdentityCard(
|
||||||
|
@SerialName(dataField)
|
||||||
|
override val data: EncryptedAndBase64EncodedData,
|
||||||
|
@SerialName(frontSideField)
|
||||||
|
override val frontSide: PassportFile?,
|
||||||
|
@SerialName(reverseSideField)
|
||||||
|
override val reverseSide: PassportFile?,
|
||||||
|
@SerialName(selfieField)
|
||||||
|
override val selfie: PassportFile?,
|
||||||
|
@SerialName(translationField)
|
||||||
|
override val translations: List<PassportFile>,
|
||||||
|
@SerialName(hashField)
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : TranslatableIDDocument()
|
@ -0,0 +1,17 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.passport.Base64EncodedData
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.EncryptedElementSerializer
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
import kotlinx.serialization.json.JsonObject
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
interface EncryptedPassportElement {
|
||||||
|
val hash: Base64EncodedData
|
||||||
|
}
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
data class UnknownEncryptedPassportElement(
|
||||||
|
val rawJson: JsonObject,
|
||||||
|
override val hash: Base64EncodedData
|
||||||
|
) : EncryptedPassportElement
|
@ -0,0 +1,10 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.EncryptedElementSerializer
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.PassportFile
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
interface FilesCollection : EncryptedPassportElement {
|
||||||
|
val files: List<PassportFile>
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.EncryptedElementSerializer
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.PassportFile
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
interface Translatable : EncryptedPassportElement {
|
||||||
|
val translations: List<PassportFile>
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.passport.EncryptedAndBase64EncodedData
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.EncryptedElementSerializer
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
interface WithData : EncryptedPassportElement {
|
||||||
|
val data: EncryptedAndBase64EncodedData
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.EncryptedElementSerializer
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
interface WithEmail : EncryptedPassportElement {
|
||||||
|
val email: String
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.EncryptedElementSerializer
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.PassportFile
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
interface WithFrontSide : EncryptedPassportElement {
|
||||||
|
val frontSide: PassportFile?
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.EncryptedElementSerializer
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
interface WithPhoneNumber : EncryptedPassportElement {
|
||||||
|
val phoneNumber: String
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.EncryptedElementSerializer
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.PassportFile
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
interface WithReverseSide : EncryptedPassportElement {
|
||||||
|
val reverseSide: PassportFile?
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.EncryptedElementSerializer
|
||||||
|
import dev.inmo.tgbotapi.types.passport.encrypted_data.PassportFile
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable(EncryptedElementSerializer::class)
|
||||||
|
interface WithSelfie : EncryptedPassportElement {
|
||||||
|
val selfie: PassportFile?
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user