1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug)]
4pub struct ApiResponse<T> {
5 pub data: T,
6}
7
8#[derive(Serialize, Deserialize, Debug, Clone)]
9#[serde(rename_all = "lowercase")]
10pub enum Role {
11 System,
12 Developer,
13 User,
14 Assistant,
15 Tool,
16}
17
18impl ToString for Role {
19 fn to_string(&self) -> String {
20 match self {
21 Role::System => "system".to_string(),
22 Role::Developer => "developer".to_string(),
23 Role::User => "user".to_string(),
24 Role::Assistant => "assistant".to_string(),
25 Role::Tool => "tool".to_string(),
26 }
27 }
28}
29
30#[derive(Serialize, Deserialize, Debug, Clone)]
31#[serde(rename_all = "lowercase")]
32pub enum Effort {
33 High,
34 Medium,
35 Low,
36}
37
38impl ToString for Effort {
39 fn to_string(&self) -> String {
40 match self {
41 Effort::High => "high".to_string(),
42 Effort::Medium => "medium".to_string(),
43 Effort::Low => "low".to_string(),
44 }
45 }
46}
47
48#[derive(Serialize, Deserialize, Debug, Clone)]
49pub struct ProviderPreferences {
50 sort: Option<String>,
51}
52
53#[derive(Serialize, Deserialize, Debug, Clone)]
54pub struct ReasoningConfig {
55 effort: Option<Effort>,
56 max_tokens: Option<u32>,
57 exclude: Option<bool>,
58}