soblendwa 0.1.0

SoblendWA: a blazing fast WhatsApp Web multi-device client library written in Rust. Crafted by Soblend Development Studio.
Documentation
use super::MessageKey;

#[derive(Clone, PartialEq, prost::Message)]
pub struct AppStateSyncKeyShare {
    #[prost(message, repeated, tag = "1")]
    pub keys: Vec<AppStateSyncKey>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct AppStateSyncKey {
    #[prost(message, optional, tag = "1")]
    pub key_id: Option<AppStateSyncKeyId>,
    #[prost(message, optional, tag = "2")]
    pub key_data: Option<AppStateSyncKeyData>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct AppStateSyncKeyId {
    #[prost(bytes = "vec", optional, tag = "1")]
    pub key_id: Option<Vec<u8>>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct AppStateSyncKeyData {
    #[prost(bytes = "vec", optional, tag = "1")]
    pub key_data: Option<Vec<u8>>,
    #[prost(int64, optional, tag = "3")]
    pub timestamp: Option<i64>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct ExternalBlobReference {
    #[prost(bytes = "vec", optional, tag = "1")]
    pub media_key: Option<Vec<u8>>,
    #[prost(string, optional, tag = "2")]
    pub direct_path: Option<String>,
    #[prost(string, optional, tag = "3")]
    pub handle: Option<String>,
    #[prost(uint64, optional, tag = "4")]
    pub file_size_bytes: Option<u64>,
    #[prost(bytes = "vec", optional, tag = "5")]
    pub file_sha256: Option<Vec<u8>>,
    #[prost(bytes = "vec", optional, tag = "6")]
    pub file_enc_sha256: Option<Vec<u8>>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncdVersion {
    #[prost(uint64, optional, tag = "1")]
    pub version: Option<u64>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct KeyId {
    #[prost(bytes = "vec", optional, tag = "1")]
    pub id: Option<Vec<u8>>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncdBlob {
    #[prost(bytes = "vec", optional, tag = "1")]
    pub blob: Option<Vec<u8>>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncdRecord {
    #[prost(message, optional, tag = "1")]
    pub index: Option<SyncdBlob>,
    #[prost(message, optional, tag = "2")]
    pub value: Option<SyncdBlob>,
    #[prost(message, optional, tag = "3")]
    pub key_id: Option<KeyId>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncdMutation {
    #[prost(int32, optional, tag = "1")]
    pub operation: Option<i32>,
    #[prost(message, optional, tag = "2")]
    pub record: Option<SyncdRecord>,
}

impl SyncdMutation {
    pub const SET: i32 = 0;
    pub const REMOVE: i32 = 1;
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncdMutations {
    #[prost(message, repeated, tag = "1")]
    pub mutations: Vec<SyncdMutation>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncdPatch {
    #[prost(message, optional, tag = "1")]
    pub version: Option<SyncdVersion>,
    #[prost(message, repeated, tag = "2")]
    pub mutations: Vec<SyncdMutation>,
    #[prost(message, optional, tag = "3")]
    pub external_mutations: Option<ExternalBlobReference>,
    #[prost(bytes = "vec", optional, tag = "4")]
    pub snapshot_mac: Option<Vec<u8>>,
    #[prost(bytes = "vec", optional, tag = "5")]
    pub patch_mac: Option<Vec<u8>>,
    #[prost(message, optional, tag = "6")]
    pub key_id: Option<KeyId>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncdSnapshot {
    #[prost(message, optional, tag = "1")]
    pub version: Option<SyncdVersion>,
    #[prost(message, repeated, tag = "2")]
    pub records: Vec<SyncdRecord>,
    #[prost(bytes = "vec", optional, tag = "3")]
    pub mac: Option<Vec<u8>>,
    #[prost(message, optional, tag = "4")]
    pub key_id: Option<KeyId>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncActionData {
    #[prost(bytes = "vec", optional, tag = "1")]
    pub index: Option<Vec<u8>>,
    #[prost(message, optional, tag = "2")]
    pub value: Option<SyncActionValue>,
    #[prost(bytes = "vec", optional, tag = "3")]
    pub padding: Option<Vec<u8>>,
    #[prost(int32, optional, tag = "4")]
    pub version: Option<i32>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncActionValue {
    #[prost(int64, optional, tag = "1")]
    pub timestamp: Option<i64>,
    #[prost(message, optional, tag = "2")]
    pub star_action: Option<StarAction>,
    #[prost(message, optional, tag = "3")]
    pub contact_action: Option<ContactAction>,
    #[prost(message, optional, tag = "4")]
    pub mute_action: Option<MuteAction>,
    #[prost(message, optional, tag = "5")]
    pub pin_action: Option<PinAction>,
    #[prost(message, optional, tag = "7")]
    pub push_name_setting: Option<PushNameSetting>,
    #[prost(message, optional, tag = "8")]
    pub quick_reply_action: Option<QuickReplyAction>,
    #[prost(message, optional, tag = "14")]
    pub label_edit_action: Option<LabelEditAction>,
    #[prost(message, optional, tag = "15")]
    pub label_association_action: Option<LabelAssociationAction>,
    #[prost(message, optional, tag = "17")]
    pub archive_chat_action: Option<ArchiveChatAction>,
    #[prost(message, optional, tag = "18")]
    pub delete_message_for_me_action: Option<DeleteMessageForMeAction>,
    #[prost(message, optional, tag = "20")]
    pub mark_chat_as_read_action: Option<MarkChatAsReadAction>,
    #[prost(message, optional, tag = "21")]
    pub clear_chat_action: Option<MessageRangeAction>,
    #[prost(message, optional, tag = "22")]
    pub delete_chat_action: Option<MessageRangeAction>,
    #[prost(message, optional, tag = "50")]
    pub lock_chat_action: Option<LockChatAction>,
    #[prost(message, optional, tag = "53")]
    pub privacy_setting_disable_link_previews_action: Option<PrivacySettingDisableLinkPreviewsAction>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct QuickReplyAction {
    #[prost(string, optional, tag = "1")]
    pub shortcut: Option<String>,
    #[prost(string, optional, tag = "2")]
    pub message: Option<String>,
    #[prost(string, repeated, tag = "3")]
    pub keywords: Vec<String>,
    #[prost(int32, optional, tag = "4")]
    pub count: Option<i32>,
    #[prost(bool, optional, tag = "5")]
    pub deleted: Option<bool>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct PrivacySettingDisableLinkPreviewsAction {
    #[prost(bool, optional, tag = "1")]
    pub is_previews_disabled: Option<bool>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct StarAction {
    #[prost(bool, optional, tag = "1")]
    pub starred: Option<bool>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct ContactAction {
    #[prost(string, optional, tag = "1")]
    pub full_name: Option<String>,
    #[prost(string, optional, tag = "2")]
    pub first_name: Option<String>,
    #[prost(string, optional, tag = "3")]
    pub lid_jid: Option<String>,
    #[prost(bool, optional, tag = "4")]
    pub save_on_primary_addressbook: Option<bool>,
    #[prost(string, optional, tag = "5")]
    pub pn_jid: Option<String>,
    #[prost(string, optional, tag = "6")]
    pub username: Option<String>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct MuteAction {
    #[prost(bool, optional, tag = "1")]
    pub muted: Option<bool>,
    #[prost(int64, optional, tag = "2")]
    pub mute_end_timestamp: Option<i64>,
    #[prost(bool, optional, tag = "3")]
    pub auto_muted: Option<bool>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct PinAction {
    #[prost(bool, optional, tag = "1")]
    pub pinned: Option<bool>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct PushNameSetting {
    #[prost(string, optional, tag = "1")]
    pub name: Option<String>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct LabelEditAction {
    #[prost(string, optional, tag = "1")]
    pub name: Option<String>,
    #[prost(int32, optional, tag = "2")]
    pub color: Option<i32>,
    #[prost(int32, optional, tag = "3")]
    pub predefined_id: Option<i32>,
    #[prost(bool, optional, tag = "4")]
    pub deleted: Option<bool>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct LabelAssociationAction {
    #[prost(bool, optional, tag = "1")]
    pub labeled: Option<bool>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct ArchiveChatAction {
    #[prost(bool, optional, tag = "1")]
    pub archived: Option<bool>,
    #[prost(message, optional, tag = "2")]
    pub message_range: Option<SyncActionMessageRange>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct DeleteMessageForMeAction {
    #[prost(bool, optional, tag = "1")]
    pub delete_media: Option<bool>,
    #[prost(int64, optional, tag = "2")]
    pub message_timestamp: Option<i64>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct MarkChatAsReadAction {
    #[prost(bool, optional, tag = "1")]
    pub read: Option<bool>,
    #[prost(message, optional, tag = "2")]
    pub message_range: Option<SyncActionMessageRange>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct MessageRangeAction {
    #[prost(message, optional, tag = "1")]
    pub message_range: Option<SyncActionMessageRange>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct LockChatAction {
    #[prost(bool, optional, tag = "1")]
    pub locked: Option<bool>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncActionMessageRange {
    #[prost(int64, optional, tag = "1")]
    pub last_message_timestamp: Option<i64>,
    #[prost(int64, optional, tag = "2")]
    pub last_system_message_timestamp: Option<i64>,
    #[prost(message, repeated, tag = "3")]
    pub messages: Vec<SyncActionMessage>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct SyncActionMessage {
    #[prost(message, optional, tag = "1")]
    pub key: Option<MessageKey>,
    #[prost(int64, optional, tag = "2")]
    pub timestamp: Option<i64>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct StoredHashEntry {
    #[prost(bytes = "vec", tag = "1")]
    pub index_mac: Vec<u8>,
    #[prost(bytes = "vec", tag = "2")]
    pub value_mac: Vec<u8>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct StoredHashState {
    #[prost(uint64, tag = "1")]
    pub version: u64,
    #[prost(bytes = "vec", tag = "2")]
    pub hash: Vec<u8>,
    #[prost(message, repeated, tag = "3")]
    pub entries: Vec<StoredHashEntry>,
}

#[derive(Clone, PartialEq, prost::Message)]
pub struct StoredTcToken {
    #[prost(bytes = "vec", tag = "1")]
    pub token: Vec<u8>,
    #[prost(int64, tag = "2")]
    pub timestamp: i64,
    #[prost(int64, optional, tag = "3")]
    pub sender_timestamp: Option<i64>,
}