diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInput.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInput.java
index ba490a1..944edc2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInput.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInput.java
@@ -15,19 +15,21 @@
 package com.google.devtools.build.lib.rules.cpp;
 
 import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.skylarkbuildapi.cpp.LinkerInputApi;
 
 /**
  * Something that appears on the command line of the linker. Since we sometimes expand archive files
  * to their constituent object files, we need to keep information whether a certain file contains
  * embedded objects and if so, the list of the object files themselves.
  */
-public interface LinkerInput extends LinkerInputApi<Artifact> {
+public interface LinkerInput {
   /**
    * Returns the type of the linker input.
    */
   ArtifactCategory getArtifactCategory();
 
+  /** Returns the artifact that is the input of the linker. */
+  Artifact getArtifact();
+
   /**
    * Returns the original library to link. If this library is a solib symlink, returns the
    * artifact the symlink points to, otherwise, the library itself.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java
index b2c0404..4fe4adc 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
-import com.google.devtools.build.lib.skylarkbuildapi.cpp.LibraryToLinkApi;
 
 /**
  * Factory for creating new {@link LinkerInput} objects.
@@ -153,7 +152,7 @@
    * A library the user can link to. This is different from a simple linker input in that it also
    * has a library identifier.
    */
-  public interface LibraryToLink extends LinkerInput, LibraryToLinkApi<Artifact> {
+  public interface LibraryToLink extends LinkerInput {
     LtoCompilationContext getLtoCompilationContext();
 
     /**
@@ -206,7 +205,6 @@
       return ArtifactCategory.DYNAMIC_LIBRARY;
     }
 
-    @Override
     public Artifact getArtifact() {
       return solibSymlinkArtifact;
     }
@@ -362,7 +360,6 @@
       return category;
     }
 
-    @Override
     public Artifact getArtifact() {
       return libraryArtifact;
     }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
deleted file mode 100644
index 523dd52..0000000
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2018 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.skylarkbuildapi.cpp;
-
-import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
-
-/**
- * A library the user can link to. This is different from a simple linker input in that it also has
- * a library identifier.
- */
-@SkylarkModule(
-    name = "OldLibraryToLink",
-    category = SkylarkModuleCategory.BUILTIN,
-    documented = false,
-    doc = "A library the user can link to.")
-public interface LibraryToLinkApi<FileT extends FileApi> extends LinkerInputApi<FileT> {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java
deleted file mode 100644
index c4fa95e..0000000
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2014 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.skylarkbuildapi.cpp;
-
-import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
-
-/**
- * Something that appears on the command line of the linker. Since we sometimes expand archive files
- * to their constituent object files, we need to keep information whether a certain file contains
- * embedded objects and if so, the list of the object files themselves.
- */
-@SkylarkModule(
-    name = "LinkerInputApi",
-    category = SkylarkModuleCategory.BUILTIN,
-    documented = false,
-    doc = "An input that appears in the command line of the linker.")
-public interface LinkerInputApi<FileT extends FileApi> {
-  /** Returns the artifact that is the input of the linker. */
-  @SkylarkCallable(name = "artifact", doc = "Artifact passed to the linker.")
-  FileT getArtifact();
-
-  @SkylarkCallable(name = "original_artifact", doc = "Artifact passed to the linker.")
-  FileT getOriginalLibraryArtifact();
-}
