use serde::{Deserialize, Serialize}; /*
                                      * Service Control API
                                      *
                                      * Provides admission control and telemetry reporting for services integrated with Service Infrastructure.
                                      *
                                      * The version of the OpenAPI document: v1
                                      *
                                      * Generated by: https://openapi-generator.tech
                                      */

use crate::google_rest_apis::servicecontrol_v1::models;

/// Money : Represents an amount of money with its currency type.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Money {
    /// The three-letter currency code defined in ISO 4217.
    #[serde(rename = "currencyCode", skip_serializing_if = "Option::is_none")]
    pub currency_code: Option<String>,
    /// Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
    #[serde(rename = "nanos", skip_serializing_if = "Option::is_none")]
    pub nanos: Option<i32>,
    /// The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.
    #[serde(rename = "units", skip_serializing_if = "Option::is_none")]
    pub units: Option<String>,
}

impl Money {
    /// Represents an amount of money with its currency type.
    pub fn new() -> Money {
        Money {
            currency_code: None,
            nanos: None,
            units: None,
        }
    }
}
