// Signature format: 4.0
package androidx.lifecycle {

  public class AndroidViewModel extends androidx.lifecycle.ViewModel {
    ctor public AndroidViewModel(android.app.Application);
    method public <T extends android.app.Application> T getApplication();
  }

  public interface HasDefaultViewModelProviderFactory {
    method public androidx.lifecycle.ViewModelProvider.Factory getDefaultViewModelProviderFactory();
  }

  public abstract class ViewModel {
    ctor public ViewModel();
    method protected void onCleared();
  }

  public class ViewModelProvider {
    ctor public ViewModelProvider(androidx.lifecycle.ViewModelStore, androidx.lifecycle.ViewModelProvider.Factory);
    ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner);
    ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner, androidx.lifecycle.ViewModelProvider.Factory);
    method @MainThread public <T extends androidx.lifecycle.ViewModel> T get(Class<T!>);
    method @MainThread public <T extends androidx.lifecycle.ViewModel> T get(String, Class<T!>);
  }

  public static class ViewModelProvider.AndroidViewModelFactory extends androidx.lifecycle.ViewModelProvider.NewInstanceFactory {
    ctor public ViewModelProvider.AndroidViewModelFactory(android.app.Application);
    method public static androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory getInstance(android.app.Application);
  }

  public static interface ViewModelProvider.Factory {
    method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
  }

  public static class ViewModelProvider.NewInstanceFactory implements androidx.lifecycle.ViewModelProvider.Factory {
    ctor public ViewModelProvider.NewInstanceFactory();
    method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
  }

  public class ViewModelStore {
    ctor public ViewModelStore();
    method public final void clear();
  }

  public interface ViewModelStoreOwner {
    method public androidx.lifecycle.ViewModelStore getViewModelStore();
  }

}

