// 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},
};
/// ExtraParameters : Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. *Note: `rawMessageData`, `contractCallData`, and `inputsSelection` cannot be used together in the same call.\"
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ExtraParameters {
#[serde(rename = "nodeControls", skip_serializing_if = "Option::is_none")]
pub node_controls: Option<models::NodeControls>,
#[serde(rename = "rawMessageData", skip_serializing_if = "Option::is_none")]
pub raw_message_data: Option<models::ExtraParametersRawMessageData>,
/// Hex encoded contract call data as a string.
#[serde(rename = "contractCallData", skip_serializing_if = "Option::is_none")]
pub contract_call_data: Option<String>,
#[serde(rename = "programCallData", skip_serializing_if = "Option::is_none")]
pub program_call_data: Option<String>,
#[serde(rename = "inputsSelection", skip_serializing_if = "Option::is_none")]
pub inputs_selection: Option<models::ExtraParametersInputsSelection>,
}
impl ExtraParameters {
/// Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. *Note: `rawMessageData`, `contractCallData`, and `inputsSelection` cannot be used together in the same call.\"
pub fn new() -> ExtraParameters {
ExtraParameters {
node_controls: None,
raw_message_data: None,
contract_call_data: None,
inputs_selection: None,
program_call_data: None,
}
}
}