I need to have some strongly-typed global variables.

As mentioned here: [Extending TypeScript Global object in node.js](https://stackoverflow.com/questions/35074713/extending-typescript-global-object-in-node-js), in order to add fields to the `global` variable I need to add a .d.ts file that extends the `Global` interface that's specified in node.d.ts. 

Also, as Basarat mentioned:

> 
> Your file needs to be clean of any root level import or exports. That
>  would turn the file into a module and disconnect it from the global
>  type declaration namespace.
> 
> 
> 

Now, I need to have fields on the `Global` interface whose types are custom interfaces that I created:

```
declare namespace NodeJS{
    interface Global {
        foo: Foo
        bar: Bar
    }
}

```

I'm extremely not willing to use the `any` type.

I can move/copy all the interface declarations to this declaration file, but it's a bad solution for me, since both Foo and Bar in turn, aggregate many fields of other interfaces, including third party interfaces like Moment etc.

I need a solution for this paradox