use crate::error::Result;
#[derive(Debug, Clone)]
pub struct RawBillItem {
pub product_code: String,
pub product_name: String,
pub cost: f64,
pub region: String,
pub instance_id: String,
pub usage: Option<f64>,
pub unit: Option<String>,
}
pub trait BillingProvider: Send + Sync {
fn provider_name(&self) -> &'static str;
fn currency(&self) -> &'static str;
fn query_bill_items(
&self,
billing_cycle: &str,
) -> impl std::future::Future<Output = Result<Vec<RawBillItem>>> + Send;
fn test_credentials(&self) -> impl std::future::Future<Output = Result<bool>> + Send;
}