package parsers import ( "log/slog" "coppertone.tech/fraktal/mev-bot/pkg/cache" "coppertone.tech/fraktal/mev-bot/pkg/observability" "coppertone.tech/fraktal/mev-bot/pkg/types" ) // NewDefaultFactory creates a factory with all parsers registered func NewDefaultFactory(poolCache cache.PoolCache, logger observability.Logger) (Factory, error) { if poolCache == nil { return nil, types.ErrCacheNotInitialized } if logger == nil { // Create default logger logger = observability.NewLogger(slog.LevelInfo) } factory := NewFactory() // Register UniswapV2 parser uniV2Parser, err := NewUniswapV2Parser(poolCache, logger) if err != nil { return nil, err } if err := factory.RegisterParser(types.ProtocolUniswapV2, uniV2Parser); err != nil { return nil, err } // Register UniswapV3 parser uniV3Parser := NewUniswapV3Parser(poolCache, logger) if err := factory.RegisterParser(types.ProtocolUniswapV3, uniV3Parser); err != nil { return nil, err } // TODO: Register other parsers as they're implemented // - Curve // - Balancer // - SushiSwap // - Camelot return factory, nil }