// Path: data/src/main/java/com/sloydev/redbooth/data/repository/TaskDataRepository.java
// public class TaskDataRepository implements TaskRepository {
// 
//     private final TaskEntityMapper taskEntityMapper;
//     private final TaskDataSource taskDataSource;
// 
//     @Inject public TaskDataRepository(TaskEntityMapper taskEntityMapper, TaskDataSource taskDataSource) {
//         this.taskEntityMapper = taskEntityMapper;
//         this.taskDataSource = taskDataSource;
//     }
// 
//     @Override public List<Task> getAll() {
//         return taskEntityMapper.transform(taskDataSource.getTasks());
//     }
// 
//     @Override public Task put(Task task) {
//         TaskEntity createdTask = taskDataSource.createTask(taskEntityMapper.transform(task));
//         return taskEntityMapper.transform(createdTask);
//     }
// }
// 
// Path: data/src/main/java/com/sloydev/redbooth/data/repository/TaskListDataRepository.java
// public class TaskListDataRepository implements TaskListRepository {
// 
//     private final TaskListDataSource taskListDataSource;
//     private final TaskListEntityMapper taskListEntityMapper;
// 
//     @Inject public TaskListDataRepository(TaskListDataSource taskListDataSource, TaskListEntityMapper taskListEntityMapper) {
//         this.taskListDataSource = taskListDataSource;
//         this.taskListEntityMapper = taskListEntityMapper;
//     }
// 
//     @Override public List<TaskList> getAll() {
//         return taskListEntityMapper.transform(taskListDataSource.getTaskLists());
//     }
// }
// 
// Path: data/src/main/java/com/sloydev/redbooth/data/repository/datasource/CloudTaskDataSource.java
// public class CloudTaskDataSource implements TaskDataSource {
// 
//     private final RedboothApi redboothApi;
// 
//     @Inject public CloudTaskDataSource(RedboothApi redboothApi) {
//         this.redboothApi = redboothApi;
//     }
// 
//     @Override public List<TaskEntity> getTasks() {
//         return redboothApi.getTasks();
//     }
// 
//     @Override public TaskEntity createTask(TaskEntity taskEntity) {
//         try {
//             return redboothApi.createNewTask(taskEntity);
//         } catch (Exception e) {
//             throw new RedboothException(e);
//         }
//     }
// }
// 
// Path: data/src/main/java/com/sloydev/redbooth/data/repository/datasource/CloudTaskListDataSource.java
// public class CloudTaskListDataSource implements TaskListDataSource {
// 
//     private final RedboothApi redboothApi;
// 
//     @Inject public CloudTaskListDataSource(RedboothApi redboothApi) {
//         this.redboothApi = redboothApi;
//     }
// 
//     @Override public List<TaskListEntity> getTaskLists() {
//         return redboothApi.getTaskLists();
//     }
// }
// 
// Path: data/src/main/java/com/sloydev/redbooth/data/repository/datasource/TaskDataSource.java
// public interface TaskDataSource {
// 
//     public List<TaskEntity> getTasks();
// 
//     TaskEntity createTask(TaskEntity taskEntity);
// }
// 
// Path: data/src/main/java/com/sloydev/redbooth/data/repository/datasource/TaskListDataSource.java
// public interface TaskListDataSource {
// 
//     List<TaskListEntity> getTaskLists();
// }
// 
// Path: domain/src/main/java/com/sloydev/redbooth/repository/TaskListRepository.java
// public interface TaskListRepository {
// 
//     List<TaskList> getAll();
// 
// }
// 
// Path: domain/src/main/java/com/sloydev/redbooth/repository/TaskRepository.java
// public interface TaskRepository {
//     List<Task> getAll();
// 
//     Task put(Task task);
// }


import com.sloydev.redbooth.data.repository.TaskDataRepository;
import com.sloydev.redbooth.data.repository.TaskListDataRepository;
import com.sloydev.redbooth.data.repository.datasource.CloudTaskDataSource;
import com.sloydev.redbooth.data.repository.datasource.CloudTaskListDataSource;
import com.sloydev.redbooth.data.repository.datasource.TaskDataSource;
import com.sloydev.redbooth.data.repository.datasource.TaskListDataSource;
import com.sloydev.redbooth.repository.TaskListRepository;
import com.sloydev.redbooth.repository.TaskRepository;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
package com.sloydev.redbooth.data.dagger;




@Module(
        includes = {
                ApiModule.class,
        },
        injects = {
                CloudTaskDataSource.class, TaskDataRepository.class, TaskListDataRepository.class, CloudTaskListDataSource.class,
        },
        library = true,
        complete = false
)
public class RepositoryModule {

    @Provides
    @Singleton TaskRepository provideTaskRepository(TaskDataRepository taskRepository) {
        return taskRepository;
    }

    @Provides @Singleton TaskDataSource provideTaskDataSource(CloudTaskDataSource taskDataSource) {
        return taskDataSource;
    }

// Path: data/src/main/java/com/sloydev/redbooth/data/repository/TaskDataRepository.java
// public class TaskDataRepository implements TaskRepository {
// 
//     private final TaskEntityMapper taskEntityMapper;
//     private final TaskDataSource taskDataSource;
// 
//     @Inject public TaskDataRepository(TaskEntityMapper taskEntityMapper, TaskDataSource taskDataSource) {
//         this.taskEntityMapper = taskEntityMapper;
//         this.taskDataSource = taskDataSource;
//     }
// 
//     @Override public List<Task> getAll() {
//         return taskEntityMapper.transform(taskDataSource.getTasks());
//     }
// 
//     @Override public Task put(Task task) {
//         TaskEntity createdTask = taskDataSource.createTask(taskEntityMapper.transform(task));
//         return taskEntityMapper.transform(createdTask);
//     }
// }
// 
// Path: data/src/main/java/com/sloydev/redbooth/data/repository/TaskListDataRepository.java
// public class TaskListDataRepository implements TaskListRepository {
// 
//     private final TaskListDataSource taskListDataSource;
//     private final TaskListEntityMapper taskListEntityMapper;
// 
//     @Inject public TaskListDataRepository(TaskListDataSource taskListDataSource, TaskListEntityMapper taskListEntityMapper) {
//         this.taskListDataSource = taskListDataSource;
//         this.taskListEntityMapper = taskListEntityMapper;
//     }
// 
//     @Override public List<TaskList> getAll() {
//         return taskListEntityMapper.transform(taskListDataSource.getTaskLists());
//     }
// }
// 
// Path: data/src/main/java/com/sloydev/redbooth/data/repository/datasource/CloudTaskDataSource.java
// public class CloudTaskDataSource implements TaskDataSource {
// 
//     private final RedboothApi redboothApi;
// 
//     @Inject public CloudTaskDataSource(RedboothApi redboothApi) {
//         this.redboothApi = redboothApi;
//     }
// 
//     @Override public List<TaskEntity> getTasks() {
//         return redboothApi.getTasks();
//     }
// 
//     @Override public TaskEntity createTask(TaskEntity taskEntity) {
//         try {
//             return redboothApi.createNewTask(taskEntity);
//         } catch (Exception e) {
//             throw new RedboothException(e);
//         }
//     }
// }
// 
// Path: data/src/main/java/com/sloydev/redbooth/data/repository/datasource/CloudTaskListDataSource.java
// public class CloudTaskListDataSource implements TaskListDataSource {
// 
//     private final RedboothApi redboothApi;
// 
//     @Inject public CloudTaskListDataSource(RedboothApi redboothApi) {
//         this.redboothApi = redboothApi;
//     }
// 
//     @Override public List<TaskListEntity> getTaskLists() {
//         return redboothApi.getTaskLists();
//     }
// }
// 
// Path: data/src/main/java/com/sloydev/redbooth/data/repository/datasource/TaskDataSource.java
// public interface TaskDataSource {
// 
//     public List<TaskEntity> getTasks();
// 
//     TaskEntity createTask(TaskEntity taskEntity);
// }
// 
// Path: data/src/main/java/com/sloydev/redbooth/data/repository/datasource/TaskListDataSource.java
// public interface TaskListDataSource {
// 
//     List<TaskListEntity> getTaskLists();
// }
// 
// Path: domain/src/main/java/com/sloydev/redbooth/repository/TaskListRepository.java
// public interface TaskListRepository {
// 
//     List<TaskList> getAll();
// 
// }
// 
// Path: domain/src/main/java/com/sloydev/redbooth/repository/TaskRepository.java
// public interface TaskRepository {
//     List<Task> getAll();
// 
//     Task put(Task task);
// }


// Path: data/src/main/java/com/sloydev/redbooth/data/dagger/RepositoryModule.java
import com.sloydev.redbooth.data.repository.TaskDataRepository;
import com.sloydev.redbooth.data.repository.TaskListDataRepository;
import com.sloydev.redbooth.data.repository.datasource.CloudTaskDataSource;
import com.sloydev.redbooth.data.repository.datasource.CloudTaskListDataSource;
import com.sloydev.redbooth.data.repository.datasource.TaskDataSource;
import com.sloydev.redbooth.data.repository.datasource.TaskListDataSource;
import com.sloydev.redbooth.repository.TaskListRepository;
import com.sloydev.redbooth.repository.TaskRepository;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;

package com.sloydev.redbooth.data.dagger;




@Module(
        includes = {
                ApiModule.class,
        },
        injects = {
                CloudTaskDataSource.class, TaskDataRepository.class, TaskListDataRepository.class, CloudTaskListDataSource.class,
        },
        library = true,
        complete = false
)
public class RepositoryModule {

    @Provides
    @Singleton TaskRepository provideTaskRepository(TaskDataRepository taskRepository) {
        return taskRepository;
    }

    @Provides @Singleton TaskDataSource provideTaskDataSource(CloudTaskDataSource taskDataSource) {
        return taskDataSource;
    }

    @Provides @Singleton TaskListRepository provideTaskListRepository(TaskListDataRepository taskListDataRepository) {