openrouter_rs/
types.rs

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}