// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/data/models/Person.java
// public class Person extends Entity {
//     private String firstName;
//     private String lastName;
//     private String image;
//     private int age;
// 
// 
//     public Person() {}
// 
//     @Override
//     public String getId() {
//         return (String)super.getId();
//     }
// 
//     public String getFirstName() {
//         return firstName;
//     }
// 
//     public void setFirstName(String firstName) {
//         this.firstName = firstName;
//     }
// 
//     public String getLastName() {
//         return lastName;
//     }
// 
//     public void setLastName(String lastName) {
//         this.lastName = lastName;
//     }
// 
//     public int getAge() {
//         return age;
//     }
// 
//     public void setAge(int age) {
//         this.age = age;
//     }
// 
//     public String getImage() {
//         return image;
//     }
// 
//     public void setImage(String image) {
//         this.image = image;
//     }
// }
// 
// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/ui/IBasePresenter.java
// public interface IBasePresenter<IView extends IBaseView> {
//     /**
//      * Gets the presenter's current view.
//      * @return {@link IView}
//      */
//     IView getView();
// 
//     /**
//      * Attaches the given view to the presenter.
//      * @param view {@link IView}
//      */
//     void attach(IView view);
// 
//     /**
//      * Detaches the presenter's current view.
//      */
//     void detach();
// 
//     /**
//      * Stops any active or pending use case executions.
//      */
//     void stopTasks();
// }
// 
// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/ui/IBaseView.java
// public interface IBaseView {
//     /**
//      * Shows a message to the user on the screen.
//      * @param msg Message to display
//      */
//     void onShowMsg(String msg);
// 
//     /**
//      * Checks if the current device is online.
//      * @return True if device is online
//      */
//     boolean isDeviceOnline();
// }


import com.tylersuehr.cleanarchitecture.data.models.Person;
import com.tylersuehr.cleanarchitecture.ui.IBasePresenter;
import com.tylersuehr.cleanarchitecture.ui.IBaseView;
import java.util.List;
package com.tylersuehr.cleanarchitecture.ui.people;



/**
 * Copyright © 2017 Tyler Suehr
 *
 * A contract to define the decouple presenter and view for conceptual people.
 *
 * @author Tyler Suehr
 * @version 1.0
 */
interface PeopleContract {
    /**
     * Defines core methods for people presenter.
     */
    interface IPeoplePresenter extends IBasePresenter<IPeopleView> {
        void loadPeople();
        void createPerson(String first, String last, int age);
        void deleteAllPeople();
    }

    /**
     * Defines core methods for people view.
     */
    interface IPeopleView extends IBaseView {
        void onPeopleReady(List<Person> people);
// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/data/models/Person.java
// public class Person extends Entity {
//     private String firstName;
//     private String lastName;
//     private String image;
//     private int age;
// 
// 
//     public Person() {}
// 
//     @Override
//     public String getId() {
//         return (String)super.getId();
//     }
// 
//     public String getFirstName() {
//         return firstName;
//     }
// 
//     public void setFirstName(String firstName) {
//         this.firstName = firstName;
//     }
// 
//     public String getLastName() {
//         return lastName;
//     }
// 
//     public void setLastName(String lastName) {
//         this.lastName = lastName;
//     }
// 
//     public int getAge() {
//         return age;
//     }
// 
//     public void setAge(int age) {
//         this.age = age;
//     }
// 
//     public String getImage() {
//         return image;
//     }
// 
//     public void setImage(String image) {
//         this.image = image;
//     }
// }
// 
// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/ui/IBasePresenter.java
// public interface IBasePresenter<IView extends IBaseView> {
//     /**
//      * Gets the presenter's current view.
//      * @return {@link IView}
//      */
//     IView getView();
// 
//     /**
//      * Attaches the given view to the presenter.
//      * @param view {@link IView}
//      */
//     void attach(IView view);
// 
//     /**
//      * Detaches the presenter's current view.
//      */
//     void detach();
// 
//     /**
//      * Stops any active or pending use case executions.
//      */
//     void stopTasks();
// }
// 
// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/ui/IBaseView.java
// public interface IBaseView {
//     /**
//      * Shows a message to the user on the screen.
//      * @param msg Message to display
//      */
//     void onShowMsg(String msg);
// 
//     /**
//      * Checks if the current device is online.
//      * @return True if device is online
//      */
//     boolean isDeviceOnline();
// }


// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/ui/people/PeopleContract.java
import com.tylersuehr.cleanarchitecture.data.models.Person;
import com.tylersuehr.cleanarchitecture.ui.IBasePresenter;
import com.tylersuehr.cleanarchitecture.ui.IBaseView;
import java.util.List;

package com.tylersuehr.cleanarchitecture.ui.people;



/**
 * Copyright © 2017 Tyler Suehr
 *
 * A contract to define the decouple presenter and view for conceptual people.
 *
 * @author Tyler Suehr
 * @version 1.0
 */
interface PeopleContract {
    /**
     * Defines core methods for people presenter.
     */
    interface IPeoplePresenter extends IBasePresenter<IPeopleView> {
        void loadPeople();
        void createPerson(String first, String last, int age);
        void deleteAllPeople();
    }

    /**
     * Defines core methods for people view.
     */
    interface IPeopleView extends IBaseView {
        void onPeopleReady(List<Person> people);
        void onPeopleUnavailable();