export type NetworkName = string;
export type ContractName = string;
export type AliasName = string;
export type VersionName = string;
export type Data = Map<NetworkName, Contracts>;
export type Contracts = Map<ContractName, Map<AliasName, Map<VersionName, Version>>>;
export interface Version {
    address: string;
    codeHash: string;
    initParams: any;
    constructorParams: any;
    publicKey?: string;
    updatedAt?: number;
    abi: any;
    tvc: string;
    code: string;
}
export interface ContractVersion<ABI> {
    address: string;
    codeHash: string;
    initParams: any;
    constructorParams: any;
    publicKey: string;
    updatedAt: number;
    abi: ABI;
    code: string;
    tvc: string;
}
export type JournalData = Map<NetworkName, JournalContracts>;
export type JournalContracts = Map<ContractName, Map<AliasName, Map<VersionName, JournalVersion>>>;
export type JournalVersion = Omit<Version, "abi" | "tvc" | "code">;
export declare class Artifacts {
    private readonly journalPath;
    private data;
    private dir;
    constructor(journalPath: string);
    addContract(network: string, contractName: string, aliasName: string, versionName: string | undefined, version: Version): void;
    getDataObj(): Data;
    reset(): void;
    private load;
    private saveJournal;
    private saveContractArtifacts;
    private saveTypeDefinitions;
    private dataToJournalView;
    private parseArtifactsData;
    private getContractArtifacts;
    private getContractNextVersion;
    private toObject;
}
export declare function createTypeDefinitions(interfaceName: string, data: Data): string;
export declare function stringifyObj(obj: any, indent: number): string;
