// Path: app/src/main/java/com/tsy/leanote/base/BaseInteractorCallback.java
// public interface BaseInteractorCallback {
//     void onFailure(String msg);
// }
// 
// Path: app/src/main/java/com/tsy/leanote/base/NormalInteractorCallback.java
// public interface NormalInteractorCallback extends BaseInteractorCallback  {
//     void onSuccess();
// }
// 
// Path: app/src/main/java/com/tsy/leanote/feature/user/bean/UserInfo.java
// @Entity
// public class UserInfo {
//     @Id
//     private Long id;
//     @Unique
//     private String uid;
//     private String username;
//     private String email;
//     private String logo;
//     private String token;
//     private boolean verified;       //邮箱是否认证
//     private int last_usn;       //上次同步usn
// 
//     @Generated(hash = 1860533007)
//     public UserInfo(Long id, String uid, String username, String email, String logo,
//             String token, boolean verified, int last_usn) {
//         this.id = id;
//         this.uid = uid;
//         this.username = username;
//         this.email = email;
//         this.logo = logo;
//         this.token = token;
//         this.verified = verified;
//         this.last_usn = last_usn;
//     }
// 
//     @Generated(hash = 1279772520)
//     public UserInfo() {
//     }
// 
//     @Override
//     public String toString() {
//         return "UserInfo{" +
//                 "id=" + id +
//                 ", uid='" + uid + '\'' +
//                 ", username='" + username + '\'' +
//                 ", email='" + email + '\'' +
//                 ", logo='" + logo + '\'' +
//                 ", token='" + token + '\'' +
//                 ", verified=" + verified +
//                 ", last_usn=" + last_usn +
//                 '}';
//     }
// 
//     public Long getId() {
//         return this.id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public String getUid() {
//         return this.uid;
//     }
// 
//     public void setUid(String uid) {
//         this.uid = uid;
//     }
// 
//     public String getUsername() {
//         return this.username;
//     }
// 
//     public void setUsername(String username) {
//         this.username = username;
//     }
// 
//     public String getEmail() {
//         return this.email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getLogo() {
//         return this.logo;
//     }
// 
//     public void setLogo(String logo) {
//         this.logo = logo;
//     }
// 
//     public String getToken() {
//         return this.token;
//     }
// 
//     public void setToken(String token) {
//         this.token = token;
//     }
// 
//     public boolean getVerified() {
//         return this.verified;
//     }
// 
//     public void setVerified(boolean verified) {
//         this.verified = verified;
//     }
// 
//     public int getLast_usn() {
//         return this.last_usn;
//     }
// 
//     public void setLast_usn(int last_usn) {
//         this.last_usn = last_usn;
//     }
// }


import com.tsy.leanote.base.BaseInteractorCallback;
import com.tsy.leanote.base.NormalInteractorCallback;
import com.tsy.leanote.feature.user.bean.UserInfo;
package com.tsy.leanote.feature.user.contract;


/**
 * Created by tsy on 2016/12/13.
 */

public interface UserContract {

    interface Interactor {
        /**
         * 登录
         * @param host
         * @param email
         * @param pwd
         * @param callback
         */
        void login(String host, String email, String pwd, UserCallback callback);

        /**
         * 获取用户信息
         * @param uid
         * @param token
         * @param callback
         */
        void getUserInfo(String uid, String token, UserContract.UserCallback callback);

        /**
         * 获取当前用户
         * @return
         */
        UserInfo getCurUser();

        /**
         * 注册
         * @param host
         * @param email
         * @param pwd
         * @param callback
         */
        void register(String host, String email, String pwd, UserCallback callback);

        /**
         * 退出
         * @param userInfo 当前登录用户
         * @param callback
         */
        void logout(UserInfo userInfo, NormalInteractorCallback callback);

        /**
         * 获取最新同步状态
         * @param userInfo 当前登录用户
         * @param callback
         */
        void getSyncState(UserInfo userInfo, GetSyncStateCallback callback);

        /**
         * 更新最新的同步信息
         * @param userInfo 当前登录用户
         * @param lastSyncUsn 最新同步usn
         */
        void updateLastSyncUsn(UserInfo userInfo, int lastSyncUsn);
    }

// Path: app/src/main/java/com/tsy/leanote/base/BaseInteractorCallback.java
// public interface BaseInteractorCallback {
//     void onFailure(String msg);
// }
// 
// Path: app/src/main/java/com/tsy/leanote/base/NormalInteractorCallback.java
// public interface NormalInteractorCallback extends BaseInteractorCallback  {
//     void onSuccess();
// }
// 
// Path: app/src/main/java/com/tsy/leanote/feature/user/bean/UserInfo.java
// @Entity
// public class UserInfo {
//     @Id
//     private Long id;
//     @Unique
//     private String uid;
//     private String username;
//     private String email;
//     private String logo;
//     private String token;
//     private boolean verified;       //邮箱是否认证
//     private int last_usn;       //上次同步usn
// 
//     @Generated(hash = 1860533007)
//     public UserInfo(Long id, String uid, String username, String email, String logo,
//             String token, boolean verified, int last_usn) {
//         this.id = id;
//         this.uid = uid;
//         this.username = username;
//         this.email = email;
//         this.logo = logo;
//         this.token = token;
//         this.verified = verified;
//         this.last_usn = last_usn;
//     }
// 
//     @Generated(hash = 1279772520)
//     public UserInfo() {
//     }
// 
//     @Override
//     public String toString() {
//         return "UserInfo{" +
//                 "id=" + id +
//                 ", uid='" + uid + '\'' +
//                 ", username='" + username + '\'' +
//                 ", email='" + email + '\'' +
//                 ", logo='" + logo + '\'' +
//                 ", token='" + token + '\'' +
//                 ", verified=" + verified +
//                 ", last_usn=" + last_usn +
//                 '}';
//     }
// 
//     public Long getId() {
//         return this.id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public String getUid() {
//         return this.uid;
//     }
// 
//     public void setUid(String uid) {
//         this.uid = uid;
//     }
// 
//     public String getUsername() {
//         return this.username;
//     }
// 
//     public void setUsername(String username) {
//         this.username = username;
//     }
// 
//     public String getEmail() {
//         return this.email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getLogo() {
//         return this.logo;
//     }
// 
//     public void setLogo(String logo) {
//         this.logo = logo;
//     }
// 
//     public String getToken() {
//         return this.token;
//     }
// 
//     public void setToken(String token) {
//         this.token = token;
//     }
// 
//     public boolean getVerified() {
//         return this.verified;
//     }
// 
//     public void setVerified(boolean verified) {
//         this.verified = verified;
//     }
// 
//     public int getLast_usn() {
//         return this.last_usn;
//     }
// 
//     public void setLast_usn(int last_usn) {
//         this.last_usn = last_usn;
//     }
// }


// Path: app/src/main/java/com/tsy/leanote/feature/user/contract/UserContract.java
import com.tsy.leanote.base.BaseInteractorCallback;
import com.tsy.leanote.base.NormalInteractorCallback;
import com.tsy.leanote.feature.user.bean.UserInfo;

package com.tsy.leanote.feature.user.contract;


/**
 * Created by tsy on 2016/12/13.
 */

public interface UserContract {

    interface Interactor {
        /**
         * 登录
         * @param host
         * @param email
         * @param pwd
         * @param callback
         */
        void login(String host, String email, String pwd, UserCallback callback);

        /**
         * 获取用户信息
         * @param uid
         * @param token
         * @param callback
         */
        void getUserInfo(String uid, String token, UserContract.UserCallback callback);

        /**
         * 获取当前用户
         * @return
         */
        UserInfo getCurUser();

        /**
         * 注册
         * @param host
         * @param email
         * @param pwd
         * @param callback
         */
        void register(String host, String email, String pwd, UserCallback callback);

        /**
         * 退出
         * @param userInfo 当前登录用户
         * @param callback
         */
        void logout(UserInfo userInfo, NormalInteractorCallback callback);

        /**
         * 获取最新同步状态
         * @param userInfo 当前登录用户
         * @param callback
         */
        void getSyncState(UserInfo userInfo, GetSyncStateCallback callback);

        /**
         * 更新最新的同步信息
         * @param userInfo 当前登录用户
         * @param lastSyncUsn 最新同步usn
         */
        void updateLastSyncUsn(UserInfo userInfo, int lastSyncUsn);
    }

    interface UserCallback extends BaseInteractorCallback {