kabu_core_blockchain/
blockchain_tokens.rs1use alloy::primitives::ChainId;
2use alloy_chains::{Chain, NamedChain};
3use eyre::{eyre, OptionExt, Result};
4use kabu_defi_address_book::{TokenAddressArbitrum, TokenAddressBase, TokenAddressEth};
5use kabu_types_entities::{Market, Token};
6
7pub fn add_default_tokens_to_market(market: &mut Market, chain_id: ChainId) -> Result<()> {
8 match Chain::from_id(chain_id).named().ok_or_eyre("NO_NAMED_CHAIN")? {
9 NamedChain::Mainnet => {
10 let weth_token = Token::new_with_data(TokenAddressEth::WETH, Some("WETH".to_string()), None, Some(18), true, false);
11 let usdc_token = Token::new_with_data(TokenAddressEth::USDC, Some("USDC".to_string()), None, Some(6), true, false);
12 let usdt_token = Token::new_with_data(TokenAddressEth::USDT, Some("USDT".to_string()), None, Some(6), true, false);
13 let dai_token = Token::new_with_data(TokenAddressEth::DAI, Some("DAI".to_string()), None, Some(18), true, false);
14 let wbtc_token = Token::new_with_data(TokenAddressEth::WBTC, Some("WBTC".to_string()), None, Some(8), true, false);
15 let threecrv_token = Token::new_with_data(TokenAddressEth::THREECRV, Some("3Crv".to_string()), None, Some(18), false, true);
16
17 market.add_token(weth_token);
18 market.add_token(usdc_token);
19 market.add_token(usdt_token);
20 market.add_token(dai_token);
21 market.add_token(wbtc_token);
22 market.add_token(threecrv_token);
23 }
24 NamedChain::Arbitrum => {
25 let weth_token = Token::new_with_data(TokenAddressArbitrum::WETH, Some("WETH".to_string()), None, Some(18), true, false);
26 let wbtc_token = Token::new_with_data(TokenAddressArbitrum::WBTC, Some("WBTC".to_string()), None, Some(8), true, false);
27 let usdc_token = Token::new_with_data(TokenAddressArbitrum::USDC, Some("USDC".to_string()), None, Some(6), true, false);
28 let usdt_token = Token::new_with_data(TokenAddressArbitrum::USDT, Some("USDT".to_string()), None, Some(6), true, false);
29 let dai_token = Token::new_with_data(TokenAddressEth::DAI, Some("DAI".to_string()), None, Some(18), true, false);
30
31 market.add_token(weth_token);
32 market.add_token(wbtc_token);
33 market.add_token(usdc_token);
34 market.add_token(usdt_token);
35 market.add_token(dai_token);
36 }
37 NamedChain::Base => {
38 let weth_token = Token::new_with_data(TokenAddressBase::WETH, Some("WETH".to_string()), None, Some(18), true, false);
39 let usdc_token = Token::new_with_data(TokenAddressBase::USDC, Some("USDC".to_string()), None, Some(6), true, false);
40
41 market.add_token(weth_token);
42 market.add_token(usdc_token);
43 }
44 _ => return Err(eyre!("CHAIN_TOKENS_NOT_LOADED")),
45 }
46 Ok(())
47}