> ## Documentation Index
> Fetch the complete documentation index at: https://docs.therootnetwork.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Xls20

## Calls

### enableXls20Compatibility

Enables XLS-20 compatibility on a collection. However, this will remove the ability to change the collection metadata.

* Collection must not have any tokens minted

* Caller must be collection owner

**Namespace**

```
api.tx.xls20.enableXls20Compatibility
```

**Type**

```
function enableXls20Compatibility(
  collection_id: u32
)
```

### fulfillXls20Mint

Submit XLS-20 token ids to The Root Network Only callable by the trusted relayer account Can apply multiple mappings from the same collection in one transaction

**Namespace**

```
api.tx.xls20.fulfillXls20Mint
```

**Type**

```
function fulfillXls20Mint(
  collection_id: u32,
  token_mappings: Vec<(u32,[u8;64])>
)
```

### reRequestXls20Mint

**Namespace**

```
api.tx.xls20.reRequestXls20Mint
```

**Type**

```
function reRequestXls20Mint(
  collection_id: u32,
  serial_numbers: Vec<u32>
)
```

### setRelayer

Set the relayer address

**Namespace**

```
api.tx.xls20.setRelayer
```

**Type**

```
function setRelayer(
  relayer: SeedPrimitivesSignatureAccountId20
)
```

### setXls20Fee

Set the xls20 mint fee which is paid per token by the collection owner This covers the additional costs incurred by the relayer for the following:

* Minting the token on XRPL

* Calling fulfill\_xls20\_mint on The Root Network

**Namespace**

```
api.tx.xls20.setXls20Fee
```

**Type**

```
function setXls20Fee(
  new_fee: u128
)
```

## Storage

### relayer

The permissioned relayer

**Namespace**

```
api.query.xls20.relayer
```

**Type**

```
function relayer(

): Option<SeedPrimitivesSignatureAccountId20>
```

### xls20MintFee

The extra cost of minting an XLS-20 compatible NFT

**Namespace**

```
api.query.xls20.xls20MintFee
```

**Type**

```
function xls20MintFee(

): u128
```

### xls20TokenMap

Maps from TRN native token\_id to XLS-20 TokenId

**Namespace**

```
api.query.xls20.xls20TokenMap
```

**Type**

```
function xls20TokenMap(
  u32,
  u32
): Option<[u8;64]>
```

## Events

### RelayerSet

A new relayer has been set

**Namespace**

```
api.events.xls20.RelayerSet
```

**Type**

```
type RelayerSet = {
  account: SeedPrimitivesSignatureAccountId20
}
```

### Xls20CompatibilityEnabled

A collection has had XLS-20 compatibility enabled

**Namespace**

```
api.events.xls20.Xls20CompatibilityEnabled
```

**Type**

```
type Xls20CompatibilityEnabled = {
  collection_id: u32
}
```

### Xls20MappingSet

A new XLS20 mapping has been set

**Namespace**

```
api.events.xls20.Xls20MappingSet
```

**Type**

```
type Xls20MappingSet = {
  collection_id: u32,
  mappings: Vec<(u32,[u8;64])>
}
```

### Xls20MintFeePaid

Additional mint fee for XLS-20 mint has been paid to relayer

**Namespace**

```
api.events.xls20.Xls20MintFeePaid
```

**Type**

```
type Xls20MintFeePaid = {
  collection_owner: SeedPrimitivesSignatureAccountId20,
  total_fee: u128
}
```

### Xls20MintFeeSet

A new Xls20 Mint Fee has been set

**Namespace**

```
api.events.xls20.Xls20MintFeeSet
```

**Type**

```
type Xls20MintFeeSet = {
  new_fee: u128
}
```

### Xls20MintRequest

Request sent to XLS20 Relayer

**Namespace**

```
api.events.xls20.Xls20MintRequest
```

**Type**

```
type Xls20MintRequest = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  token_uris: Vec<Bytes>
}
```

## Errors

### MappingAlreadyExists

There is already a Root native -> XLS-20 mapping for this token

**Namespace**

```
api.errors.xls20.MappingAlreadyExists
```

### NotCollectionOwner

No the owner of the collection

**Namespace**

```
api.errors.xls20.NotCollectionOwner
```

### NoToken

The NFT does not exist

**Namespace**

```
api.errors.xls20.NoToken
```

### NotRelayer

The caller is not the relayer and does not have permission to perform this action

**Namespace**

```
api.errors.xls20.NotRelayer
```

### NotXLS20Compatible

The collection is not compatible with XLS-20

**Namespace**

```
api.errors.xls20.NotXLS20Compatible
```

### Xls20MintFeeTooLow

The supplied fee for minting XLS-20 tokens is too low

**Namespace**

```
api.errors.xls20.Xls20MintFeeTooLow
```

undefined
