soroban_token_sdk/
metadata.rs

1use soroban_sdk::{contracttype, symbol_short, unwrap::UnwrapOptimized, Env, String, Symbol};
2
3const METADATA_KEY: Symbol = symbol_short!("METADATA");
4
5#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
6#[contracttype]
7pub struct TokenMetadata {
8    pub decimal: u32,
9    pub name: String,
10    pub symbol: String,
11}
12
13pub struct Metadata {
14    env: Env,
15}
16
17impl Metadata {
18    pub fn new(env: &Env) -> Metadata {
19        Metadata { env: env.clone() }
20    }
21
22    #[inline(always)]
23    pub fn set_metadata(&self, metadata: &TokenMetadata) {
24        self.env.storage().instance().set(&METADATA_KEY, metadata);
25    }
26
27    #[inline(always)]
28    pub fn get_metadata(&self) -> TokenMetadata {
29        self.env
30            .storage()
31            .instance()
32            .get(&METADATA_KEY)
33            .unwrap_optimized()
34    }
35}