// @filename: graphql-compose.d.ts // @declaration: true export type ObjMapReadOnly = Readonly<{ [key: string]: Readonly }>; export type Thunk = (() => T) | T; export type ComposeOutputTypeDefinition = Readonly | EnumTypeComposer>; export class EnumTypeComposer { public setFields(fields: { [name: string]: { [key: string]: any } }): this; } export class ObjectTypeComposer { public setFields(fields: ObjMapReadOnly): this; public addResolver(opts: { type?: Thunk }): this; } export class Resolver { public wrapArgs( cb: () => { [argName: string]: Thunk>; } ): void; public wrapType(cb: () => ComposeOutputTypeDefinition): void; } // @filename: app.ts import { ObjectTypeComposer } from './graphql-compose'; declare const User: ObjectTypeComposer; User.addResolver({ type: User, // `User as any` fix the problem });