use std::collections::HashMap;
use super::{address::Address, vm::CallType};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Transaction {
pub nonce: u64,
pub value: String,
pub receiver: Address,
pub sender: Address,
pub gas_price: u64,
pub gas_limit: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub signature: Option<String>,
#[serde(rename = "chainID")]
pub chain_id: String,
pub version: u32,
#[serde(skip_serializing_if = "is_zero")]
pub options: u32,
}
#[allow(clippy::trivially_copy_pass_by_ref)]
fn is_zero(num: &u32) -> bool {
*num == 0
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TxCostResponseData {
pub tx_gas_units: u64,
pub return_message: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ResponseTxCost {
pub data: Option<TxCostResponseData>,
pub error: String,
pub code: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TransactionOnNetwork {
#[serde(rename = "type")]
pub kind: String,
pub hash: Option<String>,
pub nonce: u64,
pub round: u64,
pub epoch: u64,
pub value: String,
pub receiver: Address,
pub sender: Address,
pub gas_price: u64,
pub gas_limit: u64,
pub signature: String,
pub source_shard: u32,
pub destination_shard: u32,
pub block_nonce: u64,
pub block_hash: String,
pub notarized_at_source_in_meta_nonce: u64,
#[serde(rename = "NotarizedAtSourceInMetaHash")]
pub notarized_at_source_in_meta_hash: String,
pub notarized_at_destination_in_meta_nonce: u64,
pub notarized_at_destination_in_meta_hash: String,
pub miniblock_type: String,
pub miniblock_hash: String,
pub timestamp: u64,
pub data: Option<String>,
pub status: String,
pub hyperblock_nonce: u64,
pub hyperblock_hash: String,
pub smart_contract_results: Option<Vec<ApiSmartContractResult>>,
pub logs: Option<ApiLogs>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Events {
pub address: Address,
pub identifier: String,
pub topics: Option<Vec<String>>,
pub data: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ApiLogs {
pub address: Address,
pub events: Vec<Events>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ApiSmartContractResult {
pub hash: String,
pub nonce: u64,
pub value: u64,
pub receiver: Address,
pub sender: Address,
pub data: String,
pub prev_tx_hash: String,
pub original_tx_hash: String,
pub gas_limit: u64,
pub gas_price: u64,
pub call_type: CallType,
pub relayer_address: Option<String>,
pub relayed_value: Option<String>,
pub code: Option<String>,
pub code_metadata: Option<String>,
pub return_message: Option<String>,
pub original_sender: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TransactionInfoData {
pub transaction: TransactionOnNetwork,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TransactionInfo {
pub error: String,
pub code: String,
pub data: Option<TransactionInfoData>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TransactionStatusData {
pub status: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TransactionStatus {
pub error: String,
pub code: String,
pub data: Option<TransactionStatusData>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ArgCreateTransaction {
pub nonce: u64,
pub value: String,
pub rcv_addr: Address,
pub snd_addr: Address,
pub gas_price: u64,
pub gas_limit: u64,
pub data: Option<String>,
pub signature: String,
pub chain_id: String,
pub version: u32,
pub options: u32,
pub available_balance: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SendTransactionData {
pub tx_hash: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SendTransactionResponse {
pub error: String,
pub code: String,
pub data: Option<SendTransactionData>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SendTransactionsResponseData {
pub num_of_sent_txs: i32,
pub txs_hashes: HashMap<i32, String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SendTransactionsResponse {
pub error: String,
pub code: String,
pub data: Option<SendTransactionsResponseData>,
}