Skip to main content

ethexe_common/events/
mirror.rs

1// Copyright (C) Gear Technologies Inc.
2// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
3
4use 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// TODO: consider to sort events in same way as in IMirror.sol
11
12#[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}