tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(281,17): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(282,13): error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(283,22): error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(284,21): error TS4057: Return type of method from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(309,40): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(315,27): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(321,16): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(327,9): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(416,63): error TS4060: Return type of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(428,21): error TS4060: Return type of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(441,78): error TS4060: Return type of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(447,17): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(448,13): error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(449,22): error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(450,21): error TS4057: Return type of method from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(453,40): error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(456,27): error TS4055: Return type of public method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(459,16): error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(462,9): error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(466,70): error TS4060: Return type of exported function has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(469,21): error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts(472,85): error TS4060: Return type of exported function has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(9,13): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(10,9): error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(11,18): error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(12,17): error TS4057: Return type of method from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(37,36): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(43,23): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(49,12): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(55,5): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(144,59): error TS4060: Return type of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(156,17): error TS4060: Return type of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(169,74): error TS4060: Return type of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(175,13): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(176,9): error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(177,18): error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(178,17): error TS4057: Return type of method from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(181,36): error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(184,23): error TS4055: Return type of public method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(187,12): error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(190,5): error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(194,66): error TS4060: Return type of exported function has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(197,17): error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(200,81): error TS4060: Return type of exported function has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(238,17): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(239,13): error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(240,22): error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(241,21): error TS4057: Return type of method from exported interface has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(266,40): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(272,27): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(278,16): error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(284,9): error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(373,63): error TS4060: Return type of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(385,21): error TS4060: Return type of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(398,78): error TS4060: Return type of exported function has or is using private name 'privateClass'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(404,17): error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(405,13): error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(406,22): error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(407,21): error TS4057: Return type of method from exported interface has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(410,40): error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(413,27): error TS4055: Return type of public method from exported class has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(416,16): error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(419,9): error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(423,70): error TS4060: Return type of exported function has or is using private name 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(426,21): error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts(429,85): error TS4060: Return type of exported function has or is using private name 'privateModule'.


==== tests/cases/compiler/privacyFunctionReturnTypeDeclFile_externalModule.ts (44 errors) ====
    
    class privateClass {
    }
    
    export class publicClass {
    }
    
    export interface publicInterfaceWithPrivateParmeterTypes {
        new (): privateClass; // Error
                ~~~~~~~~~~~~
!!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'.
        (): privateClass; // Error
            ~~~~~~~~~~~~
!!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'.
        [x: number]: privateClass; // Error
                     ~~~~~~~~~~~~
!!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'.
        myMethod(): privateClass; // Error
                    ~~~~~~~~~~~~
!!! error TS4057: Return type of method from exported interface has or is using private name 'privateClass'.
    }
    
    export interface publicInterfaceWithPublicParmeterTypes {
        new (): publicClass;
        (): publicClass;
        [x: number]: publicClass;
        myMethod(): publicClass;
    }
    
    interface privateInterfaceWithPrivateParmeterTypes {
        new (): privateClass;
        (): privateClass;
        [x: number]: privateClass;
        myMethod(): privateClass;
    }
    
    interface privateInterfaceWithPublicParmeterTypes {
        new (): publicClass;
        (): publicClass;
        [x: number]: publicClass;
        myMethod(): publicClass;
    }
    
    export class publicClassWithWithPrivateParmeterTypes {
        static myPublicStaticMethod(): privateClass { // Error
                                       ~~~~~~~~~~~~
!!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
            return null;
        }
        private static myPrivateStaticMethod(): privateClass {
            return null;
        }
        myPublicMethod(): privateClass { // Error
                          ~~~~~~~~~~~~
!!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
            return null;
        }
        private myPrivateMethod(): privateClass {
            return null;
        }
        static myPublicStaticMethod1() { // Error
               ~~~~~~~~~~~~~~~~~~~~~
!!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
            return new privateClass();
        }
        private static myPrivateStaticMethod1() {
            return new privateClass();
        }
        myPublicMethod1() { // Error
        ~~~~~~~~~~~~~~~
!!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
            return new privateClass();
        }
        private myPrivateMethod1() {
            return new privateClass();
        }
    }
    
    export class publicClassWithWithPublicParmeterTypes {
        static myPublicStaticMethod(): publicClass { 
            return null;
        }
        private static myPrivateStaticMethod(): publicClass {
            return null;
        }
        myPublicMethod(): publicClass { 
            return null;
        }
        private myPrivateMethod(): publicClass {
            return null;
        }
        static myPublicStaticMethod1() {
            return new publicClass();
        }
        private static myPrivateStaticMethod1() {
            return new publicClass();
        }
        myPublicMethod1() { 
            return new publicClass();
        }
        private myPrivateMethod1() {
            return new publicClass();
        }
    }
    
    class privateClassWithWithPrivateParmeterTypes {
        static myPublicStaticMethod(): privateClass {
            return null;
        }
        private static myPrivateStaticMethod(): privateClass {
            return null;
        }
        myPublicMethod(): privateClass {
            return null;
        }
        private myPrivateMethod(): privateClass {
            return null;
        }
        static myPublicStaticMethod1() {
            return new privateClass();
        }
        private static myPrivateStaticMethod1() {
            return new privateClass();
        }
        myPublicMethod1() {
            return new privateClass();
        }
        private myPrivateMethod1() {
            return new privateClass();
        }
    }
    
    class privateClassWithWithPublicParmeterTypes {
        static myPublicStaticMethod(): publicClass {
            return null;
        }
        private static myPrivateStaticMethod(): publicClass {
            return null;
        }
        myPublicMethod(): publicClass {
            return null;
        }
        private myPrivateMethod(): publicClass {
            return null;
        }
        static myPublicStaticMethod1() {
            return new publicClass();
        }
        private static myPrivateStaticMethod1() {
            return new publicClass();
        }
        myPublicMethod1() {
            return new publicClass();
        }
        private myPrivateMethod1() {
            return new publicClass();
        }
    }
    
    export function publicFunctionWithPrivateParmeterTypes(): privateClass { // Error
                                                              ~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateClass'.
        return null;
    }
    export function publicFunctionWithPublicParmeterTypes(): publicClass {
        return null;
    }
    function privateFunctionWithPrivateParmeterTypes(): privateClass {
        return null;
    }
    function privateFunctionWithPublicParmeterTypes(): publicClass {
        return null;
    }
    export function publicFunctionWithPrivateParmeterTypes1() { // Error
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateClass'.
        return new privateClass();
    }
    export function publicFunctionWithPublicParmeterTypes1() {
        return new publicClass();
    }
    function privateFunctionWithPrivateParmeterTypes1() {
        return new privateClass();
    }
    function privateFunctionWithPublicParmeterTypes1() {
        return new publicClass();
    }
    
    export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; // Error
                                                                             ~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateClass'.
    export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass;
    declare function privateAmbientFunctionWithPrivateParmeterTypes(): privateClass;
    declare function privateAmbientFunctionWithPublicParmeterTypes(): publicClass;
    
    export interface publicInterfaceWithPrivateModuleParameterTypes {
        new (): privateModule.publicClass; // Error
                ~~~~~~~~~~~~~
!!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'.
        (): privateModule.publicClass; // Error
            ~~~~~~~~~~~~~
!!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'.
        [x: number]: privateModule.publicClass // Error
                     ~~~~~~~~~~~~~
!!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'.
        myMethod(): privateModule.publicClass; // Error
                    ~~~~~~~~~~~~~
!!! error TS4057: Return type of method from exported interface has or is using private name 'privateModule'.
    }
    export class publicClassWithPrivateModuleParameterTypes {
        static myPublicStaticMethod(): privateModule.publicClass { // Error
                                       ~~~~~~~~~~~~~
!!! error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'.
            return null;
        }
        myPublicMethod(): privateModule.publicClass { // Error
                          ~~~~~~~~~~~~~
!!! error TS4055: Return type of public method from exported class has or is using private name 'privateModule'.
            return null;
        }
        static myPublicStaticMethod1() { // Error
               ~~~~~~~~~~~~~~~~~~~~~
!!! error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            return new privateModule.publicClass();
        }
        myPublicMethod1() { // Error
        ~~~~~~~~~~~~~~~
!!! error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            return new privateModule.publicClass();
        }
    }
    export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { // Error
                                                                     ~~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateModule'.
        return null;
    }
    export function publicFunctionWithPrivateModuleParameterTypes1() { // Error
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
        return new privateModule.publicClass();
    }
    export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; // Error
                                                                                    ~~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateModule'.
    
    interface privateInterfaceWithPrivateModuleParameterTypes {
        new (): privateModule.publicClass; 
        (): privateModule.publicClass;
        [x: number]: privateModule.publicClass
        myMethod(): privateModule.publicClass;
    }
    class privateClassWithPrivateModuleParameterTypes {
        static myPublicStaticMethod(): privateModule.publicClass { 
            return null;
        }
        myPublicMethod(): privateModule.publicClass { 
            return null;
        }
        static myPublicStaticMethod1() { 
            return new privateModule.publicClass();
        }
        myPublicMethod1() { 
            return new privateModule.publicClass();
        }
    }
    function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { 
        return null;
    }
    function privateFunctionWithPrivateModuleParameterTypes1() { 
        return new privateModule.publicClass();
    }
    declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; 
    
    export module publicModule {
        class privateClass {
        }
    
        export class publicClass {
        }
    
        export interface publicInterfaceWithPrivateParmeterTypes {
            new (): privateClass; // Error
                    ~~~~~~~~~~~~
!!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'.
            (): privateClass; // Error
                ~~~~~~~~~~~~
!!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'.
            [x: number]: privateClass; // Error
                         ~~~~~~~~~~~~
!!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'.
            myMethod(): privateClass; // Error
                        ~~~~~~~~~~~~
!!! error TS4057: Return type of method from exported interface has or is using private name 'privateClass'.
        }
    
        export interface publicInterfaceWithPublicParmeterTypes {
            new (): publicClass;
            (): publicClass;
            [x: number]: publicClass;
            myMethod(): publicClass;
        }
    
        interface privateInterfaceWithPrivateParmeterTypes {
            new (): privateClass;
            (): privateClass;
            [x: number]: privateClass;
            myMethod(): privateClass;
        }
    
        interface privateInterfaceWithPublicParmeterTypes {
            new (): publicClass;
            (): publicClass;
            [x: number]: publicClass;
            myMethod(): publicClass;
        }
    
        export class publicClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(): privateClass { // Error
                                           ~~~~~~~~~~~~
!!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
                return null;
            }
            private static myPrivateStaticMethod(): privateClass {
                return null;
            }
            myPublicMethod(): privateClass { // Error
                              ~~~~~~~~~~~~
!!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
                return null;
            }
            private myPrivateMethod(): privateClass {
                return null;
            }
            static myPublicStaticMethod1() { // Error
                   ~~~~~~~~~~~~~~~~~~~~~
!!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
                return new privateClass();
            }
            private static myPrivateStaticMethod1() {
                return new privateClass();
            }
            myPublicMethod1() { // Error
            ~~~~~~~~~~~~~~~
!!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
                return new privateClass();
            }
            private myPrivateMethod1() {
                return new privateClass();
            }
        }
    
        export class publicClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(): publicClass {
                return null;
            }
            private static myPrivateStaticMethod(): publicClass {
                return null;
            }
            myPublicMethod(): publicClass {
                return null;
            }
            private myPrivateMethod(): publicClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new publicClass();
            }
            private static myPrivateStaticMethod1() {
                return new publicClass();
            }
            myPublicMethod1() {
                return new publicClass();
            }
            private myPrivateMethod1() {
                return new publicClass();
            }
        }
    
        class privateClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(): privateClass {
                return null;
            }
            private static myPrivateStaticMethod(): privateClass {
                return null;
            }
            myPublicMethod(): privateClass {
                return null;
            }
            private myPrivateMethod(): privateClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new privateClass();
            }
            private static myPrivateStaticMethod1() {
                return new privateClass();
            }
            myPublicMethod1() {
                return new privateClass();
            }
            private myPrivateMethod1() {
                return new privateClass();
            }
        }
    
        class privateClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(): publicClass {
                return null;
            }
            private static myPrivateStaticMethod(): publicClass {
                return null;
            }
            myPublicMethod(): publicClass {
                return null;
            }
            private myPrivateMethod(): publicClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new publicClass();
            }
            private static myPrivateStaticMethod1() {
                return new publicClass();
            }
            myPublicMethod1() {
                return new publicClass();
            }
            private myPrivateMethod1() {
                return new publicClass();
            }
        }
    
        export function publicFunctionWithPrivateParmeterTypes(): privateClass { // Error
                                                                  ~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateClass'.
            return null;
        }
        export function publicFunctionWithPublicParmeterTypes(): publicClass {
            return null;
        }
        function privateFunctionWithPrivateParmeterTypes(): privateClass {
            return null;
        }
        function privateFunctionWithPublicParmeterTypes(): publicClass {
            return null;
        }
        export function publicFunctionWithPrivateParmeterTypes1() { // Error
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateClass'.
            return new privateClass();
        }
        export function publicFunctionWithPublicParmeterTypes1() {
            return new publicClass();
        }
        function privateFunctionWithPrivateParmeterTypes1() {
            return new privateClass();
        }
        function privateFunctionWithPublicParmeterTypes1() {
            return new publicClass();
        }
    
        export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; // Error
                                                                                 ~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateClass'.
        export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass;
        declare function privateAmbientFunctionWithPrivateParmeterTypes(): privateClass;
        declare function privateAmbientFunctionWithPublicParmeterTypes(): publicClass;
    
        export interface publicInterfaceWithPrivateModuleParameterTypes {
            new (): privateModule.publicClass; // Error
                    ~~~~~~~~~~~~~
!!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'.
            (): privateModule.publicClass; // Error
                ~~~~~~~~~~~~~
!!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'.
            [x: number]: privateModule.publicClass; // Error
                         ~~~~~~~~~~~~~
!!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'.
            myMethod(): privateModule.publicClass; // Error
                        ~~~~~~~~~~~~~
!!! error TS4057: Return type of method from exported interface has or is using private name 'privateModule'.
        }
        export class publicClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(): privateModule.publicClass { // Error
                                           ~~~~~~~~~~~~~
!!! error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'.
                return null;
            }
            myPublicMethod(): privateModule.publicClass { // Error
                              ~~~~~~~~~~~~~
!!! error TS4055: Return type of public method from exported class has or is using private name 'privateModule'.
                return null;
            }
            static myPublicStaticMethod1() { // Error
                   ~~~~~~~~~~~~~~~~~~~~~
!!! error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
                return new privateModule.publicClass();
            }
            myPublicMethod1() { // Error
            ~~~~~~~~~~~~~~~
!!! error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
                return new privateModule.publicClass();
            }
        }
        export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { // Error
                                                                         ~~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateModule'.
            return null;
        }
        export function publicFunctionWithPrivateModuleParameterTypes1() { // Error
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            return new privateModule.publicClass();
        }
        export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; // Error
                                                                                        ~~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateModule'.
    
        interface privateInterfaceWithPrivateModuleParameterTypes {
            new (): privateModule.publicClass;
            (): privateModule.publicClass;
            [x: number]: privateModule.publicClass;
            myMethod(): privateModule.publicClass;
        }
        class privateClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(): privateModule.publicClass {
                return null;
            }
            myPublicMethod(): privateModule.publicClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new privateModule.publicClass();
            }
            myPublicMethod1() {
                return new privateModule.publicClass();
            }
        }
        function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass {
            return null;
        }
        function privateFunctionWithPrivateModuleParameterTypes1() {
            return new privateModule.publicClass();
        }
        declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; 
    }
    
    module privateModule {
        class privateClass {
        }
    
        export class publicClass {
        }
    
        export interface publicInterfaceWithPrivateParmeterTypes {
            new (): privateClass; 
            (): privateClass; 
            [x: number]: privateClass; 
            myMethod(): privateClass; 
        }
    
        export interface publicInterfaceWithPublicParmeterTypes {
            new (): publicClass;
            (): publicClass;
            [x: number]: publicClass;
            myMethod(): publicClass;
        }
    
        interface privateInterfaceWithPrivateParmeterTypes {
            new (): privateClass;
            (): privateClass;
            [x: number]: privateClass;
            myMethod(): privateClass;
        }
    
        interface privateInterfaceWithPublicParmeterTypes {
            new (): publicClass;
            (): publicClass;
            [x: number]: publicClass;
            myMethod(): publicClass;
        }
    
        export class publicClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(): privateClass { 
                return null;
            }
            private static myPrivateStaticMethod(): privateClass {
                return null;
            }
            myPublicMethod(): privateClass { 
                return null;
            }
            private myPrivateMethod(): privateClass {
                return null;
            }
            static myPublicStaticMethod1() { 
                return new privateClass();
            }
            private static myPrivateStaticMethod1() {
                return new privateClass();
            }
            myPublicMethod1() { 
                return new privateClass();
            }
            private myPrivateMethod1() {
                return new privateClass();
            }
        }
    
        export class publicClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(): publicClass {
                return null;
            }
            private static myPrivateStaticMethod(): publicClass {
                return null;
            }
            myPublicMethod(): publicClass {
                return null;
            }
            private myPrivateMethod(): publicClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new publicClass();
            }
            private static myPrivateStaticMethod1() {
                return new publicClass();
            }
            myPublicMethod1() {
                return new publicClass();
            }
            private myPrivateMethod1() {
                return new publicClass();
            }
        }
    
        class privateClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(): privateClass {
                return null;
            }
            private static myPrivateStaticMethod(): privateClass {
                return null;
            }
            myPublicMethod(): privateClass {
                return null;
            }
            private myPrivateMethod(): privateClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new privateClass();
            }
            private static myPrivateStaticMethod1() {
                return new privateClass();
            }
            myPublicMethod1() {
                return new privateClass();
            }
            private myPrivateMethod1() {
                return new privateClass();
            }
        }
    
        class privateClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(): publicClass {
                return null;
            }
            private static myPrivateStaticMethod(): publicClass {
                return null;
            }
            myPublicMethod(): publicClass {
                return null;
            }
            private myPrivateMethod(): publicClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new publicClass();
            }
            private static myPrivateStaticMethod1() {
                return new publicClass();
            }
            myPublicMethod1() {
                return new publicClass();
            }
            private myPrivateMethod1() {
                return new publicClass();
            }
        }
    
        export function publicFunctionWithPrivateParmeterTypes(): privateClass { 
            return null;
        }
        export function publicFunctionWithPublicParmeterTypes(): publicClass {
            return null;
        }
        function privateFunctionWithPrivateParmeterTypes(): privateClass {
            return null;
        }
        function privateFunctionWithPublicParmeterTypes(): publicClass {
            return null;
        }
        export function publicFunctionWithPrivateParmeterTypes1() { 
            return new privateClass();
        }
        export function publicFunctionWithPublicParmeterTypes1() {
            return new publicClass();
        }
        function privateFunctionWithPrivateParmeterTypes1() {
            return new privateClass();
        }
        function privateFunctionWithPublicParmeterTypes1() {
            return new publicClass();
        }
    
        export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; 
        export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass;
        declare function privateAmbientFunctionWithPrivateParmeterTypes(): privateClass;
        declare function privateAmbientFunctionWithPublicParmeterTypes(): publicClass;
    
        export interface publicInterfaceWithPrivateModuleParameterTypes {
            new (): privateModule.publicClass;
            (): privateModule.publicClass;
            [x: number]: privateModule.publicClass;
            myMethod(): privateModule.publicClass;
        }
        export class publicClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(): privateModule.publicClass { 
                return null;
            }
            myPublicMethod(): privateModule.publicClass { 
                return null;
            }
            static myPublicStaticMethod1() { 
                return new privateModule.publicClass();
            }
            myPublicMethod1() { 
                return new privateModule.publicClass();
            }
        }
        export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { 
            return null;
        }
        export function publicFunctionWithPrivateModuleParameterTypes1() { 
            return new privateModule.publicClass();
        }
        export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; 
    
        interface privateInterfaceWithPrivateModuleParameterTypes {
            new (): privateModule.publicClass;
            (): privateModule.publicClass;
            [x: number]: privateModule.publicClass;
            myMethod(): privateModule.publicClass;
        }
        class privateClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(): privateModule.publicClass {
                return null;
            }
            myPublicMethod(): privateModule.publicClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new privateModule.publicClass();
            }
            myPublicMethod1() {
                return new privateModule.publicClass();
            }
        }
        function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass {
            return null;
        }
        function privateFunctionWithPrivateModuleParameterTypes1() {
            return new privateModule.publicClass();
        }
        declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; 
    }
    
==== tests/cases/compiler/privacyFunctionReturnTypeDeclFile_GlobalFile.ts (22 errors) ====
    class publicClassInGlobal {
    }
    interface publicInterfaceWithPublicParmeterTypesInGlobal {
        new (): publicClassInGlobal;
        (): publicClassInGlobal;
        [x: number]: publicClassInGlobal;
        myMethod(): publicClassInGlobal;
    }
    class publicClassWithWithPublicParmeterTypesInGlobal {
        static myPublicStaticMethod(): publicClassInGlobal {
            return null;
        }
        private static myPrivateStaticMethod(): publicClassInGlobal {
            return null;
        }
        myPublicMethod(): publicClassInGlobal {
            return null;
        }
        private myPrivateMethod(): publicClassInGlobal {
            return null;
        }
        static myPublicStaticMethod1() {
            return new publicClassInGlobal();
        }
        private static myPrivateStaticMethod1() {
            return new publicClassInGlobal();
        }
        myPublicMethod1() {
            return new publicClassInGlobal();
        }
        private myPrivateMethod1() {
            return new publicClassInGlobal();
        }
    }
    function publicFunctionWithPublicParmeterTypesInGlobal(): publicClassInGlobal {
        return null;
    }
    function publicFunctionWithPublicParmeterTypesInGlobal1() {
        return new publicClassInGlobal();
    }
    declare function publicAmbientFunctionWithPublicParmeterTypesInGlobal(): publicClassInGlobal;
    
    module publicModuleInGlobal {
        class privateClass {
        }
    
        export class publicClass {
        }
    
        module privateModule {
            class privateClass {
            }
    
            export class publicClass {
            }
    
            export interface publicInterfaceWithPrivateParmeterTypes {
                new (): privateClass;
                (): privateClass;
                [x: number]: privateClass;
                myMethod(): privateClass;
            }
    
            export interface publicInterfaceWithPublicParmeterTypes {
                new (): publicClass;
                (): publicClass;
                [x: number]: publicClass;
                myMethod(): publicClass;
            }
    
            interface privateInterfaceWithPrivateParmeterTypes {
                new (): privateClass;
                (): privateClass;
                [x: number]: privateClass;
                myMethod(): privateClass;
            }
    
            interface privateInterfaceWithPublicParmeterTypes {
                new (): publicClass;
                (): publicClass;
                [x: number]: publicClass;
                myMethod(): publicClass;
            }
    
            export class publicClassWithWithPrivateParmeterTypes {
                static myPublicStaticMethod(): privateClass {
                    return null;
                }
                private static myPrivateStaticMethod(): privateClass {
                    return null;
                }
                myPublicMethod(): privateClass {
                    return null;
                }
                private myPrivateMethod(): privateClass {
                    return null;
                }
                static myPublicStaticMethod1() {
                    return new privateClass();
                }
                private static myPrivateStaticMethod1() {
                    return new privateClass();
                }
                myPublicMethod1() {
                    return new privateClass();
                }
                private myPrivateMethod1() {
                    return new privateClass();
                }
            }
    
            export class publicClassWithWithPublicParmeterTypes {
                static myPublicStaticMethod(): publicClass {
                    return null;
                }
                private static myPrivateStaticMethod(): publicClass {
                    return null;
                }
                myPublicMethod(): publicClass {
                    return null;
                }
                private myPrivateMethod(): publicClass {
                    return null;
                }
                static myPublicStaticMethod1() {
                    return new publicClass();
                }
                private static myPrivateStaticMethod1() {
                    return new publicClass();
                }
                myPublicMethod1() {
                    return new publicClass();
                }
                private myPrivateMethod1() {
                    return new publicClass();
                }
            }
    
            class privateClassWithWithPrivateParmeterTypes {
                static myPublicStaticMethod(): privateClass {
                    return null;
                }
                private static myPrivateStaticMethod(): privateClass {
                    return null;
                }
                myPublicMethod(): privateClass {
                    return null;
                }
                private myPrivateMethod(): privateClass {
                    return null;
                }
                static myPublicStaticMethod1() {
                    return new privateClass();
                }
                private static myPrivateStaticMethod1() {
                    return new privateClass();
                }
                myPublicMethod1() {
                    return new privateClass();
                }
                private myPrivateMethod1() {
                    return new privateClass();
                }
            }
    
            class privateClassWithWithPublicParmeterTypes {
                static myPublicStaticMethod(): publicClass {
                    return null;
                }
                private static myPrivateStaticMethod(): publicClass {
                    return null;
                }
                myPublicMethod(): publicClass {
                    return null;
                }
                private myPrivateMethod(): publicClass {
                    return null;
                }
                static myPublicStaticMethod1() {
                    return new publicClass();
                }
                private static myPrivateStaticMethod1() {
                    return new publicClass();
                }
                myPublicMethod1() {
                    return new publicClass();
                }
                private myPrivateMethod1() {
                    return new publicClass();
                }
            }
    
            export function publicFunctionWithPrivateParmeterTypes(): privateClass {
                return null;
            }
            export function publicFunctionWithPublicParmeterTypes(): publicClass {
                return null;
            }
            function privateFunctionWithPrivateParmeterTypes(): privateClass {
                return null;
            }
            function privateFunctionWithPublicParmeterTypes(): publicClass {
                return null;
            }
            export function publicFunctionWithPrivateParmeterTypes1() {
                return new privateClass();
            }
            export function publicFunctionWithPublicParmeterTypes1() {
                return new publicClass();
            }
            function privateFunctionWithPrivateParmeterTypes1() {
                return new privateClass();
            }
            function privateFunctionWithPublicParmeterTypes1() {
                return new publicClass();
            }
    
            export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass;
            export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass;
            declare function privateAmbientFunctionWithPrivateParmeterTypes(): privateClass;
            declare function privateAmbientFunctionWithPublicParmeterTypes(): publicClass;
    
            export interface publicInterfaceWithPrivateModuleParameterTypes {
                new (): privateModule.publicClass;
                (): privateModule.publicClass;
                [x: number]: privateModule.publicClass;
                myMethod(): privateModule.publicClass;
            }
            export class publicClassWithPrivateModuleParameterTypes {
                static myPublicStaticMethod(): privateModule.publicClass {
                    return null;
                }
                myPublicMethod(): privateModule.publicClass {
                    return null;
                }
                static myPublicStaticMethod1() {
                    return new privateModule.publicClass();
                }
                myPublicMethod1() {
                    return new privateModule.publicClass();
                }
            }
            export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass {
                return null;
            }
            export function publicFunctionWithPrivateModuleParameterTypes1() {
                return new privateModule.publicClass();
            }
            export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
    
            interface privateInterfaceWithPrivateModuleParameterTypes {
                new (): privateModule.publicClass;
                (): privateModule.publicClass;
                [x: number]: privateModule.publicClass;
                myMethod(): privateModule.publicClass;
            }
            class privateClassWithPrivateModuleParameterTypes {
                static myPublicStaticMethod(): privateModule.publicClass {
                    return null;
                }
                myPublicMethod(): privateModule.publicClass {
                    return null;
                }
                static myPublicStaticMethod1() {
                    return new privateModule.publicClass();
                }
                myPublicMethod1() {
                    return new privateModule.publicClass();
                }
            }
            function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass {
                return null;
            }
            function privateFunctionWithPrivateModuleParameterTypes1() {
                return new privateModule.publicClass();
            }
            declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
        }
    
        export interface publicInterfaceWithPrivateParmeterTypes {
            new (): privateClass; // Error
                    ~~~~~~~~~~~~
!!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateClass'.
            (): privateClass; // Error
                ~~~~~~~~~~~~
!!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateClass'.
            [x: number]: privateClass; // Error
                         ~~~~~~~~~~~~
!!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateClass'.
            myMethod(): privateClass; // Error
                        ~~~~~~~~~~~~
!!! error TS4057: Return type of method from exported interface has or is using private name 'privateClass'.
        }
    
        export interface publicInterfaceWithPublicParmeterTypes {
            new (): publicClass;
            (): publicClass;
            [x: number]: publicClass;
            myMethod(): publicClass;
        }
    
        interface privateInterfaceWithPrivateParmeterTypes {
            new (): privateClass;
            (): privateClass;
            [x: number]: privateClass;
            myMethod(): privateClass;
        }
    
        interface privateInterfaceWithPublicParmeterTypes {
            new (): publicClass;
            (): publicClass;
            [x: number]: publicClass;
            myMethod(): publicClass;
        }
    
        export class publicClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(): privateClass { // Error
                                           ~~~~~~~~~~~~
!!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
                return null;
            }
            private static myPrivateStaticMethod(): privateClass {
                return null;
            }
            myPublicMethod(): privateClass { // Error
                              ~~~~~~~~~~~~
!!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
                return null;
            }
            private myPrivateMethod(): privateClass {
                return null;
            }
            static myPublicStaticMethod1() { // Error
                   ~~~~~~~~~~~~~~~~~~~~~
!!! error TS4052: Return type of public static method from exported class has or is using private name 'privateClass'.
                return new privateClass();
            }
            private static myPrivateStaticMethod1() {
                return new privateClass();
            }
            myPublicMethod1() { // Error
            ~~~~~~~~~~~~~~~
!!! error TS4055: Return type of public method from exported class has or is using private name 'privateClass'.
                return new privateClass();
            }
            private myPrivateMethod1() {
                return new privateClass();
            }
        }
    
        export class publicClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(): publicClass {
                return null;
            }
            private static myPrivateStaticMethod(): publicClass {
                return null;
            }
            myPublicMethod(): publicClass {
                return null;
            }
            private myPrivateMethod(): publicClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new publicClass();
            }
            private static myPrivateStaticMethod1() {
                return new publicClass();
            }
            myPublicMethod1() {
                return new publicClass();
            }
            private myPrivateMethod1() {
                return new publicClass();
            }
        }
    
        class privateClassWithWithPrivateParmeterTypes {
            static myPublicStaticMethod(): privateClass {
                return null;
            }
            private static myPrivateStaticMethod(): privateClass {
                return null;
            }
            myPublicMethod(): privateClass {
                return null;
            }
            private myPrivateMethod(): privateClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new privateClass();
            }
            private static myPrivateStaticMethod1() {
                return new privateClass();
            }
            myPublicMethod1() {
                return new privateClass();
            }
            private myPrivateMethod1() {
                return new privateClass();
            }
        }
    
        class privateClassWithWithPublicParmeterTypes {
            static myPublicStaticMethod(): publicClass {
                return null;
            }
            private static myPrivateStaticMethod(): publicClass {
                return null;
            }
            myPublicMethod(): publicClass {
                return null;
            }
            private myPrivateMethod(): publicClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new publicClass();
            }
            private static myPrivateStaticMethod1() {
                return new publicClass();
            }
            myPublicMethod1() {
                return new publicClass();
            }
            private myPrivateMethod1() {
                return new publicClass();
            }
        }
    
        export function publicFunctionWithPrivateParmeterTypes(): privateClass { // Error
                                                                  ~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateClass'.
            return null;
        }
        export function publicFunctionWithPublicParmeterTypes(): publicClass {
            return null;
        }
        function privateFunctionWithPrivateParmeterTypes(): privateClass {
            return null;
        }
        function privateFunctionWithPublicParmeterTypes(): publicClass {
            return null;
        }
        export function publicFunctionWithPrivateParmeterTypes1() { // Error
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateClass'.
            return new privateClass();
        }
        export function publicFunctionWithPublicParmeterTypes1() {
            return new publicClass();
        }
        function privateFunctionWithPrivateParmeterTypes1() {
            return new privateClass();
        }
        function privateFunctionWithPublicParmeterTypes1() {
            return new publicClass();
        }
    
        export declare function publicAmbientFunctionWithPrivateParmeterTypes(): privateClass; // Error
                                                                                 ~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateClass'.
        export declare function publicAmbientFunctionWithPublicParmeterTypes(): publicClass;
        declare function privateAmbientFunctionWithPrivateParmeterTypes(): privateClass;
        declare function privateAmbientFunctionWithPublicParmeterTypes(): publicClass;
    
        export interface publicInterfaceWithPrivateModuleParameterTypes {
            new (): privateModule.publicClass; // Error
                    ~~~~~~~~~~~~~
!!! error TS4045: Return type of constructor signature from exported interface has or is using private name 'privateModule'.
            (): privateModule.publicClass; // Error
                ~~~~~~~~~~~~~
!!! error TS4047: Return type of call signature from exported interface has or is using private name 'privateModule'.
            [x: number]: privateModule.publicClass; // Error
                         ~~~~~~~~~~~~~
!!! error TS4049: Return type of index signature from exported interface has or is using private name 'privateModule'.
            myMethod(): privateModule.publicClass; // Error
                        ~~~~~~~~~~~~~
!!! error TS4057: Return type of method from exported interface has or is using private name 'privateModule'.
        }
        export class publicClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(): privateModule.publicClass { // Error
                                           ~~~~~~~~~~~~~
!!! error TS4052: Return type of public static method from exported class has or is using private name 'privateModule'.
                return null;
            }
            myPublicMethod(): privateModule.publicClass { // Error
                              ~~~~~~~~~~~~~
!!! error TS4055: Return type of public method from exported class has or is using private name 'privateModule'.
                return null;
            }
            static myPublicStaticMethod1() { // Error
                   ~~~~~~~~~~~~~~~~~~~~~
!!! error TS4051: Return type of public static method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
                return new privateModule.publicClass();
            }
            myPublicMethod1() { // Error
            ~~~~~~~~~~~~~~~
!!! error TS4054: Return type of public method from exported class has or is using name 'privateModule.publicClass' from private module 'privateModule'.
                return new privateModule.publicClass();
            }
        }
        export function publicFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass { // Error
                                                                         ~~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateModule'.
            return null;
        }
        export function publicFunctionWithPrivateModuleParameterTypes1() { // Error
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS4059: Return type of exported function has or is using name 'privateModule.publicClass' from private module 'privateModule'.
            return new privateModule.publicClass();
        }
        export declare function publicAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass; // Error
                                                                                        ~~~~~~~~~~~~~
!!! error TS4060: Return type of exported function has or is using private name 'privateModule'.
    
        interface privateInterfaceWithPrivateModuleParameterTypes {
            new (): privateModule.publicClass;
            (): privateModule.publicClass;
            [x: number]: privateModule.publicClass;
            myMethod(): privateModule.publicClass;
        }
        class privateClassWithPrivateModuleParameterTypes {
            static myPublicStaticMethod(): privateModule.publicClass {
                return null;
            }
            myPublicMethod(): privateModule.publicClass {
                return null;
            }
            static myPublicStaticMethod1() {
                return new privateModule.publicClass();
            }
            myPublicMethod1() {
                return new privateModule.publicClass();
            }
        }
        function privateFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass {
            return null;
        }
        function privateFunctionWithPrivateModuleParameterTypes1() {
            return new privateModule.publicClass();
        }
        declare function privateAmbientFunctionWithPrivateModuleParameterTypes(): privateModule.publicClass;
    }