# `Rujira.Assets`
[🔗](https://github.com/RujiraNetwork/rujira_ex/blob/v0.0.1/lib/rujira/assets.ex#L1)

Asset resolution for Rujira.

Merges base-layer asset handling (chain/symbol/denom parsing) with
app-layer token support (x/ruji, x/staking-*, x/bow-xyk-*, etc.).

# `chain`

```elixir
@spec chain(String.t()) :: String.t()
```

# `decimals`

```elixir
@spec decimals(Rujira.Assets.Asset.t() | map()) :: non_neg_integer()
```

# `eq_denom`

```elixir
@spec eq_denom(Rujira.Assets.Asset.t(), String.t()) :: boolean()
```

# `from_denom`

```elixir
@spec from_denom(String.t()) ::
  {:ok, Rujira.Assets.Asset.t()} | {:error, :invalid_denom}
```

# `from_id`

```elixir
@spec from_id(String.t()) :: {:ok, Rujira.Assets.Asset.t()}
```

# `from_shortcode`

```elixir
@spec from_shortcode(String.t()) :: Rujira.Assets.Asset.t()
```

# `from_string`

```elixir
@spec from_string(String.t()) :: Rujira.Assets.Asset.t()
```

# `label`

```elixir
@spec label(Rujira.Assets.Asset.t() | map()) :: String.t()
```

# `load_metadata`

```elixir
@spec load_metadata(Rujira.Assets.Asset.t()) :: {:ok, map()} | {:error, term()}
```

# `symbol`

```elixir
@spec symbol(String.t()) :: String.t()
```

# `ticker`

```elixir
@spec ticker(String.t()) :: String.t()
```

# `to_native`

```elixir
@spec to_native(Rujira.Assets.Asset.t() | map() | nil) ::
  {:ok, String.t() | nil} | {:error, term()}
```

# `to_secured`

```elixir
@spec to_secured(Rujira.Assets.Asset.t()) ::
  {:ok, Rujira.Assets.Asset.t()} | {:error, :not_supported}
```

# `type`

```elixir
@spec type(String.t()) :: :native | :layer_1 | :synth | :trade | :secured
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
