fireblocks-sdk 2025.10.17

Rust implementation of the Fireblocks SDK
Documentation
// Fireblocks API
//
// Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain.  - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
//
// The version of the OpenAPI document: 1.8.0
// Contact: developers@fireblocks.com
// Generated by: https://openapi-generator.tech

use {
    crate::models,
    serde::{Deserialize, Serialize},
};

/// WalletQuoteResponse : Return a quote with id that can be used for swap
/// operation.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct WalletQuoteResponse {
    #[serde(rename = "protocol")]
    pub protocol: models::SwapProviderProtocolsEnum,
    /// The amount of tokens the swapper will provide
    #[serde(rename = "inputAmount")]
    pub input_amount: String,
    /// The id of the asset the swapper will provide
    #[serde(rename = "inputAsset")]
    pub input_asset: String,
    /// The slippage tolerance is a percentage. The slippage tolerance is the
    /// maximum amount the price can change between the time the transaction is
    /// submitted and the time it is executed
    #[serde(rename = "slippageTolerance")]
    pub slippage_tolerance: f64,
    /// The minimum amount of tokens the swapper will receive
    #[serde(rename = "outputMinAmount")]
    pub output_min_amount: String,
    /// Maximum amount of tokens that the swapper will receive
    #[serde(rename = "outputMaxAmount")]
    pub output_max_amount: String,
    /// The id of the asset the swapper will receive
    #[serde(rename = "outputAsset")]
    pub output_asset: String,
    #[serde(rename = "additionalData")]
    pub additional_data: models::ProviderAdditionalData,
    /// An identifier that uniquely identifies the received quote
    #[serde(rename = "providerQuoteId")]
    pub provider_quote_id: uuid::Uuid,
    /// When was the received `providerQuoteId` is expired (ISO Date time).
    #[serde(rename = "expiredAt")]
    pub expired_at: String,
    /// The required actions for completing a swap operation
    #[serde(rename = "requiredActions")]
    pub required_actions: Vec<models::SwapRequiredActionsEnum>,
    #[serde(rename = "estimatedFees")]
    pub estimated_fees: models::QuoteFee,
}

impl WalletQuoteResponse {
    /// Return a quote with id that can be used for swap operation.
    pub fn new(
        protocol: models::SwapProviderProtocolsEnum,
        input_amount: String,
        input_asset: String,
        slippage_tolerance: f64,
        output_min_amount: String,
        output_max_amount: String,
        output_asset: String,
        additional_data: models::ProviderAdditionalData,
        provider_quote_id: uuid::Uuid,
        expired_at: String,
        required_actions: Vec<models::SwapRequiredActionsEnum>,
        estimated_fees: models::QuoteFee,
    ) -> WalletQuoteResponse {
        WalletQuoteResponse {
            protocol,
            input_amount,
            input_asset,
            slippage_tolerance,
            output_min_amount,
            output_max_amount,
            output_asset,
            additional_data,
            provider_quote_id,
            expired_at,
            required_actions,
            estimated_fees,
        }
    }
}