/*
 * Rosetta
 *
 * Build Once. Integrate Your Blockchain Everywhere.
 *
 * The version of the OpenAPI document: 1.4.13
 *
 * Generated by: https://openapi-generator.tech
 */

/// AccountCoinsRequest : AccountCoinsRequest is utilized to make a request on the /account/coins endpoint.

#[derive(Clone, Debug, PartialEq, Eq, Default, Serialize, Deserialize)]
pub struct AccountCoinsRequest {
    #[serde(rename = "network_identifier")]
    pub network_identifier: crate::NetworkIdentifier,
    #[serde(rename = "account_identifier")]
    pub account_identifier: crate::AccountIdentifier,
    /// Include state from the mempool when looking up an account's unspent coins. Note, using this functionality breaks any guarantee of idempotency.
    #[serde(rename = "include_mempool")]
    pub include_mempool: bool,
    /// In some cases, the caller may not want to retrieve coins for all currencies for an AccountIdentifier. If the currencies field is populated, only coins for the specified currencies will be returned. If not populated, all unspent coins will be returned.
    #[serde(rename = "currencies", skip_serializing_if = "Option::is_none")]
    pub currencies: Option<Vec<crate::Currency>>,
}

impl AccountCoinsRequest {
    /// AccountCoinsRequest is utilized to make a request on the /account/coins endpoint.
    pub fn new(
        network_identifier: crate::NetworkIdentifier,
        account_identifier: crate::AccountIdentifier,
        include_mempool: bool,
    ) -> AccountCoinsRequest {
        AccountCoinsRequest {
            network_identifier,
            account_identifier,
            include_mempool,
            currencies: None,
        }
    }
}
