you should typehint the interface instead of the implementation