Files
mev-beta/pkg/parsers/registry.go
Gemini Agent 8e2a9fe954 feat(parsers): register UniswapV3 parser with factory
- Added UniswapV3 parser registration to NewDefaultFactory()
- Both UniswapV2 and UniswapV3 parsers now automatically available
- Fixed constructor call (no error return from NewUniswapV3Parser)
- All parser tests passing (83.1% coverage)

This completes the Week 1 Fast MVP parser milestone:
-  UniswapV2 parser implemented and tested
-  UniswapV3 parser implemented and tested
-  Pool discovery implemented for Arbitrum
-  Both parsers registered with factory

Ready for Week 2: Arbitrage detection engine

Task: Fast MVP Week 1 (Days 3-5)
Tests: All passing
Coverage: 83.1% overall

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 20:35:25 -06:00

47 lines
1.1 KiB
Go

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
}