use crate::client::{ApiError, Transport, info, info_request, user_request};
use crate::utils::{Address, Dec};
use serde::Deserialize;
#[must_use]
pub fn spot_deploy_state_request(user: Address) -> String {
user_request("spotDeployState", user)
}
pub async fn spot_deploy_state(transport: &impl Transport, user: Address) -> Result<SpotDeployState, ApiError> {
info(transport, spot_deploy_state_request(user)).await
}
#[must_use]
pub fn spot_pair_deploy_auction_request() -> String {
info_request("spotPairDeployAuctionStatus", &[])
}
pub async fn spot_pair_deploy_auction(transport: &impl Transport) -> Result<GasAuction, ApiError> {
info(transport, spot_pair_deploy_auction_request()).await
}
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SpotDeployState {
#[serde(default)]
pub states: Vec<DeployingToken>,
pub gas_auction: GasAuction,
}
pub use crate::deploy::auction::GasAuction;
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DeployingToken {
pub token: u32,
pub spec: TokenSpec,
#[serde(default)]
pub full_name: Option<String>,
#[serde(default)]
pub deployer_trading_fee_share: Option<Dec>,
#[serde(default)]
pub spots: Vec<u32>,
#[serde(default)]
pub max_supply: Option<Dec>,
#[serde(default)]
pub hyperliquidity_genesis_balance: Option<Dec>,
#[serde(default)]
pub total_genesis_balance_wei: Option<Dec>,
#[serde(default)]
pub user_genesis_balances: Vec<(Address, Dec)>,
#[serde(default)]
pub existing_token_genesis_balances: Vec<(u32, Dec)>,
#[serde(default)]
pub blacklist_users: Vec<Address>,
}
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TokenSpec {
pub name: String,
pub sz_decimals: u32,
pub wei_decimals: u32,
}