1use alloc::vec::Vec;
5use gear_core::message::ReplyCode;
6use gprimitives::{ActorId, H256, MessageId};
7use parity_scale_codec::{Decode, Encode};
8use scale_info::TypeInfo;
9
10#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
13#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
14pub struct OwnedBalanceTopUpRequestedEvent {
15 pub value: u128,
16}
17
18#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
19#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
20pub struct ExecutableBalanceTopUpRequestedEvent {
21 pub value: u128,
22}
23
24#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
25pub struct MessageEvent {
26 pub id: MessageId,
27 pub destination: ActorId,
28 pub payload: Vec<u8>,
29 pub value: u128,
30}
31
32#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
33pub struct MessageCallFailedEvent {
34 pub id: MessageId,
35 pub destination: ActorId,
36 pub value: u128,
37}
38
39#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
40#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
41pub struct MessageQueueingRequestedEvent {
42 pub id: MessageId,
43 pub source: ActorId,
44 pub payload: Vec<u8>,
45 pub value: u128,
46 pub call_reply: bool,
47}
48
49#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
50pub struct ReplyEvent {
51 pub payload: Vec<u8>,
52 pub value: u128,
53 pub reply_to: MessageId,
54 pub reply_code: ReplyCode,
55}
56
57#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
58pub struct ReplyCallFailedEvent {
59 pub value: u128,
60 pub reply_to: MessageId,
61 pub reply_code: ReplyCode,
62}
63
64#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
65#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
66pub struct ReplyQueueingRequestedEvent {
67 pub replied_to: MessageId,
68 pub source: ActorId,
69 pub payload: Vec<u8>,
70 pub value: u128,
71}
72
73#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
74pub struct StateChangedEvent {
75 pub state_hash: H256,
76}
77
78#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
79pub struct ValueClaimedEvent {
80 pub claimed_id: MessageId,
81 pub value: u128,
82}
83
84#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
85#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
86pub struct ValueClaimingRequestedEvent {
87 pub claimed_id: MessageId,
88 pub source: ActorId,
89}
90
91#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
92#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
93pub struct TransferLockedValueToInheritorFailedEvent {
94 pub inheritor: ActorId,
95 pub value: u128,
96}
97
98#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
99#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
100pub struct ReplyTransferFailedEvent {
101 pub destination: ActorId,
102 pub value: u128,
103}
104
105#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
106#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
107pub struct ValueClaimFailedEvent {
108 pub claimed_id: MessageId,
109 pub value: u128,
110}
111
112#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
113pub enum Event {
114 OwnedBalanceTopUpRequested(OwnedBalanceTopUpRequestedEvent),
115 ExecutableBalanceTopUpRequested(ExecutableBalanceTopUpRequestedEvent),
116 Message(MessageEvent),
117 MessageCallFailed(MessageCallFailedEvent),
118 MessageQueueingRequested(MessageQueueingRequestedEvent),
119 Reply(ReplyEvent),
120 ReplyCallFailed(ReplyCallFailedEvent),
121 ReplyQueueingRequested(ReplyQueueingRequestedEvent),
122 StateChanged(StateChangedEvent),
123 ValueClaimed(ValueClaimedEvent),
124 ValueClaimingRequested(ValueClaimingRequestedEvent),
125 TransferLockedValueToInheritorFailed(TransferLockedValueToInheritorFailedEvent),
126 ReplyTransferFailed(ReplyTransferFailedEvent),
127 ValueClaimFailed(ValueClaimFailedEvent),
128}
129
130impl Event {
131 pub fn to_request(self) -> Option<RequestEvent> {
132 Some(match self {
133 Self::OwnedBalanceTopUpRequested(event) => {
134 RequestEvent::OwnedBalanceTopUpRequested(event)
135 }
136 Self::ExecutableBalanceTopUpRequested(event) => {
137 RequestEvent::ExecutableBalanceTopUpRequested(event)
138 }
139 Self::MessageQueueingRequested(event) => RequestEvent::MessageQueueingRequested(event),
140 Self::ReplyQueueingRequested(event) => RequestEvent::ReplyQueueingRequested(event),
141 Self::ValueClaimingRequested(event) => RequestEvent::ValueClaimingRequested(event),
142 Self::StateChanged(_)
143 | Self::ValueClaimed(_)
144 | Self::Message(_)
145 | Self::MessageCallFailed(_)
146 | Self::Reply(_)
147 | Self::ReplyCallFailed(_)
148 | Self::TransferLockedValueToInheritorFailed(_)
149 | Self::ReplyTransferFailed(_)
150 | Self::ValueClaimFailed(_) => return None,
151 })
152 }
153}
154
155#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode)]
156#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
157pub enum RequestEvent {
158 OwnedBalanceTopUpRequested(OwnedBalanceTopUpRequestedEvent),
159 ExecutableBalanceTopUpRequested(ExecutableBalanceTopUpRequestedEvent),
160 MessageQueueingRequested(MessageQueueingRequestedEvent),
161 ReplyQueueingRequested(ReplyQueueingRequestedEvent),
162 ValueClaimingRequested(ValueClaimingRequestedEvent),
163}