diff --git a/src/dexorder/base/orderlib.py b/src/dexorder/base/orderlib.py index 6cdb309..f80433f 100644 --- a/src/dexorder/base/orderlib.py +++ b/src/dexorder/base/orderlib.py @@ -75,6 +75,7 @@ SwapOrder @dataclass class SwapStatus: # this is an elaborated version of the on-chain status + fillFeeBP: int state: SwapOrderState start: int ocoGroup: Optional[int] @@ -96,37 +97,40 @@ class SwapOrderStatus(SwapStatus): @staticmethod def load(obj): order = SwapOrder.load(obj[0]) - state = SwapOrderState(obj[1]) - start = obj[2] - ocoGroup = None if obj[3] == NO_OCO else obj[3] - filledIn = int(obj[4]) - filledOut = int(obj[5]) - trancheFilledIn = [int(f) for f in obj[6]] - trancheFilledOut = [int(f) for f in obj[7]] - return SwapOrderStatus(order, state, start, ocoGroup, filledIn, filledOut, trancheFilledIn, trancheFilledOut) + fillFeeBP = int(obj[1]) + state = SwapOrderState(obj[2]) + start = obj[3] + ocoGroup = None if obj[4] == NO_OCO else obj[4] + filledIn = int(obj[5]) + filledOut = int(obj[6]) + trancheFilledIn = [int(f) for f in obj[7]] + trancheFilledOut = [int(f) for f in obj[8]] + return SwapOrderStatus(order, fillFeeBP, state, start, ocoGroup, filledIn, filledOut, trancheFilledIn, trancheFilledOut) @staticmethod def load_from_chain(obj): # 0 SwapOrder order; - # 1 bool canceled; - # 2 uint32 start; - # 3 uint64 ocoGroup; - # 4 uint256 filled; // total - # 5 uint256[] trancheFilled; // sum(trancheFilled) == filled + # 1 int fillFeeBP + # 2 bool canceled; + # 3 uint32 start; + # 4 uint64 ocoGroup; + # 5 uint256 filled; // total + # 6 uint256[] trancheFilled; // sum(trancheFilled) == filled order = SwapOrder.load(obj[0]) - state = SwapOrderState.Canceled if obj[1] else SwapOrderState.Open - start = obj[2] - ocoGroup = None if obj[3] == NO_OCO else obj[3] + fillFeeBP = obj[1] + state = SwapOrderState.Canceled if obj[2] else SwapOrderState.Open + start = obj[3] + ocoGroup = None if obj[4] == NO_OCO else obj[4] # we ignore any fill values from the on-chain struct, because we will subsequently detect the DexorderSwapFilled events and add them in filledIn = 0 filledOut = 0 - trancheFilledIn = [0 for _ in range(len(obj[5]))] - trancheFilledOut = [0 for _ in range(len(obj[5]))] - return SwapOrderStatus(order, state, start, ocoGroup, filledIn, filledOut, trancheFilledIn, trancheFilledOut) + trancheFilledIn = [0 for _ in range(len(obj[6]))] + trancheFilledOut = [0 for _ in range(len(obj[6]))] + return SwapOrderStatus(order, fillFeeBP, state, start, ocoGroup, filledIn, filledOut, trancheFilledIn, trancheFilledOut) def dump(self): - return (self.order.dump(), self.state.value, self.start, self.ocoGroup, + return (self.order.dump(), self.fillFeeBP, self.state.value, self.start, self.ocoGroup, str(self.filledIn), str(self.filledOut), [str(f) for f in self.trancheFilledIn], [str(f) for f in self.trancheFilledOut])