package Ġcom . example . android dev challenge . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . example . android dev challenge . data . source . Dog Database Ċ import Ġcom . example . android dev challenge . data . source . Dog Room Dao Ċ import Ġcom . example . android dev challenge . domain . Dog Repository Ċ import Ġdagger . Bind s Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . android . qual ifiers . ApplicationContext Ċ import Ġdagger . h ilt . components . Singleton Component Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Install In ( Singleton Component :: class ) Ċ @ Module ( includes Ġ= Ġ[ Data Module . Declarations :: class ]) Ċ object ĠData Module Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Db (@ ApplicationContext Ġcontext : ĠContext ): ĠDog Database Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDog Database . getInstance ( context ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Dao ( database : ĠDog Database ): ĠDog Room Dao Ġ= Ġdatabase . dog s Dao () ĊĊĊĠĠĠ Ġ@ Install In ( Singleton Component :: class ) ĊĠĠĠ Ġ@ Module ĊĠĠĠ Ġinternal Ġinterface ĠDecl arations Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Bind s ĊĠĠĠĠĠĠĠ Ġ@ Singleton ĊĠĠĠĠĠĠĠ Ġfun Ġbind s Pokemon Storage Source ( data Repo : ĠDog Data Repository ): ĠDog Repository ĊĠĠĠ Ġ} Ċ }