soroban_token_sdk/
metadata.rs1use 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}