langfuse_client_base/models/
usage.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, bon::Builder)]
16pub struct Usage {
17 #[serde(rename = "input")]
19 pub input: i32,
20 #[serde(rename = "output")]
22 pub output: i32,
23 #[serde(rename = "total")]
25 pub total: i32,
26 #[serde(
28 rename = "unit",
29 default,
30 with = "::serde_with::rust::double_option",
31 skip_serializing_if = "Option::is_none"
32 )]
33 pub unit: Option<Option<String>>,
34 #[serde(
36 rename = "inputCost",
37 default,
38 with = "::serde_with::rust::double_option",
39 skip_serializing_if = "Option::is_none"
40 )]
41 pub input_cost: Option<Option<f64>>,
42 #[serde(
44 rename = "outputCost",
45 default,
46 with = "::serde_with::rust::double_option",
47 skip_serializing_if = "Option::is_none"
48 )]
49 pub output_cost: Option<Option<f64>>,
50 #[serde(
52 rename = "totalCost",
53 default,
54 with = "::serde_with::rust::double_option",
55 skip_serializing_if = "Option::is_none"
56 )]
57 pub total_cost: Option<Option<f64>>,
58}
59
60impl Usage {
61 pub fn new(input: i32, output: i32, total: i32) -> Usage {
63 Usage {
64 input,
65 output,
66 total,
67 unit: None,
68 input_cost: None,
69 output_cost: None,
70 total_cost: None,
71 }
72 }
73}