import { TransactionResponse, TransactionReceipt } from "ethers";
import { HardhatRuntimeEnvironment } from "hardhat/types/hre";
import type { ContractFieldsToSave, MigrationMetadata, TransactionFieldsToSave } from "../../../types/tools.js";
/**
 * Global error handling for network-related issues is conducted within the NetworkManager class
 */
declare class BaseReporter {
    private _hre;
    private _config;
    private _network;
    private _spinner;
    private _spinnerMessage;
    private _spinnerInterval;
    private _spinnerState;
    private _nativeSymbol;
    private _explorerUrl;
    private _txExplorerUrl;
    private _warningsToPrint;
    private _storage;
    init(hre: HardhatRuntimeEnvironment): Promise<void>;
    completeReport(): Promise<void>;
    notifyStorageAboutContracts(contracts: [name: string, address: string][]): void;
    reportMigrationBegin(files: string[]): void;
    reportMigrationFileBegin(file: string): void;
    reportTransactionResponseHeader(tx: TransactionResponse, instanceName: string): void;
    startTxReporting(tx: TransactionResponse): Promise<void>;
    startSpinner(id: string, getSpinnerText: (args?: any) => string | Promise<string>): Promise<void>;
    stopSpinner(): void;
    reportTransactionReceipt(receipt: TransactionReceipt): Promise<void>;
    summary(totalTransactions: bigint, totalCost: bigint): void;
    notifyDeploymentInsteadOfRecovery(contractName: string): void;
    notifyDeploymentOfMissingLibrary(libraryName: string): void;
    notifyTransactionSendingInsteadOfRecovery(contractMethod: string): void;
    notifyContractRecovery(contractName: string, contractAddress: string): void;
    notifyTransactionRecovery(methodString: string, savedTx: TransactionFieldsToSave): void;
    reportVerificationBatchBegin(): void;
    reportNothingToVerify(): void;
    reportSuccessfulVerification(contractAddress: string, contractName: string): void;
    reportAlreadyVerified(contractAddress: string, contractName: string): void;
    reportVerificationError(contractAddress: string, contractName: string, message: string): void;
    reportVerificationFailedToSave(contractName: string): void;
    notifyContractCollisionByName(oldData: ContractFieldsToSave, dataToSave: ContractFieldsToSave): void;
    notifyContractCollisionByKeyFields(oldData: ContractFieldsToSave, dataToSave: ContractFieldsToSave): void;
    notifyTransactionCollision(oldData: TransactionFieldsToSave, dataToSave: TransactionFieldsToSave): void;
    addWarning(warning: string): void;
    notifyUnknownCollision(metadata: MigrationMetadata, dataToSave: TransactionFieldsToSave | ContractFieldsToSave): void;
    reportWarnings(): void;
    getWarningsCount(): number;
    private _printContractCollision;
    getExplorerUrl(): Promise<string>;
    reportSuccessfulProxyLinking(proxyAddress: string, implementationAddress: string): void;
    reportFailedProxyLinking(proxyAddress: string, implementationAddress: string, result: string): void;
    notifyOfProxyConstructorUsage(proxyFactoryName: string, constructorName: string): void;
    private _parseTransactionTitle;
    private _formatPendingTime;
    private _getExplorerLink;
    private _reportMigrationFiles;
    private _reportChainInfo;
    private _getNetwork;
    private _getNativeSymbol;
    private _getChainMetadataById;
    private _getInfoFromHardhatConfig;
    private _tryGetAllRecords;
}
export declare let Reporter: BaseReporter | null;
export declare function createAndInitReporter(hre: HardhatRuntimeEnvironment): Promise<void>;
/**
 * Used only in test environments to ensure test atomicity
 */
export declare function resetReporter(): void;
export {};
//# sourceMappingURL=Reporter.d.ts.map