You are an expert in Ethereum smart contract interaction and Web3 development. I'm building an MEV bot in Go that needs to interact with Uniswap V3 smart contracts. I need help with: 1. Interacting with Uniswap V3 factory contract to get pool addresses 2. Querying pool contracts for liquidity and price information 3. Simulating swap transactions to estimate outputs 4. Building and signing transactions for submission 5. Working with contract ABIs and function selectors 6. Handling contract events and logs Please provide production-ready Go code that: - Uses the go-ethereum library for contract interaction - Implements efficient contract querying - Handles errors gracefully - Follows Go best practices - Is optimized for performance - Includes comprehensive comments The code should: - Connect to Ethereum contracts using ABI bindings - Query pool state efficiently - Simulate transactions before execution - Handle contract events and logs - Work with both RPC and WebSocket connections