Skip to main content

dpp/group/group_action/v0/
mod.rs

1use crate::data_contract::TokenContractPosition;
2use crate::group::action_event::GroupActionEvent;
3use crate::group::group_action::GroupActionAccessors;
4#[cfg(feature = "json-conversion")]
5use crate::serialization::json_safe_fields;
6use crate::ProtocolError;
7use bincode::{Decode, DecodeUntrusted, Encode};
8use platform_serialization_derive::{
9    PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize,
10};
11use platform_value::Identifier;
12#[cfg(feature = "serde-conversion")]
13use serde::{Deserialize, Serialize};
14
15#[cfg_attr(feature = "json-conversion", json_safe_fields)]
16#[derive(
17    Debug,
18    PartialEq,
19    PartialOrd,
20    Clone,
21    Eq,
22    Encode,
23    Decode,
24    PlatformDeserializeTrusted,
25    PlatformDeserializeUntrusted,
26    PlatformSerialize,
27    DecodeUntrusted,
28)]
29#[cfg_attr(feature = "serde-conversion", derive(Serialize, Deserialize))]
30#[platform_serialize(unversioned)] //versioned directly, no need to use platform_version
31pub struct GroupActionV0 {
32    pub contract_id: Identifier,
33    pub proposer_id: Identifier,
34    pub token_contract_position: TokenContractPosition,
35    pub event: GroupActionEvent,
36}
37
38impl GroupActionAccessors for GroupActionV0 {
39    fn contract_id(&self) -> Identifier {
40        self.contract_id
41    }
42
43    fn proposer_id(&self) -> Identifier {
44        self.proposer_id
45    }
46
47    fn token_contract_position(&self) -> TokenContractPosition {
48        self.token_contract_position
49    }
50
51    fn event(&self) -> &GroupActionEvent {
52        &self.event
53    }
54}