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(rename = "unit", deserialize_with = "Option::deserialize")]
28 pub unit: Option<String>,
29 #[serde(
31 rename = "inputCost",
32 default,
33 with = "::serde_with::rust::double_option",
34 skip_serializing_if = "Option::is_none"
35 )]
36 pub input_cost: Option<Option<f64>>,
37 #[serde(
39 rename = "outputCost",
40 default,
41 with = "::serde_with::rust::double_option",
42 skip_serializing_if = "Option::is_none"
43 )]
44 pub output_cost: Option<Option<f64>>,
45 #[serde(
47 rename = "totalCost",
48 default,
49 with = "::serde_with::rust::double_option",
50 skip_serializing_if = "Option::is_none"
51 )]
52 pub total_cost: Option<Option<f64>>,
53}
54
55impl Usage {
56 pub fn new(input: i32, output: i32, total: i32, unit: Option<String>) -> Usage {
58 Usage {
59 input,
60 output,
61 total,
62 unit,
63 input_cost: None,
64 output_cost: None,
65 total_cost: None,
66 }
67 }
68}