package com.zhuinden.simplestackdemoexamplefragments.application.injection;
import android.content.Context;
import android.content.res.Resources;
import com.zhuinden.simplestack.Backstack;
import com.zhuinden.simplestackdemoexamplefragments.application.MainActivity;
import com.zhuinden.simplestackdemoexamplefragments.application.MainScopeListener;
import com.zhuinden.simplestackdemoexamplefragments.application.MainView;
import com.zhuinden.simplestackdemoexamplefragments.data.manager.DatabaseManager;
import com.zhuinden.simplestackdemoexamplefragments.data.repository.TaskRepository;
import com.zhuinden.simplestackdemoexamplefragments.presentation.mapper.TaskMapper;
import com.zhuinden.simplestackdemoexamplefragments.presentation.paths.addoredittask.AddOrEditTaskFragment;
import com.zhuinden.simplestackdemoexamplefragments.presentation.paths.statistics.StatisticsFragment;
import com.zhuinden.simplestackdemoexamplefragments.presentation.paths.taskdetail.TaskDetailFragment;
import com.zhuinden.simplestackdemoexamplefragments.presentation.paths.tasks.TasksFragment;
import com.zhuinden.simplestackdemoexamplefragments.util.BackstackHolder;
import com.zhuinden.simplestackdemoexamplefragments.util.SchedulerHolder;
import javax.inject.Named;
import javax.inject.Singleton;
import dagger.Component;
/**
* Created by Owner on 2017. 01. 26..
*/
@Singleton
@Component(modules = {SchedulerModule.class, NavigationModule.class, AndroidModule.class})
public interface SingletonComponent {
TaskMapper taskMapper();
DatabaseManager databaseManager();
@Named("LOOPER_SCHEDULER")
SchedulerHolder looperScheduler();
@Named("WRITE_SCHEDULER")
SchedulerHolder writeScheduler();
TaskRepository taskRepository();
BackstackHolder backstackHolder();
Backstack backstack();
@Named("applicationContext")
Context applicationContext();
Resources resources();
void inject(MainActivity mainActivity);
void inject(MainScopeListener mainScopeListener);
void inject(MainView mainView);
void inject(AddOrEditTaskFragment addOrEditTaskFragment);
void inject(StatisticsFragment statisticsFragment);
void inject(TaskDetailFragment taskDetailFragment);
void inject(TasksFragment tasksFragment);
}