import * as ts from "typescript";
import { BudgieLine } from "./budgieLine";
import { IRange } from "./range";
/**
 * Output from any level of node.
 */
export declare type IOutput = (string | BudgieLine | Transformation)[];
/**
 * How a range of source should become Budgie output.
 */
export declare class Transformation {
    /**
     * Area in the source file to transform.
     */
    readonly range: IRange;
    /**
     * Output transformation.
     */
    readonly output: IOutput;
    /**
     * Initializes a new instance of the Transformation class.
     *
     * @param range   Area in the source file to transform.
     * @param output   Output transformation.
     * @param sourceFile   Source file of the transformation.
     */
    private constructor();
    /**
     * Initializes a new Transformation for a comment range.
     *
     * @param range   Area in the source file to transform.
     * @param output   Output transformation.
     * @param sourceFile   Source file of the transformation.
     * @returns A new Transformation for the comment range.
     */
    static fromCommentRange(range: ts.CommentRange, output: IOutput): Transformation;
    /**
     * Initializes a new Transform for a standard node.
     *
     * @param node   Node from the source file.
     * @param sourceFile   Source file for the node.
     * @param output   Output transformation.
     * @returns A new Transformation for the node.
     */
    static fromNode(node: ts.Node, sourceFile: ts.SourceFile, output: IOutput): Transformation;
    /**
     * Initializes a new Transform for the ending character of a standard node.
     *
     * @param node   Node from the source file.
     * @param sourceFile   Source file for the node.
     * @param output   Output transformation.
     * @returns A new Transformation for the node.
     */
    static fromNodeEnd(node: ts.Node, output: IOutput): Transformation;
    /**
     * Initializes a new Transform for the starting character of a standard node.
     *
     * @param node   Node from the source file.
     * @param sourceFile   Source file for the node.
     * @param output   Output transformation.
     * @returns A new Transformation for the node.
     */
    static fromNodeStart(node: ts.Node, sourceFile: ts.SourceFile, output: IOutput): Transformation;
}
