import { HardhatRuntimeEnvironment } from "hardhat/types";
import { Network, TransactionReceipt, TransactionResponse } from "ethers";
import { ContractFieldsToSave, MigrationMetadata, TransactionFieldsToSave } from "../../types/tools";
export type NetworkInfo = {
    network: Network;
    explorer: string;
};
export type ReportState = {
    title: string;
    generalInfo: {
        title: string;
        migrationFiles: Set<string>;
        networks: Record<string, NetworkInfo>;
    };
    reportedContracts: Set<[name: string, address: string]>;
    detailedMigrationFiles: {
        migrationName: string;
        links: Set<string>;
        responses: Set<TransactionResponse>;
        receipts: Set<TransactionReceipt>;
    }[];
    stats: {
        totalContracts: number;
        totalTransactions: number;
        gasUsed: bigint;
        averageGasPrice: bigint;
        feePayed: bigint;
        nativeCurrencySent: bigint;
    };
    missingLibraries: Set<string>;
    recoveredContracts: Set<[name: string, address: string]>;
    recoveredTransactions: Set<[name: string, hash: string]>;
    verificationStats: {
        status: string;
        verifiedContracts: Set<[name: string, address: string]>;
        failedContracts: Set<[name: string, address: string]>;
        failedToSaveContracts: Set<string>;
        alreadyVerifiedContracts: Set<[name: string, address: string]>;
        proxyLinkingSuccess: Set<[name: string, address: string]>;
        proxyLinkingFailure: Set<[name: string, address: string]>;
    };
    collisions: {
        contracts: Set<{
            prevMigrationNumber: number;
            prevContractAddress: string;
            newMigrationNumber: number;
            newContractAddress: string;
        }>;
        transactions: Set<{
            prevMigrationNumber: number;
            prevMethodName: string;
            newMigrationNumber: number;
            newMethodName: string;
        }>;
        unknown: Set<{
            prevMigrationNumber: number;
            prevContractAddress: string;
            prevMethodName: string;
            newMigrationNumber: number;
            newContractAddress: string;
            newMethodName: string;
        }>;
    };
    allContracts: Set<[name: string, address: string]>;
    allTransactions: Set<[name: string, hash: string]>;
};
/**
 * Class that manages the storage of the reported operation.
 *
 * Produces reports, metrics and logs in a file format.
 */
export declare class ReporterStorage {
    private _hre;
    private _currentReportID;
    private readonly _state;
    private _currentlyDeployingInstance;
    private _defaultVerificationState;
    constructor(_hre: HardhatRuntimeEnvironment);
    storeMigrationBegin(): void;
    storeMigrationFileBegin(migrationName: string): void;
    storeTransactionResponseHeader(transactionResponse: TransactionResponse, instanceName: string, txLink: string): void;
    storeTransactionReceipt(transactionReceipt: TransactionReceipt, value: bigint): void;
    storeReportedContracts(contracts: [string, string][]): void;
    storeDeploymentOfMissingLibrary(libraryName: string): void;
    storeContractRecovery(contractName: string, contractAddress: string): void;
    storeTransactionRecovery(methodString: string, savedTx: TransactionFieldsToSave): void;
    storeNothingToVerify(): void;
    storeVerificationSuccess(contractName: string, contractAddress: string): void;
    storeAlreadyVerified(contractName: string, contractAddress: string): void;
    storeVerificationFailure(contractName: string, contractAddress: string): void;
    storeVerificationSaveFailure(contractName: string): void;
    storeTransactionCollision(oldData: TransactionFieldsToSave, dataToSave: TransactionFieldsToSave): void;
    storeUnknownCollision(metadata: MigrationMetadata, dataToSave: TransactionFieldsToSave | ContractFieldsToSave): void;
    storeContractCollision(oldData: ContractFieldsToSave, dataToSave: ContractFieldsToSave): void;
    storeMigrationFiles(migrationFiles: string[]): void;
    storeChainInfo(network: NetworkInfo): void;
    storeSuccessfulProxyLinking(contractName: string, contractAddress: string): void;
    storeFailedProxyLinking(contractName: string, contractAddress: string): void;
    completeReport(): void;
    private _commitReport;
    finishReport(): Promise<void>;
    private _getReportID;
    private _getReportName;
    private _getReportContent;
    private _getMarkdownReportContent;
}
//# sourceMappingURL=ReporterStorage.d.ts.map