dpp/group/
mod.rs

1use crate::data_contract::group::{Group, GroupMemberPower};
2use crate::data_contract::GroupContractPosition;
3use bincode::{Decode, Encode};
4use derive_more::Display;
5use platform_value::Identifier;
6#[cfg(feature = "serde-conversion")]
7use serde::{Deserialize, Serialize};
8
9pub mod action_event;
10pub mod action_taker;
11pub mod group_action;
12pub mod group_action_status;
13
14#[derive(Debug, Clone, Copy, Encode, Decode, PartialEq)]
15pub enum GroupStateTransitionInfoStatus {
16    GroupStateTransitionInfoProposer(GroupContractPosition),
17    GroupStateTransitionInfoOtherSigner(GroupStateTransitionInfo),
18}
19
20impl From<GroupStateTransitionInfoStatus> for GroupStateTransitionInfo {
21    fn from(value: GroupStateTransitionInfoStatus) -> Self {
22        match value {
23            GroupStateTransitionInfoStatus::GroupStateTransitionInfoProposer(
24                group_contract_position,
25            ) => GroupStateTransitionInfo {
26                group_contract_position,
27                action_id: Default::default(),
28                action_is_proposer: true,
29            },
30            GroupStateTransitionInfoStatus::GroupStateTransitionInfoOtherSigner(info) => info,
31        }
32    }
33}
34
35#[derive(Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display)]
36#[cfg_attr(
37    feature = "serde-conversion",
38    derive(Serialize, Deserialize),
39    serde(rename_all = "camelCase")
40)]
41#[display("ID: {}, Action ID: {}", "id", "action_id")]
42pub struct GroupStateTransitionInfo {
43    #[cfg_attr(feature = "serde-conversion", serde(rename = "$groupContractPosition"))]
44    pub group_contract_position: GroupContractPosition,
45    #[cfg_attr(feature = "serde-conversion", serde(rename = "$groupActionId"))]
46    pub action_id: Identifier,
47    /// This is true if we are the proposer, otherwise we are just voting on a previous action.
48    #[cfg_attr(feature = "serde-conversion", serde(rename = "$groupActionIsProposer"))]
49    pub action_is_proposer: bool,
50}
51
52#[derive(Debug, Clone, PartialEq)]
53pub struct GroupStateTransitionResolvedInfo {
54    pub group_contract_position: GroupContractPosition,
55    pub group: Group,
56    pub action_id: Identifier,
57    /// This is true if we are the proposer, otherwise we are just voting on a previous action.
58    pub action_is_proposer: bool,
59    pub signer_power: GroupMemberPower,
60}