// Signature format: 3.0
package androidx.camera.core {

  public class AspectRatio {
    field public static final int RATIO_16_9 = 1; // 0x1
    field public static final int RATIO_4_3 = 0; // 0x0
  }

  public interface Camera {
    method public androidx.camera.core.CameraControl getCameraControl();
    method public androidx.camera.core.CameraInfo getCameraInfo();
  }

  public interface CameraControl {
    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> cancelFocusAndMetering();
    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> enableTorch(boolean);
    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setLinearZoom(@FloatRange(from=0.0f, to=1.0f) float);
    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setZoomRatio(float);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.camera.core.FocusMeteringResult!> startFocusAndMetering(androidx.camera.core.FocusMeteringAction);
  }

  public static final class CameraControl.OperationCanceledException extends java.lang.Exception {
  }

  public interface CameraInfo {
    method public androidx.lifecycle.LiveData<java.lang.Float!> getLinearZoom();
    method public androidx.lifecycle.LiveData<java.lang.Float!> getMaxZoomRatio();
    method public androidx.lifecycle.LiveData<java.lang.Float!> getMinZoomRatio();
    method public int getSensorRotationDegrees();
    method public int getSensorRotationDegrees(int);
    method public androidx.lifecycle.LiveData<java.lang.Integer!> getTorchState();
    method public androidx.lifecycle.LiveData<java.lang.Float!> getZoomRatio();
    method public boolean hasFlashUnit();
  }

  public final class CameraInfoUnavailableException extends java.lang.Exception {
  }

  public final class CameraSelector {
    field public static final androidx.camera.core.CameraSelector DEFAULT_BACK_CAMERA;
    field public static final androidx.camera.core.CameraSelector DEFAULT_FRONT_CAMERA;
    field public static final int LENS_FACING_BACK = 1; // 0x1
    field public static final int LENS_FACING_FRONT = 0; // 0x0
  }

  public static final class CameraSelector.Builder {
    ctor public CameraSelector.Builder();
    method public androidx.camera.core.CameraSelector build();
    method public androidx.camera.core.CameraSelector.Builder requireLensFacing(int);
  }

  public final class CameraXConfig {
    field public static final androidx.camera.core.impl.Config.Option<java.lang.Class<?>!> OPTION_TARGET_CLASS;
    field public static final androidx.camera.core.impl.Config.Option<java.lang.String!> OPTION_TARGET_NAME;
  }

  public static final class CameraXConfig.Builder {
    ctor public CameraXConfig.Builder();
    method public androidx.camera.core.CameraXConfig build();
    method public static androidx.camera.core.CameraXConfig.Builder fromConfig(androidx.camera.core.CameraXConfig);
    method public androidx.camera.core.CameraXConfig.Builder setCameraExecutor(java.util.concurrent.Executor);
  }

  public static interface CameraXConfig.Provider {
    method public androidx.camera.core.CameraXConfig getCameraXConfig();
  }

  public final class DisplayOrientedMeteringPointFactory extends androidx.camera.core.MeteringPointFactory {
    ctor public DisplayOrientedMeteringPointFactory(android.view.Display, androidx.camera.core.CameraSelector, float, float);
  }

  @experimental.Experimental @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalGetImage {
  }

  public interface ExtendableBuilder<T> {
    method public T build();
  }

  public final class FocusMeteringAction {
    method public long getAutoCancelDurationInMillis();
    method public java.util.List<androidx.camera.core.MeteringPoint!> getMeteringPointsAe();
    method public java.util.List<androidx.camera.core.MeteringPoint!> getMeteringPointsAf();
    method public java.util.List<androidx.camera.core.MeteringPoint!> getMeteringPointsAwb();
    method public boolean isAutoCancelEnabled();
    field public static final int FLAG_AE = 2; // 0x2
    field public static final int FLAG_AF = 1; // 0x1
    field public static final int FLAG_AWB = 4; // 0x4
  }

  public static class FocusMeteringAction.Builder {
    ctor public FocusMeteringAction.Builder(androidx.camera.core.MeteringPoint);
    ctor public FocusMeteringAction.Builder(androidx.camera.core.MeteringPoint, int);
    method public androidx.camera.core.FocusMeteringAction.Builder addPoint(androidx.camera.core.MeteringPoint);
    method public androidx.camera.core.FocusMeteringAction.Builder addPoint(androidx.camera.core.MeteringPoint, int);
    method public androidx.camera.core.FocusMeteringAction build();
    method public androidx.camera.core.FocusMeteringAction.Builder disableAutoCancel();
    method public androidx.camera.core.FocusMeteringAction.Builder setAutoCancelDuration(@IntRange(from=1) long, java.util.concurrent.TimeUnit);
  }

  public final class FocusMeteringResult {
    method public boolean isFocusSuccessful();
  }

  public final class ImageAnalysis extends androidx.camera.core.UseCase {
    method public void clearAnalyzer();
    method public void setAnalyzer(java.util.concurrent.Executor, androidx.camera.core.ImageAnalysis.Analyzer);
    method public void setTargetRotation(int);
    field public static final int STRATEGY_BLOCK_PRODUCER = 1; // 0x1
    field public static final int STRATEGY_KEEP_ONLY_LATEST = 0; // 0x0
  }

  public static interface ImageAnalysis.Analyzer {
    method public void analyze(androidx.camera.core.ImageProxy);
  }

  public static final class ImageAnalysis.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageAnalysis> {
    ctor public ImageAnalysis.Builder();
    method public androidx.camera.core.ImageAnalysis build();
    method public androidx.camera.core.ImageAnalysis.Builder setBackgroundExecutor(java.util.concurrent.Executor);
    method public androidx.camera.core.ImageAnalysis.Builder setBackpressureStrategy(int);
    method public androidx.camera.core.ImageAnalysis.Builder setImageQueueDepth(int);
    method public androidx.camera.core.ImageAnalysis.Builder setTargetAspectRatio(int);
    method public androidx.camera.core.ImageAnalysis.Builder setTargetName(String);
    method public androidx.camera.core.ImageAnalysis.Builder setTargetResolution(android.util.Size);
    method public androidx.camera.core.ImageAnalysis.Builder setTargetRotation(int);
  }

  public class ImageCapture extends androidx.camera.core.UseCase {
    method public int getFlashMode();
    method public void setFlashMode(int);
    method public void setTargetAspectRatioCustom(android.util.Rational);
    method public void setTargetRotation(int);
    method public void takePicture(java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageCapturedCallback);
    method public void takePicture(java.io.File, java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageSavedCallback);
    method public void takePicture(java.io.File, androidx.camera.core.ImageCapture.Metadata, java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageSavedCallback);
    field public static final int CAPTURE_MODE_MAXIMIZE_QUALITY = 0; // 0x0
    field public static final int CAPTURE_MODE_MINIMIZE_LATENCY = 1; // 0x1
    field public static final int ERROR_CAMERA_CLOSED = 3; // 0x3
    field public static final int ERROR_CAPTURE_FAILED = 2; // 0x2
    field public static final int ERROR_FILE_IO = 1; // 0x1
    field public static final int ERROR_INVALID_CAMERA = 4; // 0x4
    field public static final int ERROR_UNKNOWN = 0; // 0x0
    field public static final int FLASH_MODE_AUTO = 0; // 0x0
    field public static final int FLASH_MODE_OFF = 2; // 0x2
    field public static final int FLASH_MODE_ON = 1; // 0x1
  }

  public static final class ImageCapture.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageCapture> {
    ctor public ImageCapture.Builder();
    method public androidx.camera.core.ImageCapture build();
    method public androidx.camera.core.ImageCapture.Builder setCaptureMode(int);
    method public androidx.camera.core.ImageCapture.Builder setFlashMode(int);
    method public androidx.camera.core.ImageCapture.Builder setIoExecutor(java.util.concurrent.Executor);
    method public androidx.camera.core.ImageCapture.Builder setTargetAspectRatio(int);
    method public androidx.camera.core.ImageCapture.Builder setTargetName(String);
    method public androidx.camera.core.ImageCapture.Builder setTargetResolution(android.util.Size);
    method public androidx.camera.core.ImageCapture.Builder setTargetRotation(int);
  }

  public static final class ImageCapture.Metadata {
    ctor public ImageCapture.Metadata();
    method public android.location.Location? getLocation();
    method public boolean isReversedHorizontal();
    method public boolean isReversedVertical();
    method public void setLocation(android.location.Location?);
    method public void setReversedHorizontal(boolean);
    method public void setReversedVertical(boolean);
  }

  public abstract static class ImageCapture.OnImageCapturedCallback {
    ctor public ImageCapture.OnImageCapturedCallback();
    method public void onCaptureSuccess(androidx.camera.core.ImageProxy);
    method public void onError(int, String, Throwable?);
  }

  public static interface ImageCapture.OnImageSavedCallback {
    method public void onError(int, String, Throwable?);
    method public void onImageSaved(java.io.File);
  }

  public interface ImageInfo {
    method public int getRotationDegrees();
    method public long getTimestamp();
  }

  public interface ImageProxy extends java.lang.AutoCloseable {
    method public void close();
    method public android.graphics.Rect getCropRect();
    method public int getFormat();
    method public int getHeight();
    method @androidx.camera.core.ExperimentalGetImage public android.media.Image? getImage();
    method public androidx.camera.core.ImageInfo getImageInfo();
    method public androidx.camera.core.ImageProxy.PlaneProxy![] getPlanes();
    method public int getWidth();
    method public void setCropRect(android.graphics.Rect?);
  }

  public static interface ImageProxy.PlaneProxy {
    method public java.nio.ByteBuffer getBuffer();
    method public int getPixelStride();
    method public int getRowStride();
  }

  public class MeteringPoint {
    method public float getSize();
  }

  public abstract class MeteringPointFactory {
    method public final androidx.camera.core.MeteringPoint createPoint(float, float);
    method public final androidx.camera.core.MeteringPoint createPoint(float, float, float);
    method public static float getDefaultPointSize();
  }

  public class Preview extends androidx.camera.core.UseCase {
    method @UiThread public androidx.camera.core.Preview.PreviewSurfaceProvider? getPreviewSurfaceProvider();
    method @UiThread public void setPreviewSurfaceProvider(java.util.concurrent.Executor, androidx.camera.core.Preview.PreviewSurfaceProvider?);
    method @UiThread public void setPreviewSurfaceProvider(androidx.camera.core.Preview.PreviewSurfaceProvider?);
  }

  public static final class Preview.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.Preview> {
    ctor public Preview.Builder();
    method public androidx.camera.core.Preview build();
    method public androidx.camera.core.Preview.Builder setTargetAspectRatio(int);
    method public androidx.camera.core.Preview.Builder setTargetName(String);
    method public androidx.camera.core.Preview.Builder setTargetResolution(android.util.Size);
    method public androidx.camera.core.Preview.Builder setTargetRotation(int);
  }

  public static interface Preview.PreviewSurfaceProvider {
    method public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> provideSurface(android.util.Size, com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>);
  }

  public class SurfaceOrientedMeteringPointFactory extends androidx.camera.core.MeteringPointFactory {
    ctor public SurfaceOrientedMeteringPointFactory(float, float);
    ctor public SurfaceOrientedMeteringPointFactory(float, float, androidx.camera.core.UseCase);
  }

  public class TorchState {
    field public static final int OFF = 0; // 0x0
    field public static final int ON = 1; // 0x1
  }

  public abstract class UseCase {
  }

}

