> ## Documentation Index
> Fetch the complete documentation index at: https://docs.utexo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Wrap Native Tokens

> Wrap native blockchain assets into token contracts before Utexo Swap execution.

## Overview

For source inputs, Utexo Swap interacts with token contracts rather than native blockchain assets. Wrap the source asset before execution, for example, wrap ETH into WETH on Ethereum, and use the wrapped-token contract address as `sourceToken`. This requirement applies to source assets. On EVM destination chains, settlement can return native ETH by having the resolver supply WETH and the protocol unwrap it before transfer to the user.

```ts theme={null}
import { ethers } from "ethers";

const WETH_ABI = ["function deposit() external payable"];

async function wrapNative(
  wrappedTokenAddress: string,
  amount: bigint,
  signer: ethers.Signer,
): Promise<ethers.TransactionReceipt> {
  const wrappedToken = new ethers.Contract(
    wrappedTokenAddress,
    WETH_ABI,
    signer,
  );

  const transaction = await wrappedToken.deposit({ value: amount });
  const receipt = await transaction.wait();

  if (!receipt) {
    throw new Error("The wrapping transaction did not produce a receipt");
  }

  return receipt;
}
```

Confirm the wrapped-token contract address for the selected network. The wrapping transaction requires enough native currency for both the wrapped amount and network fees.


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