#![allow(missing_docs)]
use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct AppliedRate {
pub unit: String,
pub rate_numerator: i64,
pub rate_denominator: i64,
}
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RateIdentity {
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub model: String,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub profile: String,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub operation: String,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub region: String,
}
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct CostEstimate {
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub endpoint: String,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub identity: RateIdentity,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub estimated_credits: u64,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub unit_ceilings: HashMap<String, u64>,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub applied_rates: Vec<AppliedRate>,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub rate_book_version: String,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub rate_book_sha256: String,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub rounding_rule: String,
#[serde(default, deserialize_with = "crate::types::null_as_default")]
pub estimate_basis: String,
#[serde(default)]
pub minimum_billed_units: Option<HashMap<String, u64>>,
}