import BigNumber from 'bignumber.js';
import { Abi, Address } from '../../utils/basicTypes';
import { EthCallTx, EthersTransactionResult, EthSendTx } from '../../utils/transactions';
import EthLibAdapter, { Contract } from '../EthLibAdapter';
export interface EthersAdapterConfig {
    ethers: any;
    signer: any;
}
declare class EthersAdapter extends EthLibAdapter {
    ethers: any;
    signer: any;
    /**
     * Creates an instance of EthersAdapter
     *
     * @param options - EthersAdapter configuration
     * @returns The EthersAdapter instance
     */
    constructor({ ethers, signer }: EthersAdapterConfig);
    /**
     * Returns the current provider
     *
     * @returns The current provider
     */
    getProvider(): any;
    /**
     * Sends a network request via JSON-RPC.
     *
     * @param method - JSON-RPC method
     * @param params - Params
     * @returns The request response
     */
    providerSend(method: string, params: any[]): Promise<any>;
    /**
     * Signs data using a specific account.
     *
     * @param message - Data to sign
     * @param ownerAccount - Address to sign the data with
     * @returns The signature
     */
    signMessage(message: string): Promise<string>;
    /**
     * Returns the current network ID.
     *
     * @returns The network ID
     */
    getNetworkId(): Promise<number>;
    /**
     * Returns the default account used as the default "from" property.
     *
     * @returns The default account address
     */
    getAccount(): Promise<Address>;
    /**
     * Returns the balance of an address.
     *
     * @param address - The desired address
     * @returns The balance of the address
     */
    getBalance(address: Address): Promise<BigNumber>;
    /**
     * Returns the keccak256 hash of the data.
     *
     * @param data - Desired data
     * @returns The keccak256 of the data
     */
    keccak256(data: string): string;
    /**
     * Encodes a function parameters based on its JSON interface object.
     *
     * @param types - An array with the types or a JSON interface of a function
     * @param values - The parameters to encode
     * @returns The ABI encoded parameters
     */
    abiEncode(types: string[], values: any[]): string;
    /**
     * Decodes ABI encoded parameters to is JavaScript types.
     *
     * @param types - An array with the types or a JSON interface outputs array
     * @param data - The ABI byte code to decode
     * @returns The ABI encoded parameters
     */
    abiDecode(types: string[], data: string): any[];
    /**
     * Returns an instance of a contract.
     *
     * @param abi - ABI of the desired contract
     * @param address - Contract address
     * @returns The contract instance
     */
    getContract(abi: Abi, address?: Address): Contract;
    /**
     * Deterministically returns the address where a contract will be deployed.
     *
     * @param deployer - Account that deploys the contract
     * @param salt - Salt
     * @param initCode - Code to be deployed
     * @returns The address where the contract will be deployed
     */
    calcCreate2Address(deployer: Address, salt: string, initCode: string): string;
    /**
     * Returns the code at a specific address.
     *
     * @param address - The desired address
     * @returns The code of the contract
     */
    getCode(address: Address): Promise<string>;
    /**
     * Returns a block matching the block number or block hash.
     *
     * @param blockHashOrBlockNumber - The block number or block hash
     * @returns The block object
     */
    getBlock(blockHashOrBlockNumber: string | number): Promise<{
        [property: string]: any;
    }>;
    /**
     * Returns the revert reason when a call fails.
     *
     * @param tx - Transaction to execute
     * @param block - Block number
     * @returns The revert data when the call fails
     */
    getCallRevertData(tx: EthCallTx, block: string | number): Promise<string>;
    ethCall(tx: EthCallTx, block: number | string): Promise<string>;
    checkFromAddress(from: Address): Promise<void>;
    /**
     * Sends a transaction to the network.
     *
     * @param tx - Transaction to send
     * @returns The transaction response
     */
    ethSendTransaction(tx: EthSendTx): Promise<EthersTransactionResult>;
    /**
     * Formats transaction result depending on the current provider.
     *
     * @param txHash - Transaction hash
     * @param tx - Transaction response
     * @returns The formatted transaction response
     */
    toSafeRelayTxResult(txHash: string, tx: Record<string, any>): Promise<EthersTransactionResult>;
    toRocksideRelayTxResult(tx: Record<string, any>): Promise<EthersTransactionResult>;
}
export default EthersAdapter;
