# Module bridge::treasury

*[Documentation index](/llms.txt) · [Full index](/llms-full.txt)*

```
use std::address;
use std::ascii;
use std::bcs;
use std::internal;
use std::option;
use std::string;
use std::type_name;
use std::u128;
use std::u64;
use std::vector;
use sui::accumulator;
use sui::accumulator_settlement;
use sui::address;
use sui::bag;
use sui::balance;
use sui::bcs;
use sui::coin;
use sui::config;
use sui::deny_list;
use sui::dynamic_field;
use sui::dynamic_object_field;
use sui::event;
use sui::funds_accumulator;
use sui::hash;
use sui::hex;
use sui::object;
use sui::object_bag;
use sui::package;
use sui::party;
use sui::protocol_config;
use sui::table;
use sui::transfer;
use sui::tx_context;
use sui::types;
use sui::url;
use sui::vec_map;
use sui::vec_set;
```

## Struct BridgeTreasury

```
public struct BridgeTreasury has store
```

**Fields**

**treasuries: sui::object_bag::ObjectBag**

**supported_tokens: sui::vec_map::VecMap&lt;std::type_name::TypeName, bridge::treasury::BridgeTokenMetadata&gt;**

**id_token_type_map: sui::vec_map::VecMap&lt;u8, std::type_name::TypeName&gt;**

**waiting_room: sui::bag::Bag**

## Struct BridgeTokenMetadata

```
public struct BridgeTokenMetadata has copy, drop, store
```

**Fields**

**id: u8**

**decimal_multiplier: u64**

**notional_value: u64**

**native_token: bool**

## Struct ForeignTokenRegistration

```
public struct ForeignTokenRegistration has store
```

**Fields**

**type_name: std::type_name::TypeName**

**uc: sui::package::UpgradeCap**

**decimal: u8**

## Struct UpdateTokenPriceEvent

```
public struct UpdateTokenPriceEvent has copy, drop
```

**Fields**

**token_id: u8**

**new_price: u64**

## Struct NewTokenEvent

```
public struct NewTokenEvent has copy, drop
```

**Fields**

**token_id: u8**

**type_name: std::type_name::TypeName**

**native_token: bool**

**decimal_multiplier: u64**

**notional_value: u64**

## Struct TokenRegistrationEvent

```
public struct TokenRegistrationEvent has copy, drop
```

**Fields**

**type_name: std::type_name::TypeName**

**decimal: u8**

**native_token: bool**

## Constants

```
const EUnsupportedTokenType: u64 = 1;
```

```
const EInvalidUpgradeCap: u64 = 2;
```

```
const ETokenSupplyNonZero: u64 = 3;
```

```
const EInvalidNotionalValue: u64 = 4;
```

## Function token_id

```
public fun token_id&lt;T&gt;(self: &bridge::treasury::BridgeTreasury): u8
```

## Function decimal_multiplier

```
public fun decimal_multiplier&lt;T&gt;(self: &bridge::treasury::BridgeTreasury): u64
```

## Function notional_value

```
public fun notional_value&lt;T&gt;(self: &bridge::treasury::BridgeTreasury): u64
```

## Function register_foreign_token

```
public(package) fun register_foreign_token&lt;T&gt;(self: &mut bridge::treasury::BridgeTreasury, tc: sui::coin::TreasuryCap&lt;T&gt;, uc: sui::package::UpgradeCap, metadata: &sui::coin::CoinMetadata&lt;T&gt;)
```

## Function add_new_token

```
public(package) fun add_new_token(self: &mut bridge::treasury::BridgeTreasury, token_name: std::ascii::String, token_id: u8, native_token: bool, notional_value: u64)
```

## Function create

```
public(package) fun create(ctx: &mut sui::tx_context::TxContext): bridge::treasury::BridgeTreasury
```

## Function burn

```
public(package) fun burn&lt;T&gt;(self: &mut bridge::treasury::BridgeTreasury, token: sui::coin::Coin&lt;T&gt;)
```

## Function mint

```
public(package) fun mint&lt;T&gt;(self: &mut bridge::treasury::BridgeTreasury, amount: u64, ctx: &mut sui::tx_context::TxContext): sui::coin::Coin&lt;T&gt;
```

## Function update_asset_notional_price

```
public(package) fun update_asset_notional_price(self: &mut bridge::treasury::BridgeTreasury, token_id: u8, new_usd_price: u64)
```

## Function get_token_metadata

```
fun get_token_metadata&lt;T&gt;(self: &bridge::treasury::BridgeTreasury): bridge::treasury::BridgeTokenMetadata
```
