Hey there! I've been working on a Game Boy emulator since last year and found the GameRoy project, which translates the PPU's logic from SameBoy, the (AFAIK) most accurate GB emulator around. I basically copied the PPU logic into my emulator and replaced the "state" property (an integer) with enums for some extra clarity.
https://github.com/nicolas-siplis/feboy
https://github.com/rodrigodd/gameroy
https://github.com/LIJI32/SameBoy/