// Path: privvy/src/main/java/com/metova/privvy/PrivvyHost.java
// public interface PrivvyHost {
// 
//     void initialize(RouteData... routes);
// 
//     void replace(RouteData oldComponent, RouteData newComponent);
// 
//     void goTo(RouteData newComponent);
// }
// 
// Path: privvy/src/main/java/com/metova/privvy/RouteData.java
// @AutoValue
// public abstract class RouteData {
// 
//     public abstract ViewType viewType();
//     public abstract Class<?> viewClass();
//     public abstract int viewId();
// 
//     public static Builder Builder() {
//         return new AutoValue_RouteData.Builder().viewId(0);
//     }
// 
//     public String tag() {
//         return viewClass().getSimpleName();
//     }
// 
//     @AutoValue.Builder
//     public interface Builder {
//         Builder viewType(ViewType viewType);
//         Builder viewClass(Class<?> viewClass);
//         Builder viewId(@IdRes int viewId);
//         RouteData build();
//     }
// }
// 
// Path: privvy/src/main/java/com/metova/privvy/ViewType.java
// public enum ViewType {
//     ACTIVITY,
//     FRAGMENT
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/MainActivity.java
// public class MainActivity extends AppCompatActivity implements PrivvyHost {
// 
//     public HostComponent hostComponent;
// 
//     private PrivvyHostDelegate hostDelegate;
// 
//     @Override
//     protected void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
// 
//         hostComponent = SampleApplication.component.newHost()
//                 .hostModule(new HostModule(this))
//                 .build();
// 
//         hostDelegate = new PrivvyHostDelegate(this);
// 
//         setContentView(R.layout.main_activity);
// 
//         initialize(NumberComponent.ROUTE_DATA, ButtonComponent.ROUTE_DATA);
//     }
// 
//     @Override
//     public void initialize(RouteData... routeData) {
//         hostDelegate.initialize(routeData);
//     }
// 
//     @Override
//     public void replace(RouteData oldComponent, RouteData newComponent) {
//         hostDelegate.replace(oldComponent, newComponent);
//     }
// 
//     @Override
//     public void goTo(RouteData newComponent) {
//         hostDelegate.goTo(newComponent);
//     }
// }
// 
// Path: privvy/src/main/java/com/metova/privvy/PrivvyRouter.java
// public class PrivvyRouter implements PrivvyContract.Router {
// 
//     private PrivvyHost host;
// 
//     public PrivvyRouter(PrivvyHost host) {
//         this.host = host;
//     }
// 
//     @Override
//     public PrivvyHost getHost() {
//         return host;
//     }
// 
// }


import com.metova.privvy.PrivvyHost;
import com.metova.privvy.RouteData;
import com.metova.privvy.ViewType;
import com.metova.privvy.sample.MainActivity;
import com.metova.privvy.PrivvyRouter;
package com.metova.privvy.sample.ui.list;


class ListRouter extends PrivvyRouter implements ListContract.Router {

    ListRouter(PrivvyHost host) {
        super(host);
    }

    @Override
    public void navigateToMain() {
// Path: privvy/src/main/java/com/metova/privvy/PrivvyHost.java
// public interface PrivvyHost {
// 
//     void initialize(RouteData... routes);
// 
//     void replace(RouteData oldComponent, RouteData newComponent);
// 
//     void goTo(RouteData newComponent);
// }
// 
// Path: privvy/src/main/java/com/metova/privvy/RouteData.java
// @AutoValue
// public abstract class RouteData {
// 
//     public abstract ViewType viewType();
//     public abstract Class<?> viewClass();
//     public abstract int viewId();
// 
//     public static Builder Builder() {
//         return new AutoValue_RouteData.Builder().viewId(0);
//     }
// 
//     public String tag() {
//         return viewClass().getSimpleName();
//     }
// 
//     @AutoValue.Builder
//     public interface Builder {
//         Builder viewType(ViewType viewType);
//         Builder viewClass(Class<?> viewClass);
//         Builder viewId(@IdRes int viewId);
//         RouteData build();
//     }
// }
// 
// Path: privvy/src/main/java/com/metova/privvy/ViewType.java
// public enum ViewType {
//     ACTIVITY,
//     FRAGMENT
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/MainActivity.java
// public class MainActivity extends AppCompatActivity implements PrivvyHost {
// 
//     public HostComponent hostComponent;
// 
//     private PrivvyHostDelegate hostDelegate;
// 
//     @Override
//     protected void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
// 
//         hostComponent = SampleApplication.component.newHost()
//                 .hostModule(new HostModule(this))
//                 .build();
// 
//         hostDelegate = new PrivvyHostDelegate(this);
// 
//         setContentView(R.layout.main_activity);
// 
//         initialize(NumberComponent.ROUTE_DATA, ButtonComponent.ROUTE_DATA);
//     }
// 
//     @Override
//     public void initialize(RouteData... routeData) {
//         hostDelegate.initialize(routeData);
//     }
// 
//     @Override
//     public void replace(RouteData oldComponent, RouteData newComponent) {
//         hostDelegate.replace(oldComponent, newComponent);
//     }
// 
//     @Override
//     public void goTo(RouteData newComponent) {
//         hostDelegate.goTo(newComponent);
//     }
// }
// 
// Path: privvy/src/main/java/com/metova/privvy/PrivvyRouter.java
// public class PrivvyRouter implements PrivvyContract.Router {
// 
//     private PrivvyHost host;
// 
//     public PrivvyRouter(PrivvyHost host) {
//         this.host = host;
//     }
// 
//     @Override
//     public PrivvyHost getHost() {
//         return host;
//     }
// 
// }


// Path: sample/src/main/java/com/metova/privvy/sample/ui/list/ListRouter.java
import com.metova.privvy.PrivvyHost;
import com.metova.privvy.RouteData;
import com.metova.privvy.ViewType;
import com.metova.privvy.sample.MainActivity;
import com.metova.privvy.PrivvyRouter;

package com.metova.privvy.sample.ui.list;


class ListRouter extends PrivvyRouter implements ListContract.Router {

    ListRouter(PrivvyHost host) {
        super(host);
    }

    @Override
    public void navigateToMain() {
        getHost().goTo(RouteData.Builder().viewType(ViewType.ACTIVITY).viewClass(MainActivity.class).build());