df_hyperliquid_core/deploy/
tokens.rs1use crate::client::{ApiError, Transport, info, info_request, user_request};
5use crate::deploy::auction::GasAuction;
6use crate::utils::{Address, Dec};
7use serde::Deserialize;
8
9#[must_use]
11pub fn spot_deploy_state_request(user: Address) -> String {
12 user_request("spotDeployState", user)
13}
14
15pub async fn spot_deploy_state(transport: &impl Transport, user: Address) -> Result<SpotDeployState, ApiError> {
16 info(transport, spot_deploy_state_request(user)).await
17}
18
19#[must_use]
21pub fn spot_pair_deploy_auction_request() -> String {
22 info_request("spotPairDeployAuctionStatus", &[])
23}
24
25pub async fn spot_pair_deploy_auction(transport: &impl Transport) -> Result<GasAuction, ApiError> {
26 info(transport, spot_pair_deploy_auction_request()).await
27}
28
29#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
30#[serde(rename_all = "camelCase")]
31pub struct SpotDeployState {
32 #[serde(default)]
34 pub states: Vec<DeployingToken>,
35 pub gas_auction: GasAuction,
37}
38
39#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct DeployingToken {
43 pub token: u32,
45 pub spec: TokenSpec,
46 #[serde(default)]
47 pub full_name: Option<String>,
48 #[serde(default)]
49 pub deployer_trading_fee_share: Option<Dec>,
50 #[serde(default)]
52 pub spots: Vec<u32>,
53 #[serde(default)]
55 pub max_supply: Option<Dec>,
56 #[serde(default)]
57 pub hyperliquidity_genesis_balance: Option<Dec>,
58 #[serde(default)]
59 pub total_genesis_balance_wei: Option<Dec>,
60 #[serde(default)]
61 pub user_genesis_balances: Vec<(Address, Dec)>,
62 #[serde(default)]
63 pub existing_token_genesis_balances: Vec<(u32, Dec)>,
64 #[serde(default)]
65 pub blacklist_users: Vec<Address>,
66}
67
68#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
70#[serde(rename_all = "camelCase")]
71pub struct TokenSpec {
72 pub name: String,
73 pub sz_decimals: u32,
74 pub wei_decimals: u32,
75}
76
77#[cfg(test)]
78#[path = "tests/tokens.rs"]
79mod tests;