use js_export_macro::js_export;
use miden_client::asset::TokenSymbol as NativeTokenSymbol;
use crate::js_error_with_context;
use crate::platform::JsErr;
#[js_export]
#[derive(Clone)]
pub struct TokenSymbol(NativeTokenSymbol);
#[js_export]
impl TokenSymbol {
#[js_export(constructor)]
pub fn new(symbol: String) -> Result<TokenSymbol, JsErr> {
let native_token_symbol = NativeTokenSymbol::new(&symbol)
.map_err(|err| js_error_with_context(err, "failed to create token symbol"))?;
Ok(TokenSymbol(native_token_symbol))
}
#[js_export(js_name = "toString")]
#[allow(clippy::inherent_to_string)]
pub fn to_string(&self) -> String {
self.0.to_string()
}
}
impl From<NativeTokenSymbol> for TokenSymbol {
fn from(native_token_symbol: NativeTokenSymbol) -> Self {
TokenSymbol(native_token_symbol)
}
}
impl From<&NativeTokenSymbol> for TokenSymbol {
fn from(native_token_symbol: &NativeTokenSymbol) -> Self {
TokenSymbol(native_token_symbol.clone())
}
}
impl From<TokenSymbol> for NativeTokenSymbol {
fn from(token_symbol: TokenSymbol) -> Self {
token_symbol.0
}
}
impl From<&TokenSymbol> for NativeTokenSymbol {
fn from(token_symbol: &TokenSymbol) -> Self {
token_symbol.0.clone()
}
}