pub mod client;
pub mod config;
pub mod error;
pub mod models;
pub mod provider;
pub mod streaming;
pub use client::GeminiClient;
pub use config::GeminiConfig;
pub use error::GeminiError;
pub use models::{GeminiModelFamily, ModelFeature, get_gemini_registry};
pub use provider::GeminiProvider;
pub use streaming::GeminiStream;
pub fn create_gemini_provider(config: GeminiConfig) -> Result<GeminiProvider, error::GeminiError> {
GeminiProvider::new(config)
}
pub fn create_gemini_provider_from_env() -> Result<GeminiProvider, error::GeminiError> {
let config = GeminiConfig::from_env()?;
GeminiProvider::new(config)
}
pub fn supported_models() -> Vec<String> {
get_gemini_registry()
.list_models()
.into_iter()
.map(|spec| spec.model_info.id.clone())
.collect()
}
pub fn is_model_supported(model_id: &str) -> bool {
get_gemini_registry().get_model_spec(model_id).is_some()
}
pub fn get_model_pricing(model_id: &str) -> Option<(f64, f64)> {
get_gemini_registry()
.get_model_pricing(model_id)
.map(|p| (p.input_price, p.output_price))
}