From b76d2efc8801318806e8fd37a3ff0195ff121d2f Mon Sep 17 00:00:00 2001 From: bijianing97 <826015751@qq.com> Date: Thu, 8 Jan 2026 12:00:59 +0800 Subject: [PATCH] Use dlmm as option --- parser.go | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/parser.go b/parser.go index 138ef00..e60b91d 100644 --- a/parser.go +++ b/parser.go @@ -8,10 +8,36 @@ import ( "github.com/shopspring/decimal" ) -var swapPrograms = map[solana.PublicKey]swapParser{ - pumpAmmProgram: pumpAmmParser, - pumpProgram: pumpParser, - meteoraDlmmProgram: metaoradlmmParser, +var defaultSwapPrograms = map[solana.PublicKey]swapParser{ + pumpAmmProgram: pumpAmmParser, + pumpProgram: pumpParser, +} + +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{ @@ -118,3 +144,11 @@ func (tx *Tx) Parser() error { 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 +}