use serde::{ Serialize, Deserialize };
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub struct ImageGenerationConfig
{
pub model : ImageModel,
pub size : ImageSize,
pub quality : ImageQuality,
pub style : ImageStyle,
pub response_format : ImageResponseFormat,
}
impl Default for ImageGenerationConfig
{
#[ inline ]
fn default() -> Self
{
Self
{
model : ImageModel::DallE3,
size : ImageSize::Square1024,
quality : ImageQuality::Standard,
style : ImageStyle::Vivid,
response_format : ImageResponseFormat::Url,
}
}
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub enum ImageModel
{
DallE2,
DallE3,
Custom( String ),
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub enum ImageSize
{
Square256,
Square512,
Square1024,
Wide1792x1024,
Tall1024x1792,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub enum ImageQuality
{
Standard,
HD,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub enum ImageStyle
{
Vivid,
Natural,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub enum ImageResponseFormat
{
Url,
Base64,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub struct ImageResult
{
pub url : Option< String >,
pub b64_json : Option< String >,
pub metadata : ImageMetadata,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub struct ImageMetadata
{
pub width : u32,
pub height : u32,
pub format : String,
pub generation_time_ms : u64,
}