diff --git a/navigation/common/api/restricted_1.0.0-rc01.txt b/navigation/common/api/restricted_1.0.0-rc01.txt
new file mode 100644
index 0000000..fddd508
--- /dev/null
+++ b/navigation/common/api/restricted_1.0.0-rc01.txt
@@ -0,0 +1,17 @@
+// Signature format: 3.0
+package androidx.navigation {
+
+  public abstract class Navigator<D extends androidx.navigation.NavDestination> {
+    method @RestrictTo(android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP) public final void addOnNavigatorBackPressListener(androidx.navigation.Navigator.OnNavigatorBackPressListener);
+    method @RestrictTo(android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP) public final void dispatchOnNavigatorBackPress();
+    method @RestrictTo(android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP) protected void onBackPressAdded();
+    method @RestrictTo(android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP) protected void onBackPressRemoved();
+    method @RestrictTo(android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP) public final void removeOnNavigatorBackPressListener(androidx.navigation.Navigator.OnNavigatorBackPressListener);
+  }
+
+  @RestrictTo(android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static interface Navigator.OnNavigatorBackPressListener {
+    method public void onPopBackStack(androidx.navigation.Navigator);
+  }
+
+}
+
diff --git a/navigation/common/ktx/api/restricted_1.0.0-rc01.txt b/navigation/common/ktx/api/restricted_1.0.0-rc01.txt
new file mode 100644
index 0000000..da4f6cc
--- /dev/null
+++ b/navigation/common/ktx/api/restricted_1.0.0-rc01.txt
@@ -0,0 +1 @@
+// Signature format: 3.0
diff --git a/navigation/fragment/api/restricted_1.0.0-rc01.txt b/navigation/fragment/api/restricted_1.0.0-rc01.txt
new file mode 100644
index 0000000..da4f6cc
--- /dev/null
+++ b/navigation/fragment/api/restricted_1.0.0-rc01.txt
@@ -0,0 +1 @@
+// Signature format: 3.0
diff --git a/navigation/fragment/ktx/api/restricted_1.0.0-rc01.txt b/navigation/fragment/ktx/api/restricted_1.0.0-rc01.txt
new file mode 100644
index 0000000..da4f6cc
--- /dev/null
+++ b/navigation/fragment/ktx/api/restricted_1.0.0-rc01.txt
@@ -0,0 +1 @@
+// Signature format: 3.0
diff --git a/navigation/runtime/api/restricted_1.0.0-rc01.txt b/navigation/runtime/api/restricted_1.0.0-rc01.txt
new file mode 100644
index 0000000..da4f6cc
--- /dev/null
+++ b/navigation/runtime/api/restricted_1.0.0-rc01.txt
@@ -0,0 +1 @@
+// Signature format: 3.0
diff --git a/navigation/runtime/ktx/api/restricted_1.0.0-rc01.txt b/navigation/runtime/ktx/api/restricted_1.0.0-rc01.txt
new file mode 100644
index 0000000..da4f6cc
--- /dev/null
+++ b/navigation/runtime/ktx/api/restricted_1.0.0-rc01.txt
@@ -0,0 +1 @@
+// Signature format: 3.0
diff --git a/navigation/ui/api/restricted_1.0.0-rc01.txt b/navigation/ui/api/restricted_1.0.0-rc01.txt
new file mode 100644
index 0000000..da4f6cc
--- /dev/null
+++ b/navigation/ui/api/restricted_1.0.0-rc01.txt
@@ -0,0 +1 @@
+// Signature format: 3.0
diff --git a/navigation/ui/ktx/api/restricted_1.0.0-rc01.txt b/navigation/ui/ktx/api/restricted_1.0.0-rc01.txt
new file mode 100644
index 0000000..da4f6cc
--- /dev/null
+++ b/navigation/ui/ktx/api/restricted_1.0.0-rc01.txt
@@ -0,0 +1 @@
+// Signature format: 3.0
diff --git a/paging/common/api/restricted_2.2.0-alpha01.txt b/paging/common/api/restricted_2.2.0-alpha01.txt
index 2f8fc77..48a4397 100644
--- a/paging/common/api/restricted_2.2.0-alpha01.txt
+++ b/paging/common/api/restricted_2.2.0-alpha01.txt
@@ -10,3 +10,21 @@
 
 }
 
+package androidx.paging.futures {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class DirectExecutor implements java.util.concurrent.Executor {
+    method public void execute(Runnable);
+    field public static androidx.paging.futures.DirectExecutor INSTANCE;
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public interface FutureCallback<V> {
+    method public void onError(Throwable);
+    method public void onSuccess(V!);
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class Futures {
+    method public static <I, O> com.google.common.util.concurrent.ListenableFuture<O> transform(com.google.common.util.concurrent.ListenableFuture<I>, androidx.arch.core.util.Function<? super I,? extends O>, java.util.concurrent.Executor);
+  }
+
+}
+
diff --git a/paging/common/api/restricted_current.txt b/paging/common/api/restricted_current.txt
index 2f8fc77..48a4397 100644
--- a/paging/common/api/restricted_current.txt
+++ b/paging/common/api/restricted_current.txt
@@ -10,3 +10,21 @@
 
 }
 
+package androidx.paging.futures {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class DirectExecutor implements java.util.concurrent.Executor {
+    method public void execute(Runnable);
+    field public static androidx.paging.futures.DirectExecutor INSTANCE;
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public interface FutureCallback<V> {
+    method public void onError(Throwable);
+    method public void onSuccess(V!);
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class Futures {
+    method public static <I, O> com.google.common.util.concurrent.ListenableFuture<O> transform(com.google.common.util.concurrent.ListenableFuture<I>, androidx.arch.core.util.Function<? super I,? extends O>, java.util.concurrent.Executor);
+  }
+
+}
+
diff --git a/work/workmanager-ktx/api/restricted_1.0.0-rc02.txt b/work/workmanager-ktx/api/restricted_1.0.0-rc02.txt
new file mode 100644
index 0000000..bdec7f9
--- /dev/null
+++ b/work/workmanager-ktx/api/restricted_1.0.0-rc02.txt
@@ -0,0 +1,14 @@
+// Signature format: 3.0
+package androidx.work {
+
+  @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP}) public enum DirectExecutor implements java.util.concurrent.Executor {
+    method public void execute(Runnable command);
+    enum_constant public static final androidx.work.DirectExecutor INSTANCE;
+  }
+
+  public final class ListenableFutureKt {
+    method @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP}) public static suspend inline <R> Object! await(com.google.common.util.concurrent.ListenableFuture<R>, kotlin.coroutines.experimental.Continuation<? super R>! p);
+  }
+
+}
+
diff --git a/work/workmanager-rxjava2/api/restricted_1.0.0-rc02.txt b/work/workmanager-rxjava2/api/restricted_1.0.0-rc02.txt
new file mode 100644
index 0000000..da4f6cc
--- /dev/null
+++ b/work/workmanager-rxjava2/api/restricted_1.0.0-rc02.txt
@@ -0,0 +1 @@
+// Signature format: 3.0
diff --git a/work/workmanager-testing/api/restricted_1.0.0-rc02.txt b/work/workmanager-testing/api/restricted_1.0.0-rc02.txt
new file mode 100644
index 0000000..da4f6cc
--- /dev/null
+++ b/work/workmanager-testing/api/restricted_1.0.0-rc02.txt
@@ -0,0 +1 @@
+// Signature format: 3.0
