package com.google.android.stardroid;
import android.accounts.AccountManager;
import android.content.SharedPreferences;
import android.hardware.SensorManager;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import com.google.android.stardroid.activities.EditSettingsActivity;
import com.google.android.stardroid.activities.ImageDisplayActivity;
import com.google.android.stardroid.activities.ImageGalleryActivity;
import com.google.android.stardroid.control.AstronomerModel;
import com.google.android.stardroid.control.MagneticDeclinationCalculator;
import com.google.android.stardroid.layers.LayerManager;
import com.google.android.stardroid.search.SearchTermsProvider;
import javax.inject.Named;
import javax.inject.Singleton;
import dagger.Component;
/**
* Dagger component.
* Created by johntaylor on 3/26/16.
*/
@Singleton
@Component(modules={ApplicationModule.class})
public interface ApplicationComponent {
// What we expose to dependent components
StardroidApplication provideStardroidApplication();
SharedPreferences provideSharedPreferences();
SensorManager provideSensorManager();
ConnectivityManager provideConnectivityManager();
AstronomerModel provideAstronomerModel();
LocationManager provideLocationManager();
LayerManager provideLayerManager();
AccountManager provideAccountManager();
@Named("zero") MagneticDeclinationCalculator provideMagDec1();
@Named("real") MagneticDeclinationCalculator provideMagDec2();
// Who can we inject
void inject(StardroidApplication app);
void inject(EditSettingsActivity activity);
void inject(ImageDisplayActivity activity);
void inject(ImageGalleryActivity activity);
void inject(SearchTermsProvider provider);
}