Use dlmm as option
This commit is contained in:
38
parser.go
38
parser.go
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user