import type { Hedgehog } from '@audius/hedgehog';
import type Wallet from 'ethereumjs-wallet';
import type Web3Type from 'web3';
import type { TransactionReceipt } from 'web3-core';
import { ContractMethod, Maybe, Nullable } from '../../utils';
import type { IdentityService, RelayTransaction } from '../identity';
export declare type EthWeb3Config = {
    ownerWallet: Wallet | string;
    providers: string[];
    tokenAddress: string;
    registryAddress: string;
    claimDistributionContractAddress: string;
    wormholeContractAddress: string;
    disableMultiProvider?: boolean;
};
declare type EthWeb3ManagerConfig = {
    web3Config: EthWeb3Config;
    identityService: Nullable<IdentityService>;
    hedgehog?: Nullable<Hedgehog>;
};
/** Singleton state-manager for Audius Eth Contracts */
export declare class EthWeb3Manager {
    web3Config: EthWeb3Config;
    web3: Web3Type;
    identityService: Nullable<IdentityService>;
    hedgehog?: Nullable<Hedgehog>;
    ownerWallet: Maybe<Wallet | string>;
    constructor({ web3Config, identityService, hedgehog }: EthWeb3ManagerConfig);
    getWeb3(): Web3Type;
    getWalletAddress(): any;
    /**
     * Signs provided string data (should be timestamped).
     */
    sign(data: string): Promise<string>;
    sendTransaction(contractMethod: ContractMethod, contractAddress?: string | null, privateKey?: string | null, txRetries?: number, txGasLimit?: number | null): Promise<TransactionReceipt>;
    /**
     * Relays an eth transaction via the identity service with retries
     * The relay pays for the transaction fee on behalf of the user
     * The gas Limit is estimated if not provided
     */
    relayTransaction(contractMethod: ContractMethod, contractAddress: string, ownerWallet: Wallet | string, relayerWallet?: Wallet | string, txRetries?: number, txGasLimit?: number | null): Promise<Maybe<RelayTransaction['resp']>>;
    getRelayMethodParams(contractAddress: string, contractMethod: ContractMethod, relayerWallet: string): Promise<{
        contractAddress: string;
        encodedABI: string;
        gasLimit: number;
    }>;
}
export {};
