#!/bin/sh # Generate Go bindings from extracted official ABIs # Run this AFTER extract-official-abis.sh set -e PROJECT_ROOT="/docker/mev-beta" BINDINGS_DIR="$PROJECT_ROOT/bindings" cd "$PROJECT_ROOT" || exit 1 echo "🔧 Generating Go bindings from official contract ABIs" echo "====================================================" echo "" # Check if abigen is available if ! command -v abigen > /dev/null 2>&1; then echo "⚠️ abigen not found, installing..." go install github.com/ethereum/go-ethereum/cmd/abigen@v1.13.15 fi # Function to generate binding from ABI generate_binding() { local abi_file=$1 local pkg_name=$2 local type_name=$3 local output_file=$4 if [ ! -f "$abi_file" ]; then echo "⚠️ ABI file not found: $abi_file" return 1 fi echo "📄 Generating $type_name..." abigen \ --abi="$abi_file" \ --pkg="$pkg_name" \ --type="$type_name" \ --out="$output_file" echo " ✅ Generated: $output_file" return 0 } echo "🦄 Uniswap V2 Bindings" echo "---------------------" generate_binding \ "$BINDINGS_DIR/uniswap_v2/IUniswapV2Pair_abi.json" \ "uniswap_v2" \ "UniswapV2Pair" \ "$BINDINGS_DIR/uniswap_v2/pair.go" # Use existing manually created router ABI if official extraction doesn't work if [ -f "$BINDINGS_DIR/uniswap_v2/IUniswapV2Router02.json" ]; then generate_binding \ "$BINDINGS_DIR/uniswap_v2/IUniswapV2Router02.json" \ "uniswap_v2" \ "UniswapV2Router" \ "$BINDINGS_DIR/uniswap_v2/router.go" fi echo "" echo "🦄 Uniswap V3 Bindings" echo "---------------------" generate_binding \ "$BINDINGS_DIR/uniswap_v3/ISwapRouter_abi.json" \ "uniswap_v3" \ "SwapRouter" \ "$BINDINGS_DIR/uniswap_v3/router.go" # Use existing manually created router ABI if needed if [ -f "$BINDINGS_DIR/uniswap_v3/ISwapRouter.json" ]; then generate_binding \ "$BINDINGS_DIR/uniswap_v3/ISwapRouter.json" \ "uniswap_v3" \ "SwapRouter" \ "$BINDINGS_DIR/uniswap_v3/router.go" fi echo "" echo "✅ Binding generation complete!" echo "" echo "Generated bindings:" find "$BINDINGS_DIR" -name "*.go" -type f | sort echo "" echo "💡 Import in your Go code:" echo " import \"github.com/your-org/mev-bot/bindings/uniswap_v2\"" echo " import \"github.com/your-org/mev-bot/bindings/uniswap_v3\""