diff --git a/apps/api-extractor/src/analyzer/AstNamespaceExport.ts b/apps/api-extractor/src/analyzer/AstNamespaceExport.ts
new file mode 100644
index 00000000000..f339bf6dbbb
--- /dev/null
+++ b/apps/api-extractor/src/analyzer/AstNamespaceExport.ts
@@ -0,0 +1,42 @@
+// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
+// See LICENSE in the project root for license information.
+
+import { AstNamespaceImport, type IAstNamespaceImportOptions } from './AstNamespaceImport';
+
+export interface IAstNamespaceExportOptions extends IAstNamespaceImportOptions {}
+
+/**
+ * `AstNamespaceExport` represents a namespace that is created implicitly and exported by a statement
+ * such as `export * as example from "./file";`
+ *
+ * @remarks
+ *
+ * A typical input looks like this:
+ * ```ts
+ * // Suppose that example.ts exports two functions f1() and f2().
+ * export * as example from "./file";
+ * ```
+ *
+ * API Extractor's .d.ts rollup will transform it into an explicit namespace, like this:
+ * ```ts
+ * declare f1(): void;
+ * declare f2(): void;
+ *
+ * export declare namespace example {
+ *   export {
+ *     f1,
+ *     f2
+ *   }
+ * }
+ * ```
+ *
+ * The current implementation does not attempt to relocate f1()/f2() to be inside the `namespace`
+ * because other type signatures may reference them directly (without using the namespace qualifier).
+ * The AstNamespaceExports behaves the same as AstNamespaceImport, it just also has the inline export for the craeted namespace.
+ */
+
+export class AstNamespaceExport extends AstNamespaceImport {
+  public constructor(options: IAstNamespaceExportOptions) {
+    super(options);
+  }
+}
diff --git a/apps/api-extractor/src/analyzer/ExportAnalyzer.ts b/apps/api-extractor/src/analyzer/ExportAnalyzer.ts
index b4a345e69f1..5268cc8eb16 100644
--- a/apps/api-extractor/src/analyzer/ExportAnalyzer.ts
+++ b/apps/api-extractor/src/analyzer/ExportAnalyzer.ts
@@ -14,6 +14,7 @@ import type { IFetchAstSymbolOptions } from './AstSymbolTable';
 import type { AstEntity } from './AstEntity';
 import { AstNamespaceImport } from './AstNamespaceImport';
 import { SyntaxHelpers } from './SyntaxHelpers';
+import { AstNamespaceExport } from './AstNamespaceExport';
 
 /**
  * Exposes the minimal APIs from AstSymbolTable that are needed by ExportAnalyzer.
@@ -562,11 +563,9 @@ export class ExportAnalyzer {
         //   SemicolonToken:  pre=[;]
 
         // Issue tracking this feature: https://github.com/microsoft/rushstack/issues/2780
-        throw new Error(
-          `The "export * as ___" syntax is not supported yet; as a workaround,` +
-            ` use "import * as ___" with a separate "export { ___ }" declaration\n` +
-            SourceFileLocationFormatter.formatDeclaration(declaration)
-        );
+
+        const astModule: AstModule = this._fetchSpecifierAstModule(exportDeclaration, declarationSymbol);
+        return this._getAstNamespaceExport(astModule, declarationSymbol, declaration);
       } else {
         throw new InternalError(
           `Unimplemented export declaration kind: ${declaration.getText()}\n` +
@@ -594,6 +593,25 @@ export class ExportAnalyzer {
     return undefined;
   }
 
+  private _getAstNamespaceExport(
+    astModule: AstModule,
+    declarationSymbol: ts.Symbol,
+    declaration: ts.Declaration
+  ): AstNamespaceExport {
+    const imoprtNamespace: AstNamespaceImport = this._getAstNamespaceImport(
+      astModule,
+      declarationSymbol,
+      declaration
+    );
+
+    return new AstNamespaceExport({
+      namespaceName: imoprtNamespace.localName,
+      astModule: astModule,
+      declaration,
+      symbol: declarationSymbol
+    });
+  }
+
   private _tryMatchImportDeclaration(
     declaration: ts.Declaration,
     declarationSymbol: ts.Symbol
@@ -621,18 +639,7 @@ export class ExportAnalyzer {
 
         if (externalModulePath === undefined) {
           const astModule: AstModule = this._fetchSpecifierAstModule(importDeclaration, declarationSymbol);
-          let namespaceImport: AstNamespaceImport | undefined =
-            this._astNamespaceImportByModule.get(astModule);
-          if (namespaceImport === undefined) {
-            namespaceImport = new AstNamespaceImport({
-              namespaceName: declarationSymbol.name,
-              astModule: astModule,
-              declaration: declaration,
-              symbol: declarationSymbol
-            });
-            this._astNamespaceImportByModule.set(astModule, namespaceImport);
-          }
-          return namespaceImport;
+          return this._getAstNamespaceImport(astModule, declarationSymbol, declaration);
         }
 
         // Here importSymbol=undefined because {@inheritDoc} and such are not going to work correctly for
@@ -759,6 +766,25 @@ export class ExportAnalyzer {
     return undefined;
   }
 
+  private _getAstNamespaceImport(
+    astModule: AstModule,
+    declarationSymbol: ts.Symbol,
+    declaration: ts.Declaration
+  ): AstNamespaceImport {
+    let namespaceImport: AstNamespaceImport | undefined = this._astNamespaceImportByModule.get(astModule);
+    if (namespaceImport === undefined) {
+      namespaceImport = new AstNamespaceImport({
+        namespaceName: declarationSymbol.name,
+        astModule: astModule,
+        declaration: declaration,
+        symbol: declarationSymbol
+      });
+      this._astNamespaceImportByModule.set(astModule, namespaceImport);
+    }
+
+    return namespaceImport;
+  }
+
   private static _getIsTypeOnly(importDeclaration: ts.ImportDeclaration): boolean {
     if (importDeclaration.importClause) {
       return !!importDeclaration.importClause.isTypeOnly;
diff --git a/apps/api-extractor/src/collector/CollectorEntity.ts b/apps/api-extractor/src/collector/CollectorEntity.ts
index 161eb7419e1..df75ffbe88a 100644
--- a/apps/api-extractor/src/collector/CollectorEntity.ts
+++ b/apps/api-extractor/src/collector/CollectorEntity.ts
@@ -7,6 +7,7 @@ import { AstSymbol } from '../analyzer/AstSymbol';
 import { Collector } from './Collector';
 import { Sort } from '@rushstack/node-core-library';
 import type { AstEntity } from '../analyzer/AstEntity';
+import { AstNamespaceExport } from '../analyzer/AstNamespaceExport';
 
 /**
  * This is a data structure used by the Collector to track an AstEntity that may be emitted in the *.d.ts file.
@@ -82,6 +83,11 @@ export class CollectorEntity {
    * such as "export class X { }" instead of "export { X }".
    */
   public get shouldInlineExport(): boolean {
+    // We export the namespace directly
+    if (this.astEntity instanceof AstNamespaceExport) {
+      return true;
+    }
+
     // We don't inline an AstImport
     if (this.astEntity instanceof AstSymbol) {
       // We don't inline a symbol with more than one exported name
diff --git a/build-tests/api-extractor-scenarios/etc/exportStarAs/api-extractor-scenarios.api.json b/build-tests/api-extractor-scenarios/etc/exportStarAs/api-extractor-scenarios.api.json
new file mode 100644
index 00000000000..a2e1279b6cc
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/etc/exportStarAs/api-extractor-scenarios.api.json
@@ -0,0 +1,492 @@
+{
+  "metadata": {
+    "toolPackage": "@microsoft/api-extractor",
+    "toolVersion": "[test mode]",
+    "schemaVersion": 1011,
+    "oldestForwardsCompatibleVersion": 1001,
+    "tsdocConfig": {
+      "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
+      "noStandardTags": true,
+      "tagDefinitions": [
+        {
+          "tagName": "@alpha",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@beta",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@defaultValue",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@decorator",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@deprecated",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@eventProperty",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@example",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@experimental",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@inheritDoc",
+          "syntaxKind": "inline"
+        },
+        {
+          "tagName": "@internal",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@label",
+          "syntaxKind": "inline"
+        },
+        {
+          "tagName": "@link",
+          "syntaxKind": "inline",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@override",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@packageDocumentation",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@param",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@privateRemarks",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@public",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@readonly",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@remarks",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@returns",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@sealed",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@see",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@throws",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@typeParam",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@virtual",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@betaDocumentation",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@internalRemarks",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@preapproved",
+          "syntaxKind": "modifier"
+        }
+      ],
+      "supportForTags": {
+        "@alpha": true,
+        "@beta": true,
+        "@defaultValue": true,
+        "@decorator": true,
+        "@deprecated": true,
+        "@eventProperty": true,
+        "@example": true,
+        "@experimental": true,
+        "@inheritDoc": true,
+        "@internal": true,
+        "@label": true,
+        "@link": true,
+        "@override": true,
+        "@packageDocumentation": true,
+        "@param": true,
+        "@privateRemarks": true,
+        "@public": true,
+        "@readonly": true,
+        "@remarks": true,
+        "@returns": true,
+        "@sealed": true,
+        "@see": true,
+        "@throws": true,
+        "@typeParam": true,
+        "@virtual": true,
+        "@betaDocumentation": true,
+        "@internalRemarks": true,
+        "@preapproved": true
+      },
+      "reportUnsupportedHtmlElements": false
+    }
+  },
+  "kind": "Package",
+  "canonicalReference": "api-extractor-scenarios!",
+  "docComment": "",
+  "name": "api-extractor-scenarios",
+  "preserveMemberOrder": false,
+  "members": [
+    {
+      "kind": "EntryPoint",
+      "canonicalReference": "api-extractor-scenarios!",
+      "name": "",
+      "preserveMemberOrder": false,
+      "members": [
+        {
+          "kind": "Namespace",
+          "canonicalReference": "api-extractor-scenarios!calculator:namespace",
+          "docComment": "",
+          "excerptTokens": [],
+          "fileUrlPath": "src/exportStarAs/index.ts",
+          "releaseTag": "None",
+          "name": "calculator",
+          "preserveMemberOrder": false,
+          "members": [
+            {
+              "kind": "Function",
+              "canonicalReference": "api-extractor-scenarios!calculator.add:function(1)",
+              "docComment": "/**\n * Returns the sum of adding `b` to `a`\n *\n * @param a - first number\n *\n * @param b - second number\n *\n * @returns Sum of adding `b` to `a`\n *\n * @public\n */\n",
+              "excerptTokens": [
+                {
+                  "kind": "Content",
+                  "text": "export declare function add(a: "
+                },
+                {
+                  "kind": "Content",
+                  "text": "number"
+                },
+                {
+                  "kind": "Content",
+                  "text": ", b: "
+                },
+                {
+                  "kind": "Content",
+                  "text": "number"
+                },
+                {
+                  "kind": "Content",
+                  "text": "): "
+                },
+                {
+                  "kind": "Content",
+                  "text": "number"
+                },
+                {
+                  "kind": "Content",
+                  "text": ";"
+                }
+              ],
+              "fileUrlPath": "src/exportStarAs/calculator.ts",
+              "returnTypeTokenRange": {
+                "startIndex": 5,
+                "endIndex": 6
+              },
+              "releaseTag": "Public",
+              "overloadIndex": 1,
+              "parameters": [
+                {
+                  "parameterName": "a",
+                  "parameterTypeTokenRange": {
+                    "startIndex": 1,
+                    "endIndex": 2
+                  },
+                  "isOptional": false
+                },
+                {
+                  "parameterName": "b",
+                  "parameterTypeTokenRange": {
+                    "startIndex": 3,
+                    "endIndex": 4
+                  },
+                  "isOptional": false
+                }
+              ],
+              "name": "add"
+            },
+            {
+              "kind": "Variable",
+              "canonicalReference": "api-extractor-scenarios!calculator.calculatorVersion:var",
+              "docComment": "/**\n * Returns the version of the calculator.\n *\n * @public\n */\n",
+              "excerptTokens": [
+                {
+                  "kind": "Content",
+                  "text": "calculatorVersion: "
+                },
+                {
+                  "kind": "Content",
+                  "text": "string"
+                }
+              ],
+              "fileUrlPath": "src/exportStarAs/common.ts",
+              "isReadonly": true,
+              "releaseTag": "Public",
+              "name": "calculatorVersion",
+              "variableTypeTokenRange": {
+                "startIndex": 1,
+                "endIndex": 2
+              }
+            },
+            {
+              "kind": "Function",
+              "canonicalReference": "api-extractor-scenarios!calculator.subtract:function(1)",
+              "docComment": "/**\n * Returns the sum of subtracting `b` from `a`\n *\n * @param a - first number\n *\n * @param b - second number\n *\n * @returns Sum of subtract `b` from `a`\n *\n * @beta\n */\n",
+              "excerptTokens": [
+                {
+                  "kind": "Content",
+                  "text": "export declare function subtract(a: "
+                },
+                {
+                  "kind": "Content",
+                  "text": "number"
+                },
+                {
+                  "kind": "Content",
+                  "text": ", b: "
+                },
+                {
+                  "kind": "Content",
+                  "text": "number"
+                },
+                {
+                  "kind": "Content",
+                  "text": "): "
+                },
+                {
+                  "kind": "Content",
+                  "text": "number"
+                },
+                {
+                  "kind": "Content",
+                  "text": ";"
+                }
+              ],
+              "fileUrlPath": "src/exportStarAs/calculator.ts",
+              "returnTypeTokenRange": {
+                "startIndex": 5,
+                "endIndex": 6
+              },
+              "releaseTag": "Beta",
+              "overloadIndex": 1,
+              "parameters": [
+                {
+                  "parameterName": "a",
+                  "parameterTypeTokenRange": {
+                    "startIndex": 1,
+                    "endIndex": 2
+                  },
+                  "isOptional": false
+                },
+                {
+                  "parameterName": "b",
+                  "parameterTypeTokenRange": {
+                    "startIndex": 3,
+                    "endIndex": 4
+                  },
+                  "isOptional": false
+                }
+              ],
+              "name": "subtract"
+            }
+          ]
+        },
+        {
+          "kind": "Namespace",
+          "canonicalReference": "api-extractor-scenarios!calculator2:namespace",
+          "docComment": "",
+          "excerptTokens": [],
+          "fileUrlPath": "src/exportStarAs/index.ts",
+          "releaseTag": "None",
+          "name": "calculator2",
+          "preserveMemberOrder": false,
+          "members": [
+            {
+              "kind": "Function",
+              "canonicalReference": "api-extractor-scenarios!calculator2.add:function(1)",
+              "docComment": "/**\n * Returns the sum of adding `b` to `a` for large integers\n *\n * @param a - first number\n *\n * @param b - second number\n *\n * @returns Sum of adding `b` to `a`\n *\n * @public\n */\n",
+              "excerptTokens": [
+                {
+                  "kind": "Content",
+                  "text": "export declare function add(a: "
+                },
+                {
+                  "kind": "Content",
+                  "text": "bigint"
+                },
+                {
+                  "kind": "Content",
+                  "text": ", b: "
+                },
+                {
+                  "kind": "Content",
+                  "text": "bigint"
+                },
+                {
+                  "kind": "Content",
+                  "text": "): "
+                },
+                {
+                  "kind": "Content",
+                  "text": "bigint"
+                },
+                {
+                  "kind": "Content",
+                  "text": ";"
+                }
+              ],
+              "fileUrlPath": "src/exportStarAs/calculator2.ts",
+              "returnTypeTokenRange": {
+                "startIndex": 5,
+                "endIndex": 6
+              },
+              "releaseTag": "Public",
+              "overloadIndex": 1,
+              "parameters": [
+                {
+                  "parameterName": "a",
+                  "parameterTypeTokenRange": {
+                    "startIndex": 1,
+                    "endIndex": 2
+                  },
+                  "isOptional": false
+                },
+                {
+                  "parameterName": "b",
+                  "parameterTypeTokenRange": {
+                    "startIndex": 3,
+                    "endIndex": 4
+                  },
+                  "isOptional": false
+                }
+              ],
+              "name": "add"
+            },
+            {
+              "kind": "Variable",
+              "canonicalReference": "api-extractor-scenarios!calculator2.calculatorVersion:var",
+              "docComment": "/**\n * Returns the version of the calculator.\n *\n * @public\n */\n",
+              "excerptTokens": [
+                {
+                  "kind": "Content",
+                  "text": "calculatorVersion: "
+                },
+                {
+                  "kind": "Content",
+                  "text": "string"
+                }
+              ],
+              "fileUrlPath": "src/exportStarAs/common.ts",
+              "isReadonly": true,
+              "releaseTag": "Public",
+              "name": "calculatorVersion",
+              "variableTypeTokenRange": {
+                "startIndex": 1,
+                "endIndex": 2
+              }
+            },
+            {
+              "kind": "Function",
+              "canonicalReference": "api-extractor-scenarios!calculator2.subtract:function(1)",
+              "docComment": "/**\n * Returns the sum of subtracting `b` from `a` for large integers\n *\n * @param a - first number\n *\n * @param b - second number\n *\n * @returns Sum of subtract `b` from `a`\n *\n * @beta\n */\n",
+              "excerptTokens": [
+                {
+                  "kind": "Content",
+                  "text": "export declare function subtract(a: "
+                },
+                {
+                  "kind": "Content",
+                  "text": "bigint"
+                },
+                {
+                  "kind": "Content",
+                  "text": ", b: "
+                },
+                {
+                  "kind": "Content",
+                  "text": "bigint"
+                },
+                {
+                  "kind": "Content",
+                  "text": "): "
+                },
+                {
+                  "kind": "Content",
+                  "text": "bigint"
+                },
+                {
+                  "kind": "Content",
+                  "text": ";"
+                }
+              ],
+              "fileUrlPath": "src/exportStarAs/calculator2.ts",
+              "returnTypeTokenRange": {
+                "startIndex": 5,
+                "endIndex": 6
+              },
+              "releaseTag": "Beta",
+              "overloadIndex": 1,
+              "parameters": [
+                {
+                  "parameterName": "a",
+                  "parameterTypeTokenRange": {
+                    "startIndex": 1,
+                    "endIndex": 2
+                  },
+                  "isOptional": false
+                },
+                {
+                  "parameterName": "b",
+                  "parameterTypeTokenRange": {
+                    "startIndex": 3,
+                    "endIndex": 4
+                  },
+                  "isOptional": false
+                }
+              ],
+              "name": "subtract"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/build-tests/api-extractor-scenarios/etc/exportStarAs/api-extractor-scenarios.api.md b/build-tests/api-extractor-scenarios/etc/exportStarAs/api-extractor-scenarios.api.md
new file mode 100644
index 00000000000..fe0c6582f31
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/etc/exportStarAs/api-extractor-scenarios.api.md
@@ -0,0 +1,40 @@
+## API Report File for "api-extractor-scenarios"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+// @public
+function add(a: number, b: number): number;
+
+// @public
+function add_2(a: bigint, b: bigint): bigint;
+
+declare namespace calculator {
+    export {
+        add,
+        subtract,
+        calculatorVersion
+    }
+}
+
+declare namespace calculator2 {
+    export {
+        add_2 as add,
+        subtract_2 as subtract,
+        calculatorVersion
+    }
+}
+
+// @public
+const calculatorVersion: string;
+
+// @beta
+function subtract(a: number, b: number): number;
+
+// @beta
+function subtract_2(a: bigint, b: bigint): bigint;
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/build-tests/api-extractor-scenarios/etc/exportStarAs/rollup.d.ts b/build-tests/api-extractor-scenarios/etc/exportStarAs/rollup.d.ts
new file mode 100644
index 00000000000..4376f485243
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/etc/exportStarAs/rollup.d.ts
@@ -0,0 +1,59 @@
+/**
+ * Returns the sum of adding `b` to `a`
+ * @param a - first number
+ * @param b - second number
+ * @returns Sum of adding `b` to `a`
+ * @public
+ */
+declare function add(a: number, b: number): number;
+
+/**
+ * Returns the sum of adding `b` to `a` for large integers
+ * @param a - first number
+ * @param b - second number
+ * @returns Sum of adding `b` to `a`
+ * @public
+ */
+declare function add_2(a: bigint, b: bigint): bigint;
+
+export declare namespace calculator {
+    export {
+        add,
+        subtract,
+        calculatorVersion
+    }
+}
+
+export declare namespace calculator2 {
+    export {
+        add_2 as add,
+        subtract_2 as subtract,
+        calculatorVersion
+    }
+}
+
+/**
+ * Returns the version of the calculator.
+ * @public
+ */
+declare const calculatorVersion: string;
+
+/**
+ * Returns the sum of subtracting `b` from `a`
+ * @param a - first number
+ * @param b - second number
+ * @returns Sum of subtract `b` from `a`
+ * @beta
+ */
+declare function subtract(a: number, b: number): number;
+
+/**
+ * Returns the sum of subtracting `b` from `a` for large integers
+ * @param a - first number
+ * @param b - second number
+ * @returns Sum of subtract `b` from `a`
+ * @beta
+ */
+declare function subtract_2(a: bigint, b: bigint): bigint;
+
+export { }
diff --git a/build-tests/api-extractor-scenarios/etc/exportStarAs2/api-extractor-scenarios.api.json b/build-tests/api-extractor-scenarios/etc/exportStarAs2/api-extractor-scenarios.api.json
new file mode 100644
index 00000000000..3d6aed02798
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/etc/exportStarAs2/api-extractor-scenarios.api.json
@@ -0,0 +1,219 @@
+{
+  "metadata": {
+    "toolPackage": "@microsoft/api-extractor",
+    "toolVersion": "[test mode]",
+    "schemaVersion": 1011,
+    "oldestForwardsCompatibleVersion": 1001,
+    "tsdocConfig": {
+      "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
+      "noStandardTags": true,
+      "tagDefinitions": [
+        {
+          "tagName": "@alpha",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@beta",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@defaultValue",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@decorator",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@deprecated",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@eventProperty",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@example",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@experimental",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@inheritDoc",
+          "syntaxKind": "inline"
+        },
+        {
+          "tagName": "@internal",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@label",
+          "syntaxKind": "inline"
+        },
+        {
+          "tagName": "@link",
+          "syntaxKind": "inline",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@override",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@packageDocumentation",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@param",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@privateRemarks",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@public",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@readonly",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@remarks",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@returns",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@sealed",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@see",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@throws",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@typeParam",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@virtual",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@betaDocumentation",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@internalRemarks",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@preapproved",
+          "syntaxKind": "modifier"
+        }
+      ],
+      "supportForTags": {
+        "@alpha": true,
+        "@beta": true,
+        "@defaultValue": true,
+        "@decorator": true,
+        "@deprecated": true,
+        "@eventProperty": true,
+        "@example": true,
+        "@experimental": true,
+        "@inheritDoc": true,
+        "@internal": true,
+        "@label": true,
+        "@link": true,
+        "@override": true,
+        "@packageDocumentation": true,
+        "@param": true,
+        "@privateRemarks": true,
+        "@public": true,
+        "@readonly": true,
+        "@remarks": true,
+        "@returns": true,
+        "@sealed": true,
+        "@see": true,
+        "@throws": true,
+        "@typeParam": true,
+        "@virtual": true,
+        "@betaDocumentation": true,
+        "@internalRemarks": true,
+        "@preapproved": true
+      },
+      "reportUnsupportedHtmlElements": false
+    }
+  },
+  "kind": "Package",
+  "canonicalReference": "api-extractor-scenarios!",
+  "docComment": "",
+  "name": "api-extractor-scenarios",
+  "preserveMemberOrder": false,
+  "members": [
+    {
+      "kind": "EntryPoint",
+      "canonicalReference": "api-extractor-scenarios!",
+      "name": "",
+      "preserveMemberOrder": false,
+      "members": [
+        {
+          "kind": "Namespace",
+          "canonicalReference": "api-extractor-scenarios!ns:namespace",
+          "docComment": "",
+          "excerptTokens": [],
+          "fileUrlPath": "src/exportStarAs2/index.ts",
+          "releaseTag": "None",
+          "name": "ns",
+          "preserveMemberOrder": false,
+          "members": [
+            {
+              "kind": "Function",
+              "canonicalReference": "api-extractor-scenarios!ns.exportedApi:function(1)",
+              "docComment": "/**\n * @public\n */\n",
+              "excerptTokens": [
+                {
+                  "kind": "Content",
+                  "text": "export declare function exportedApi(): "
+                },
+                {
+                  "kind": "Reference",
+                  "text": "forgottenNs.ForgottenClass",
+                  "canonicalReference": "api-extractor-scenarios!~ForgottenClass:class"
+                },
+                {
+                  "kind": "Content",
+                  "text": ";"
+                }
+              ],
+              "fileUrlPath": "src/exportStarAs2/ns.ts",
+              "returnTypeTokenRange": {
+                "startIndex": 1,
+                "endIndex": 2
+              },
+              "releaseTag": "Public",
+              "overloadIndex": 1,
+              "parameters": [],
+              "name": "exportedApi"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/build-tests/api-extractor-scenarios/etc/exportStarAs2/api-extractor-scenarios.api.md b/build-tests/api-extractor-scenarios/etc/exportStarAs2/api-extractor-scenarios.api.md
new file mode 100644
index 00000000000..d45af72898d
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/etc/exportStarAs2/api-extractor-scenarios.api.md
@@ -0,0 +1,20 @@
+## API Report File for "api-extractor-scenarios"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+// Warning: (ae-forgotten-export) The symbol "forgottenNs" needs to be exported by the entry point index.d.ts
+//
+// @public (undocumented)
+function exportedApi(): forgottenNs.ForgottenClass;
+
+declare namespace ns {
+    export {
+        exportedApi
+    }
+}
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/build-tests/api-extractor-scenarios/etc/exportStarAs2/rollup.d.ts b/build-tests/api-extractor-scenarios/etc/exportStarAs2/rollup.d.ts
new file mode 100644
index 00000000000..47900d36059
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/etc/exportStarAs2/rollup.d.ts
@@ -0,0 +1,24 @@
+/**
+ * @public
+ */
+declare function exportedApi(): forgottenNs.ForgottenClass;
+
+/**
+ * @public
+ */
+declare class ForgottenClass {
+}
+
+declare namespace forgottenNs {
+    export {
+        ForgottenClass
+    }
+}
+
+export declare namespace ns {
+    export {
+        exportedApi
+    }
+}
+
+export { }
diff --git a/build-tests/api-extractor-scenarios/etc/exportStarAs3/api-extractor-scenarios.api.json b/build-tests/api-extractor-scenarios/etc/exportStarAs3/api-extractor-scenarios.api.json
new file mode 100644
index 00000000000..751c1c67a97
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/etc/exportStarAs3/api-extractor-scenarios.api.json
@@ -0,0 +1,244 @@
+{
+  "metadata": {
+    "toolPackage": "@microsoft/api-extractor",
+    "toolVersion": "[test mode]",
+    "schemaVersion": 1011,
+    "oldestForwardsCompatibleVersion": 1001,
+    "tsdocConfig": {
+      "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
+      "noStandardTags": true,
+      "tagDefinitions": [
+        {
+          "tagName": "@alpha",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@beta",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@defaultValue",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@decorator",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@deprecated",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@eventProperty",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@example",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@experimental",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@inheritDoc",
+          "syntaxKind": "inline"
+        },
+        {
+          "tagName": "@internal",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@label",
+          "syntaxKind": "inline"
+        },
+        {
+          "tagName": "@link",
+          "syntaxKind": "inline",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@override",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@packageDocumentation",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@param",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@privateRemarks",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@public",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@readonly",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@remarks",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@returns",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@sealed",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@see",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@throws",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@typeParam",
+          "syntaxKind": "block",
+          "allowMultiple": true
+        },
+        {
+          "tagName": "@virtual",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@betaDocumentation",
+          "syntaxKind": "modifier"
+        },
+        {
+          "tagName": "@internalRemarks",
+          "syntaxKind": "block"
+        },
+        {
+          "tagName": "@preapproved",
+          "syntaxKind": "modifier"
+        }
+      ],
+      "supportForTags": {
+        "@alpha": true,
+        "@beta": true,
+        "@defaultValue": true,
+        "@decorator": true,
+        "@deprecated": true,
+        "@eventProperty": true,
+        "@example": true,
+        "@experimental": true,
+        "@inheritDoc": true,
+        "@internal": true,
+        "@label": true,
+        "@link": true,
+        "@override": true,
+        "@packageDocumentation": true,
+        "@param": true,
+        "@privateRemarks": true,
+        "@public": true,
+        "@readonly": true,
+        "@remarks": true,
+        "@returns": true,
+        "@sealed": true,
+        "@see": true,
+        "@throws": true,
+        "@typeParam": true,
+        "@virtual": true,
+        "@betaDocumentation": true,
+        "@internalRemarks": true,
+        "@preapproved": true
+      },
+      "reportUnsupportedHtmlElements": false
+    }
+  },
+  "kind": "Package",
+  "canonicalReference": "api-extractor-scenarios!",
+  "docComment": "",
+  "name": "api-extractor-scenarios",
+  "preserveMemberOrder": false,
+  "members": [
+    {
+      "kind": "EntryPoint",
+      "canonicalReference": "api-extractor-scenarios!",
+      "name": "",
+      "preserveMemberOrder": false,
+      "members": [
+        {
+          "kind": "Namespace",
+          "canonicalReference": "api-extractor-scenarios!NS:namespace",
+          "docComment": "",
+          "excerptTokens": [],
+          "fileUrlPath": "src/exportStarAs3/index.ts",
+          "releaseTag": "None",
+          "name": "NS",
+          "preserveMemberOrder": false,
+          "members": [
+            {
+              "kind": "Variable",
+              "canonicalReference": "api-extractor-scenarios!NS.NS_BETA:var",
+              "docComment": "/**\n * @beta\n */\n",
+              "excerptTokens": [
+                {
+                  "kind": "Content",
+                  "text": "NS_BETA = "
+                },
+                {
+                  "kind": "Content",
+                  "text": "\"BETA\""
+                }
+              ],
+              "fileUrlPath": "src/exportStarAs3/NamespaceWithTrimming.ts",
+              "initializerTokenRange": {
+                "startIndex": 1,
+                "endIndex": 2
+              },
+              "isReadonly": true,
+              "releaseTag": "Beta",
+              "name": "NS_BETA",
+              "variableTypeTokenRange": {
+                "startIndex": 0,
+                "endIndex": 0
+              }
+            },
+            {
+              "kind": "Variable",
+              "canonicalReference": "api-extractor-scenarios!NS.NS_PUBLIC:var",
+              "docComment": "/**\n * @public\n */\n",
+              "excerptTokens": [
+                {
+                  "kind": "Content",
+                  "text": "NS_PUBLIC = "
+                },
+                {
+                  "kind": "Content",
+                  "text": "\"PUBLIC\""
+                }
+              ],
+              "fileUrlPath": "src/exportStarAs3/NamespaceWithTrimming.ts",
+              "initializerTokenRange": {
+                "startIndex": 1,
+                "endIndex": 2
+              },
+              "isReadonly": true,
+              "releaseTag": "Public",
+              "name": "NS_PUBLIC",
+              "variableTypeTokenRange": {
+                "startIndex": 0,
+                "endIndex": 0
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/build-tests/api-extractor-scenarios/etc/exportStarAs3/api-extractor-scenarios.api.md b/build-tests/api-extractor-scenarios/etc/exportStarAs3/api-extractor-scenarios.api.md
new file mode 100644
index 00000000000..1741a4e1d27
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/etc/exportStarAs3/api-extractor-scenarios.api.md
@@ -0,0 +1,26 @@
+## API Report File for "api-extractor-scenarios"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+declare namespace NS {
+    export {
+        NS_PUBLIC,
+        NS_BETA,
+        NS_INTERNAL
+    }
+}
+
+// @beta (undocumented)
+const NS_BETA = "BETA";
+
+// @internal (undocumented)
+const NS_INTERNAL = "INTERNAL";
+
+// @public (undocumented)
+const NS_PUBLIC = "PUBLIC";
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/build-tests/api-extractor-scenarios/etc/exportStarAs3/rollup-public.d.ts b/build-tests/api-extractor-scenarios/etc/exportStarAs3/rollup-public.d.ts
new file mode 100644
index 00000000000..80ea239c15f
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/etc/exportStarAs3/rollup-public.d.ts
@@ -0,0 +1,14 @@
+export declare namespace NS {
+    export {
+        NS_PUBLIC
+    }
+}
+
+/* Excluded from this release type: NS_BETA */
+
+/* Excluded from this release type: NS_INTERNAL */
+
+/** @public */
+declare const NS_PUBLIC = "PUBLIC";
+
+export { }
diff --git a/build-tests/api-extractor-scenarios/etc/exportStarAs3/rollup.d.ts b/build-tests/api-extractor-scenarios/etc/exportStarAs3/rollup.d.ts
new file mode 100644
index 00000000000..1bdfef79947
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/etc/exportStarAs3/rollup.d.ts
@@ -0,0 +1,18 @@
+export declare namespace NS {
+    export {
+        NS_PUBLIC,
+        NS_BETA,
+        NS_INTERNAL
+    }
+}
+
+/** @beta */
+declare const NS_BETA = "BETA";
+
+/** @internal */
+declare const NS_INTERNAL = "INTERNAL";
+
+/** @public */
+declare const NS_PUBLIC = "PUBLIC";
+
+export { }
diff --git a/build-tests/api-extractor-scenarios/src/exportStarAs/calculator.ts b/build-tests/api-extractor-scenarios/src/exportStarAs/calculator.ts
new file mode 100644
index 00000000000..17df6809b45
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/src/exportStarAs/calculator.ts
@@ -0,0 +1,23 @@
+/**
+ * Returns the sum of adding `b` to `a`
+ * @param a - first number
+ * @param b - second number
+ * @returns Sum of adding `b` to `a`
+ * @public
+ */
+export function add(a: number, b: number): number {
+  return a + b;
+}
+
+/**
+ * Returns the sum of subtracting `b` from `a`
+ * @param a - first number
+ * @param b - second number
+ * @returns Sum of subtract `b` from `a`
+ * @beta
+ */
+export function subtract(a: number, b: number): number {
+  return a - b;
+}
+
+export * from './common';
diff --git a/build-tests/api-extractor-scenarios/src/exportStarAs/calculator2.ts b/build-tests/api-extractor-scenarios/src/exportStarAs/calculator2.ts
new file mode 100644
index 00000000000..38b5ef6950a
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/src/exportStarAs/calculator2.ts
@@ -0,0 +1,23 @@
+/**
+ * Returns the sum of adding `b` to `a` for large integers
+ * @param a - first number
+ * @param b - second number
+ * @returns Sum of adding `b` to `a`
+ * @public
+ */
+export function add(a: bigint, b: bigint): bigint {
+  return a + b;
+}
+
+/**
+ * Returns the sum of subtracting `b` from `a` for large integers
+ * @param a - first number
+ * @param b - second number
+ * @returns Sum of subtract `b` from `a`
+ * @beta
+ */
+export function subtract(a: bigint, b: bigint): bigint {
+  return a - b;
+}
+
+export * from './common';
diff --git a/build-tests/api-extractor-scenarios/src/exportStarAs/common.ts b/build-tests/api-extractor-scenarios/src/exportStarAs/common.ts
new file mode 100644
index 00000000000..67d0445901d
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/src/exportStarAs/common.ts
@@ -0,0 +1,5 @@
+/**
+ * Returns the version of the calculator.
+ * @public
+ */
+export const calculatorVersion: string = '1.0.0';
diff --git a/build-tests/api-extractor-scenarios/src/exportStarAs/index.ts b/build-tests/api-extractor-scenarios/src/exportStarAs/index.ts
new file mode 100644
index 00000000000..22ebe390dc0
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/src/exportStarAs/index.ts
@@ -0,0 +1,2 @@
+export * as calculator from './calculator';
+export * as calculator2 from './calculator2';
diff --git a/build-tests/api-extractor-scenarios/src/exportStarAs2/forgottenNs.ts b/build-tests/api-extractor-scenarios/src/exportStarAs2/forgottenNs.ts
new file mode 100644
index 00000000000..fc104acc837
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/src/exportStarAs2/forgottenNs.ts
@@ -0,0 +1,4 @@
+/**
+ * @public
+ */
+export class ForgottenClass {}
diff --git a/build-tests/api-extractor-scenarios/src/exportStarAs2/index.ts b/build-tests/api-extractor-scenarios/src/exportStarAs2/index.ts
new file mode 100644
index 00000000000..497daa5907b
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/src/exportStarAs2/index.ts
@@ -0,0 +1 @@
+export * as ns from './ns';
diff --git a/build-tests/api-extractor-scenarios/src/exportStarAs2/ns.ts b/build-tests/api-extractor-scenarios/src/exportStarAs2/ns.ts
new file mode 100644
index 00000000000..5ea39d1dc1c
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/src/exportStarAs2/ns.ts
@@ -0,0 +1,8 @@
+import * as forgottenNs from './forgottenNs';
+
+/**
+ * @public
+ */
+export function exportedApi(): forgottenNs.ForgottenClass {
+  return new forgottenNs.ForgottenClass();
+}
diff --git a/build-tests/api-extractor-scenarios/src/exportStarAs3/NamespaceWithTrimming.ts b/build-tests/api-extractor-scenarios/src/exportStarAs3/NamespaceWithTrimming.ts
new file mode 100644
index 00000000000..7045c1aa3eb
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/src/exportStarAs3/NamespaceWithTrimming.ts
@@ -0,0 +1,8 @@
+/** @public */
+export const NS_PUBLIC = 'PUBLIC';
+
+/** @beta */
+export const NS_BETA = 'BETA';
+
+/** @internal */
+export const NS_INTERNAL = 'INTERNAL';
diff --git a/build-tests/api-extractor-scenarios/src/exportStarAs3/config/api-extractor-overrides.json b/build-tests/api-extractor-scenarios/src/exportStarAs3/config/api-extractor-overrides.json
new file mode 100644
index 00000000000..414a2156393
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/src/exportStarAs3/config/api-extractor-overrides.json
@@ -0,0 +1,7 @@
+{
+  "dtsRollup": {
+    "enabled": true,
+    "untrimmedFilePath": "<projectFolder>/temp/etc/exportStarAs3/rollup.d.ts",
+    "publicTrimmedFilePath": "<projectFolder>/temp/etc/exportStarAs3/rollup-public.d.ts"
+  }
+}
diff --git a/build-tests/api-extractor-scenarios/src/exportStarAs3/index.ts b/build-tests/api-extractor-scenarios/src/exportStarAs3/index.ts
new file mode 100644
index 00000000000..6bd5a26a26d
--- /dev/null
+++ b/build-tests/api-extractor-scenarios/src/exportStarAs3/index.ts
@@ -0,0 +1,5 @@
+/**
+ * Test that when exporting namespaces, we don't export members that got trimmed.
+ * See this issue: https://github.com/microsoft/rushstack/issues/2791
+ */
+export * as NS from './NamespaceWithTrimming';
diff --git a/common/changes/@microsoft/api-extractor/api-extractor-export-namespace-fix_2024-05-12-13-47.json b/common/changes/@microsoft/api-extractor/api-extractor-export-namespace-fix_2024-05-12-13-47.json
new file mode 100644
index 00000000000..7b4aacda519
--- /dev/null
+++ b/common/changes/@microsoft/api-extractor/api-extractor-export-namespace-fix_2024-05-12-13-47.json
@@ -0,0 +1,10 @@
+{
+  "changes": [
+    {
+      "packageName": "@microsoft/api-extractor",
+      "comment": "Add support for re-exporting modules using syntax such as `export * as ns from './file'` (GitHub #2780)",
+      "type": "minor"
+    }
+  ],
+  "packageName": "@microsoft/api-extractor"
+}
\ No newline at end of file
