package Ġru . red mad robot . movie _ app . di Ċ Ċ import Ġandroid . app . Application Ċ import Ġdagger . Component Ċ import Ġru . red mad robot . common . di . App Provider Ċ import Ġru . red mad robot . core . android . Android Tools Component Ċ import Ġru . red mad robot . core . android . Android Tools Provider Ċ import Ġru . red mad robot . core . network . di . Network Provider Ċ import Ġru . red mad robot . core . network . di . component . Network Component Ċ import Ġru . red mad robot . movie _ app . MainActivity Ċ import Ġru . red mad robot . persist . di . Room Module Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ @ Component ( ĊĠĠĠ Ġdependencies Ġ= Ġ[ Network Provider :: class , ĠAndroid Tools Provider :: class ], ĊĠĠĠ Ġmodules Ġ= Ġ[ ĊĠĠĠĠĠĠĠ ĠMain ViewModel Module :: class , ĊĠĠĠĠĠĠĠ ĠRoom Module :: class ĊĠĠĠ Ġ] Ċ ) Ċ interface ĠApp Component Ġ: ĠApp Provider Ġ{ ĊĊĠĠĠ Ġfun Ġinject ( obj : ĠMainActivity ) ĊĊĠĠĠ Ġ@ Component . Factory ĊĠĠĠ Ġinterface ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Tools Provider : ĠAndroid Tools Provider , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Provider : ĠNetwork Provider ĊĠĠĠĠĠĠĠ Ġ): ĠApp Component ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġinit ( application : ĠApplication ): ĠApp Component Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġandroid Tools Provider Ġ= ĠAndroid Tools Component . Builder . build ( application ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Provider Ġ= ĠNetwork Component . Builder . build ( android Tools Provider ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠD agger App Component . factory () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( android Tools Provider , Ġnetwork Provider ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ