export type ResolverMap = Object ; export type ResolvedValue < T > = T | Promise < T > ; export type ResolvedList < T > = T [ ] | Promise < T [ ] > | Promise < T > [ ] ; export interface ConcreteClass < T = any > { new ( ... args ) : T ; } export type Instantiator < TClass = any > = ( value : { [ key ] : any ; } ) => TClass ; export function defaultInputFieldInstantiator ( value ) { return value ; } export type Thunk < T > = ( ) => T ;