// Signature format: 4.0
package androidx.window.extensions {

  public interface WindowExtensions {
    method public default androidx.window.extensions.embedding.ActivityEmbeddingComponent? getActivityEmbeddingComponent();
    method public default int getVendorApiLevel();
    method public default androidx.window.extensions.area.WindowAreaComponent? getWindowAreaComponent();
    method public androidx.window.extensions.layout.WindowLayoutComponent? getWindowLayoutComponent();
  }

  public class WindowExtensionsProvider {
    method public static androidx.window.extensions.WindowExtensions getWindowExtensions();
  }

}

package androidx.window.extensions.area {

  public interface ExtensionWindowAreaPresentation {
    method public android.content.Context getPresentationContext();
    method public void setPresentationView(android.view.View);
  }

  public interface ExtensionWindowAreaStatus {
    method public android.util.DisplayMetrics getWindowAreaDisplayMetrics();
    method public int getWindowAreaStatus();
  }

  public interface WindowAreaComponent {
    method public default void addRearDisplayPresentationStatusListener(androidx.window.extensions.core.util.function.Consumer<androidx.window.extensions.area.ExtensionWindowAreaStatus!>);
    method public void addRearDisplayStatusListener(androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
    method public default void endRearDisplayPresentationSession();
    method public void endRearDisplaySession();
    method public default android.util.DisplayMetrics getRearDisplayMetrics();
    method public default androidx.window.extensions.area.ExtensionWindowAreaPresentation? getRearDisplayPresentation();
    method public default void removeRearDisplayPresentationStatusListener(androidx.window.extensions.core.util.function.Consumer<androidx.window.extensions.area.ExtensionWindowAreaStatus!>);
    method public void removeRearDisplayStatusListener(androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
    method public default void startRearDisplayPresentationSession(android.app.Activity, androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
    method public void startRearDisplaySession(android.app.Activity, androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
    field public static final int SESSION_STATE_ACTIVE = 1; // 0x1
    field public static final int SESSION_STATE_CONTENT_VISIBLE = 2; // 0x2
    field public static final int SESSION_STATE_INACTIVE = 0; // 0x0
    field public static final int STATUS_ACTIVE = 3; // 0x3
    field public static final int STATUS_AVAILABLE = 2; // 0x2
    field public static final int STATUS_UNAVAILABLE = 1; // 0x1
    field public static final int STATUS_UNSUPPORTED = 0; // 0x0
  }

}

package androidx.window.extensions.embedding {

  public interface ActivityEmbeddingComponent {
    method public void clearSplitAttributesCalculator();
    method public void clearSplitInfoCallback();
    method public default void finishActivityStacks(java.util.Set<android.os.IBinder!>);
    method public default void invalidateTopVisibleSplitAttributes();
    method public boolean isActivityEmbedded(android.app.Activity);
    method public void setEmbeddingRules(java.util.Set<androidx.window.extensions.embedding.EmbeddingRule!>);
    method public default android.app.ActivityOptions setLaunchingActivityStack(android.app.ActivityOptions, android.os.IBinder);
    method public void setSplitAttributesCalculator(androidx.window.extensions.core.util.function.Function<androidx.window.extensions.embedding.SplitAttributesCalculatorParams!,androidx.window.extensions.embedding.SplitAttributes!>);
    method public default void setSplitInfoCallback(androidx.window.extensions.core.util.function.Consumer<java.util.List<androidx.window.extensions.embedding.SplitInfo!>!>);
    method @Deprecated public void setSplitInfoCallback(java.util.function.Consumer<java.util.List<androidx.window.extensions.embedding.SplitInfo!>!>);
    method public default void updateSplitAttributes(android.os.IBinder, androidx.window.extensions.embedding.SplitAttributes);
  }

  public class ActivityRule extends androidx.window.extensions.embedding.EmbeddingRule {
    method @RequiresApi(api=android.os.Build.VERSION_CODES.N) public boolean matchesActivity(android.app.Activity);
    method @RequiresApi(api=android.os.Build.VERSION_CODES.N) public boolean matchesIntent(android.content.Intent);
    method public boolean shouldAlwaysExpand();
  }

  public static final class ActivityRule.Builder {
    ctor public ActivityRule.Builder(androidx.window.extensions.core.util.function.Predicate<android.app.Activity!>, androidx.window.extensions.core.util.function.Predicate<android.content.Intent!>);
    ctor @Deprecated @RequiresApi(android.os.Build.VERSION_CODES.N) public ActivityRule.Builder(java.util.function.Predicate<android.app.Activity!>, java.util.function.Predicate<android.content.Intent!>);
    method public androidx.window.extensions.embedding.ActivityRule build();
    method public androidx.window.extensions.embedding.ActivityRule.Builder setShouldAlwaysExpand(boolean);
    method public androidx.window.extensions.embedding.ActivityRule.Builder setTag(String);
  }

  public class ActivityStack {
    method public java.util.List<android.app.Activity!> getActivities();
    method public boolean isEmpty();
  }

  public abstract class EmbeddingRule {
    method public String? getTag();
  }

  public class SplitAttributes {
    method public int getLayoutDirection();
    method public androidx.window.extensions.embedding.SplitAttributes.SplitType getSplitType();
  }

  public static final class SplitAttributes.Builder {
    ctor public SplitAttributes.Builder();
    method public androidx.window.extensions.embedding.SplitAttributes build();
    method public androidx.window.extensions.embedding.SplitAttributes.Builder setLayoutDirection(int);
    method public androidx.window.extensions.embedding.SplitAttributes.Builder setSplitType(androidx.window.extensions.embedding.SplitAttributes.SplitType);
  }

  public static final class SplitAttributes.LayoutDirection {
    field public static final int BOTTOM_TO_TOP = 5; // 0x5
    field public static final int LEFT_TO_RIGHT = 0; // 0x0
    field public static final int LOCALE = 3; // 0x3
    field public static final int RIGHT_TO_LEFT = 1; // 0x1
    field public static final int TOP_TO_BOTTOM = 4; // 0x4
  }

  public static class SplitAttributes.SplitType {
  }

  public static final class SplitAttributes.SplitType.ExpandContainersSplitType extends androidx.window.extensions.embedding.SplitAttributes.SplitType {
    ctor public SplitAttributes.SplitType.ExpandContainersSplitType();
  }

  public static final class SplitAttributes.SplitType.HingeSplitType extends androidx.window.extensions.embedding.SplitAttributes.SplitType {
    ctor public SplitAttributes.SplitType.HingeSplitType(androidx.window.extensions.embedding.SplitAttributes.SplitType);
    method public androidx.window.extensions.embedding.SplitAttributes.SplitType getFallbackSplitType();
  }

  public static final class SplitAttributes.SplitType.RatioSplitType extends androidx.window.extensions.embedding.SplitAttributes.SplitType {
    ctor public SplitAttributes.SplitType.RatioSplitType(@FloatRange(from=0.0, to=1.0, fromInclusive=false, toInclusive=false) float);
    method @FloatRange(from=0.0, to=1.0, fromInclusive=false, toInclusive=false) public float getRatio();
    method public static androidx.window.extensions.embedding.SplitAttributes.SplitType.RatioSplitType splitEqually();
  }

  public class SplitAttributesCalculatorParams {
    method public boolean areDefaultConstraintsSatisfied();
    method public androidx.window.extensions.embedding.SplitAttributes getDefaultSplitAttributes();
    method public android.content.res.Configuration getParentConfiguration();
    method public androidx.window.extensions.layout.WindowLayoutInfo getParentWindowLayoutInfo();
    method public android.view.WindowMetrics getParentWindowMetrics();
    method public String? getSplitRuleTag();
  }

  public class SplitInfo {
    method public androidx.window.extensions.embedding.ActivityStack getPrimaryActivityStack();
    method public androidx.window.extensions.embedding.ActivityStack getSecondaryActivityStack();
    method public androidx.window.extensions.embedding.SplitAttributes getSplitAttributes();
    method @Deprecated public float getSplitRatio();
    method public android.os.IBinder getToken();
  }

  public class SplitPairRule extends androidx.window.extensions.embedding.SplitRule {
    method public int getFinishPrimaryWithSecondary();
    method public int getFinishSecondaryWithPrimary();
    method @RequiresApi(api=android.os.Build.VERSION_CODES.N) public boolean matchesActivityIntentPair(android.app.Activity, android.content.Intent);
    method @RequiresApi(api=android.os.Build.VERSION_CODES.N) public boolean matchesActivityPair(android.app.Activity, android.app.Activity);
    method public boolean shouldClearTop();
  }

  public static final class SplitPairRule.Builder {
    ctor public SplitPairRule.Builder(androidx.window.extensions.core.util.function.Predicate<android.util.Pair<android.app.Activity!,android.app.Activity!>!>, androidx.window.extensions.core.util.function.Predicate<android.util.Pair<android.app.Activity!,android.content.Intent!>!>, androidx.window.extensions.core.util.function.Predicate<android.view.WindowMetrics!>);
    ctor @Deprecated @RequiresApi(android.os.Build.VERSION_CODES.N) public SplitPairRule.Builder(java.util.function.Predicate<android.util.Pair<android.app.Activity!,android.app.Activity!>!>, java.util.function.Predicate<android.util.Pair<android.app.Activity!,android.content.Intent!>!>, java.util.function.Predicate<android.view.WindowMetrics!>);
    method public androidx.window.extensions.embedding.SplitPairRule build();
    method public androidx.window.extensions.embedding.SplitPairRule.Builder setDefaultSplitAttributes(androidx.window.extensions.embedding.SplitAttributes);
    method public androidx.window.extensions.embedding.SplitPairRule.Builder setFinishPrimaryWithSecondary(int);
    method public androidx.window.extensions.embedding.SplitPairRule.Builder setFinishSecondaryWithPrimary(int);
    method @Deprecated public androidx.window.extensions.embedding.SplitPairRule.Builder setLayoutDirection(int);
    method public androidx.window.extensions.embedding.SplitPairRule.Builder setShouldClearTop(boolean);
    method @Deprecated public androidx.window.extensions.embedding.SplitPairRule.Builder setShouldFinishPrimaryWithSecondary(boolean);
    method @Deprecated public androidx.window.extensions.embedding.SplitPairRule.Builder setShouldFinishSecondaryWithPrimary(boolean);
    method @Deprecated public androidx.window.extensions.embedding.SplitPairRule.Builder setSplitRatio(@FloatRange(from=0.0, to=1.0) float);
    method public androidx.window.extensions.embedding.SplitPairRule.Builder setTag(String);
  }

  public class SplitPlaceholderRule extends androidx.window.extensions.embedding.SplitRule {
    method public int getFinishPrimaryWithPlaceholder();
    method @Deprecated public int getFinishPrimaryWithSecondary();
    method public android.content.Intent getPlaceholderIntent();
    method public boolean isSticky();
    method @RequiresApi(api=android.os.Build.VERSION_CODES.N) public boolean matchesActivity(android.app.Activity);
    method @RequiresApi(api=android.os.Build.VERSION_CODES.N) public boolean matchesIntent(android.content.Intent);
  }

  public static final class SplitPlaceholderRule.Builder {
    ctor public SplitPlaceholderRule.Builder(android.content.Intent, androidx.window.extensions.core.util.function.Predicate<android.app.Activity!>, androidx.window.extensions.core.util.function.Predicate<android.content.Intent!>, androidx.window.extensions.core.util.function.Predicate<android.view.WindowMetrics!>);
    ctor @Deprecated @RequiresApi(android.os.Build.VERSION_CODES.N) public SplitPlaceholderRule.Builder(android.content.Intent, java.util.function.Predicate<android.app.Activity!>, java.util.function.Predicate<android.content.Intent!>, java.util.function.Predicate<android.view.WindowMetrics!>);
    method public androidx.window.extensions.embedding.SplitPlaceholderRule build();
    method public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setDefaultSplitAttributes(androidx.window.extensions.embedding.SplitAttributes);
    method public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setFinishPrimaryWithPlaceholder(int);
    method @Deprecated public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setFinishPrimaryWithSecondary(int);
    method @Deprecated public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setLayoutDirection(int);
    method @Deprecated public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setSplitRatio(@FloatRange(from=0.0, to=1.0) float);
    method public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setSticky(boolean);
    method public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setTag(String);
  }

  public abstract class SplitRule extends androidx.window.extensions.embedding.EmbeddingRule {
    method @RequiresApi(api=android.os.Build.VERSION_CODES.N) public boolean checkParentMetrics(android.view.WindowMetrics);
    method public androidx.window.extensions.embedding.SplitAttributes getDefaultSplitAttributes();
    method @Deprecated public int getLayoutDirection();
    method @Deprecated public float getSplitRatio();
    field public static final int FINISH_ADJACENT = 2; // 0x2
    field public static final int FINISH_ALWAYS = 1; // 0x1
    field public static final int FINISH_NEVER = 0; // 0x0
  }

}

package androidx.window.extensions.layout {

  public interface DisplayFeature {
    method public android.graphics.Rect getBounds();
  }

  public class FoldingFeature implements androidx.window.extensions.layout.DisplayFeature {
    ctor public FoldingFeature(android.graphics.Rect, int, int);
    method public android.graphics.Rect getBounds();
    method public int getState();
    method public int getType();
    field public static final int STATE_FLAT = 1; // 0x1
    field public static final int STATE_HALF_OPENED = 2; // 0x2
    field public static final int TYPE_FOLD = 1; // 0x1
    field public static final int TYPE_HINGE = 2; // 0x2
  }

  public interface WindowLayoutComponent {
    method @Deprecated public void addWindowLayoutInfoListener(android.app.Activity, java.util.function.Consumer<androidx.window.extensions.layout.WindowLayoutInfo!>);
    method public default void addWindowLayoutInfoListener(@UiContext android.content.Context, androidx.window.extensions.core.util.function.Consumer<androidx.window.extensions.layout.WindowLayoutInfo!>);
    method public default void removeWindowLayoutInfoListener(androidx.window.extensions.core.util.function.Consumer<androidx.window.extensions.layout.WindowLayoutInfo!>);
    method @Deprecated public void removeWindowLayoutInfoListener(java.util.function.Consumer<androidx.window.extensions.layout.WindowLayoutInfo!>);
  }

  public class WindowLayoutInfo {
    ctor public WindowLayoutInfo(java.util.List<androidx.window.extensions.layout.DisplayFeature!>);
    method public java.util.List<androidx.window.extensions.layout.DisplayFeature!> getDisplayFeatures();
  }

}

