frame_support/traits/tokens/fungible/metadata.rs
1// This file is part of Substrate.
2//
3// Copyright (C) Parity Technologies (UK) Ltd.
4// SPDX-License-Identifier: Apache-2.0
5//
6// Licensed under the Apache License, Version 2.0 (the "License");
7// you may not use this file except in compliance with the License.
8// You may obtain a copy of the License at
9//
10// http://www.apache.org/licenses/LICENSE-2.0
11//
12// Unless required by applicable law or agreed to in writing, software
13// distributed under the License is distributed on an "AS IS" BASIS,
14// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15// See the License for the specific language governing permissions and
16// limitations under the License.
17
18//! Inspect and Mutate traits for fungible metadata.
19//!
20//! This module initially exists to support metadata functionality in the
21//! [`crate::traits::tokens::fungible::ItemOf`] adapter for [`crate::traits::tokens::fungibles`].
22
23use crate::dispatch::DispatchResult;
24use alloc::vec::Vec;
25
26/// Trait for inspecting fungible token metadata.
27pub trait Inspect<AccountId>: super::Inspect<AccountId> {
28 /// Returns the name of the token.
29 fn name() -> Vec<u8>;
30 /// Returns the ticker symbol of the token.
31 fn symbol() -> Vec<u8>;
32 /// Returns the number of decimals this asset uses to represent one unit.
33 fn decimals() -> u8;
34}
35
36/// Trait for mutating fungible token metadata.
37pub trait Mutate<AccountId>: Inspect<AccountId> {
38 /// Set the name, symbol and decimals for the token.
39 ///
40 /// - `from`: The account of the asset's owner from which the updated deposit will be reserved.
41 /// - `name`: The new name.
42 /// - `symbol`: The new ticker symbol.
43 /// - `decimals`: The new number of decimals this asset uses to represent one unit.
44 fn set(from: &AccountId, name: Vec<u8>, symbol: Vec<u8>, decimals: u8) -> DispatchResult;
45}