near_sdk_contract_tools/standard/nep171/
event.rs1use std::borrow::Cow;
4
5use near_sdk::{
6 serde::{Deserialize, Serialize},
7 AccountIdRef,
8};
9use near_sdk_contract_tools_macros::event;
10
11#[event(
13 crate = "crate",
14 macros = "near_sdk_contract_tools_macros",
15 standard = "nep171",
16 version = "1.2.0"
17)]
18#[derive(Debug, Clone)]
19pub enum Nep171Event<'a> {
20 NftMint(Vec<NftMintLog<'a>>),
22 NftTransfer(Vec<NftTransferLog<'a>>),
24 NftBurn(Vec<NftBurnLog<'a>>),
26 NftMetadataUpdate(Vec<NftMetadataUpdateLog<'a>>),
28 ContractMetadataUpdate(Vec<NftContractMetadataUpdateLog<'a>>),
30}
31
32#[derive(Serialize, Deserialize, Debug, Clone)]
34#[serde(crate = "near_sdk::serde")]
35pub struct NftMintLog<'a> {
36 pub owner_id: Cow<'a, AccountIdRef>,
38 pub token_ids: Vec<Cow<'a, str>>,
40 #[serde(skip_serializing_if = "Option::is_none")]
42 pub memo: Option<Cow<'a, str>>,
43}
44
45#[derive(Serialize, Deserialize, Debug, Clone)]
47#[serde(crate = "near_sdk::serde")]
48pub struct NftTransferLog<'a> {
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub authorized_id: Option<Cow<'a, AccountIdRef>>,
52 pub old_owner_id: Cow<'a, AccountIdRef>,
54 pub new_owner_id: Cow<'a, AccountIdRef>,
56 pub token_ids: Vec<Cow<'a, str>>,
58 #[serde(skip_serializing_if = "Option::is_none")]
60 pub memo: Option<Cow<'a, str>>,
61}
62
63#[derive(Serialize, Deserialize, Debug, Clone)]
65#[serde(crate = "near_sdk::serde")]
66pub struct NftBurnLog<'a> {
67 pub owner_id: Cow<'a, AccountIdRef>,
69 pub token_ids: Vec<Cow<'a, str>>,
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub authorized_id: Option<Cow<'a, AccountIdRef>>,
74 #[serde(skip_serializing_if = "Option::is_none")]
76 pub memo: Option<Cow<'a, str>>,
77}
78
79#[derive(Serialize, Deserialize, Debug, Clone)]
81#[serde(crate = "near_sdk::serde")]
82pub struct NftMetadataUpdateLog<'a> {
83 pub token_ids: Vec<Cow<'a, str>>,
85 #[serde(skip_serializing_if = "Option::is_none")]
87 pub memo: Option<Cow<'a, str>>,
88}
89
90#[derive(Serialize, Deserialize, Debug, Clone)]
92#[serde(crate = "near_sdk::serde")]
93pub struct NftContractMetadataUpdateLog<'a> {
94 #[serde(skip_serializing_if = "Option::is_none")]
96 pub memo: Option<Cow<'a, str>>,
97}