package androidx.lifecycle {

  public abstract class Lifecycle {
    ctor public Lifecycle();
    method public abstract void addObserver(androidx.lifecycle.LifecycleObserver);
    method public abstract androidx.lifecycle.Lifecycle.State getCurrentState();
    method public abstract void removeObserver(androidx.lifecycle.LifecycleObserver);
  }

  public static final class Lifecycle.Event extends java.lang.Enum {
    method public static androidx.lifecycle.Lifecycle.Event valueOf(java.lang.String);
    method public static final androidx.lifecycle.Lifecycle.Event[] values();
    enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_ANY;
    enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_CREATE;
    enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_DESTROY;
    enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_PAUSE;
    enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_RESUME;
    enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_START;
    enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_STOP;
  }

  public static final class Lifecycle.State extends java.lang.Enum {
    method public boolean isAtLeast(androidx.lifecycle.Lifecycle.State);
    method public static androidx.lifecycle.Lifecycle.State valueOf(java.lang.String);
    method public static final androidx.lifecycle.Lifecycle.State[] values();
    enum_constant public static final androidx.lifecycle.Lifecycle.State CREATED;
    enum_constant public static final androidx.lifecycle.Lifecycle.State DESTROYED;
    enum_constant public static final androidx.lifecycle.Lifecycle.State INITIALIZED;
    enum_constant public static final androidx.lifecycle.Lifecycle.State RESUMED;
    enum_constant public static final androidx.lifecycle.Lifecycle.State STARTED;
  }

  public abstract interface LifecycleObserver {
  }

  public abstract interface LifecycleOwner {
    method public abstract androidx.lifecycle.Lifecycle getLifecycle();
  }

  public abstract class OnLifecycleEvent implements java.lang.annotation.Annotation {
  }

}

