#!/bin/bash # Generate Go bindings from ABIs using abigen set -e echo "🔧 Generating Go bindings from contract ABIs" echo "==============================================" echo "" # Check if abigen is available if ! command -v abigen &> /dev/null; then echo "⚠️ abigen not found, installing..." cd /tmp go install github.com/ethereum/go-ethereum/cmd/abigen@latest cd - fi # Function to generate binding generate_binding() { local abi_file=$1 local pkg_name=$2 local type_name=$3 local output_file=$4 echo "📄 Generating $type_name..." abigen \ --abi="$abi_file" \ --pkg="$pkg_name" \ --type="$type_name" \ --out="$output_file" echo " ✅ Generated: $output_file" } # Generate UniswapV2 bindings echo "🦄 UniswapV2 Bindings" generate_binding \ "bindings/uniswap_v2/IUniswapV2Router02.json" \ "uniswap_v2" \ "UniswapV2Router" \ "bindings/uniswap_v2/router.go" generate_binding \ "bindings/uniswap_v2/IUniswapV2Pair.json" \ "uniswap_v2" \ "UniswapV2Pair" \ "bindings/uniswap_v2/pair.go" echo "" # Generate UniswapV3 bindings echo "🦄 UniswapV3 Bindings" generate_binding \ "bindings/uniswap_v3/ISwapRouter.json" \ "uniswap_v3" \ "SwapRouter" \ "bindings/uniswap_v3/router.go" echo "" echo "✅ All bindings generated successfully!" echo "" echo "Generated bindings:" find bindings -name "*.go" -type f | sort echo "" echo "💡 Add to imports:" echo " import \"github.com/your-org/mev-bot/bindings/uniswap_v2\"" echo " import \"github.com/your-org/mev-bot/bindings/uniswap_v3\""