use serde::{Deserialize, Serialize}; use std::option::Option; use crate::impl_builder_methods; #[derive(Debug, Deserialize)] pub struct ImageData { pub url: String, } #[derive(Debug, Serialize, Clone)] pub struct ImageGenerationRequest { pub prompt: String, #[serde(skip_serializing_if = "Option::is_none")] pub model: Option, #[serde(skip_serializing_if = "Option::is_none")] pub n: Option, #[serde(skip_serializing_if = "Option::is_none")] pub size: Option, #[serde(skip_serializing_if = "Option::is_none")] pub response_format: Option, #[serde(skip_serializing_if = "Option::is_none")] pub user: Option, } impl ImageGenerationRequest { pub fn new(prompt: String) -> Self { Self { prompt, model: None, n: None, size: None, response_format: None, user: None, } } } impl_builder_methods!( ImageGenerationRequest, n: i32, size: String, response_format: String, user: String ); #[derive(Debug, Deserialize)] pub struct ImageGenerationResponse { pub created: i64, pub data: Vec, } #[derive(Debug, Serialize, Clone)] pub struct ImageEditRequest { pub image: String, #[serde(skip_serializing_if = "Option::is_none")] pub mask: Option, pub prompt: String, #[serde(skip_serializing_if = "Option::is_none")] pub n: Option, #[serde(skip_serializing_if = "Option::is_none")] pub size: Option, #[serde(skip_serializing_if = "Option::is_none")] pub response_format: Option, #[serde(skip_serializing_if = "Option::is_none")] pub user: Option, } impl ImageEditRequest { pub fn new(image: String, prompt: String) -> Self { Self { image, prompt, mask: None, n: None, size: None, response_format: None, user: None, } } } impl_builder_methods!( ImageEditRequest, mask: String, n: i32, size: String, response_format: String, user: String ); #[derive(Debug, Deserialize)] pub struct ImageEditResponse { pub created: i64, pub data: Vec, } #[derive(Debug, Serialize, Clone)] pub struct ImageVariationRequest { pub image: String, #[serde(skip_serializing_if = "Option::is_none")] pub n: Option, #[serde(skip_serializing_if = "Option::is_none")] pub size: Option, #[serde(skip_serializing_if = "Option::is_none")] pub response_format: Option, #[serde(skip_serializing_if = "Option::is_none")] pub user: Option, } impl ImageVariationRequest { pub fn new(image: String) -> Self { Self { image, n: None, size: None, response_format: None, user: None, } } } impl_builder_methods!( ImageVariationRequest, n: i32, size: String, response_format: String, user: String ); #[derive(Debug, Deserialize)] pub struct ImageVariationResponse { pub created: i64, pub data: Vec, }