function isTypescriptNamespaceMerging(nodes) {
  const types = new Set(Array.from(nodes, (node) => node.parent.type));
  const noNamespaceNodes = Array.from(nodes).filter((node) => node.parent.type !== 'TSModuleDeclaration');

  return types.has('TSModuleDeclaration')
    && (
      types.size === 1
      // Merging with functions
      || types.size === 2 && (types.has('FunctionDeclaration') || types.has('TSDeclareFunction'))
      || types.size === 3 && types.has('FunctionDeclaration') && types.has('TSDeclareFunction')
      // Merging with classes or enums
      || types.size === 2 && (types.has('ClassDeclaration') || types.has('TSEnumDeclaration')) && noNamespaceNodes.length === 1
    );
}
Detect merging Namespaces with Classes, Functions, or Enums like:
```ts
export class Foo { }
export namespace Foo { }
```
@param {Set<Object>} nodes
@returns {boolean}