// 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 final class ViewModelLazy<VM extends androidx.lifecycle.ViewModel> implements kotlin.Lazy<VM> {
    ctor public ViewModelLazy(kotlin.reflect.KClass<VM> viewModelClass, kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelStore> storeProducer, kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory> factoryProducer);
    method public VM getValue();
    method public boolean isInitialized();
    property public VM value;
  }

  public class ViewModelProvider {
    ctor public ViewModelProvider(androidx.lifecycle.ViewModelStore store, androidx.lifecycle.ViewModelProvider.Factory factory);
    ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner owner);
    ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner owner, androidx.lifecycle.ViewModelProvider.Factory factory);
    method @MainThread public operator <T extends androidx.lifecycle.ViewModel> T get(Class<T> modelClass);
    method @MainThread public operator <T extends androidx.lifecycle.ViewModel> T get(String key, Class<T> modelClass);
  }

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

  public static final class ViewModelProvider.AndroidViewModelFactory.Companion {
    method public androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory getInstance(android.app.Application application);
  }

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

  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> modelClass);
    field public static final androidx.lifecycle.ViewModelProvider.NewInstanceFactory.Companion Companion;
  }

  public static final class ViewModelProvider.NewInstanceFactory.Companion {
  }

  public final class ViewModelProviderKt {
    method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! get(androidx.lifecycle.ViewModelProvider);
  }

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

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

  public final class ViewTreeViewModelKt {
    method public static androidx.lifecycle.ViewModelStoreOwner? findViewTreeViewModelStoreOwner(android.view.View);
  }

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

}

