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>,
}