// Path: RxDbFlow-Rx2/src/main/java/au/com/roadhouse/rxdbflow/rx2/sql/observables/DBFlowMaybe.java
// public abstract class DBFlowMaybe<T> extends Maybe<T> implements ValueAction<T> {
// 
//     /**
//      * Observes changes on the current table, restarting the query on change and emits the new count
//      * to any subscribers
//      * @return An observable which observes any changes in the current table
//      */
//     public final Observable<T> restartOnChange(){
//         return new DBFlowRestartOnChange<>(this.toObservable(), new Class[]{getPrimaryModelClass()}, this);
//     }
// 
//     /**
//      * Observes changes for specific tables, restarting the query on change and emits the new count
//      * to any subscribers
//      * @param tableToListen The tables to observe for changes
//      * @return An observable which observes any changes in the specified tables
//      */
//     public final Observable<T> restartOnChange(Class... tableToListen){
//         return new DBFlowRestartOnChange<>(this.toObservable(), tableToListen, this);
//     }
// 
//     /**
//      * Returns the class for the primary table model effected by this query
//      * @return The class for the primary table model
//      */
//     protected abstract Class getPrimaryModelClass();
// 
// }
// 
// Path: RxDbFlow-Rx2/src/main/java/au/com/roadhouse/rxdbflow/rx2/sql/observables/DBFlowSingle.java
// public abstract class DBFlowSingle<T> extends Single<T> implements ValueAction<T> {
// 
//     /**
//      * Observes changes on the current table, restarting the query on change and emits the new count
//      * to any subscribers
//      * @return An observable which observes any changes in the current table
//      */
//     public final Observable<T> restartOnChange(){
//         return new DBFlowRestartOnChange<>(this.toObservable(), new Class[]{getPrimaryModelClass()}, this);
//     }
// 
//     /**
//      * Observes changes for specific tables, restarting the query on change and emits the new count
//      * to any subscribers
//      * @param tableToListen The tables to observe for changes
//      * @return An observable which observes any changes in the specified tables
//      */
//     public final Observable<T> restartOnChange(Class... tableToListen){
//         return new DBFlowRestartOnChange<>(this.toObservable(), tableToListen, this);
//     }
// 
//     /**
//      * Returns the class for the primary table model effected by this query
//      * @return The class for the primary table model
//      */
//     protected abstract Class getPrimaryModelClass();
// 
// }


import com.raizlabs.android.dbflow.list.FlowCursorList;
import com.raizlabs.android.dbflow.list.FlowQueryList;
import com.raizlabs.android.dbflow.sql.language.CursorResult;
import com.raizlabs.android.dbflow.structure.BaseQueryModel;
import com.raizlabs.android.dbflow.structure.database.DatabaseWrapper;
import java.util.List;
import au.com.roadhouse.rxdbflow.rx2.sql.observables.DBFlowMaybe;
import au.com.roadhouse.rxdbflow.rx2.sql.observables.DBFlowSingle;
package au.com.roadhouse.rxdbflow.rx2.sql.language;





public interface ModelQueriableObservable<TModel> extends QueriableObservable {

    /**
     * Creates an Single that emits a single model from a query. This will be the first record
     * returned by the query.
     * @return An Single that emits a single model
     */
    DBFlowSingle<TModel> asSingle();

    /**
     * Creates an Maybe that emits a single model or null from a query. This will be the first record
     * returned by the query or null if the query was empty.
     * @return An Single that emits a single model
     */
// Path: RxDbFlow-Rx2/src/main/java/au/com/roadhouse/rxdbflow/rx2/sql/observables/DBFlowMaybe.java
// public abstract class DBFlowMaybe<T> extends Maybe<T> implements ValueAction<T> {
// 
//     /**
//      * Observes changes on the current table, restarting the query on change and emits the new count
//      * to any subscribers
//      * @return An observable which observes any changes in the current table
//      */
//     public final Observable<T> restartOnChange(){
//         return new DBFlowRestartOnChange<>(this.toObservable(), new Class[]{getPrimaryModelClass()}, this);
//     }
// 
//     /**
//      * Observes changes for specific tables, restarting the query on change and emits the new count
//      * to any subscribers
//      * @param tableToListen The tables to observe for changes
//      * @return An observable which observes any changes in the specified tables
//      */
//     public final Observable<T> restartOnChange(Class... tableToListen){
//         return new DBFlowRestartOnChange<>(this.toObservable(), tableToListen, this);
//     }
// 
//     /**
//      * Returns the class for the primary table model effected by this query
//      * @return The class for the primary table model
//      */
//     protected abstract Class getPrimaryModelClass();
// 
// }
// 
// Path: RxDbFlow-Rx2/src/main/java/au/com/roadhouse/rxdbflow/rx2/sql/observables/DBFlowSingle.java
// public abstract class DBFlowSingle<T> extends Single<T> implements ValueAction<T> {
// 
//     /**
//      * Observes changes on the current table, restarting the query on change and emits the new count
//      * to any subscribers
//      * @return An observable which observes any changes in the current table
//      */
//     public final Observable<T> restartOnChange(){
//         return new DBFlowRestartOnChange<>(this.toObservable(), new Class[]{getPrimaryModelClass()}, this);
//     }
// 
//     /**
//      * Observes changes for specific tables, restarting the query on change and emits the new count
//      * to any subscribers
//      * @param tableToListen The tables to observe for changes
//      * @return An observable which observes any changes in the specified tables
//      */
//     public final Observable<T> restartOnChange(Class... tableToListen){
//         return new DBFlowRestartOnChange<>(this.toObservable(), tableToListen, this);
//     }
// 
//     /**
//      * Returns the class for the primary table model effected by this query
//      * @return The class for the primary table model
//      */
//     protected abstract Class getPrimaryModelClass();
// 
// }


// Path: RxDbFlow-Rx2/src/main/java/au/com/roadhouse/rxdbflow/rx2/sql/language/ModelQueriableObservable.java
import com.raizlabs.android.dbflow.list.FlowCursorList;
import com.raizlabs.android.dbflow.list.FlowQueryList;
import com.raizlabs.android.dbflow.sql.language.CursorResult;
import com.raizlabs.android.dbflow.structure.BaseQueryModel;
import com.raizlabs.android.dbflow.structure.database.DatabaseWrapper;
import java.util.List;
import au.com.roadhouse.rxdbflow.rx2.sql.observables.DBFlowMaybe;
import au.com.roadhouse.rxdbflow.rx2.sql.observables.DBFlowSingle;

package au.com.roadhouse.rxdbflow.rx2.sql.language;





public interface ModelQueriableObservable<TModel> extends QueriableObservable {

    /**
     * Creates an Single that emits a single model from a query. This will be the first record
     * returned by the query.
     * @return An Single that emits a single model
     */
    DBFlowSingle<TModel> asSingle();

    /**
     * Creates an Maybe that emits a single model or null from a query. This will be the first record
     * returned by the query or null if the query was empty.
     * @return An Single that emits a single model
     */
    DBFlowMaybe<TModel> asMaybe();