1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use borsh::{schema::BorshSchemaContainer, BorshDeserialize, BorshSchema, BorshSerialize};
const METADATA_SEMVER: [u32; 3] = [0, 1, 0];
#[derive(BorshSerialize, BorshDeserialize, BorshSchema, Debug, PartialEq)]
pub struct Metadata {
pub version: [u32; 3],
pub methods: Vec<MethodMetadata>,
}
impl Metadata {
pub fn new(methods: Vec<MethodMetadata>) -> Self {
Self { version: METADATA_SEMVER, methods }
}
}
#[derive(BorshSerialize, BorshDeserialize, BorshSchema, Debug, PartialEq)]
pub struct MethodMetadata {
pub name: String,
pub is_view: bool,
pub is_init: bool,
pub args: Option<BorshSchemaContainer>,
pub callbacks: Vec<BorshSchemaContainer>,
pub callbacks_vec: Option<BorshSchemaContainer>,
pub result: Option<BorshSchemaContainer>,
}