import type { ArtifactManager, GetArtifactByName, StringWithArtifactContractNamesAutocompletion } from "../../../types/artifacts.js";
export declare const BUILD_INFO_DIR_NAME = "build-info";
export declare const EDIT_DISTANCE_THRESHOLD = 3;
/**
 * We cache the info that we read from the file system, otherwise we would
 * have to traverse the filesystem every time we need to get the an artifact.
 *
 * To keep our view of the filesystem consistent, we cache everything at the
 * same time, using this interface to organize the data.
 */
interface FsData {
    allArtifactPaths: ReadonlySet<string>;
    allFullyQualifiedNames: ReadonlySet<string>;
    bareNameToFullyQualifiedNameMap: Map<string, ReadonlySet<string>>;
    fullyQualifiedNameToArtifactPath: Map<string, string>;
}
export declare class ArtifactManagerImplementation implements ArtifactManager {
    #private;
    constructor(artifactsPath: string, readFsData?: () => Promise<FsData>);
    readArtifact<ContractNameT extends StringWithArtifactContractNamesAutocompletion>(contractNameOrFullyQualifiedName: ContractNameT): Promise<GetArtifactByName<ContractNameT>>;
    getArtifactPath(contractNameOrFullyQualifiedName: string): Promise<string>;
    artifactExists(contractNameOrFullyQualifiedName: string): Promise<boolean>;
    getBuildInfoId(contractNameOrFullyQualifiedName: string): Promise<string | undefined>;
    getAllFullyQualifiedNames(): Promise<ReadonlySet<string>>;
    getAllArtifactPaths(): Promise<ReadonlySet<string>>;
    getAllBuildInfoIds(): Promise<ReadonlySet<string>>;
    getBuildInfoPath(buildInfoId: string): Promise<string | undefined>;
    getBuildInfoOutputPath(buildInfoId: string): Promise<string | undefined>;
    clearCache(): Promise<void>;
}
/**
 * Returns the edit-distance between two given strings using Levenshtein distance.
 *
 * @param a First string being compared
 * @param b Second string being compared
 * @returns distance between the two strings (lower number == more similar)
 * @see https://github.com/gustf/js-levenshtein
 * @license MIT - https://github.com/gustf/js-levenshtein/blob/master/LICENSE
 */
export declare function editDistance(a: string, b: string): number;
export {};
//# sourceMappingURL=artifact-manager.d.ts.map