1use super::{event::AbiEvent, function::AbiFunction};
2
3use serde::{ser::SerializeSeq, Serialize, Serializer};
4
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub struct AbiContract {
7 funcs: Vec<AbiFunction>,
9
10 events: Vec<AbiEvent>,
12}
13
14impl Serialize for AbiContract {
15 fn serialize<S: Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
16 let mut seq = s.serialize_seq(Some(self.funcs.len() + self.events.len()))?;
17 for func in &self.funcs {
18 seq.serialize_element(func)?;
19 }
20
21 for event in &self.events {
22 seq.serialize_element(event)?;
23 }
24
25 seq.end()
26 }
27}
28
29impl AbiContract {
30 pub fn new(funcs: Vec<AbiFunction>, events: Vec<AbiEvent>) -> Self {
31 Self { funcs, events }
32 }
33}