use crate::networks::terra::Denom;
use serde::{Deserialize, Serialize};
use stdtx::amino::types::{Coin, StdFee};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct NetworkConfig {
pub terra: Option<TerraConfig>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct TerraConfig {
pub chain_id: String,
pub feeder: String,
pub validator: String,
#[serde(default)]
pub fee: TerraOracleFee,
pub timeout_secs: Option<u64>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TerraOracleFee {
pub denom: Denom,
pub amount: u64,
pub gas: u64,
}
impl Default for TerraOracleFee {
fn default() -> Self {
Self {
denom: Denom::Ukrw,
amount: 356_100,
gas: 200_000,
}
}
}
impl From<&TerraOracleFee> for StdFee {
fn from(fee: &TerraOracleFee) -> StdFee {
StdFee {
amount: vec![Coin {
denom: fee.denom.to_string(),
amount: fee.amount.to_string(),
}],
gas: fee.gas,
}
}
}