Feedback from an HIP-3 MM bot operator. We needed per-DEX fill data for cost efficiency analysis and had to use raw HTTP as a workaround.
Problem
user_fills and user_fills_by_time don't accept a dex parameter, making it impossible to retrieve fill history for HIP-3 (builder-deployed perpetuals) markets through the SDK.
Current code
# info.py line 199 — no dex parameter
def user_fills(self, address: str) -> Any:
return self.post("/info", {"type": "userFills", "user": address})
# info.py line 228 — no dex parameter
def user_fills_by_time(self, address, start_time, end_time=None, aggregate_by_time=False):
return self.post("/info", {"type": "userFillsByTime", "user": address, ...})
Comparison with other methods
Other methods already support dex:
user_state(address, dex="") ✅
open_orders(address, dex="") ✅
all_mids(dex="") ✅
meta(dex="") ✅
user_fills(address) ❌ — no dex parameter
user_fills_by_time(address, ...) ❌ — no dex parameter
Impact
HIP-3 bot operators cannot track per-DEX fill history through the SDK. We had to use raw HTTP calls as a workaround:
requests.post(API + "/info", json={"type": "userFills", "user": addr, "dex": "xyz"})
Suggestion
Add dex parameter consistent with other methods:
def user_fills(self, address: str, dex: str = "") -> Any:
return self.post("/info", {"type": "userFills", "user": address, "dex": dex})
Problem
user_fillsanduser_fills_by_timedon't accept adexparameter, making it impossible to retrieve fill history for HIP-3 (builder-deployed perpetuals) markets through the SDK.Current code
Comparison with other methods
Other methods already support
dex:user_state(address, dex="")✅open_orders(address, dex="")✅all_mids(dex="")✅meta(dex="")✅user_fills(address)❌ — nodexparameteruser_fills_by_time(address, ...)❌ — nodexparameterImpact
HIP-3 bot operators cannot track per-DEX fill history through the SDK. We had to use raw HTTP calls as a workaround:
Suggestion
Add
dexparameter consistent with other methods: