Skip to main content

codama_nodes/generated/
program_node.rs

1use crate::{
2    AccountNode, CamelCaseString, ConstantNode, DefinedTypeNode, Docs, ErrorNode, EventNode,
3    HasName, InstructionNode, PdaNode, ProgramOrigin,
4};
5use codama_nodes_derive::node;
6
7#[node]
8#[derive(Default)]
9pub struct ProgramNode {
10    // Data.
11    pub name: CamelCaseString,
12    pub public_key: String,
13    pub version: String,
14    #[serde(skip_serializing_if = "crate::is_default")]
15    pub origin: Option<ProgramOrigin>,
16    #[serde(default, skip_serializing_if = "crate::is_default")]
17    pub docs: Docs,
18
19    // Children.
20    #[serde(default, skip_serializing_if = "crate::is_default")]
21    pub accounts: Vec<AccountNode>,
22    #[serde(default, skip_serializing_if = "crate::is_default")]
23    pub instructions: Vec<InstructionNode>,
24    #[serde(default, skip_serializing_if = "crate::is_default")]
25    pub defined_types: Vec<DefinedTypeNode>,
26    #[serde(default, skip_serializing_if = "crate::is_default")]
27    pub pdas: Vec<PdaNode>,
28    #[serde(default, skip_serializing_if = "crate::is_default")]
29    pub events: Vec<EventNode>,
30    #[serde(default, skip_serializing_if = "crate::is_default")]
31    pub errors: Vec<ErrorNode>,
32    #[serde(default, skip_serializing_if = "crate::is_default")]
33    pub constants: Vec<ConstantNode>,
34}
35
36impl HasName for ProgramNode {
37    fn name(&self) -> &CamelCaseString {
38        &self.name
39    }
40}