macroforge_ts_syn/abi/ir/
interface.rs1
2use serde::{Deserialize, Serialize};
3
4use crate::abi::{DecoratorIR, SpanIR};
5
6#[derive(Serialize, Deserialize)]
9#[derive(Clone, Debug, PartialEq)]
10pub struct InterfaceIR {
11 pub name: String,
12 pub span: SpanIR,
13 pub body_span: SpanIR,
14 pub type_params: Vec<String>,
15 pub heritage: Vec<String>,
17 pub decorators: Vec<DecoratorIR>,
18 pub fields: Vec<InterfaceFieldIR>,
19 pub methods: Vec<InterfaceMethodIR>,
20}
21
22#[derive(Serialize, Deserialize)]
24#[derive(Clone, Debug, PartialEq)]
25pub struct InterfaceFieldIR {
26 pub name: String,
27 pub span: SpanIR,
28 pub ts_type: String,
29 pub optional: bool,
30 pub readonly: bool,
31 pub decorators: Vec<DecoratorIR>,
32}
33
34#[derive(Serialize, Deserialize)]
36#[derive(Clone, Debug, PartialEq)]
37pub struct InterfaceMethodIR {
38 pub name: String,
39 pub span: SpanIR,
40 pub type_params_src: String,
41 pub params_src: String,
42 pub return_type_src: String,
43 pub optional: bool,
44 pub decorators: Vec<DecoratorIR>,
45}