import { ethers } from 'ethers'; import { EthereumBlockchainReader } from '../controllers/helpers/EthereumBlockchainReader'; import { IEVMMailerContractLink, IEVMRegistryContractLink } from '../misc'; export type SigningContext = ethers.providers.Provider | ethers.Signer; export declare class ContractCache { readonly factory: { connect: (address: string, provider: SigningContext) => Contract; }; readonly blockchainReader: EthereumBlockchainReader; private readonly contractCache; constructor(factory: { connect: (address: string, provider: SigningContext) => Contract; }, blockchainReader: EthereumBlockchainReader); getContract(address: string, provider: SigningContext): Contract; contractOperation(contractLink: IEVMMailerContractLink | IEVMRegistryContractLink, callback: (contract: Contract, provider: ethers.providers.Provider, blockLimit: number, latestNotSupported: boolean, batchNotSupported: boolean, stopTrying: () => void) => Promise): Promise; }