# StakedIPRWA

**Inherits:** ERC20Upgradeable, ERC20PermitUpgradeable, AccessControlUpgradeable, UUPSUpgradeable

**Author:** Aria Protocol

ERC20 contract representing liquid staked IPRWA tokens.

## State Variables

### STAKED\_IPRWA\_MINTER\_BURNER\_ROLE

CONSTANTS

```solidity
bytes32 public constant STAKED_IPRWA_MINTER_BURNER_ROLE =
    0x61422bb1aed0fd47fe58f64cad18f106f0dbc262decd5fd435187cb36ab5a827;
```

## Functions

### constructor

CONSTRUCTOR

**Note:** oz-upgrades-unsafe-allow: constructor

```solidity
constructor();
```

### initialize

INITIALIZER

```solidity
function initialize(string memory _name, string memory _symbol, address _owner) external initializer;
```

### mint

MINT/BURN FUNCTIONS

Mints tokens to the receiver

*Only callable by an address that has the STAKED\_IPRWA\_MINTER\_BURNER\_ROLE role*

```solidity
function mint(address _receiver, uint256 _amount) external onlyRole(STAKED_IPRWA_MINTER_BURNER_ROLE);
```

**Parameters**

| Name        | Type      | Description                          |
| ----------- | --------- | ------------------------------------ |
| `_receiver` | `address` | Address of user receiving the tokens |
| `_amount`   | `uint256` | Number of tokens being minted        |

### burn

Burns tokens owned by a user

*Only callable by an address that has the STAKED\_IPRWA\_MINTER\_BURNER\_ROLE role*

```solidity
function burn(address _from, uint256 _amount) external onlyRole(STAKED_IPRWA_MINTER_BURNER_ROLE);
```

**Parameters**

| Name      | Type      | Description                                   |
| --------- | --------- | --------------------------------------------- |
| `_from`   | `address` | Address of user whose tokens are being burned |
| `_amount` | `uint256` | Number of tokens being burned                 |

### \_authorizeUpgrade

ADMIN FUNCTIONS

```solidity
function _authorizeUpgrade(address newImplementation) internal virtual override onlyRole(DEFAULT_ADMIN_ROLE);
```

## Events

### StakedIPRWAMinted

EVENTS

Event emitted when Staked IPRWA tokens are minted

```solidity
event StakedIPRWAMinted(address indexed _receiver, uint256 _amount);
```

### StakedIPRWABurned

Event emitted when Staked IPRWA tokens are burned

```solidity
event StakedIPRWABurned(address indexed _from, uint256 _amount);
```
