export declare class Block { blockType: string; statements: Statement[]; formatOneLine: boolean; constructor(blockType: string, parent: Statement); stringify(): string; addImport(lhs: string, rhs: string): void; addClass(className: string): ClassDef; addInterface(name: string): InterfaceDef; addLine(text: string): this; addRaw(text: string): this; addBlank(): void; addFunction(name: string): FunctionDecl; addMethod(name: string): FunctionDecl; _try(): TryBlock; _if(condition?: string): IfBlock; _for(line: string): ForBlock; addObjectField(name: string, value: string): ObjectField; addComment(str: any): void; } interface Statement { statementType: string; line: () => string; contents?: Block; attachedBlock?: Statement; } declare class ClassDef implements Statement { statementType: string; name: string; contents: Block; implementsList: string[]; isExport: boolean; isExportDefault: boolean; constructor(name: string); addField(name: string, tsType: string): void; addImplements(name: string): void; line(): string; } declare class InterfaceDef implements Statement { statementType: string; name: string; contents: Block; isExport: boolean; isExportDefault: boolean; constructor(name: string); addField(name: string, tsType: string): void; line(): string; } declare class ObjectField implements Statement { statementType: string; name: string; valueExpr: string; constructor(name: string, valueExpr: string); line(): string; } declare class FunctionDecl implements Statement { statementType: string; format: string; name: string; inputs: { name: string; tsType: string; }[]; outputType: string; contents: Block; isAsync: boolean; constructor(format: string, name: string); addInput(name: string, tsType: string): void; setOutputType(tsType: string): void; line(): string; } declare class IfBlock implements Statement { statementType: string; conditionExpr: string; contents: Block; constructor(); setCondition(s: string): void; line(): string; } declare class ForBlock implements Statement { statementType: string; forLine: string; contents: Block; constructor(); line(): string; } declare class TryBlock implements Statement { statementType: string; contents: Block; attachedBlock: Statement; constructor(); _catch(expr: string): Statement; line(): string; } declare class FunctionTypeDef { inputs: { name: string; tsType: string; }[]; outputType: string; constructor(); addInput(name: string, tsType: string): void; setOutputType(t: string): void; line(): string; } export declare function startFile(): Block; export declare function startObjectLiteral(): Block; export declare function startFunctionTypeDef(): FunctionTypeDef; export declare function formatBlock(block: Block): void; export declare function stringifyBlock(block: Block): string; export {};