- 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>
47 lines
1.1 KiB
Go
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
|
|
}
|