// Path: mobile/src/main/java/io/ashdavies/eternity/Config.java
// public interface Config extends Logger.Preparable {
// 
//   boolean favouriteEnabled();
// 
//   boolean repostEnabled();
// 
//   interface State {
// 
//     boolean invalidated();
// 
//     void invalidate();
// 
//     void reset();
//   }
// }
// 
// Path: mobile/src/main/java/io/ashdavies/eternity/Logger.java
// public interface Logger {
// 
//   void log(String message);
// 
//   void error(Throwable throwable, Object... args);
// 
//   interface Preparable {
// 
//     void prepare(Logger logger);
//   }
// }
// 
// Path: mobile/src/main/java/io/ashdavies/eternity/Reporting.java
// public interface Reporting {
// 
//   void log(String message, Bundle bundle);
// }


import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import io.ashdavies.eternity.Config;
import io.ashdavies.eternity.Logger;
import io.ashdavies.eternity.Reporting;
import io.ashdavies.eternity.inject.ApplicationScope;
package io.ashdavies.eternity.firebase;


@Module
public abstract class FirebaseModule {

  @Provides
  @ApplicationScope
  static Config config(Config.State state) {
    return FirebaseConfig.newInstance(state);
  }

  @Binds
  abstract Config.State state(ConfigStateStorage storage);

  @Binds
  abstract Logger logger(FirebaseLogger logger);

  @Binds
// Path: mobile/src/main/java/io/ashdavies/eternity/Config.java
// public interface Config extends Logger.Preparable {
// 
//   boolean favouriteEnabled();
// 
//   boolean repostEnabled();
// 
//   interface State {
// 
//     boolean invalidated();
// 
//     void invalidate();
// 
//     void reset();
//   }
// }
// 
// Path: mobile/src/main/java/io/ashdavies/eternity/Logger.java
// public interface Logger {
// 
//   void log(String message);
// 
//   void error(Throwable throwable, Object... args);
// 
//   interface Preparable {
// 
//     void prepare(Logger logger);
//   }
// }
// 
// Path: mobile/src/main/java/io/ashdavies/eternity/Reporting.java
// public interface Reporting {
// 
//   void log(String message, Bundle bundle);
// }


// Path: mobile/src/main/java/io/ashdavies/eternity/firebase/FirebaseModule.java
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import io.ashdavies.eternity.Config;
import io.ashdavies.eternity.Logger;
import io.ashdavies.eternity.Reporting;
import io.ashdavies.eternity.inject.ApplicationScope;

package io.ashdavies.eternity.firebase;


@Module
public abstract class FirebaseModule {

  @Provides
  @ApplicationScope
  static Config config(Config.State state) {
    return FirebaseConfig.newInstance(state);
  }

  @Binds
  abstract Config.State state(ConfigStateStorage storage);

  @Binds
  abstract Logger logger(FirebaseLogger logger);

  @Binds
  abstract Reporting reporting(FirebaseReporting reporting);