// Package types provides shared types used across multiple packages to avoid circular dependencies package types import ( "math/big" "github.com/ethereum/go-ethereum/common" ) // ArbitrageOpportunity represents a potential arbitrage opportunity type ArbitrageOpportunity struct { Path []string // Token path for the arbitrage Pools []string // Pools involved in the arbitrage AmountIn *big.Int // Input amount for the arbitrage Profit *big.Int // Estimated profit in wei GasEstimate *big.Int // Estimated gas cost ROI float64 // Return on investment percentage Protocol string // DEX protocol } // PriceMovement represents a potential price movement type PriceMovement struct { Token0 string // Token address Token1 string // Token address Pool string // Pool address Protocol string // DEX protocol AmountIn *big.Int // Amount of token being swapped in AmountOut *big.Int // Amount of token being swapped out PriceBefore *big.Float // Price before the swap PriceAfter *big.Float // Price after the swap (to be calculated) PriceImpact float64 // Calculated price impact TickBefore int // Tick before the swap TickAfter int // Tick after the swap (to be calculated) Timestamp int64 // Event timestamp } // CachedData represents cached pool data type CachedData struct { Address common.Address Token0 common.Address Token1 common.Address Fee int64 Liquidity *big.Int SqrtPriceX96 *big.Int Tick int TickSpacing int LastUpdated int64 Protocol string } // SwapEvent represents a swap event type SwapEvent struct { Type int Protocol string PoolAddress common.Address Token0 common.Address Token1 common.Address Amount0 *big.Int Amount1 *big.Int SqrtPriceX96 *big.Int Liquidity *big.Int Tick int Timestamp int64 TransactionHash common.Hash BlockNumber uint64 Fee uint32 } // LiquidityEvent represents a liquidity event (add/remove) type LiquidityEvent struct { Type int Protocol string PoolAddress common.Address Token0 common.Address Token1 common.Address Amount0 *big.Int Amount1 *big.Int Liquidity *big.Int Tick int Timestamp int64 TransactionHash common.Hash BlockNumber uint64 Fee uint32 Sender common.Address Recipient common.Address EventType string // "add" or "remove" } // PoolData represents pool data type PoolData struct { Address common.Address Token0 common.Address Token1 common.Address Fee int64 Liquidity *big.Int SqrtPriceX96 *big.Int Tick int64 TickSpacing int LastUpdated int64 Protocol string } // Constants for event types const ( Unknown = iota Swap AddLiquidity RemoveLiquidity NewPool )