There is render_stats bpy handler
It seem like it is invoked every time rendering engine prints to console smth like
Fra:0 Mem:410.70M (0.00M, Peak 450.46M) | Remaining:01:16:22.96 | Mem:307.83M, Peak:307.83M | _mainScene, interior | Path Tracing Tile 18/8160
I am wondering if there is a way to get numbers like estimate(01:16:22.96) and current tile(18) from render_stats handler in python script?
Now the only way I see to get this is parsing blender output which is not very cool
There is something alike it in UI, but there is no tooltip with python snippet for it:

This question may seem alike Is it possible to get render time per tile?, and it's stands there that you can't. But in there it's about render time for specific tile, and I am asking about render time estimation for particular frame, may be you can get overall estimation?