// Path: easymvp-rx2-api/src/main/java/easymvp/executer/PostExecutionThread.java
// public interface PostExecutionThread {
//     Scheduler getScheduler();
// }
// 
// Path: easymvp-rx-api/src/main/java/easymvp/executer/UseCaseExecutor.java
// public interface UseCaseExecutor {
//     Scheduler getScheduler();
// }


import javax.annotation.Nullable;
import easymvp.executer.PostExecutionThread;
import easymvp.executer.UseCaseExecutor;
import rx.Completable;
package easymvp.usecase;




/**
 * Reactive version of a {@link UseCase}.
 * <p>
 * It's useful for use-cases without any response value.
 *
 * @param <Q> The request value.
 * @author Saeed Masoumi (saeed@6thsolution.com)
 * @see Completable
 */
public abstract class CompletableUseCase<Q> extends UseCase<Completable, Q> {

    private final Completable.Transformer schedulersTransformer;

// Path: easymvp-rx2-api/src/main/java/easymvp/executer/PostExecutionThread.java
// public interface PostExecutionThread {
//     Scheduler getScheduler();
// }
// 
// Path: easymvp-rx-api/src/main/java/easymvp/executer/UseCaseExecutor.java
// public interface UseCaseExecutor {
//     Scheduler getScheduler();
// }


// Path: easymvp-rx-api/src/main/java/easymvp/usecase/CompletableUseCase.java
import javax.annotation.Nullable;
import easymvp.executer.PostExecutionThread;
import easymvp.executer.UseCaseExecutor;
import rx.Completable;

package easymvp.usecase;




/**
 * Reactive version of a {@link UseCase}.
 * <p>
 * It's useful for use-cases without any response value.
 *
 * @param <Q> The request value.
 * @author Saeed Masoumi (saeed@6thsolution.com)
 * @see Completable
 */
public abstract class CompletableUseCase<Q> extends UseCase<Completable, Q> {

    private final Completable.Transformer schedulersTransformer;

    public CompletableUseCase(final UseCaseExecutor useCaseExecutor,