use df_hyperliquid_core::utils::Address;
use df_hyperliquid_core::utils::sign::Domain;
const fn address(text: &str) -> Address {
match Address::parse_const(text) {
Some(address) => address,
None => Address::ZERO,
}
}
pub const CHAIN_ID: u64 = 999;
pub const EXCHANGE: Address = address("0x6cd5661646289fb6e65ea5c032310fded797d0a2");
pub const BATCH_EXECUTOR: Address = address("0x233ff29b239abc1d7748605da9b205c3e008626e");
pub const PRICE_ORACLE: Address = address("0xa9b4c7b7ca5835652d81e25739c870d49f39cc2e");
pub const SESSION_KEY_MANAGER: Address = address("0x8326eb8896e358717f10502ec73ce8d28e37b108");
pub const DEPOSIT_PROXY_FACTORY: Address = address("0x1629b7d46bef6e13ff754174fc9f32dea309b38f");
pub const PAPER: Address = address("0xe40f17915daa230324030003a197cdaef2261c0e");
pub const PAPER_STAKING: Address = address("0xaad6c7b0cc3014fc80ffedae0ed7ce5967b0f016");
pub const PAPER_TOKENOMICS: Address = address("0x75174549dbbd44497d31a47e2e2d7406408d63d9");
pub const USDC: Address = address("0xb88339cb7199b77e23db6e890353e22632ba630f");
pub const CORE_DEPOSIT_WALLET: Address = address("0x6b9e773128f453f5c2c60935ee2de2cbc5390a24");
pub const TIMELOCK: Address = address("0xb915fa41e824d6aa31bb833ee81220c0f2c8ea0f");
pub const MULTISIG: Address = address("0x696292762fd5ac3677a45edbe54eaece4194d1f6");
pub const ORIGIN: &str = "https://exchange.papertrade.xyz";
pub const GENESIS_MS: u64 = 1_791_326_520_000;
pub const EXCHANGE_DOMAIN: Domain =
Domain { name: "String", version: "1", chain_id: CHAIN_ID, verifying_contract: EXCHANGE };
pub const STAKING_DOMAIN: Domain =
Domain { name: "PaperStaking", version: "1", chain_id: CHAIN_ID, verifying_contract: PAPER_STAKING };
pub const CANCEL_DOMAIN: Domain =
Domain { name: "PaperTrade Intent Cancel", version: "2", chain_id: CHAIN_ID, verifying_contract: EXCHANGE };
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Listing {
pub id: u32,
pub symbol: &'static str,
pub asset_index: u32,
pub price_scale: u64,
}
pub const BTC: Listing = Listing { id: 0, symbol: "BTC", asset_index: 0, price_scale: 10 };
pub const ETH: Listing = Listing { id: 1, symbol: "ETH", asset_index: 1, price_scale: 100 };
pub const LISTINGS: [Listing; 2] = [BTC, ETH];
#[must_use]
pub fn listing(symbol: &str) -> Option<Listing> {
LISTINGS.into_iter().find(|listing| listing.symbol.eq_ignore_ascii_case(symbol))
}
#[cfg(test)]
#[path = "tests/deployment.rs"]
mod tests;