# DEX Integration Documentation

## Overview

This document describes DEX integration for swapping ETH/WETH to stablecoins in the trustless bridge system.

## Current Integration

### Supported DEXs

1. **Uniswap V3** (Primary)
   - Router: `0xE592427A0AEce92De3Edee1F18E0157C05861564`
   - Fee tiers: 0.05%, 0.3%, 1%
   - Direct WETH → Stablecoin swaps
   - Note: the trustless router contracts in this repo call the legacy `exactInputSingle` ABI directly

2. **Curve** (Secondary)
   - 3Pool: `0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7`
   - For stable/stable pairs
   - Note: Requires intermediate swap for WETH

3. **1inch** (Optional)
   - Router: `0x1111111254EEB25477B68fb85Ed929f73A960582`
   - Aggregation routing
   - Best rate finding

## Integration Improvements

### 1. 1inch Aggregation

**Current**: Not fully integrated

**Enhancement**: Add 1inch router integration
```solidity
import "./interfaces/IAggregationRouter.sol";

function swapVia1inch(
    address tokenIn,
    address tokenOut,
    uint256 amountIn,
    uint256 amountOutMin,
    bytes calldata swapData
) internal returns (uint256) {
    IERC20(tokenIn).approve(oneInchRouter, amountIn);
    return IAggregationRouter(oneInchRouter).swap(
        tokenIn,
        tokenOut,
        amountIn,
        amountOutMin,
        swapData
    );
}
```

### 2. Multi-Hop Swaps

**Current**: Direct swaps only

**Enhancement**: Support multi-hop routing
```solidity
// WETH → USDC → USDT (if better rate)
function swapMultiHop(
    address[] calldata path,
    uint256[] calldata amounts,
    uint24[] calldata fees
) internal returns (uint256) {
    // Execute multiple swaps
}
```

### 3. Slippage Protection

**Current**: Basic `amountOutMin` parameter

**Enhancement**: Dynamic slippage based on market conditions
```solidity
function getDynamicSlippage(uint256 amountIn) public view returns (uint256) {
    uint256 baseSlippage = 50; // 0.5%
    uint256 volatilityMultiplier = getVolatilityMultiplier();
    return baseSlippage * volatilityMultiplier;
}
```

## Supported Stablecoins

### Current

- **USDT**: `0xdAC17F958D2ee523a2206206994597C13D831ec7`
- **USDC**: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`
- **DAI**: `0x6B175474E89094C44Da98b954EedeAC495271d0F`

### Future

- Additional stablecoins as needed
- Token whitelist mechanism
- Dynamic token support

## Testing

### Test Suite

Create `test/bridge/trustless/DEXIntegration.t.sol`:
- Test Uniswap V3 swaps
- Test Curve swaps
- Test 1inch aggregation
- Test multi-hop swaps
- Test slippage protection

## References

- SwapRouter: `contracts/bridge/trustless/SwapRouter.sol`
- Interfaces: `contracts/bridge/trustless/interfaces/`
- Test Suite: `test/bridge/trustless/DEXIntegration.t.sol`
