1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
pub(crate) fn normalize_pair(symbol: &str) -> Option<String> {
    if symbol.starts_with("cmt_") {
        // linear swap
        assert!(symbol.ends_with("usdt"));
        let base = &symbol[4..symbol.len() - 4];
        Some(format!("{}/usdt", base).to_uppercase())
    } else if symbol.contains('_') {
        // spot
        Some(symbol.replace("_", "/").to_uppercase())
    } else if symbol.ends_with("usd") {
        // inverse swap
        let base = symbol.strip_suffix("usd").unwrap();
        Some(format!("{}/usd", base).to_uppercase())
    } else {
        None
    }
}