1use alloc::{string::String, vec::Vec}; 2use serde::{Deserialize, Serialize}; 3 4#[allow(clippy::large_enum_variant)] 5#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] 6pub enum Request { 7 Exit, 8 GetDidKey { 9 index: u32, 10 display: bool, 11 }, 12 SignPlcOperation { 13 key_index: u32, 14 previous: Option<PlcOperation>, 15 operation: PlcOperation, 16 }, 17} 18 19#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] 20#[serde(rename_all = "camelCase")] 21pub struct PlcOperation { 22 pub r#type: String, 23 pub rotation_keys: Vec<String>, 24 pub verification_methods: VerificationMethods, 25 pub also_known_as: Vec<String>, 26 pub services: Services, 27 pub prev: Option<String>, 28} 29 30#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] 31#[serde(rename_all = "camelCase")] 32pub struct VerificationMethods { 33 pub atproto: String, 34} 35 36#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] 37pub struct Services { 38 pub atproto_pds: Service, 39} 40 41#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] 42#[serde(rename_all = "camelCase")] 43pub struct Service { 44 pub r#type: String, 45 pub endpoint: String, 46} 47 48#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] 49pub enum Response { 50 DidKey(Vec<u8>), 51 Signature(Vec<u8>), 52 Error(String), 53}