# Enhanced Routing and Liquidity Engine

This document explains the enhanced routing system with multi-protocol support and automated liquidity management.

## Overview

The Enhanced Swap Router provides intelligent routing across multiple DEX protocols:
- **Uniswap V3**: Primary for small swaps, high liquidity
- **Dodoex PMM**: Best for large swaps, lower slippage
- **Balancer**: Weighted pools for stablecoin swaps
- **Curve**: Deep liquidity for stable/stable swaps
- **1inch**: Aggregation for best execution

## Decision Logic Map

The system uses a decision logic map to route swaps optimally:

### Size-Based Routing

- **Small swaps** (< $10k): Uniswap V3 → Dodoex
- **Medium swaps** ($10k-$100k): Dodoex → Balancer → Uniswap V3
- **Large swaps** (> $100k): Dodoex → Curve → Balancer

### Slippage-Based Routing

- **Low slippage** (< 0.1%): Prefer Dodoex (PMM provides better price)
- **Medium slippage** (< 0.5%): Prefer Balancer
- **High slippage**: Prefer Curve (deepest liquidity)

### Liquidity-Based Routing

- **High liquidity** (> $1M): Prefer Uniswap V3
- **Medium liquidity**: Prefer Dodoex
- **Low liquidity**: Prefer Curve

## Usage

### Basic Swap

```solidity
(uint256 amountOut, SwapProvider provider) = enhancedSwapRouter.swapToStablecoin(
    LiquidityPoolETH.AssetType.WETH,
    usdtAddress,
    amountIn,
    amountOutMin,
    SwapProvider.UniswapV3 // 0 = auto-select
);
```

### Get Quotes

```solidity
(SwapProvider[] memory providers, uint256[] memory amounts) = 
    enhancedSwapRouter.getQuotes(usdtAddress, amountIn);
```

## Admin Configuration

### Update Routing Config

```solidity
SwapProvider[] memory providers = new SwapProvider[](2);
providers[0] = SwapProvider.Dodoex;
providers[1] = SwapProvider.Balancer;

router.setRoutingConfig(0, providers); // 0 = small swaps
```

### Toggle Providers

```solidity
router.setProviderEnabled(SwapProvider.Dodoex, true);
router.setProviderEnabled(SwapProvider.Curve, false);
```

## Liquidity Engine Service

The backend service provides:

1. **Quote Aggregation**: Compare prices across all protocols
2. **Decision Logic**: Apply routing rules automatically
3. **Simulation**: Test routing decisions before execution
4. **Analytics**: Track routing performance

## Benefits

1. **Better Execution**: Always use best available price
2. **Lower Slippage**: Dodoex PMM for large trades
3. **Resilience**: Multiple fallback options
4. **Automation**: No manual intervention needed
5. **Transparency**: All decisions visible in admin dashboard

