Skip to main content

defuse_nep245/
events.rs

1use super::TokenId;
2use derive_more::derive::From;
3use near_account_id::AccountIdRef;
4use std::borrow::Cow;
5
6#[cfg(feature = "serde")]
7use {defuse_serde_utils::AsCowSlice, serde_with::DisplayFromStr};
8
9#[cfg_attr(
10    feature = "serde",
11    derive(::serde::Deserialize),
12    cfg_attr(feature = "schemars-v0_8", derive(::schemars::JsonSchema)),
13    cfg_attr(
14        not(feature = "near-contract"),
15        derive(::serde::Serialize),
16        serde(tag = "event", content = "data", rename_all = "snake_case")
17    ),
18    cfg_attr(
19        feature = "near-contract",
20        must_use = "make sure to `.emit()` this event",
21        ::near_sdk::near(event_json(standard = "nep245"))
22    )
23)]
24#[derive(Debug, Clone, From)]
25pub enum MtEvent<'a> {
26    #[cfg_attr(feature = "near-contract", event_version("1.0.0"))]
27    MtMint(Cow<'a, [MtMintEvent<'a>]>),
28    #[cfg_attr(feature = "near-contract", event_version("1.0.0"))]
29    MtBurn(Cow<'a, [MtBurnEvent<'a>]>),
30    #[cfg_attr(feature = "near-contract", event_version("1.0.0"))]
31    MtTransfer(Cow<'a, [MtTransferEvent<'a>]>),
32}
33
34#[must_use = "make sure to `.emit()` this event"]
35#[cfg_attr(
36    feature = "serde",
37    cfg_eval::cfg_eval,
38    serde_with::serde_as,
39    derive(::serde::Serialize, ::serde::Deserialize),
40    cfg_attr(feature = "schemars-v0_8", derive(::schemars::JsonSchema))
41)]
42#[derive(Debug, Clone)]
43pub struct MtMintEvent<'a> {
44    pub owner_id: Cow<'a, AccountIdRef>,
45    pub token_ids: Cow<'a, [TokenId]>,
46    #[cfg_attr(feature = "serde", serde_as(as = "AsCowSlice<DisplayFromStr>"))]
47    pub amounts: Cow<'a, [u128]>,
48    #[cfg_attr(
49        feature = "serde",
50        serde(default, skip_serializing_if = "Option::is_none")
51    )]
52    pub memo: Option<Cow<'a, str>>,
53}
54
55#[must_use = "make sure to `.emit()` this event"]
56#[cfg_attr(
57    feature = "serde",
58    cfg_eval::cfg_eval,
59    serde_with::serde_as,
60    derive(::serde::Serialize, ::serde::Deserialize),
61    cfg_attr(feature = "schemars-v0_8", derive(::schemars::JsonSchema))
62)]
63#[derive(Debug, Clone)]
64pub struct MtBurnEvent<'a> {
65    pub owner_id: Cow<'a, AccountIdRef>,
66    #[cfg_attr(
67        feature = "serde",
68        serde(default, skip_serializing_if = "Option::is_none")
69    )]
70    pub authorized_id: Option<Cow<'a, AccountIdRef>>,
71    pub token_ids: Cow<'a, [TokenId]>,
72    #[cfg_attr(feature = "serde", serde_as(as = "AsCowSlice<DisplayFromStr>"))]
73    pub amounts: Cow<'a, [u128]>,
74    #[cfg_attr(
75        feature = "serde",
76        serde(default, skip_serializing_if = "Option::is_none")
77    )]
78    pub memo: Option<Cow<'a, str>>,
79}
80
81#[must_use = "make sure to `.emit()` this event"]
82#[cfg_attr(
83    feature = "serde",
84    cfg_eval::cfg_eval,
85    serde_with::serde_as,
86    derive(::serde::Serialize, ::serde::Deserialize),
87    cfg_attr(feature = "schemars-v0_8", derive(::schemars::JsonSchema))
88)]
89#[derive(Debug, Clone)]
90pub struct MtTransferEvent<'a> {
91    #[cfg_attr(
92        feature = "serde",
93        serde(default, skip_serializing_if = "Option::is_none")
94    )]
95    pub authorized_id: Option<Cow<'a, AccountIdRef>>,
96    pub old_owner_id: Cow<'a, AccountIdRef>,
97    pub new_owner_id: Cow<'a, AccountIdRef>,
98    pub token_ids: Cow<'a, [TokenId]>,
99    #[cfg_attr(feature = "serde", serde_as(as = "AsCowSlice<DisplayFromStr>"))]
100    pub amounts: Cow<'a, [u128]>,
101    #[cfg_attr(
102        feature = "serde",
103        serde(default, skip_serializing_if = "Option::is_none")
104    )]
105    pub memo: Option<Cow<'a, str>>,
106}