metrom_chain_adapter_commons/
lib.rs1use 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 pub decimals: i32,
13 pub symbol: String,
15 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}