Use dlmm as option

This commit is contained in:
bijianing97
2026-01-08 12:00:59 +08:00
parent 16b7461ac7
commit b76d2efc88

View File

@@ -8,10 +8,36 @@ import (
"github.com/shopspring/decimal" "github.com/shopspring/decimal"
) )
var swapPrograms = map[solana.PublicKey]swapParser{ var defaultSwapPrograms = map[solana.PublicKey]swapParser{
pumpAmmProgram: pumpAmmParser, pumpAmmProgram: pumpAmmParser,
pumpProgram: pumpParser, pumpProgram: pumpParser,
meteoraDlmmProgram: metaoradlmmParser, }
var swapPrograms = cloneSwapPrograms(defaultSwapPrograms)
type ParserOption func(*parserConfig)
type parserConfig struct {
enableMeteoraDlmm bool
}
func InitParser(opts ...ParserOption) {
cfg := parserConfig{}
for _, opt := range opts {
opt(&cfg)
}
programs := cloneSwapPrograms(defaultSwapPrograms)
if cfg.enableMeteoraDlmm {
programs[meteoraDlmmProgram] = metaoradlmmParser
}
swapPrograms = programs
}
func WithMeteoraDlmm() ParserOption {
return func(cfg *parserConfig) {
cfg.enableMeteoraDlmm = true
}
} }
var actionPrograms = map[solana.PublicKey]actionParser{ var actionPrograms = map[solana.PublicKey]actionParser{
@@ -118,3 +144,11 @@ func (tx *Tx) Parser() error {
return nil return nil
} }
func cloneSwapPrograms(src map[solana.PublicKey]swapParser) map[solana.PublicKey]swapParser {
dst := make(map[solana.PublicKey]swapParser, len(src))
for k, v := range src {
dst[k] = v
}
return dst
}