// Signature format: 4.0
package androidx.camera.view {

  @RequiresApi(21) public abstract class CameraController {
    method @MainThread public void clearImageAnalysisAnalyzer();
    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> enableTorch(boolean);
    method @MainThread public androidx.camera.core.CameraControl? getCameraControl();
    method @MainThread public androidx.camera.core.CameraInfo? getCameraInfo();
    method @MainThread public androidx.camera.core.CameraSelector getCameraSelector();
    method @MainThread public java.util.concurrent.Executor? getImageAnalysisBackgroundExecutor();
    method @MainThread public int getImageAnalysisBackpressureStrategy();
    method @MainThread public int getImageAnalysisImageQueueDepth();
    method @MainThread public androidx.camera.view.CameraController.OutputSize? getImageAnalysisTargetSize();
    method @MainThread public int getImageCaptureFlashMode();
    method @MainThread public java.util.concurrent.Executor? getImageCaptureIoExecutor();
    method @MainThread public int getImageCaptureMode();
    method @MainThread public androidx.camera.view.CameraController.OutputSize? getImageCaptureTargetSize();
    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> getInitializationFuture();
    method @MainThread public androidx.camera.view.CameraController.OutputSize? getPreviewTargetSize();
    method @MainThread public androidx.lifecycle.LiveData<java.lang.Integer!> getTapToFocusState();
    method @MainThread public androidx.lifecycle.LiveData<java.lang.Integer!> getTorchState();
    method @MainThread public androidx.lifecycle.LiveData<androidx.camera.core.ZoomState!> getZoomState();
    method @MainThread public boolean hasCamera(androidx.camera.core.CameraSelector);
    method @MainThread public boolean isImageAnalysisEnabled();
    method @MainThread public boolean isImageCaptureEnabled();
    method @MainThread public boolean isPinchToZoomEnabled();
    method @MainThread public boolean isTapToFocusEnabled();
    method @MainThread public void setCameraSelector(androidx.camera.core.CameraSelector);
    method @MainThread public void setEnabledUseCases(int);
    method @MainThread public void setImageAnalysisAnalyzer(java.util.concurrent.Executor, androidx.camera.core.ImageAnalysis.Analyzer);
    method @MainThread public void setImageAnalysisBackgroundExecutor(java.util.concurrent.Executor?);
    method @MainThread public void setImageAnalysisBackpressureStrategy(int);
    method @MainThread public void setImageAnalysisImageQueueDepth(int);
    method @MainThread public void setImageAnalysisTargetSize(androidx.camera.view.CameraController.OutputSize?);
    method @MainThread public void setImageCaptureFlashMode(int);
    method @MainThread public void setImageCaptureIoExecutor(java.util.concurrent.Executor?);
    method @MainThread public void setImageCaptureMode(int);
    method @MainThread public void setImageCaptureTargetSize(androidx.camera.view.CameraController.OutputSize?);
    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setLinearZoom(@FloatRange(from=0.0f, to=1.0f) float);
    method @MainThread public void setPinchToZoomEnabled(boolean);
    method @MainThread public void setPreviewTargetSize(androidx.camera.view.CameraController.OutputSize?);
    method @MainThread public void setTapToFocusEnabled(boolean);
    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setZoomRatio(float);
    method @MainThread public void takePicture(androidx.camera.core.ImageCapture.OutputFileOptions, java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageSavedCallback);
    method @MainThread public void takePicture(java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageCapturedCallback);
    field public static final int COORDINATE_SYSTEM_VIEW_REFERENCED = 1; // 0x1
    field public static final int IMAGE_ANALYSIS = 2; // 0x2
    field public static final int IMAGE_CAPTURE = 1; // 0x1
    field public static final int TAP_TO_FOCUS_FAILED = 4; // 0x4
    field public static final int TAP_TO_FOCUS_FOCUSED = 2; // 0x2
    field public static final int TAP_TO_FOCUS_NOT_FOCUSED = 3; // 0x3
    field public static final int TAP_TO_FOCUS_NOT_STARTED = 0; // 0x0
    field public static final int TAP_TO_FOCUS_STARTED = 1; // 0x1
  }

  @RequiresApi(21) public static final class CameraController.OutputSize {
    ctor public CameraController.OutputSize(int);
    ctor public CameraController.OutputSize(android.util.Size);
    method public int getAspectRatio();
    method public android.util.Size? getResolution();
    field public static final int UNASSIGNED_ASPECT_RATIO = -1; // 0xffffffff
  }

  @RequiresApi(21) public final class LifecycleCameraController extends androidx.camera.view.CameraController {
    ctor public LifecycleCameraController(android.content.Context);
    method @MainThread public void bindToLifecycle(androidx.lifecycle.LifecycleOwner);
    method @MainThread public void unbind();
  }

  @RequiresApi(21) public final class PreviewView extends android.widget.FrameLayout {
    ctor @UiThread public PreviewView(android.content.Context);
    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?);
    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?, int);
    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?, int, int);
    method @UiThread public android.graphics.Bitmap? getBitmap();
    method @UiThread public androidx.camera.view.CameraController? getController();
    method @UiThread public androidx.camera.view.PreviewView.ImplementationMode getImplementationMode();
    method @UiThread public androidx.camera.core.MeteringPointFactory getMeteringPointFactory();
    method public androidx.lifecycle.LiveData<androidx.camera.view.PreviewView.StreamState!> getPreviewStreamState();
    method @UiThread public androidx.camera.view.PreviewView.ScaleType getScaleType();
    method @UiThread public androidx.camera.core.Preview.SurfaceProvider getSurfaceProvider();
    method @UiThread public androidx.camera.core.ViewPort? getViewPort();
    method @UiThread public androidx.camera.core.ViewPort? getViewPort(int);
    method @UiThread public void setController(androidx.camera.view.CameraController?);
    method @UiThread public void setImplementationMode(androidx.camera.view.PreviewView.ImplementationMode);
    method @UiThread public void setScaleType(androidx.camera.view.PreviewView.ScaleType);
  }

  @RequiresApi(21) public enum PreviewView.ImplementationMode {
    enum_constant public static final androidx.camera.view.PreviewView.ImplementationMode COMPATIBLE;
    enum_constant public static final androidx.camera.view.PreviewView.ImplementationMode PERFORMANCE;
  }

  @RequiresApi(21) public enum PreviewView.ScaleType {
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_CENTER;
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_END;
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_START;
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_CENTER;
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_END;
    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_START;
  }

  public enum PreviewView.StreamState {
    enum_constant public static final androidx.camera.view.PreviewView.StreamState IDLE;
    enum_constant public static final androidx.camera.view.PreviewView.StreamState STREAMING;
  }

  @RequiresApi(21) public final class RotationProvider {
    ctor public RotationProvider(android.content.Context);
    method @CheckResult public boolean addListener(java.util.concurrent.Executor, androidx.camera.view.RotationProvider.Listener);
    method public void removeListener(androidx.camera.view.RotationProvider.Listener);
  }

  public static interface RotationProvider.Listener {
    method public void onRotationChanged(int);
  }

}

