use serde::{Deserialize, Serialize};
use anyhow::Result;
#[derive(Debug, Clone)]
pub struct CraiteClient {
api_key: String,
base_url: String,
client: reqwest::Client,
}
#[derive(Debug, Clone)]
pub struct CraiteConfig {
pub api_key: String,
pub base_url: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct GenerateOptions {
pub prompt: String,
pub language: Option<String>,
pub mode: Option<GenerationMode>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum GenerationMode {
Production,
Educational,
}
#[derive(Debug, Clone, Deserialize)]
pub struct GenerateResult {
pub code: String,
pub explanation: Option<String>,
}
impl CraiteClient {
pub fn new(api_key: &str) -> Self {
Self {
api_key: api_key.to_string(),
base_url: "https://api.craite.ai/v1".to_string(),
client: reqwest::Client::new(),
}
}
pub fn api_key(&self) -> &str {
&self.api_key
}
pub async fn generate(&self, prompt: &str) -> Result<GenerateResult> {
Ok(GenerateResult {
code: format!("// Generated code for: {}", prompt),
explanation: Some("This is a placeholder implementation".to_string()),
})
}
}