package com.badoo.chateau.example.data.repos.session; import android.support.annotation.NonNull; import com.badoo.barf.data.repo.annotations.Handles; import com.badoo.chateau.data.models.BaseUser; import rx.Observable; /** * Defines a data source for providing session data for the {@link SessionRepository} */ public interface SessionDataSource { /** * Attempt to sign in as a user with a given name and password * * @return an {@link Observable} which emits the signed in in user. */ @NonNull @Handles(SessionQuery.SignIn.class) Observable<BaseUser> signIn(@NonNull SessionQuery.SignIn query); /** * Signs out the currently signed in user. */ @Handles(SessionQuery.SignOut.class) Observable<Void> signOut(); /** * Attempt to register a user. * <p> * @return an {@link Observable} which emits the registered user. */ @NonNull @Handles(SessionQuery.Register.class) Observable<BaseUser> register(@NonNull SessionQuery.Register query); }