# IMintingTagManager

> FAssets IMintingTagManager interface reference.

> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

Source: https://dev.flare.network/fassets/reference/IMintingTagManager

Reference for managing and interacting with FAssets `IMintingTagManager`.

Each minting tag is an [ERC721 token](https://ethereum.org/developers/docs/standards/tokens/erc-721/) that authorizes its owner to perform direct mintings. Tags are reserved by paying [a fee](/fassets/reference/IMintingTagManager#reservationfee) in native currency. Each tag has a configurable minting recipient (the address that receives minted FAssets) and an optional allowed executor (the only address permitted to execute direct mintings with that tag).

To get the minting tag manager address, use the [getMintingTagManager](/fassets/reference/IAssetManager#getmintingtagmanager) function of the [IAssetManager](/fassets/reference/IAssetManager) contract.

Sourced from `IMintingTagManager.sol` on [GitHub](https://github.com/flare-foundation/fassets/blob/main/contracts/userInterfaces/IMintingTagManager.sol).

## Functions[​](#functions "Direct link to Functions")

### `reserve`[​](#reserve "Direct link to reserve")

Reserve a new minting tag NFT by paying the reservation fee. The caller becomes the owner of this NFT (tag ID) and the initial minting recipient.

```
function reserve() external payable returns (uint256);
```

#### Returns[​](#returns "Direct link to Returns")

-   The newly reserved minting tag ID.

### `setMintingRecipient`[​](#setmintingrecipient "Direct link to setmintingrecipient")

Set the minting recipient for a tag. Only callable by the tag owner. The minting recipient is the address that receives minted FAssets when this tag is used.

```
function setMintingRecipient(uint256 _mintingTag, address _recipient) external;
```

#### Parameters[​](#parameters "Direct link to Parameters")

-   `_mintingTag`: The minting tag ID.
-   `_recipient`: The new minting recipient address (must not be the zero address).

### `setAllowedExecutor`[​](#setallowedexecutor "Direct link to setallowedexecutor")

Set the allowed executor for a tag. Only callable by the tag owner. The allowed executor is the only address that can execute direct mintings with this tag. Setting an allowed executor is optional; if not set, anyone can execute mintings with the tag. Changes to the allowed executor are subject to a cooldown delay before they become active.

```
function setAllowedExecutor(uint256 _mintingTag, address _executor) external;
```

#### Parameters[​](#parameters-1 "Direct link to Parameters")

-   `_mintingTag`: The minting tag ID.
-   `_executor`: The new allowed executor address (must not be the zero address).

### `nextAvailableTag`[​](#nextavailabletag "Direct link to nextavailabletag")

Return the next minting tag ID that will be assigned on the next reservation.

```
function nextAvailableTag() external view returns (uint256);
```

### `reservationFee`[​](#reservationfee "Direct link to reservationfee")

Return the fee (in native currency) required to reserve a new minting tag.

```
function reservationFee() external view returns (uint256);
```

### `reservationFeeRecipient`[​](#reservationfeerecipient "Direct link to reservationfeerecipient")

Return the address that receives reservation fees.

```
function reservationFeeRecipient() external view returns (address payable);
```

#### Returns[​](#returns-1 "Direct link to Returns")

-   The address that receives fees paid when reserving minting tags.

### `reservedTagsForOwner`[​](#reservedtagsforowner "Direct link to reservedtagsforowner")

Return all minting tag IDs owned by the given address.

```
function reservedTagsForOwner(address _owner) external view returns (uint256[] memory);
```

#### Parameters[​](#parameters-2 "Direct link to Parameters")

-   `_owner`: The address to query.

#### Returns[​](#returns-2 "Direct link to Returns")

-   An array of minting tag IDs owned by `_owner`.

### `transfer`[​](#transfer "Direct link to transfer")

Transfer a minting tag to a new owner. Also updates the minting recipient to the new owner and resets the allowed executor.

```
function transfer(address _to, uint256 _mintingTag) external;
```

#### Parameters[​](#parameters-3 "Direct link to Parameters")

-   `_to`: The address to transfer the tag to.
-   `_mintingTag`: The minting tag ID to transfer.

### `mintingRecipient`[​](#mintingrecipient "Direct link to mintingrecipient")

Return the minting recipient for a given tag.

```
function mintingRecipient(uint256 _mintingTag) external view returns (address);
```

#### Parameters[​](#parameters-4 "Direct link to Parameters")

-   `_mintingTag`: The minting tag ID.

#### Returns[​](#returns-3 "Direct link to Returns")

-   The address that receives minted FAssets when this tag is used.

### `allowedExecutor`[​](#allowedexecutor "Direct link to allowedexecutor")

Return the currently active allowed executor for a given tag. If no executor is set or the pending change has not been activated yet, this returns the previous executor.

```
function allowedExecutor(uint256 _mintingTag) external view returns (address);
```

#### Parameters[​](#parameters-5 "Direct link to Parameters")

-   `_mintingTag`: The minting tag ID.

#### Returns[​](#returns-4 "Direct link to Returns")

-   The address of the allowed executor, or `address(0)` if none is set.

### `pendingAllowedExecutorChange`[​](#pendingallowedexecutorchange "Direct link to pendingallowedexecutorchange")

Return information about a pending allowed executor change for a given tag.

Executor changes are subject to a cooldown delay before they become active. During the cooldown, `allowedExecutor` continues to return the previous executor. Use this function to learn when a pending change takes effect so the current executor can avoid starting FDC-backed minting flows they will no longer be allowed to complete.

```
function pendingAllowedExecutorChange(uint256 _mintingTag)    external    view    returns (bool _pending, address _newExecutor, uint256 _activeAfterTs);
```

#### Parameters[​](#parameters-6 "Direct link to Parameters")

-   `_mintingTag`: The minting tag ID.

#### Returns[​](#returns-5 "Direct link to Returns")

-   `_pending`: `true` if there is a pending executor change that has not activated yet.
-   `_newExecutor`: The address of the pending new executor (`address(0)` if there is no pending change).
-   `_activeAfterTs`: The timestamp after which the new executor becomes active (`0` if there is no pending change).
