import { ContractDeployTransaction, TransactionReceiptParams } from "ethers";
import type { ContractFieldsToSave, KeyTransactionFields, MigrationMetadata, TransactionFieldsToSave } from "../../../types/tools.js";
import type { MigrateConfig } from "../../../types/index.js";
import type { ContractDeployTxWithName, TransactionReceipt } from "../../../types/deployer.js";
export declare class BaseTransactionProcessor {
    protected _config: MigrateConfig;
    constructor(_config: MigrateConfig);
    saveDeploymentTransaction(args: ContractDeployTransaction, contractName: string, contractAddress: string, metadata: MigrationMetadata): void;
    /**
     * @param tx - Transaction to save. Acts as a key and value at the same time.
     * @param receipt
     * @param metadata
     */
    saveTransaction(tx: KeyTransactionFields, receipt: TransactionReceiptParams | TransactionReceipt, metadata: MigrationMetadata): TransactionFieldsToSave;
    saveContractAddress(contractName: string, contractAddress: string, metadata: MigrationMetadata): void;
    tryRestoreContractAddressByKeyFields(key: ContractDeployTxWithName): Promise<string>;
    tryRestoreContractAddressByName(contractName: string): Promise<string>;
    tryRestoreSavedTransaction(key: KeyTransactionFields): TransactionFieldsToSave;
    tryRestoreSavedDeployedTxByContractName(contractName: string): ContractFieldsToSave;
    private _saveTransaction;
    private _saveContract;
    private _saveContractByName;
    private _processCollision;
    private _tryGetDataFromStorage;
}
export declare let TransactionProcessor: BaseTransactionProcessor | null;
export declare function createTransactionProcessor(config: MigrateConfig): void;
//# sourceMappingURL=TransactionProcessor.d.ts.map