Add dlmm start and end bin
This commit is contained in:
@@ -506,6 +506,7 @@ func metaoradlmmSwapParser(tx *Tx, instruction Instruction, innerInstructions In
|
|||||||
UserBaseBalance: userBase,
|
UserBaseBalance: userBase,
|
||||||
UserQuoteBalance: userQuote,
|
UserQuoteBalance: userQuote,
|
||||||
EntryContract: entryContract,
|
EntryContract: entryContract,
|
||||||
|
ActiveBinId: swapEvent.EndBinId,
|
||||||
StartBinId: swapEvent.StartBinId,
|
StartBinId: swapEvent.StartBinId,
|
||||||
EndBinId: swapEvent.EndBinId,
|
EndBinId: swapEvent.EndBinId,
|
||||||
}
|
}
|
||||||
@@ -699,6 +700,7 @@ func metaoradlmmAddLiquidityParser(tx *Tx, instruction Instruction, innerInstruc
|
|||||||
UserBaseBalance: userBase,
|
UserBaseBalance: userBase,
|
||||||
UserQuoteBalance: userQuote,
|
UserQuoteBalance: userQuote,
|
||||||
EntryContract: entryContract,
|
EntryContract: entryContract,
|
||||||
|
ActiveBinId: addEvent.ActiveBinId,
|
||||||
StartBinId: startBinId,
|
StartBinId: startBinId,
|
||||||
EndBinId: endBinId,
|
EndBinId: endBinId,
|
||||||
BinChanges: binChanges,
|
BinChanges: binChanges,
|
||||||
@@ -731,6 +733,7 @@ func metaoradlmmRemoveLiquidityParser(tx *Tx, instruction Instruction, innerInst
|
|||||||
binChanges []DlmmBinLiquidityChange
|
binChanges []DlmmBinLiquidityChange
|
||||||
startBinId int32
|
startBinId int32
|
||||||
endBinId int32
|
endBinId int32
|
||||||
|
removeBp int32
|
||||||
)
|
)
|
||||||
|
|
||||||
switch discriminator {
|
switch discriminator {
|
||||||
@@ -741,6 +744,7 @@ func metaoradlmmRemoveLiquidityParser(tx *Tx, instruction Instruction, innerInst
|
|||||||
}
|
}
|
||||||
binChanges = dlmmBinChangesFromReduction(args.BinLiquidityRemoval)
|
binChanges = dlmmBinChangesFromReduction(args.BinLiquidityRemoval)
|
||||||
startBinId, endBinId = dlmmMinMaxBinIdFromReduction(args.BinLiquidityRemoval)
|
startBinId, endBinId = dlmmMinMaxBinIdFromReduction(args.BinLiquidityRemoval)
|
||||||
|
removeBp = dlmmCommonRemoveBp(args.BinLiquidityRemoval)
|
||||||
case meteoraDlmmRemoveLiquidity2Discriminator:
|
case meteoraDlmmRemoveLiquidity2Discriminator:
|
||||||
var args dlmmRemoveLiquidity2Args
|
var args dlmmRemoveLiquidity2Args
|
||||||
if err := agbinary.NewBorshDecoder(decode[8:]).Decode(&args); err != nil {
|
if err := agbinary.NewBorshDecoder(decode[8:]).Decode(&args); err != nil {
|
||||||
@@ -748,6 +752,7 @@ func metaoradlmmRemoveLiquidityParser(tx *Tx, instruction Instruction, innerInst
|
|||||||
}
|
}
|
||||||
binChanges = dlmmBinChangesFromReduction(args.BinLiquidityRemoval)
|
binChanges = dlmmBinChangesFromReduction(args.BinLiquidityRemoval)
|
||||||
startBinId, endBinId = dlmmMinMaxBinIdFromReduction(args.BinLiquidityRemoval)
|
startBinId, endBinId = dlmmMinMaxBinIdFromReduction(args.BinLiquidityRemoval)
|
||||||
|
removeBp = dlmmCommonRemoveBp(args.BinLiquidityRemoval)
|
||||||
case meteoraDlmmRemoveLiquidityByRangeDiscriminator:
|
case meteoraDlmmRemoveLiquidityByRangeDiscriminator:
|
||||||
var args dlmmRemoveLiquidityByRangeArgs
|
var args dlmmRemoveLiquidityByRangeArgs
|
||||||
if err := agbinary.NewBorshDecoder(decode[8:]).Decode(&args); err != nil {
|
if err := agbinary.NewBorshDecoder(decode[8:]).Decode(&args); err != nil {
|
||||||
@@ -755,6 +760,7 @@ func metaoradlmmRemoveLiquidityParser(tx *Tx, instruction Instruction, innerInst
|
|||||||
}
|
}
|
||||||
startBinId = args.FromBinId
|
startBinId = args.FromBinId
|
||||||
endBinId = args.ToBinId
|
endBinId = args.ToBinId
|
||||||
|
removeBp = int32(args.BpsToRemove)
|
||||||
binChanges = dlmmBinChangesFromRange(startBinId, endBinId, args.BpsToRemove)
|
binChanges = dlmmBinChangesFromRange(startBinId, endBinId, args.BpsToRemove)
|
||||||
case meteoraDlmmRemoveLiquidityByRange2Discriminator:
|
case meteoraDlmmRemoveLiquidityByRange2Discriminator:
|
||||||
var args dlmmRemoveLiquidityByRange2Args
|
var args dlmmRemoveLiquidityByRange2Args
|
||||||
@@ -763,6 +769,7 @@ func metaoradlmmRemoveLiquidityParser(tx *Tx, instruction Instruction, innerInst
|
|||||||
}
|
}
|
||||||
startBinId = args.FromBinId
|
startBinId = args.FromBinId
|
||||||
endBinId = args.ToBinId
|
endBinId = args.ToBinId
|
||||||
|
removeBp = int32(args.BpsToRemove)
|
||||||
binChanges = dlmmBinChangesFromRange(startBinId, endBinId, args.BpsToRemove)
|
binChanges = dlmmBinChangesFromRange(startBinId, endBinId, args.BpsToRemove)
|
||||||
default:
|
default:
|
||||||
return nil, increaseOffset(offset), InstructionIgnoredError
|
return nil, increaseOffset(offset), InstructionIgnoredError
|
||||||
@@ -867,8 +874,10 @@ func metaoradlmmRemoveLiquidityParser(tx *Tx, instruction Instruction, innerInst
|
|||||||
UserBaseBalance: userBase,
|
UserBaseBalance: userBase,
|
||||||
UserQuoteBalance: userQuote,
|
UserQuoteBalance: userQuote,
|
||||||
EntryContract: entryContract,
|
EntryContract: entryContract,
|
||||||
|
ActiveBinId: removeEvent.ActiveBinId,
|
||||||
StartBinId: startBinId,
|
StartBinId: startBinId,
|
||||||
EndBinId: endBinId,
|
EndBinId: endBinId,
|
||||||
|
RemoveBp: removeBp,
|
||||||
BinChanges: binChanges,
|
BinChanges: binChanges,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -987,6 +996,7 @@ func metaoradlmmClaimFeeParser(tx *Tx, instruction Instruction, innerInstruction
|
|||||||
EntryContract: entryContract,
|
EntryContract: entryContract,
|
||||||
}
|
}
|
||||||
if claimEvent.HasActiveBin {
|
if claimEvent.HasActiveBin {
|
||||||
|
swap.ActiveBinId = claimEvent.ActiveBinId
|
||||||
swap.StartBinId = claimEvent.ActiveBinId
|
swap.StartBinId = claimEvent.ActiveBinId
|
||||||
swap.EndBinId = claimEvent.ActiveBinId
|
swap.EndBinId = claimEvent.ActiveBinId
|
||||||
}
|
}
|
||||||
@@ -1107,6 +1117,7 @@ func metaoradlmmRebalanceLiquidityParser(tx *Tx, instruction Instruction, innerI
|
|||||||
UserBaseBalance: userBase,
|
UserBaseBalance: userBase,
|
||||||
UserQuoteBalance: userQuote,
|
UserQuoteBalance: userQuote,
|
||||||
EntryContract: entryContract,
|
EntryContract: entryContract,
|
||||||
|
ActiveBinId: event.ActiveBinId,
|
||||||
StartBinId: event.OldMinBinId,
|
StartBinId: event.OldMinBinId,
|
||||||
EndBinId: event.OldMaxBinId,
|
EndBinId: event.OldMaxBinId,
|
||||||
BinChanges: dlmmBinChangesFromRange(event.OldMinBinId, event.OldMaxBinId, 0),
|
BinChanges: dlmmBinChangesFromRange(event.OldMinBinId, event.OldMaxBinId, 0),
|
||||||
@@ -1131,6 +1142,7 @@ func metaoradlmmRebalanceLiquidityParser(tx *Tx, instruction Instruction, innerI
|
|||||||
UserBaseBalance: userBase,
|
UserBaseBalance: userBase,
|
||||||
UserQuoteBalance: userQuote,
|
UserQuoteBalance: userQuote,
|
||||||
EntryContract: entryContract,
|
EntryContract: entryContract,
|
||||||
|
ActiveBinId: event.ActiveBinId,
|
||||||
StartBinId: event.NewMinBinId,
|
StartBinId: event.NewMinBinId,
|
||||||
EndBinId: event.NewMaxBinId,
|
EndBinId: event.NewMaxBinId,
|
||||||
BinChanges: dlmmBinChangesFromRange(event.NewMinBinId, event.NewMaxBinId, 0),
|
BinChanges: dlmmBinChangesFromRange(event.NewMinBinId, event.NewMaxBinId, 0),
|
||||||
@@ -1706,6 +1718,19 @@ func dlmmBinChangesFromRange(startBinId, endBinId int32, bpsToRemove uint16) []D
|
|||||||
return changes
|
return changes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func dlmmCommonRemoveBp(reduction []dlmmBinLiquidityReduction) int32 {
|
||||||
|
if len(reduction) == 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
bpsToRemove := reduction[0].BpsToRemove
|
||||||
|
for _, item := range reduction[1:] {
|
||||||
|
if item.BpsToRemove != bpsToRemove {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return int32(bpsToRemove)
|
||||||
|
}
|
||||||
|
|
||||||
func dlmmMinMaxBinIdFromDistribution(dist []dlmmBinLiquidityDistribution) (int32, int32) {
|
func dlmmMinMaxBinIdFromDistribution(dist []dlmmBinLiquidityDistribution) (int32, int32) {
|
||||||
if len(dist) == 0 {
|
if len(dist) == 0 {
|
||||||
return 0, 0
|
return 0, 0
|
||||||
|
|||||||
8
tx.go
8
tx.go
@@ -48,9 +48,11 @@ type Swap struct {
|
|||||||
AfterSOLBalance decimal.Decimal
|
AfterSOLBalance decimal.Decimal
|
||||||
|
|
||||||
//For meteora dlmm
|
//For meteora dlmm
|
||||||
StartBinId int32
|
ActiveBinId int32
|
||||||
EndBinId int32
|
StartBinId int32
|
||||||
BinChanges []DlmmBinLiquidityChange
|
EndBinId int32
|
||||||
|
RemoveBp int32
|
||||||
|
BinChanges []DlmmBinLiquidityChange
|
||||||
|
|
||||||
ConsumeUnit uint64
|
ConsumeUnit uint64
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user