axelar-cgp-sui

Module 0xa5::coin_info

Defines the CoinInfo type which allows to store information about a coin: either derived from CoinMetadata or manually provided.

use 0x1::ascii;
use 0x1::option;
use 0x1::string;
use 0x2::coin;
use 0x2::transfer;

Struct CoinInfo

struct CoinInfo<T> has store
Fields
name: string::String
symbol: ascii::String
decimals: u8
metadata: option::Option<coin::CoinMetadata<T>>
Field metadata is deprecated and will always be None

Function from_info

Create a new coin info from the given name, symbol and decimals.

public fun from_info<T>(name: string::String, symbol: ascii::String, decimals: u8): coin_info::CoinInfo<T>
Implementation
public fun from_info<T>(name: String, symbol: ascii::String, decimals: u8): CoinInfo<T> {
    CoinInfo {
        name,
        symbol,
        decimals,
        metadata: option::none(),
    }
}

Function from_metadata

Create a new coin info from the given CoinMetadata object and publicly freeze the metadata object.

public fun from_metadata<T>(metadata: coin::CoinMetadata<T>): coin_info::CoinInfo<T>
Implementation
public fun from_metadata<T>(metadata: CoinMetadata<T>): CoinInfo<T> {
    let coin_info = CoinInfo {
        name: metadata.get_name(),
        symbol: metadata.get_symbol(),
        decimals: metadata.get_decimals(),
        metadata: option::none(),
    };
    transfer::public_freeze_object(metadata);
    coin_info
}

Function from_metadata_ref

Create a new coin info from the given &CoinMetadata object.

public fun from_metadata_ref<T>(metadata: &coin::CoinMetadata<T>): coin_info::CoinInfo<T>
Implementation
public fun from_metadata_ref<T>(metadata: &CoinMetadata<T>): CoinInfo<T> {
    CoinInfo {
        name: metadata.get_name(),
        symbol: metadata.get_symbol(),
        decimals: metadata.get_decimals(),
        metadata: option::none(),
    }
}

Function release_metadata

Publicly freeze metadata for a coin from the given CoinInfo<T>

public(friend) fun release_metadata<T>(coin_info: &mut coin_info::CoinInfo<T>)
Implementation
public(package) fun release_metadata<T>(coin_info: &mut CoinInfo<T>) {
    if (coin_info.metadata.is_some()) {
        let metadata = coin_info.metadata.extract();
        transfer::public_freeze_object(metadata)
    }
}

Function name

public fun name<T>(self: &coin_info::CoinInfo<T>): string::String
Implementation
public fun name<T>(self: &CoinInfo<T>): String {
    self.name
}

Function symbol

public fun symbol<T>(self: &coin_info::CoinInfo<T>): ascii::String
Implementation
public fun symbol<T>(self: &CoinInfo<T>): ascii::String {
    self.symbol
}

Function decimals

public fun decimals<T>(self: &coin_info::CoinInfo<T>): u8
Implementation
public fun decimals<T>(self: &CoinInfo<T>): u8 {
    self.decimals
}

Function metadata

public fun metadata<T>(self: &coin_info::CoinInfo<T>): &option::Option<coin::CoinMetadata<T>>
Implementation
public fun metadata<T>(self: &CoinInfo<T>): &Option<CoinMetadata<T>> {
    &self.metadata
}