You should be able to keep the same find() call signature. That way, it would be up to the artifacts themselves to define the scope they belong to. Ex, by default View is -at-Singleton, Fragment is -at-Prototype. Then, you could do something like this.
annotation class ProjectScoped
@ProjectScoped class ProjectViewModel {
val projectTitle : String by inject()