1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct StatsigMetadata {
5 #[serde(rename = "sdkType")]
6 pub sdk_type: String,
7
8 #[serde(rename = "sdkVersion")]
9 pub sdk_version: String,
10
11 #[serde(rename = "exposureLoggingDisabled")]
12 pub exposure_logging_disabled: bool,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct GateEvaluationResult {
17 pub name: String,
18 pub value: bool,
19 #[serde(rename = "rule_id")]
20 pub rule_id: Option<String>,
21 #[serde(rename = "group_name")]
22 pub group_name: Option<String>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
26pub struct ConfigEvaluationResult {
27 pub name: String,
28 pub value: serde_json::Value,
29 #[serde(rename = "rule_id")]
30 pub rule_id: Option<String>,
31 #[serde(rename = "group_name")]
32 pub group_name: Option<String>,
33 pub group: Option<String>,
34}
35
36impl StatsigMetadata {
37 pub fn new(sdk_type: impl Into<String>, sdk_version: impl Into<String>) -> Self {
38 Self {
39 sdk_type: sdk_type.into(),
40 sdk_version: sdk_version.into(),
41 exposure_logging_disabled: false,
42 }
43 }
44
45 pub fn with_exposure_logging_disabled(mut self, disabled: bool) -> Self {
46 self.exposure_logging_disabled = disabled;
47 self
48 }
49}
50
51impl Default for StatsigMetadata {
52 fn default() -> Self {
53 Self {
54 sdk_type: "rust-client".to_string(),
55 sdk_version: env!("CARGO_PKG_VERSION").to_string(),
56 exposure_logging_disabled: false,
57 }
58 }
59}