use mxlink::mime; #[derive(Default)] pub struct ImageGenerationParams { pub smallest_size_possible: bool, pub cheaper_model_switching_allowed: bool, pub cheaper_quality_switching_allowed: bool, } impl ImageGenerationParams { pub fn with_smallest_size_possible(mut self, value: bool) -> Self { self.smallest_size_possible = value; self } pub fn with_cheaper_model_switching_allowed(mut self, value: bool) -> Self { self.cheaper_model_switching_allowed = value; self } pub fn with_cheaper_quality_switching_allowed(mut self, value: bool) -> Self { self.cheaper_quality_switching_allowed = value; self } } pub struct ImageGenerationResult { pub bytes: Vec, pub mime_type: mime::Mime, pub revised_prompt: Option, } #[derive(Default)] pub struct ImageEditParams {} pub struct ImageEditResult { pub bytes: Vec, pub mime_type: mime::Mime, } pub struct ImageSource { pub filename: String, pub bytes: Vec, pub mime_type: mime::Mime, } impl ImageSource { pub fn new(filename: String, bytes: Vec, mime_type: mime::Mime) -> Self { Self { filename, bytes, mime_type, } } } impl From for async_openai::types::images::ImageInput { fn from(value: ImageSource) -> Self { async_openai::types::images::ImageInput::from_vec_u8(value.filename, value.bytes) } }