1use std::borrow::Cow;
2
3use borsh::{BorshDeserialize, BorshSerialize};
4use serde::{Deserialize, Serialize};
5
6use crate::{AccountId, AccountIdRef};
7
8pub use defuse_fees::{Pips, PipsOutOfRange};
9
10#[cfg_attr(feature = "borsh-schema", derive(::borsh::BorshSchema))]
11#[cfg_attr(feature = "schemars-v0_8", derive(::schemars::JsonSchema))]
12#[derive(Debug, Clone, Serialize, Deserialize, BorshSerialize, BorshDeserialize)]
13pub struct FeesConfig {
14 pub fee: Pips,
15 pub fee_collector: AccountId,
16}
17
18#[must_use = "make sure to `.emit()` this event"]
19#[cfg_attr(feature = "schemars-v0_8", derive(::schemars::JsonSchema))]
20#[derive(Debug, Clone, Serialize, Deserialize)]
21pub struct FeeChangedEvent {
22 pub old_fee: Pips,
23 pub new_fee: Pips,
24}
25
26#[must_use = "make sure to `.emit()` this event"]
27#[cfg_attr(feature = "schemars-v0_8", derive(::schemars::JsonSchema))]
28#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct FeeCollectorChangedEvent<'a> {
30 pub old_fee_collector: Cow<'a, AccountIdRef>,
31 pub new_fee_collector: Cow<'a, AccountIdRef>,
32}