circles_rpc/methods/
trust.rs1use crate::client::RpcClient;
2use crate::error::Result;
3use circles_types::{Address, AggregatedTrustRelation, TrustRelation, TrustRelationType};
4
5#[derive(Clone, Debug)]
9pub struct TrustMethods {
10 client: RpcClient,
11}
12
13impl TrustMethods {
14 pub fn new(client: RpcClient) -> Self {
16 Self { client }
17 }
18
19 pub async fn get_trust_relations(&self, address: Address) -> Result<Vec<TrustRelation>> {
21 self.client
22 .call("circles_getTrustRelations", (address,))
23 .await
24 }
25
26 pub async fn get_aggregated_trust_relations(
28 &self,
29 avatar: Address,
30 ) -> Result<Vec<AggregatedTrustRelation>> {
31 self.client
32 .call("circles_getAggregatedTrustRelations", (avatar,))
33 .await
34 }
35
36 pub async fn get_common_trust(
38 &self,
39 avatar_a: Address,
40 avatar_b: Address,
41 ) -> Result<Vec<TrustRelationType>> {
42 self.client
43 .call("circles_getCommonTrust", (avatar_a, avatar_b))
44 .await
45 }
46
47 pub async fn get_trusted_by(&self, avatar: Address) -> Result<Vec<AggregatedTrustRelation>> {
49 let relations = self.get_aggregated_trust_relations(avatar).await?;
50 Ok(relations
51 .into_iter()
52 .filter(|rel| matches!(rel.relation, TrustRelationType::TrustedBy))
53 .collect())
54 }
55
56 pub async fn get_trusts(&self, avatar: Address) -> Result<Vec<AggregatedTrustRelation>> {
58 let relations = self.get_aggregated_trust_relations(avatar).await?;
59 Ok(relations
60 .into_iter()
61 .filter(|rel| matches!(rel.relation, TrustRelationType::Trusts))
62 .collect())
63 }
64
65 pub async fn get_mutual_trusts(&self, avatar: Address) -> Result<Vec<AggregatedTrustRelation>> {
67 let relations = self.get_aggregated_trust_relations(avatar).await?;
68 Ok(relations
69 .into_iter()
70 .filter(|rel| matches!(rel.relation, TrustRelationType::MutuallyTrusts))
71 .collect())
72 }
73}