I started a patch to introduce a new KScreen::LidController in libkscreen, uploaded as draft MR for now at libkscreen!178, plus the corresponding commit to switch powerdevil over to the new library. It doesn't quite work yet even on Wayland, thanks for logind actually not sending a PropertiesChanged signal unless I implemented it wrong. It's a start though.
@nclarius, I noticed only now that this issue is actually assigned to you. Would you like me to hold off on any further implementation work?