Skip to main content

metrom_chain_adapter_commons/
lib.rs

1use std::collections::HashMap;
2
3use alloy::primitives::{B256, U256};
4use metrom_commons::types::address::Address;
5use serde::{Deserialize, Serialize};
6
7#[derive(Serialize, Deserialize, Debug, Clone)]
8#[serde(rename_all = "camelCase")]
9#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
10pub struct Token {
11    /// Number of decimals the token uses
12    pub decimals: i32,
13    /// The symbol of the token
14    pub symbol: String,
15    /// The name of the token
16    pub name: String,
17}
18
19#[derive(Serialize, Deserialize, Debug, Clone)]
20#[serde(rename_all = "camelCase")]
21pub struct WhitelistedTokenRates {
22    pub reward_tokens: HashMap<Address, U256>,
23    pub fee_tokens: HashMap<Address, U256>,
24}
25
26#[derive(Serialize, Deserialize, Debug, Clone)]
27#[serde(rename_all = "camelCase")]
28pub struct SetMinimumTokenRateBundle {
29    pub token_address: Address,
30    pub minimum_rate: U256,
31}
32
33#[derive(Serialize, Deserialize, Debug, Clone)]
34#[serde(rename_all = "camelCase")]
35pub struct UpdateWhitelistedTokenRatesRequestBody {
36    pub reward_tokens: Vec<SetMinimumTokenRateBundle>,
37    pub fee_tokens: Vec<SetMinimumTokenRateBundle>,
38}
39
40#[derive(Serialize, Deserialize, Debug, Clone)]
41#[serde(rename_all = "camelCase")]
42pub struct DistributeRewardsBundle {
43    pub campaign_id: B256,
44    pub root: B256,
45    pub data: B256,
46}