// Path: sample/src/main/java/com/metova/privvy/sample/ui/floatingnumber/buttons/ButtonComponent.java
// @ButtonScope
// @Subcomponent(modules = {ButtonModule.class})
// public interface ButtonComponent {
// 
//     RouteData ROUTE_DATA = RouteData.Builder()
//             .viewType(ViewType.FRAGMENT)
//             .viewClass(ButtonFragment.class)
//             .viewId(R.id.button_component)
//             .build();
// 
//     ButtonContract.Presenter presenter();
// 
//     @Subcomponent.Builder
//     interface Builder {
// 
//         Builder buttonModule(ButtonModule module);
// 
//         ButtonComponent build();
//     }
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/ui/floatingnumber/buttons/ButtonModule.java
// @Module
// public final class ButtonModule {
// 
//     public ButtonModule() {
//     }
// 
//     @Provides
//     @ButtonScope
//     ButtonContract.Presenter providePresenter(ButtonContract.Interactor interactor, NumberUpdateYoke numberUpdateYoke) {
//         return new ButtonPresenter(interactor, numberUpdateYoke);
//     }
// 
//     @Provides
//     @ButtonScope
//     ButtonContract.Interactor provideInteractor(FakeDb fakeDb) {
//         return new ButtonInteractor(fakeDb);
//     }
// 
//     @Provides
//     @ButtonScope
//     ButtonContract.Router provideButtonRouter(PrivvyHost host) {
//         return new ButtonRouter(host);
//     }
// 
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/ui/list/ListComponent.java
// @ListScope
// @Subcomponent(modules = {ListModule.class})
// public interface ListComponent {
// 
//     RouteData ROUTE_DATA = RouteData.Builder()
//             .viewType(ViewType.ACTIVITY)
//             .viewClass(ListActivity.class)
//             .build();
// 
//     ListContract.Presenter presenter();
// 
//     @Subcomponent.Builder
//     interface Builder {
//         Builder listModule(ListModule module);
// 
//         ListComponent build();
//     }
// 
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/ui/list/ListModule.java
// @Module
// public class ListModule {
// 
//     public ListModule() {
// 
//     }
// 
//     @Provides
//     @ListScope
//     ListContract.Presenter providePresenter(ListContract.Interactor interactor) {
//         return new ListPresenter(interactor);
//     }
// 
//     @Provides
//     @ListScope
//     ListContract.Interactor provideInteractor(FakeDb fakeDb, ListContract.Router router) {
//         return new ListInteractor(fakeDb, router);
//     }
// 
//     @Provides
//     @ListScope
//     ListContract.Router provideRouter(PrivvyHost host) {
//         return new ListRouter(host);
//     }
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/ui/floatingnumber/number/NumberComponent.java
// @NumberScope
// @Subcomponent(modules = {NumberModule.class})
// public interface NumberComponent {
// 
//     RouteData ROUTE_DATA = RouteData.Builder()
//             .viewType(ViewType.FRAGMENT)
//             .viewClass(NumberFragment.class)
//             .viewId(R.id.number_component)
//             .build();
// 
//     NumberContract.Presenter presenter();
// 
//     @Subcomponent.Builder
//     interface Builder {
//         Builder numberModule(NumberModule module);
// 
//         NumberComponent build();
//     }
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/ui/floatingnumber/number/NumberModule.java
// @Module
// public final class NumberModule {
// 
//     @Provides
//     @NumberScope
//     NumberContract.Presenter providePresenter(NumberContract.Interactor interactor, NumberUpdateYoke numberUpdateYoke) {
//         return new NumberPresenter(interactor, numberUpdateYoke);
//     }
// 
//     @Provides
//     @NumberScope
//     NumberContract.Interactor provideInteractor(FakeDb fakeDb, NumberContract.Router router) {
//         return new NumberInteractor(router, fakeDb);
//     }
// 
//     @Provides
//     @NumberScope
//     NumberContract.Router provideRouter(PrivvyHost host) {
//         return new NumberRouter(host);
//     }
// 
// 
// }


import com.metova.privvy.sample.ui.floatingnumber.buttons.ButtonComponent;
import com.metova.privvy.sample.ui.floatingnumber.buttons.ButtonModule;
import com.metova.privvy.sample.ui.list.ListComponent;
import com.metova.privvy.sample.ui.list.ListModule;
import com.metova.privvy.sample.ui.floatingnumber.number.NumberComponent;
import com.metova.privvy.sample.ui.floatingnumber.number.NumberModule;
import dagger.Module;
import dagger.Provides;
package com.metova.privvy.sample.di;



@Module(subcomponents = {
        NumberComponent.class,
        ButtonComponent.class,
        ListComponent.class,
//        SkeletonComponent.class
})
public class PrivvyModule {

    @Provides
    @PrivvyScope
    NumberComponent provideNumberComponent(NumberComponent.Builder builder) {
        return builder.numberModule(new NumberModule()).build();
    }

    @Provides
    @PrivvyScope
    ButtonComponent provideButtonComponent(ButtonComponent.Builder builder) {
        return builder.buttonModule(new ButtonModule()).build();
    }

// Path: sample/src/main/java/com/metova/privvy/sample/ui/floatingnumber/buttons/ButtonComponent.java
// @ButtonScope
// @Subcomponent(modules = {ButtonModule.class})
// public interface ButtonComponent {
// 
//     RouteData ROUTE_DATA = RouteData.Builder()
//             .viewType(ViewType.FRAGMENT)
//             .viewClass(ButtonFragment.class)
//             .viewId(R.id.button_component)
//             .build();
// 
//     ButtonContract.Presenter presenter();
// 
//     @Subcomponent.Builder
//     interface Builder {
// 
//         Builder buttonModule(ButtonModule module);
// 
//         ButtonComponent build();
//     }
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/ui/floatingnumber/buttons/ButtonModule.java
// @Module
// public final class ButtonModule {
// 
//     public ButtonModule() {
//     }
// 
//     @Provides
//     @ButtonScope
//     ButtonContract.Presenter providePresenter(ButtonContract.Interactor interactor, NumberUpdateYoke numberUpdateYoke) {
//         return new ButtonPresenter(interactor, numberUpdateYoke);
//     }
// 
//     @Provides
//     @ButtonScope
//     ButtonContract.Interactor provideInteractor(FakeDb fakeDb) {
//         return new ButtonInteractor(fakeDb);
//     }
// 
//     @Provides
//     @ButtonScope
//     ButtonContract.Router provideButtonRouter(PrivvyHost host) {
//         return new ButtonRouter(host);
//     }
// 
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/ui/list/ListComponent.java
// @ListScope
// @Subcomponent(modules = {ListModule.class})
// public interface ListComponent {
// 
//     RouteData ROUTE_DATA = RouteData.Builder()
//             .viewType(ViewType.ACTIVITY)
//             .viewClass(ListActivity.class)
//             .build();
// 
//     ListContract.Presenter presenter();
// 
//     @Subcomponent.Builder
//     interface Builder {
//         Builder listModule(ListModule module);
// 
//         ListComponent build();
//     }
// 
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/ui/list/ListModule.java
// @Module
// public class ListModule {
// 
//     public ListModule() {
// 
//     }
// 
//     @Provides
//     @ListScope
//     ListContract.Presenter providePresenter(ListContract.Interactor interactor) {
//         return new ListPresenter(interactor);
//     }
// 
//     @Provides
//     @ListScope
//     ListContract.Interactor provideInteractor(FakeDb fakeDb, ListContract.Router router) {
//         return new ListInteractor(fakeDb, router);
//     }
// 
//     @Provides
//     @ListScope
//     ListContract.Router provideRouter(PrivvyHost host) {
//         return new ListRouter(host);
//     }
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/ui/floatingnumber/number/NumberComponent.java
// @NumberScope
// @Subcomponent(modules = {NumberModule.class})
// public interface NumberComponent {
// 
//     RouteData ROUTE_DATA = RouteData.Builder()
//             .viewType(ViewType.FRAGMENT)
//             .viewClass(NumberFragment.class)
//             .viewId(R.id.number_component)
//             .build();
// 
//     NumberContract.Presenter presenter();
// 
//     @Subcomponent.Builder
//     interface Builder {
//         Builder numberModule(NumberModule module);
// 
//         NumberComponent build();
//     }
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/ui/floatingnumber/number/NumberModule.java
// @Module
// public final class NumberModule {
// 
//     @Provides
//     @NumberScope
//     NumberContract.Presenter providePresenter(NumberContract.Interactor interactor, NumberUpdateYoke numberUpdateYoke) {
//         return new NumberPresenter(interactor, numberUpdateYoke);
//     }
// 
//     @Provides
//     @NumberScope
//     NumberContract.Interactor provideInteractor(FakeDb fakeDb, NumberContract.Router router) {
//         return new NumberInteractor(router, fakeDb);
//     }
// 
//     @Provides
//     @NumberScope
//     NumberContract.Router provideRouter(PrivvyHost host) {
//         return new NumberRouter(host);
//     }
// 
// 
// }


// Path: sample/src/main/java/com/metova/privvy/sample/di/PrivvyModule.java
import com.metova.privvy.sample.ui.floatingnumber.buttons.ButtonComponent;
import com.metova.privvy.sample.ui.floatingnumber.buttons.ButtonModule;
import com.metova.privvy.sample.ui.list.ListComponent;
import com.metova.privvy.sample.ui.list.ListModule;
import com.metova.privvy.sample.ui.floatingnumber.number.NumberComponent;
import com.metova.privvy.sample.ui.floatingnumber.number.NumberModule;
import dagger.Module;
import dagger.Provides;

package com.metova.privvy.sample.di;



@Module(subcomponents = {
        NumberComponent.class,
        ButtonComponent.class,
        ListComponent.class,
//        SkeletonComponent.class
})
public class PrivvyModule {

    @Provides
    @PrivvyScope
    NumberComponent provideNumberComponent(NumberComponent.Builder builder) {
        return builder.numberModule(new NumberModule()).build();
    }

    @Provides
    @PrivvyScope
    ButtonComponent provideButtonComponent(ButtonComponent.Builder builder) {
        return builder.buttonModule(new ButtonModule()).build();
    }

    @Provides