This is an internal API so changing it is fine, but if this would be a package, returning an interface would make changing things difficult, because an API change would be a breaking change to clients.
Returning a concrete type allows for extensibility without the need to break existing things. Requiring interface should remain. This should be a big problematic change. Also, would be nice if the tests would live next to the providers, but that's another refactor since putting them next to each other results in a cyclic dependency.
This is an internal API so changing it is fine, but if this would be a package, returning an interface would make changing things difficult, because an API change would be a breaking change to clients.
Returning a concrete type allows for extensibility without the need to break existing things. Requiring interface should remain. This should be a big problematic change. Also, would be nice if the tests would live next to the providers, but that's another refactor since putting them next to each other results in a cyclic dependency.