package Ġcom . example . kotlin . di . module Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . example . kotlin . network . Auth HttpRequest Ċ import Ġcom . example . kotlin . network . User Api Ċ import Ġcom . example . kotlin . repository . Auth Repository Ċ import Ġcom . example . kotlin . repository . UserRepository Ċ import Ġcom . example . kotlin . repository . local . Local DataSource Ċ import Ġcom . example . kotlin . repository . remote . Remote DataSource Ċ 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 Ċ Ċ @ Module Ċ @ Install In ( Singleton Component :: class ) Ċ object ĠApp Module Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Remote DataSource (): ĠRemote DataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRemote DataSource () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Auth Api ( ĊĠĠĠĠĠĠĠ Ġremote DataSource : ĠRemote DataSource , ĊĠĠĠĠĠĠĠ Ġ@ ApplicationContext Ġcontext : ĠContext ĊĠĠĠ Ġ): ĠAuth HttpRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġremote DataSource . build Api Services ( Auth HttpRequest :: class . java , Ġcontext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide User Api ( ĊĠĠĠĠĠĠĠ Ġremote DataSource : ĠRemote DataSource , ĊĠĠĠĠĠĠĠ Ġ@ ApplicationContext Ġcontext : ĠContext ĊĠĠĠ Ġ): ĠUser Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġremote DataSource . build Api Services ( User Api :: class . java , Ġcontext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide User Preferences (@ ApplicationContext Ġcontext : ĠContext ): ĠLocal DataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLocal DataSource ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Auth Repository ( ĊĠĠĠĠĠĠĠ Ġauth Api : ĠAuth HttpRequest , ĊĠĠĠĠĠĠĠ Ġuser Preferences : ĠLocal DataSource ĊĠĠĠ Ġ): ĠAuth Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAuth Repository ( auth Api , Ġuser Preferences ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide UserRepository ( user Api : ĠUser Api ): ĠUser Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUser Repository ( user Api ) ĊĠĠĠ Ġ} Ċ }