tlsn_core/config/
tls_commit.rs1pub mod mpc;
4
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct TlsCommitConfig {
10    protocol: TlsCommitProtocolConfig,
11}
12
13impl TlsCommitConfig {
14    pub fn builder() -> TlsCommitConfigBuilder {
16        TlsCommitConfigBuilder::default()
17    }
18
19    pub fn protocol(&self) -> &TlsCommitProtocolConfig {
21        &self.protocol
22    }
23
24    pub fn to_request(&self) -> TlsCommitRequest {
26        TlsCommitRequest {
27            config: self.protocol.clone(),
28        }
29    }
30}
31
32#[derive(Debug, Default, Clone, Serialize, Deserialize)]
34pub struct TlsCommitConfigBuilder {
35    protocol: Option<TlsCommitProtocolConfig>,
36}
37
38impl TlsCommitConfigBuilder {
39    pub fn protocol<C>(mut self, protocol: C) -> Self
41    where
42        C: Into<TlsCommitProtocolConfig>,
43    {
44        self.protocol = Some(protocol.into());
45        self
46    }
47
48    pub fn build(self) -> Result<TlsCommitConfig, TlsCommitConfigError> {
50        let protocol = self
51            .protocol
52            .ok_or(ErrorRepr::MissingField { name: "protocol" })?;
53
54        Ok(TlsCommitConfig { protocol })
55    }
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
60#[non_exhaustive]
61pub enum TlsCommitProtocolConfig {
62    Mpc(mpc::MpcTlsConfig),
64}
65
66impl From<mpc::MpcTlsConfig> for TlsCommitProtocolConfig {
67    fn from(config: mpc::MpcTlsConfig) -> Self {
68        Self::Mpc(config)
69    }
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
74pub struct TlsCommitRequest {
75    config: TlsCommitProtocolConfig,
76}
77
78impl TlsCommitRequest {
79    pub fn protocol(&self) -> &TlsCommitProtocolConfig {
81        &self.config
82    }
83}
84
85#[derive(Debug, thiserror::Error)]
87#[error(transparent)]
88pub struct TlsCommitConfigError(#[from] ErrorRepr);
89
90#[derive(Debug, thiserror::Error)]
91enum ErrorRepr {
92    #[error("missing field: {name}")]
93    MissingField { name: &'static str },
94}