What's the best method of importing a class into another purely for the purpose of referencing it's type?

The bit "purely for the purpose of referencing its type" kind of answers the question itself. When you reference a type with <reference>, you're basically saying "Trust me, there is such and such a type, and it will be available at runtime".

Import on the other hand depends on the existence of a physical file at the import location.

There used to be a number of bugs on the <reference> tag, but at the moment I believe they've all been resolved.

/// reference path vs import/require is not really about types vs values. With either one you can use only types from the referenced file(s). In the case of import/require the compiler will not emit the module loading code in the JavaScript if it determines
the module was imported only for purposes of type information (which doesn't need to be available at runtime). You should choose between internal modules (/// reference path) or external modules (import/require) for other reasons than this. You appear to be
confused about the difference based on your second example (mixing export= and /// reference path), I would recommend starting here to better understand the difference:
https://typescript.codeplex.com/wikipage?title=Modules%20in%20TypeScript&version=12

We currently use 'import' combined with 'export ='. The query about reference is because the module loading code is being generated when the import is being used purely for type information. Perhaps a bug?

Yeah could be a bug that still exists, or it was possibly fixed already, I can't be sure yet. Can you share the contents of the Screenshot module? With the latest bits in the develop branch I see the correct codegen for the Capture module (ie no require
codegen'd) with a trivial version of a Screenshot module like:

so either the bug has been fixed already in the latest bits (I'm assuming you're using 0.9.5) or there's something specific to the way your Screenshot module is authored that's confusing the compiler and making me unable to repro it with a simple case.

Great, thanks for the feedback. I was seeing the module require statement rendered out in all the classes I'd checked so had assumed that it was the expected behavior; hence the confusion on if we should be using <reference> tag.