# StaderLibrary

[Git Source](https://github.com/Ion-Protocol/ion-protocol/blob/88cc595825f1dc2eb738fb93e172a3e8ab7a5c43/src/libraries/lst/StaderLibrary.sol)

A helper library for Stader-related conversions.

### [Functions](https://docs.ionprotocol.io/devs/smart-contract-architecture/libraries/lst/broken-reference) <a href="#functions" id="functions"></a>

#### [getEthAmountInForLstAmountOut](https://docs.ionprotocol.io/devs/smart-contract-architecture/libraries/lst/broken-reference) <a href="#getethamountinforlstamountout" id="getethamountinforlstamountout"></a>

Returns the amount of ETH needed to mint the given amount of ETHx.

```
function getEthAmountInForLstAmountOut(
    IStaderStakePoolsManager staderDeposit,
    uint256 lstAmount
)
    internal
    view
    returns (uint256);
```

**Parameters**

| Name            | Type                       | Description                   |
| --------------- | -------------------------- | ----------------------------- |
| `staderDeposit` | `IStaderStakePoolsManager` | address.                      |
| `lstAmount`     | `uint256`                  | Desired output amount. \[WAD] |

#### [getLstAmountOutForEthAmountIn](https://docs.ionprotocol.io/devs/smart-contract-architecture/libraries/lst/broken-reference) <a href="#getlstamountoutforethamountin" id="getlstamountoutforethamountin"></a>

Returns the amount of ETHx that can be minted with the given amount of ETH.

```
function getLstAmountOutForEthAmountIn(
    IStaderStakePoolsManager staderDeposit,
    uint256 ethAmount
)
    internal
    view
    returns (uint256);
```

**Parameters**

| Name            | Type                       | Description                      |
| --------------- | -------------------------- | -------------------------------- |
| `staderDeposit` | `IStaderStakePoolsManager` | address.                         |
| `ethAmount`     | `uint256`                  | Amount of ETH to deposit. \[WAD] |

#### [depositForLst](https://docs.ionprotocol.io/devs/smart-contract-architecture/libraries/lst/broken-reference) <a href="#depositforlst" id="depositforlst"></a>

Deposits ETH into the stader deposit contract and returns the amount of ETHx received.

```
function depositForLst(IStaderStakePoolsManager staderDeposit, uint256 ethAmount) internal returns (uint256);
```

**Parameters**

| Name            | Type                       | Description                      |
| --------------- | -------------------------- | -------------------------------- |
| `staderDeposit` | `IStaderStakePoolsManager` | address.                         |
| `ethAmount`     | `uint256`                  | Amount of ETH to deposit. \[WAD] |

#### [depositForLst](https://docs.ionprotocol.io/devs/smart-contract-architecture/libraries/lst/broken-reference) <a href="#depositforlst-1" id="depositforlst-1"></a>

Deposits ETH into the stader deposit contract and returns the amount of ETHx received. This function parameterizes the address to receive the ETHx.

```
function depositForLst(
    IStaderStakePoolsManager staderDeposit,
    uint256 ethAmount,
    address receiver
)
    internal
    returns (uint256);
```

**Parameters**

| Name            | Type                       | Description                      |
| --------------- | -------------------------- | -------------------------------- |
| `staderDeposit` | `IStaderStakePoolsManager` | address.                         |
| `ethAmount`     | `uint256`                  | Amount of ETH to deposit. \[WAD] |
| `receiver`      | `address`                  | to receive the ETHx.             |
