#!/bin/sh # Extract ABIs directly from official DEX contracts using forge inspect # This bypasses compilation errors in src/ by using official contracts from lib/ set -e FORGE="/home/administrator/.foundry/bin/forge" PROJECT_ROOT="/docker/mev-beta" CONTRACTS_DIR="$PROJECT_ROOT/contracts" BINDINGS_DIR="$PROJECT_ROOT/bindings" cd "$CONTRACTS_DIR" || exit 1 echo "🔍 Extracting ABIs from official DEX contracts" echo "==============================================" echo "" # Create bindings directories mkdir -p "$BINDINGS_DIR/uniswap_v2" mkdir -p "$BINDINGS_DIR/uniswap_v3" echo "📦 Uniswap V2" echo "-------------" # Extract IUniswapV2Pair ABI if [ -f "lib/v2-core/contracts/interfaces/IUniswapV2Pair.sol" ]; then echo "Extracting IUniswapV2Pair ABI..." $FORGE inspect lib/v2-core/contracts/interfaces/IUniswapV2Pair.sol:IUniswapV2Pair abi \ > "$BINDINGS_DIR/uniswap_v2/IUniswapV2Pair_abi.json" 2>/dev/null || \ echo "⚠️ Could not extract IUniswapV2Pair ABI (dependencies may be missing)" fi echo "" echo "📦 Uniswap V3" echo "-------------" # Extract ISwapRouter ABI if [ -f "lib/v3-periphery/contracts/interfaces/ISwapRouter.sol" ]; then echo "Extracting ISwapRouter ABI..." $FORGE inspect lib/v3-periphery/contracts/interfaces/ISwapRouter.sol:ISwapRouter abi \ > "$BINDINGS_DIR/uniswap_v3/ISwapRouter_abi.json" 2>/dev/null || \ echo "⚠️ Could not extract ISwapRouter ABI (dependencies may be missing)" fi echo "" echo "✅ ABI extraction complete" echo "" echo "Extracted ABIs:" find "$BINDINGS_DIR" -name "*_abi.json" -type f | sort echo "" echo "💡 Next step: Generate Go bindings with:" echo " ./scripts/generate-bindings-from-official-abis.sh"