I’m not actually using that sdk for event requests, so hard to say. It really depends on your use case.
Are you trying to dedupe for a timeline? If so, your timeline data model can ignore adding events that already exist.
Are you trying to dedupe for an archival backup process? You can fetch all the data first and then dedupe. Or maybe use sets to track seen.
There is also deduping across relays and relay subscriptions. Maybe that’s desirable, or maybe it isn’t - particularly if you want to count something thing like followers; you may have seen that following contact list before, however you need it to +1.
The main catch with deduping is you should use event ids and not the raw json, as the json can have the keys ordered differently.
Ultimately it would be nice to tell a relay a compacted hash of what you’ve seen and then they can skip sending those events. The issue being it’s a statistical model and may have false positives.. meaning it may not send 1 in 1,000,000 events.. which is likely fine. This doesn’t solve the multiple concurrent relay queries approach however.