use serde::{Deserialize, Serialize};
#[cfg(not(feature = "std"))]
use alloc::{string::String, vec::Vec};
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct SmsAddress {
pub address: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct SmsAttachment {
pub part_id: u64,
pub mime_type: String,
pub encoded_thumbnail: String,
pub unique_identifier: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct SmsOutgoingAttachment {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub file_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub base64_encoded_file: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub mime_type: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct SmsMessage {
#[serde(rename = "_id")]
pub id: u64,
pub addresses: Vec<SmsAddress>,
pub attachments: Vec<SmsAttachment>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub body: Option<String>,
pub date: u64,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub event: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub read: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub sub_id: Option<u64>,
pub thread_id: u64,
#[serde(rename = "type")]
pub type_: u8,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct SmsAttachmentFilePacket {
pub filename: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct SmsMessagesPacket {
pub messages: Vec<SmsMessage>,
pub version: u64,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct SmsRequestPacket {
pub addresses: Vec<SmsAddress>,
pub attachments: Vec<SmsOutgoingAttachment>,
pub message_body: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub sub_id: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub version: Option<u64>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct SmsRequestAttachmentPacket {
pub part_id: u64,
pub unique_identifier: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct SmsRequestConversationPacket {
#[serde(rename = "threadID")]
pub thread_id: u64,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub range_start_timestamp: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub number_to_request: Option<u64>,
}