// 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.ViewModelStoreOwner);
    ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner, androidx.lifecycle.ViewModelProvider.Factory);
    ctor public ViewModelProvider(androidx.lifecycle.ViewModelStore, 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();
  }

  public class ViewTreeViewModelStoreOwner {
    method public static androidx.lifecycle.ViewModelStoreOwner? get(android.view.View);
    method public static void set(android.view.View, androidx.lifecycle.ViewModelStoreOwner?);
  }

}

