import { ManipulationSettings } from "ts-morph";
import { FileFormatter } from "./FileFormatter.js";
/**
 * Abstract formatter.
 *
 * @export
 * @abstract
 * @class Formatter
 */
export declare abstract class BaseFormatter implements FileFormatter {
    /**
     * Path of the output file.
     *
     * @protected
     * @type {string}
     * @memberof Formatter
     */
    protected output: string;
    /**
     * Initialized ts-morph manipulation settings for project creation.
     *
     * @protected
     * @type {Partial<ManipulationSettings>}
     * @memberof Formatter
     */
    protected settings: Partial<ManipulationSettings>;
    /**
     * Default constructor
     * @param {string} output Path of the output file
     * @memberof Formatter
     */
    constructor(output: string);
    /**
     * Initializes the formatter.
     *
     * @abstract
     * @returns {Promise<BaseFormatter>} Initialized formatter
     * @memberof Formatter
     */
    abstract init(): Promise<BaseFormatter>;
    /**
     * Returns initialized ts-morph manipuation settings.
     *
     * @returns {Promise<Partial<ManipulationSettings>>} ts-morph manipulation settings
     * @memberof Formatter
     */
    getSettings(): Partial<ManipulationSettings>;
    abstract format(source: string): Promise<string>;
}
