# WrappedTokenGatewayV3

* \
  **depositETH(address onBehalfOf, uint16 referralCode)** (payable) Wraps the sent ETH into WETH and deposits into the Aave pool.
  * `onBehalfOf`: User who will receive the aTokens.
  * `referralCode`: Code for referral programs (usually `0`).
* **withdrawETH(address asset, uint256 amount, address to)** Withdraws WETH from the pool, unwraps it, and sends ETH to `to`.
* **withdrawETHWithPermit(address asset, uint256 amount, address to, uint256 deadline, uint8 v, bytes32 r, bytes32 s)** Like `withdrawETH`, but uses an ERC20 permit signature for gasless approval.
* **borrowETH(address, uint256 amount, uint256 interestRateMode, uint16 referralCode)** Borrows ETH from the pool (internally via WETH).
  * `interestRateMode`: Stable or variable debt.
  * `referralCode`: Referral tracking.
* **repayETH(address, uint256 amount, uint256 rateMode, address onBehalfOf)** (payable) Repays borrowed ETH (wrapped as WETH, then repaid to the pool).
  * `onBehalfOf`: Allows repaying someone else’s debt.

***

**Admin / Emergency**

* **emergencyEtherTransfer(address to, uint256 amount)** Allows the owner to transfer stuck ETH from the contract.
* **emergencyTokenTransfer(address token, address to, uint256 amount)** Allows the owner to transfer stuck ERC20 tokens.
* **getWETHAddress() → address** Returns the WETH token address used internally.
* **owner() → address** Returns the current contract owner.
* **transferOwnership(address newOwner)** Transfers contract ownership.
* **renounceOwnership()** Allows the current owner to give up control.

***

**Events**

* **OwnershipTransferred(previousOwner, newOwner)** Emitted when contract ownership is transferred to a new admin.

```
[
  {
    "inputs": [
      { "internalType": "address", "name": "weth", "type": "address" },
      { "internalType": "address", "name": "owner", "type": "address" },
      { "internalType": "contract IPool", "name": "pool", "type": "address" }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  { "stateMutability": "payable", "type": "fallback" },
  {
    "inputs": [
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "uint256", "name": "amount", "type": "uint256" },
      { "internalType": "uint256", "name": "interestRateMode", "type": "uint256" },
      { "internalType": "uint16", "name": "referralCode", "type": "uint16" }
    ],
    "name": "borrowETH",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "address", "name": "onBehalfOf", "type": "address" },
      { "internalType": "uint16", "name": "referralCode", "type": "uint16" }
    ],
    "name": "depositETH",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "to", "type": "address" },
      { "internalType": "uint256", "name": "amount", "type": "uint256" }
    ],
    "name": "emergencyEtherTransfer",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "token", "type": "address" },
      { "internalType": "address", "name": "to", "type": "address" },
      { "internalType": "uint256", "name": "amount", "type": "uint256" }
    ],
    "name": "emergencyTokenTransfer",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getWETHAddress",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "uint256", "name": "amount", "type": "uint256" },
      { "internalType": "uint256", "name": "rateMode", "type": "uint256" },
      { "internalType": "address", "name": "onBehalfOf", "type": "address" }
    ],
    "name": "repayETH",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "uint256", "name": "amount", "type": "uint256" },
      { "internalType": "address", "name": "to", "type": "address" }
    ],
    "name": "withdrawETH",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "uint256", "name": "amount", "type": "uint256" },
      { "internalType": "address", "name": "to", "type": "address" },
      { "internalType": "uint256", "name": "deadline", "type": "uint256" },
      { "internalType": "uint8", "name": "permitV", "type": "uint8" },
      { "internalType": "bytes32", "name": "permitR", "type": "bytes32" },
      { "internalType": "bytes32", "name": "permitS", "type": "bytes32" }
    ],
    "name": "withdrawETHWithPermit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  { "stateMutability": "payable", "type": "receive" }
]

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://colend.gitbook.io/home/abi/wrappedtokengatewayv3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
