// Path: app/src/main/java/com/github/aleksandermielczarek/observablecacheexample/module/Observable1Module.java
// @Module
// @AppScope
// public class Observable1Module {
// 
//     @Provides
//     @AppScope
//     ObservableCache provideObservableCache() {
//         return LruObservableCache.newInstance();
//     }
// 
//     @Provides
//     @AppScope
//     Observable1Service provideObservableService() {
//         return new Observable1Service();
//     }
// 
//     @Provides
//     @AppScope
//     ObservableCacheService provideObservableCacheService(ObservableCache observableCache) {
//         return new ObservableCacheService(observableCache);
//     }
// 
//     @Provides
//     @AppScope
//     Cached1Service provideCachedService(ObservableCacheService observableCacheService) {
//         return observableCacheService.createObservableCacheService(Cached1Service.class);
//     }
// }
// 
// Path: app/src/main/java/com/github/aleksandermielczarek/observablecacheexample/module/Observable2Module.java
// @Module
// @AppScope
// public class Observable2Module {
// 
//     @Provides
//     @AppScope
//     ObservableCache provideObservableCache() {
//         return LruObservableCache.newInstance();
//     }
// 
//     @Provides
//     @AppScope
//     Observable2Service provideObservableService() {
//         return new Observable2Service();
//     }
// 
//     @Provides
//     @AppScope
//     ObservableCacheService provideObservableCacheService(ObservableCache observableCache) {
//         return new ObservableCacheService(observableCache);
//     }
// 
//     @Provides
//     @AppScope
//     Cached2Service provideCachedService(ObservableCacheService observableCacheService) {
//         return observableCacheService.createObservableCacheService(Cached2Service.class);
//     }
// }


import com.github.aleksandermielczarek.napkin.module.NapkinActivityModule;
import com.github.aleksandermielczarek.napkin.module.NapkinAppModule;
import com.github.aleksandermielczarek.napkin.scope.AppScope;
import com.github.aleksandermielczarek.observablecacheexample.module.Observable1Module;
import com.github.aleksandermielczarek.observablecacheexample.module.Observable2Module;
import dagger.Component;
package com.github.aleksandermielczarek.observablecacheexample.component;



/**
 * Created by Aleksander Mielczarek on 30.10.2016.
 */
@Component(modules = {NapkinAppModule.class, Observable1Module.class, Observable2Module.class})
@AppScope
public interface AppComponent {

// Path: app/src/main/java/com/github/aleksandermielczarek/observablecacheexample/module/Observable1Module.java
// @Module
// @AppScope
// public class Observable1Module {
// 
//     @Provides
//     @AppScope
//     ObservableCache provideObservableCache() {
//         return LruObservableCache.newInstance();
//     }
// 
//     @Provides
//     @AppScope
//     Observable1Service provideObservableService() {
//         return new Observable1Service();
//     }
// 
//     @Provides
//     @AppScope
//     ObservableCacheService provideObservableCacheService(ObservableCache observableCache) {
//         return new ObservableCacheService(observableCache);
//     }
// 
//     @Provides
//     @AppScope
//     Cached1Service provideCachedService(ObservableCacheService observableCacheService) {
//         return observableCacheService.createObservableCacheService(Cached1Service.class);
//     }
// }
// 
// Path: app/src/main/java/com/github/aleksandermielczarek/observablecacheexample/module/Observable2Module.java
// @Module
// @AppScope
// public class Observable2Module {
// 
//     @Provides
//     @AppScope
//     ObservableCache provideObservableCache() {
//         return LruObservableCache.newInstance();
//     }
// 
//     @Provides
//     @AppScope
//     Observable2Service provideObservableService() {
//         return new Observable2Service();
//     }
// 
//     @Provides
//     @AppScope
//     ObservableCacheService provideObservableCacheService(ObservableCache observableCache) {
//         return new ObservableCacheService(observableCache);
//     }
// 
//     @Provides
//     @AppScope
//     Cached2Service provideCachedService(ObservableCacheService observableCacheService) {
//         return observableCacheService.createObservableCacheService(Cached2Service.class);
//     }
// }


// Path: app/src/main/java/com/github/aleksandermielczarek/observablecacheexample/component/AppComponent.java
import com.github.aleksandermielczarek.napkin.module.NapkinActivityModule;
import com.github.aleksandermielczarek.napkin.module.NapkinAppModule;
import com.github.aleksandermielczarek.napkin.scope.AppScope;
import com.github.aleksandermielczarek.observablecacheexample.module.Observable1Module;
import com.github.aleksandermielczarek.observablecacheexample.module.Observable2Module;
import dagger.Component;

package com.github.aleksandermielczarek.observablecacheexample.component;



/**
 * Created by Aleksander Mielczarek on 30.10.2016.
 */
@Component(modules = {NapkinAppModule.class, Observable1Module.class, Observable2Module.class})
@AppScope
public interface AppComponent {

    ActivityComponent with(NapkinActivityModule activityModule);