import * as ts from "typescript";
import { IConversionResult, IConverter, ICreateConverterDependencies } from "../converter";
import { IUnsupportedComplaint } from "./collectedUnsupportedTransforms";
export interface ITsconfigOptions {
    compilerOptions: ts.CompilerOptions;
    exclude?: ReadonlyArray<string>;
    files?: ReadonlyArray<string>;
    include: ReadonlyArray<string>;
}
/**
 * Extension for TypeScript files.
 */
export declare const tsExtension = ".ts";
/**
 * Dependencies to initialize a new instance of the TypeScriptConverter class.
 */
export interface ITypeScriptConverterDependencies extends ICreateConverterDependencies {
    /**
     * Options for the TypeScript compiler.
     */
    tsconfigOptions: ITsconfigOptions;
}
/**
 * @todo Use this once ts-budgie supports emitting a summary of unsupported syntax.
 */
export declare const complainForTransformation: (sourceFile: ts.SourceFile, complaint: IUnsupportedComplaint) => string;
/**
 * Converts TypeScript files to their Budgie outputs.
 */
export declare class TypeScriptConverter implements IConverter {
    /**
     * Dependencies used for initialization.
     */
    private readonly dependencies;
    /**
     * TypeScript source files, keyed by unique file path.
     */
    private readonly sourceFiles;
    /**
     * Transforms TypeScript to Budgie.
     */
    private readonly transformer;
    /**
     * Initializes a new instance of the TypeScriptConverter class.
     *
     * @param dependencies   Dependencies used for initialization.
     * @param options   Options for converting files.
     */
    constructor(dependencies: ITypeScriptConverterDependencies);
    /**
     * Converts a TypeScript file to its Budgie output.
     *
     * @param sourcePath   Original Budgie file path.
     * @returns The file's Budgie output.
     */
    convertFile(sourcePath: string): Promise<IConversionResult>;
}
