1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
4pub struct DirectoryResolution {
5 pub input: String,
6 pub did: crate::ids::Did,
7 pub handle: Option<crate::ids::Handle>,
8 pub profile: Option<crate::identity::Profile>,
9 pub warnings: Vec<String>,
10}
11
12#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
13pub enum IdentitySubject {
14 Did(crate::ids::Did),
15 Handle(crate::ids::Handle),
16 Any(String),
17}
18
19#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
20pub struct PublicProfile {
21 pub subject: IdentitySubject,
22 pub did: crate::ids::Did,
23 pub handle: Option<crate::ids::Handle>,
24 pub profile: crate::identity::Profile,
25 pub warnings: Vec<String>,
26}
27
28#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
29pub struct HandleLookupResult {
30 pub handle: crate::ids::Handle,
31 pub did: crate::ids::Did,
32 pub user_id: String,
33 pub domain: Option<String>,
34 pub status: Option<String>,
35 pub profile: Option<crate::identity::Profile>,
36 pub warnings: Vec<String>,
37}
38
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
40pub struct Contact {
41 pub did: crate::ids::Did,
42 pub handle: Option<crate::ids::Handle>,
43 pub display_name: Option<String>,
44 pub avatar_uri: Option<String>,
45 pub avatar_url: Option<String>,
46 pub profile_uri: Option<String>,
47 pub subject_type: Option<String>,
48 pub relationship: Option<String>,
49 pub followed: bool,
50 pub messaged: bool,
51 pub note: Option<String>,
52 pub last_seen_at: Option<String>,
53}
54
55#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
56pub struct DisplayProfile {
57 pub did: Option<crate::ids::Did>,
58 pub handle: Option<crate::ids::Handle>,
59 pub display_name: Option<String>,
60 pub avatar_uri: Option<String>,
61 pub avatar_url: Option<String>,
62 pub profile_uri: Option<String>,
63 pub subject_type: Option<String>,
64 pub cache_hit: bool,
65 pub warnings: Vec<String>,
66}
67
68#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
69pub struct DisplayProfileBatchRequest {
70 pub peers: Vec<crate::ids::PeerRef>,
71}
72
73#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
74pub struct RelationStatus {
75 pub peer: crate::ids::PeerRef,
76 pub did: Option<crate::ids::Did>,
77 pub is_contact: bool,
78 pub followed: bool,
79 pub messaged: bool,
80 pub relationship: Option<String>,
81}
82
83#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
84pub struct SaveContactRequest {
85 pub peer: crate::ids::PeerRef,
86 pub did: Option<crate::ids::Did>,
87 pub handle: Option<crate::ids::Handle>,
88 pub display_name: Option<String>,
89 pub relationship: Option<String>,
90 pub note: Option<String>,
91}
92
93#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
94pub struct ContactListQuery {
95 pub limit: Option<crate::ids::PageLimit>,
96}
97
98#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
99pub struct FollowRequest {
100 pub peer: crate::ids::PeerRef,
101}
102
103#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
104pub struct UnfollowRequest {
105 pub peer: crate::ids::PeerRef,
106}
107
108#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
109pub struct FollowResult {
110 pub peer: crate::ids::PeerRef,
111 pub did: crate::ids::Did,
112 pub is_friend: bool,
113 pub relation: RelationshipStatus,
114 pub warnings: Vec<String>,
115}
116
117#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
118pub struct UnfollowResult {
119 pub peer: crate::ids::PeerRef,
120 pub did: crate::ids::Did,
121 pub ok: bool,
122 pub relation: RelationshipStatus,
123 pub warnings: Vec<String>,
124}
125
126#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
127pub struct RelationshipStatus {
128 pub peer: crate::ids::PeerRef,
129 pub did: crate::ids::Did,
130 pub is_following: bool,
131 pub is_follower: bool,
132 pub is_friend: bool,
133 pub is_blocked: bool,
134 pub is_blocked_by: bool,
135 pub is_contact: bool,
136 pub messaged: bool,
137 pub relationship: Option<String>,
138 pub warnings: Vec<String>,
139}
140
141#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
142pub struct RelationshipListQuery {
143 pub limit: Option<crate::ids::PageLimit>,
144 pub offset: Option<u32>,
145 pub hydrate_profiles: bool,
146}
147
148#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
149pub struct RelationshipListItem {
150 pub did: Option<crate::ids::Did>,
151 pub handle: Option<crate::ids::Handle>,
152 pub profile: Option<crate::identity::Profile>,
153 pub created_at: Option<String>,
154 pub warnings: Vec<String>,
155}