// Path: app/src/main/java/com/lucilu/rxdynamicsearch/activities/MainActivity.java
// public final class MainActivity extends BaseActivity {
// 
//     @Nullable
//     private MainActivityComponent mComponent;
// 
//     @Override
//     protected void onCreate(@Nullable final Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         setContentView(R.layout.activity_main);
//     }
// 
//     @Override
//     protected void onBind(@NonNull final CompositeSubscription subscription) {
//         // DO nothing (for now)
//     }
// 
//     @Override
//     public void onInject() {
//         mComponent = createComponent();
//         mComponent.inject(this);
//     }
// 
//     @NonNull
//     public MainActivityComponent getComponent() {
//         return get(mComponent);
//     }
// 
//     private MainActivityComponent createComponent() {
//         SearchApplication app = (SearchApplication) getApplication();
//         ActivityModule activityModule = new ActivityModule(this);
// 
//         return app.getAppComponent().plusMainActivity(activityModule);
//     }
// }
// 
// Path: app/src/main/java/com/lucilu/rxdynamicsearch/dagger/module/ActivityModule.java
// @Module
// public final class ActivityModule {
// 
//     @NonNull
//     private final Activity mActivity;
// 
//     public ActivityModule(@NonNull final Activity activity) {
//         mActivity = get(activity);
//     }
// 
//     @ActivityScope
//     @Provides
//     Activity providesActivity() {
//         return mActivity;
//     }
// 
//     @ActivityScope
//     @ForActivity
//     @Provides
//     Context providesActivityContext() {
//         return mActivity;
//     }
// }
// 
// Path: app/src/main/java/com/lucilu/rxdynamicsearch/dagger/module/RepositoryModule.java
// @Module
// public final class RepositoryModule {
// 
//     @Provides
//     ICountryRepository provideCountryRepository(final IJsonParserProvider jsonParserProvider) {
//         return new CountryRepository(jsonParserProvider);
//     }
// }
// 
// Path: app/src/main/java/com/lucilu/rxdynamicsearch/dagger/module/SearchFragmentModule.java
// @Module
// public final class SearchFragmentModule {
// 
//     @NonNull
//     private final Observable<CharSequence> mQueryStream;
// 
//     public SearchFragmentModule(@NonNull final Observable<CharSequence> queryStream) {
//         mQueryStream = get(queryStream);
//     }
// 
//     @FragmentScope
//     @Provides
//     Observable<CharSequence> providesQueryStream() {
//         return mQueryStream;
//     }
// }


import com.lucilu.rxdynamicsearch.activities.MainActivity;
import com.lucilu.rxdynamicsearch.dagger.Scopes.ActivityScope;
import com.lucilu.rxdynamicsearch.dagger.module.ActivityModule;
import com.lucilu.rxdynamicsearch.dagger.module.RepositoryModule;
import com.lucilu.rxdynamicsearch.dagger.module.SearchFragmentModule;
import dagger.Subcomponent;
package com.lucilu.rxdynamicsearch.dagger.component;



/**
 * {@link MainActivity} component.
 */
@ActivityScope
@Subcomponent(modules = {ActivityModule.class, RepositoryModule.class})
public interface MainActivityComponent {

    void inject(MainActivity activity);

// Path: app/src/main/java/com/lucilu/rxdynamicsearch/activities/MainActivity.java
// public final class MainActivity extends BaseActivity {
// 
//     @Nullable
//     private MainActivityComponent mComponent;
// 
//     @Override
//     protected void onCreate(@Nullable final Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         setContentView(R.layout.activity_main);
//     }
// 
//     @Override
//     protected void onBind(@NonNull final CompositeSubscription subscription) {
//         // DO nothing (for now)
//     }
// 
//     @Override
//     public void onInject() {
//         mComponent = createComponent();
//         mComponent.inject(this);
//     }
// 
//     @NonNull
//     public MainActivityComponent getComponent() {
//         return get(mComponent);
//     }
// 
//     private MainActivityComponent createComponent() {
//         SearchApplication app = (SearchApplication) getApplication();
//         ActivityModule activityModule = new ActivityModule(this);
// 
//         return app.getAppComponent().plusMainActivity(activityModule);
//     }
// }
// 
// Path: app/src/main/java/com/lucilu/rxdynamicsearch/dagger/module/ActivityModule.java
// @Module
// public final class ActivityModule {
// 
//     @NonNull
//     private final Activity mActivity;
// 
//     public ActivityModule(@NonNull final Activity activity) {
//         mActivity = get(activity);
//     }
// 
//     @ActivityScope
//     @Provides
//     Activity providesActivity() {
//         return mActivity;
//     }
// 
//     @ActivityScope
//     @ForActivity
//     @Provides
//     Context providesActivityContext() {
//         return mActivity;
//     }
// }
// 
// Path: app/src/main/java/com/lucilu/rxdynamicsearch/dagger/module/RepositoryModule.java
// @Module
// public final class RepositoryModule {
// 
//     @Provides
//     ICountryRepository provideCountryRepository(final IJsonParserProvider jsonParserProvider) {
//         return new CountryRepository(jsonParserProvider);
//     }
// }
// 
// Path: app/src/main/java/com/lucilu/rxdynamicsearch/dagger/module/SearchFragmentModule.java
// @Module
// public final class SearchFragmentModule {
// 
//     @NonNull
//     private final Observable<CharSequence> mQueryStream;
// 
//     public SearchFragmentModule(@NonNull final Observable<CharSequence> queryStream) {
//         mQueryStream = get(queryStream);
//     }
// 
//     @FragmentScope
//     @Provides
//     Observable<CharSequence> providesQueryStream() {
//         return mQueryStream;
//     }
// }


// Path: app/src/main/java/com/lucilu/rxdynamicsearch/dagger/component/MainActivityComponent.java
import com.lucilu.rxdynamicsearch.activities.MainActivity;
import com.lucilu.rxdynamicsearch.dagger.Scopes.ActivityScope;
import com.lucilu.rxdynamicsearch.dagger.module.ActivityModule;
import com.lucilu.rxdynamicsearch.dagger.module.RepositoryModule;
import com.lucilu.rxdynamicsearch.dagger.module.SearchFragmentModule;
import dagger.Subcomponent;

package com.lucilu.rxdynamicsearch.dagger.component;



/**
 * {@link MainActivity} component.
 */
@ActivityScope
@Subcomponent(modules = {ActivityModule.class, RepositoryModule.class})
public interface MainActivityComponent {

    void inject(MainActivity activity);

    CountryListComponent plusSearchFragment(SearchFragmentModule module);