// 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 androidx.window.extensions.layout.WindowLayoutComponent? getWindowLayoutComponent();
  }

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

}

package androidx.window.extensions.embedding {

  public interface ActivityEmbeddingComponent {
    method public void clearSplitInfoCallback();
    method public boolean isActivityEmbedded(android.app.Activity);
    method public void setEmbeddingRules(java.util.Set<androidx.window.extensions.embedding.EmbeddingRule!>);
    method public void setSplitInfoCallback(java.util.function.Consumer<java.util.List<androidx.window.extensions.embedding.SplitInfo!>!>);
  }

  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(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);
  }

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

  public abstract class EmbeddingRule {
  }

  public class SplitInfo {
    ctor public SplitInfo(androidx.window.extensions.embedding.ActivityStack, androidx.window.extensions.embedding.ActivityStack, float);
    method public androidx.window.extensions.embedding.ActivityStack getPrimaryActivityStack();
    method public androidx.window.extensions.embedding.ActivityStack getSecondaryActivityStack();
    method public float getSplitRatio();
  }

  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(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 setFinishPrimaryWithSecondary(int);
    method public androidx.window.extensions.embedding.SplitPairRule.Builder setFinishSecondaryWithPrimary(int);
    method 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 public androidx.window.extensions.embedding.SplitPairRule.Builder setSplitRatio(float);
  }

  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, 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 setFinishPrimaryWithPlaceholder(int);
    method @Deprecated public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setFinishPrimaryWithSecondary(int);
    method public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setLayoutDirection(int);
    method public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setSplitRatio(float);
    method public androidx.window.extensions.embedding.SplitPlaceholderRule.Builder setSticky(boolean);
  }

  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 int getLayoutDirection();
    method 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 public void addWindowLayoutInfoListener(android.app.Activity, java.util.function.Consumer<androidx.window.extensions.layout.WindowLayoutInfo!>);
    method 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();
  }

}

