import * as Promise from 'bluebird'; import { Namespace } from '../Namespace'; import { Type } from '../Type'; import { MemberRef } from '../MemberRef'; /** TransformType is a class derived from Transform, used like CRTP in C++. */ export declare abstract class Transform, Output, State> { constructor(doc: Type); getTypeMembers(type: Type): MemberRef[]; prepare(): Output | Promise; exec(visitedNamespaceTbl?: { [key: string]: Namespace; }, state?: any): Promise; construct: { new (...args: any[]): Transform; }; output: Output; protected doc: Type; protected namespace: Namespace; protected state: State; }