keybase-protocol 0.1.1

Provides the Keybase types defined in the Keybase AVDL Protocol files for Rust.
Documentation
// Namespace: "keybase.1"
// Protocol: "home"
#![allow(dead_code)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(unused_imports)]
use serde::{Serialize, Deserialize};
use serde_repr::{Deserialize_repr, Serialize_repr};use super::*;

pub type HomeScreenItemID = String;

#[derive(Serialize_repr, Deserialize_repr, Debug, Hash, PartialEq, Eq)]
#[repr(u8)]
pub enum HomeScreenItemType {
  Todo_1,
  People_2,
  Announcement_3,
}

pub enum HomeScreenItemData {
  Todo {todo: HomeScreenTodo},
  People {people: HomeScreenPeopleNotification},
  Announcement {announcement: HomeScreenAnnouncement},
  Default {},
}

pub enum HomeScreenItemDataExt {
  Todo {todo: HomeScreenTodoExt},
  Default {},
}

#[derive(Serialize_repr, Deserialize_repr, Debug, Hash, PartialEq, Eq)]
#[repr(u8)]
pub enum AppLinkType {
  None_0,
  People_1,
  Chat_2,
  Files_3,
  Wallet_4,
  Git_5,
  Devices_6,
  Settings_7,
  Teams_8,
}

pub type HomeScreenAnnouncementID = i32;

pub type HomeScreenAnnouncementVersion = i32;

pub struct HomeScreenAnnouncement {
  pub id: HomeScreenAnnouncementID,
  pub version: HomeScreenAnnouncementVersion,
  pub appLink: AppLinkType,
  pub confirmLabel: Option<String>,
  pub dismissable: bool,
  pub iconUrl: Option<String>,
  pub text: Option<String>,
  pub url: Option<String>,
}

#[derive(Serialize_repr, Deserialize_repr, Debug, Hash, PartialEq, Eq)]
#[repr(u8)]
pub enum HomeScreenTodoType {
  None_0,
  Bio_1,
  Proof_2,
  Device_3,
  Follow_4,
  Chat_5,
  Paperkey_6,
  Team_7,
  Folder_8,
  Git_repo_9,
  Team_showcase_10,
  Avatar_user_11,
  Avatar_team_12,
  Add_phone_number_18,
  Verify_all_phone_number_19,
  Verify_all_email_20,
  Legacy_email_visibility_21,
  Add_email_22,
  Annoncement_placeholder_10000,
}

pub enum HomeScreenTodo {
  Verify_all_phone_number {verify_all_phone_number: PhoneNumber},
  Verify_all_email {verify_all_email: EmailAddress},
  Legacy_email_visibility {legacy_email_visibility: EmailAddress},
  Default {},
}

pub enum HomeScreenTodoExt {
  Verify_all_email {verify_all_email: VerifyAllEmailTodoExt},
  Default {},
}

pub struct VerifyAllEmailTodoExt {
  pub lastVerifyEmailDate: UnixTime,
}

#[derive(Serialize_repr, Deserialize_repr, Debug, Hash, PartialEq, Eq)]
#[repr(u8)]
pub enum HomeScreenPeopleNotificationType {
  Followed_1,
  Followed_multi_2,
}

pub struct HomeScreenPeopleNotificationFollowed {
  pub followTime: Time,
  pub followedBack: bool,
  pub user: UserSummary,
}

pub struct HomeScreenPeopleNotificationFollowedMulti {
  pub followers: Option<Vec<HomeScreenPeopleNotificationFollowed>>,
  pub numOthers: i32,
}

pub enum HomeScreenPeopleNotification {
  Followed {followed: HomeScreenPeopleNotificationFollowed},
  Followed_multi {followed_multi: HomeScreenPeopleNotificationFollowedMulti},
}

pub struct HomeScreenItem {
  pub badged: bool,
  pub data: HomeScreenItemData,
  pub dataExt: HomeScreenItemDataExt,
}

pub struct Pics {
  pub square40: Option<String>,
  pub square200: Option<String>,
  pub square360: Option<String>,
}

pub struct HomeUserSummary {
  pub uid: UID,
  pub username: Option<String>,
  pub bio: Option<String>,
  pub fullName: Option<String>,
  pub pics: Option<Pics>,
}

pub struct HomeScreen {
  pub lastViewed: Time,
  pub version: i32,
  pub visits: i32,
  pub items: Option<Vec<HomeScreenItem>>,
  pub followSuggestions: Option<Vec<HomeUserSummary>>,
  pub announcementsVersion: i32,
}