export interface Writer { indent: number; branch(name: string): Writer; join(closeBranches?: boolean): void; write(data: string, indent?: boolean): Writer; writeLines(...lines: string[]): Writer; writeBlockStart(data: string): Writer; writeBlockEnd(data: string): Writer; writeBlock(start: string, lines: string[], end: string): Writer; } export interface WriterOptions { indentWith?: string; onJoin?: (writer: Writer) => void; } export declare function createWriter(sink: (data: string) => void, options?: WriterOptions): Writer; interface StringWriter extends Writer { end(): string; } export declare function createStringWriter(opts?: WriterOptions): StringWriter; export {};