import { IConverter, IConverterCreator, ICreateConverterDependencies } from "./converter";
/**
 * Creates and caches converters per language extension.
 */
export declare class ConvertersBag {
    private readonly creators;
    private readonly createConverterDependencies;
    /**
     * Cached creation Promises for converters, keyed by language extension.
     */
    private readonly converters;
    constructor(creators: Map<string, IConverterCreator>, createConverterDependencies: ICreateConverterDependencies);
    /**
     * Returns a cached converter, creating it as needed.
     *
     * @param languageExtension   Language extension to create for.
     * @returns Promise for the language's cached creator, if it exists, or an error during creation.
     */
    get(languageExtension: string): Promise<Error | IConverter | undefined>;
    /**
     * Starts creation of a new converter, if the extension is known.
     *
     * @param languageExtension   Language extension to create for.
     * @returns Promise for the language's creator, or an error during creation.
     */
    private startCreation;
}
export declare const createConvertersBag: (createConverterDependencies: ICreateConverterDependencies) => ConvertersBag;
