buble 0.1.0

Official Rust SDK for the Buble public API.
Documentation
use buble::{Client, CreateGenerationRequest, FileUpload, Result, UploadOptions, WaitOptions};

#[tokio::main]
async fn main() -> Result<()> {
    let client = Client::from_env()?;

    let uploaded = client
        .files()
        .upload(
            FileUpload::from_path("reference.png").content_type("image/png"),
            UploadOptions::new()
                .file_type("image")
                .model("google/nano-banana")
                .mode("image_to_image"),
        )
        .await?;

    let task = client
        .generations()
        .create(
            CreateGenerationRequest::new("google/nano-banana")
                .mode("image_to_image")
                .prompt("Turn this reference into a polished ecommerce hero image.")
                .image_urls([uploaded.data.url]),
        )
        .await?;

    let result = client
        .generations()
        .wait(&task.data.id, WaitOptions::default())
        .await?;
    println!("{result:#?}");

    Ok(())
}