export interface EmitterOptions { /** * Indentation unit (string repeated per nesting level). Defaults to two spaces. * Common values: `" "` (2 spaces, Kotlin convention), `" "` (4 spaces, Swift). */ indentUnit?: string; } /** * Indent-aware string builder for code emission. Tracks nesting depth via * `block()` and emits a single line at the current depth via `line()`. * * Designed so that all current Kotlin/Swift output can be reproduced without * any hardcoded pad strings inside the emit logic. */ export declare class Emitter { private readonly indentUnit; private currentIndent; private readonly lines; constructor(opts?: EmitterOptions); /** Emit a line at the current indent. Empty string emits a blank line with no indent. */ line(s?: string): this; /** Emit a blank line (no indent). */ blank(): this; /** * Emit `header + " {"`, then run `body` at one deeper indent, then emit `footer`. * Footer defaults to `"}"`. */ block(header: string, body: () => void, footer?: string): this; /** * Emit pre-formatted multi-line content at current indent. Each non-empty * source line is prefixed with the current indent; empty source lines stay empty. */ raw(s: string): this; toString(): string; }