> ## Documentation Index
> Fetch the complete documentation index at: https://unevenlabs-docs-drift-src-aa153b3060-2d3471a.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# RelayPoolNativeGateway

# Solidity API

## RelayPoolNativeGateway

Gateway contract for depositing and withdrawing native ETH to/from WETH-based RelayPools

*Handles wrapping/unwrapping of ETH and provides slippage protection for all operations*

### EthTransferFailed

```solidity theme={null}
error EthTransferFailed()
```

Error when ETH transfer fails

### OnlyWethCanSendEth

```solidity theme={null}
error OnlyWethCanSendEth()
```

Error when contract receives ETH from non-WETH address

### RemainingEth

```solidity theme={null}
error RemainingEth()
```

Error when ETH remains in contract after operation

### SlippageExceeded

```solidity theme={null}
error SlippageExceeded()
```

Error when slippage protection is triggered

### WETH

```solidity theme={null}
contract IWETH WETH
```

The Wrapped ETH (WETH) contract

*Used to wrap/unwrap native ETH for pool operations*

### constructor

```solidity theme={null}
constructor(address wethAddress) public
```

Initializes the gateway with the WETH contract address

#### Parameters

| Name | Type | Description |
| - | - | - |
| wethAddress | address | Address of the Wrapped Native token contract |

### deposit

```solidity theme={null}
function deposit(address pool, address receiver, uint256 minSharesOut) external payable returns (uint256 shares)
```

Deposits native ETH into a WETH-based pool

*Wraps ETH to WETH, then deposits to the pool with slippage protection*

#### Parameters

| Name | Type | Description |
| - | - | - |
| pool | address | The address of the ERC4626 pool to deposit into |
| receiver | address | The address that will receive the pool shares |
| minSharesOut | uint256 | Minimum amount of shares to receive (slippage protection) |

#### Return Values

| Name | Type | Description |
| - | - | - |
| shares | uint256 | The amount of pool shares minted to the receiver |

### mint

```solidity theme={null}
function mint(address pool, address receiver, uint256 minSharesOut) external payable returns (uint256 shares)
```

Mints pool shares by depositing native ETH

*Wraps ETH, calculates shares, then mints with slippage protection*

#### Parameters

| Name | Type | Description |
| - | - | - |
| pool | address | The address of the ERC4626 pool to mint shares from |
| receiver | address | The address that will receive the pool shares |
| minSharesOut | uint256 | Minimum amount of shares to receive (slippage protection) |

#### Return Values

| Name | Type | Description |
| - | - | - |
| shares | uint256 | The amount of pool shares minted to the receiver |

### withdraw

```solidity theme={null}
function withdraw(address pool, uint256 assets, address receiver, uint256 maxSharesIn) external virtual returns (uint256 shares)
```

Withdraws a specific amount of native ETH from a WETH-based pool

*Withdraws WETH from pool, unwraps to ETH, with slippage protection*

#### Parameters

| Name | Type | Description |
| - | - | - |
| pool | address | The address of the ERC4626 pool to withdraw from |
| assets | uint256 | Amount of native ETH to withdraw |
| receiver | address | The address that will receive the native ETH |
| maxSharesIn | uint256 | Maximum amount of shares to burn (slippage protection) |

#### Return Values

| Name | Type | Description |
| - | - | - |
| shares | uint256 | The amount of pool shares burned |

### redeem

```solidity theme={null}
function redeem(address pool, uint256 shares, address receiver, uint256 minAssetsOut) external virtual returns (uint256 assets)
```

Redeems pool shares for native ETH

*Redeems shares for WETH, unwraps to ETH, with slippage protection*

#### Parameters

| Name | Type | Description |
| - | - | - |
| pool | address | The address of the ERC4626 pool to redeem from |
| shares | uint256 | Amount of pool shares to redeem |
| receiver | address | The address that will receive the native ETH |
| minAssetsOut | uint256 | Minimum amount of ETH to receive (slippage protection) |

#### Return Values

| Name | Type | Description |
| - | - | - |
| assets | uint256 | The amount of native ETH sent to receiver |

### safeTransferETH

```solidity theme={null}
function safeTransferETH(address to, uint256 value) internal
```

Safely transfers ETH to an address

*Reverts if the ETH transfer fails*

#### Parameters

| Name | Type | Description |
| - | - | - |
| to | address | Recipient of the ETH transfer |
| value | uint256 | Amount of ETH to transfer |

### receive

```solidity theme={null}
receive() external payable
```

Receives ETH only from WETH contract

*Required for WETH unwrapping operations*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.