// Signature format: 4.0
package me.saket.telephoto.zoomable {

  @androidx.compose.runtime.Immutable @dev.drewhamilton.poko.Poko public final class ZoomSpec {
    ctor public ZoomSpec(optional float maxZoomFactor, optional boolean preventOverOrUnderZoom);
    method public float getMaxZoomFactor();
    method public boolean getPreventOverOrUnderZoom();
    property public final float maxZoomFactor;
    property public final boolean preventOverOrUnderZoom;
  }

  public interface ZoomableContentLocation {
    method public androidx.compose.ui.geometry.Rect location(long layoutSize, androidx.compose.ui.unit.LayoutDirection direction);
    method public long size(long layoutSize);
    field public static final me.saket.telephoto.zoomable.ZoomableContentLocation.Companion Companion;
  }

  public static final class ZoomableContentLocation.Companion {
    method @androidx.compose.runtime.Stable public me.saket.telephoto.zoomable.ZoomableContentLocation scaledInsideAndCenterAligned(androidx.compose.ui.geometry.Size? size);
    method @androidx.compose.runtime.Stable public me.saket.telephoto.zoomable.ZoomableContentLocation scaledToFitAndCenterAligned(androidx.compose.ui.geometry.Size? size);
    method @androidx.compose.runtime.Stable public me.saket.telephoto.zoomable.ZoomableContentLocation unscaledAndTopLeftAligned(androidx.compose.ui.geometry.Size? size);
    method @Deprecated public me.saket.telephoto.zoomable.ZoomableContentLocation unscaledAndTopStartAligned(androidx.compose.ui.geometry.Size? size);
  }

  public static final class ZoomableContentLocation.SameAsLayoutBounds implements me.saket.telephoto.zoomable.ZoomableContentLocation {
    method public androidx.compose.ui.geometry.Rect location(long layoutSize, androidx.compose.ui.unit.LayoutDirection direction);
    method public long size(long layoutSize);
    field public static final me.saket.telephoto.zoomable.ZoomableContentLocation.SameAsLayoutBounds INSTANCE;
  }

  public static final class ZoomableContentLocation.Unspecified implements me.saket.telephoto.zoomable.ZoomableContentLocation {
    method public Void location(long layoutSize, androidx.compose.ui.unit.LayoutDirection direction);
    method public long size(long layoutSize);
    field public static final me.saket.telephoto.zoomable.ZoomableContentLocation.Unspecified INSTANCE;
  }

  @androidx.compose.runtime.Immutable public interface ZoomableContentTransformation {
    method public androidx.compose.ui.geometry.Offset? getCentroid();
    method public long getContentSize();
    method public long getOffset();
    method public float getRotationZ();
    method public long getScale();
    method public me.saket.telephoto.zoomable.ZoomableContentTransformation.ScaleMetadata getScaleMetadata();
    method public default long getTransformOrigin();
    method public boolean isSpecified();
    method public default boolean isUnspecified();
    property public abstract androidx.compose.ui.geometry.Offset? centroid;
    property public abstract long contentSize;
    property public abstract boolean isSpecified;
    property public default boolean isUnspecified;
    property public abstract long offset;
    property public abstract float rotationZ;
    property public abstract long scale;
    property public abstract me.saket.telephoto.zoomable.ZoomableContentTransformation.ScaleMetadata scaleMetadata;
    property public default long transformOrigin;
  }

  public static interface ZoomableContentTransformation.ScaleMetadata {
    method public long getInitialScale();
    method public float getUserZoom();
    property public abstract long initialScale;
    property public abstract float userZoom;
  }

  public final class ZoomableKt {
    method public static androidx.compose.ui.Modifier zoomable(androidx.compose.ui.Modifier, me.saket.telephoto.zoomable.ZoomableState state, optional boolean enabled, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,kotlin.Unit>? onClick, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.geometry.Offset,kotlin.Unit>? onLongClick, optional boolean clipToBounds);
  }

  @androidx.compose.runtime.Stable public sealed interface ZoomableState {
    method public boolean getAutoApplyTransformations();
    method public androidx.compose.ui.Alignment getContentAlignment();
    method public androidx.compose.ui.layout.ContentScale getContentScale();
    method public me.saket.telephoto.zoomable.ZoomableContentTransformation getContentTransformation();
    method public androidx.compose.ui.geometry.Rect getTransformedContentBounds();
    method @FloatRange(from=0.0, to=1.0) public Float? getZoomFraction();
    method public suspend Object? resetZoom(optional boolean withAnimation, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
    method public void setAutoApplyTransformations(boolean);
    method public void setContentAlignment(androidx.compose.ui.Alignment);
    method public suspend Object? setContentLocation(me.saket.telephoto.zoomable.ZoomableContentLocation location, kotlin.coroutines.Continuation<? super kotlin.Unit>);
    method public void setContentScale(androidx.compose.ui.layout.ContentScale);
    property public abstract boolean autoApplyTransformations;
    property public abstract androidx.compose.ui.Alignment contentAlignment;
    property public abstract androidx.compose.ui.layout.ContentScale contentScale;
    property public abstract me.saket.telephoto.zoomable.ZoomableContentTransformation contentTransformation;
    property public abstract androidx.compose.ui.geometry.Rect transformedContentBounds;
    property @FloatRange(from=0.0, to=1.0) public abstract Float? zoomFraction;
  }

  public final class ZoomableStateKt {
    method @androidx.compose.runtime.Composable public static me.saket.telephoto.zoomable.ZoomableState rememberZoomableState(optional me.saket.telephoto.zoomable.ZoomSpec zoomSpec, optional boolean autoApplyTransformations);
  }

}

