use alloc::{string::String, vec::Vec}; use serde::{Deserialize, Serialize}; #[allow(clippy::large_enum_variant)] #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub enum Request { Exit, GetDidKey { index: u32, display: bool, }, SignPlcOperation { key_index: u32, previous: Option, operation: PlcOperation, }, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct PlcOperation { pub r#type: String, pub rotation_keys: Vec, pub verification_methods: VerificationMethods, pub also_known_as: Vec, pub services: Services, pub prev: Option, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct VerificationMethods { pub atproto: String, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub struct Services { pub atproto_pds: Service, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct Service { pub r#type: String, pub endpoint: String, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub enum Response { DidKey(Vec), Signature(Vec), Error(String), }