/**
 * Buffer class to construct template output with proper indentation and formatting.
 *
 * The FileBuffer class provides a fluent API for building text output with automatic
 * indentation management. It's commonly used for generating code or template files
 * where proper formatting is important.
 *
 * @example
 * const buffer = new FileBuffer()
 * buffer
 *   .writeLine('function example() {')
 *   .indent()
 *   .writeLine('return "Hello World"')
 *   .dedent()
 *   .writeLine('}')
 * console.log(buffer.flush())
 */
export declare class FileBuffer {
    #private;
    /**
     * Creates a new child buffer instance
     *
     * @returns A new FileBuffer instance
     */
    create(): FileBuffer;
    /**
     * Returns the size of buffer text
     *
     * @returns The number of lines in the buffer
     */
    get size(): number;
    /**
     * Enable or disable end-of-line character at the end of output
     *
     * @param enabled - Whether to add EOL character
     * @returns This FileBuffer instance for method chaining
     *
     * @example
     * const buffer = new FileBuffer()
     * buffer.eol(true).writeLine('Hello').flush() // 'Hello\n\n'
     */
    eol(enabled: boolean): this;
    /**
     * Write a new line to the output with current indentation
     *
     * @param text - The text to write as a new line
     * @returns This FileBuffer instance for method chaining
     */
    writeLine(text: string | FileBuffer): this;
    /**
     * Write text to the output without adding a new line
     *
     * @param text - The text to write without a newline
     * @returns This FileBuffer instance for method chaining
     */
    write(text: string | FileBuffer): this;
    /**
     * Increase indentation by 2 spaces
     *
     * @returns This FileBuffer instance for method chaining
     */
    indent(): this;
    /**
     * Decrease indentation by 2 spaces (minimum of 0)
     *
     * @returns This FileBuffer instance for method chaining
     */
    dedent(): this;
    /**
     * Convert the buffer to a string representation
     *
     * @example
     * const buffer = new FileBuffer()
     * buffer.writeLine('Hello')
     * console.log(buffer.toString())
     */
    toString(): string;
    /**
     * Return template as a string, joining all buffer lines
     *
     * Once called, the output is cached and subsequent calls return the same result.
     * The flush method becomes a no-op after the first call.
     *
     * @returns The complete buffer content as a string
     */
    flush(): string;
}
