import { Context } from "../../Context";
import { JsonRpcProvider } from "@ethersproject/providers";
import { Contract, ContractInterface } from "@ethersproject/contracts";
import { IClientWeb3Core } from "../interfaces/core";
import { CChainId } from "../constants";
import { Signer } from "@ethersproject/abstract-signer";
/**
 * web3, contract
 */
export declare class Web3Module implements IClientWeb3Core {
    private _signer;
    private _daoAddress;
    private _daoChainId;
    private _web3Providers;
    constructor(context: Context);
    /** Replaces the current signer by the given one */
    useSigner(signer: Signer): void;
    /** Retrieves the current signer */
    getSigner(): Signer | null;
    /** Returns a signer connected to the current network provider */
    getConnectedSigner(): Signer;
    /** Returns the currently active network provider */
    getProvider(chainId?: CChainId): JsonRpcProvider;
    /**
     * Returns a contract instance at the given address
     *
     * @param address Contract instance address
     * @param abi The Application Binary Inteface of the contract
     * @return A contract instance attached to the given address
     */
    attachContract(address: string, abi: ContractInterface, provider: JsonRpcProvider | null, signer: Signer | null): Contract;
    getDaoContract(): Contract;
    getTokenContract(tokenAddress: string, chainId: CChainId): Contract;
    /** Returns the current DAO address */
    getDaoAddress(): string;
    /** Returns the current DAO chainId */
    getDaoChainId(): CChainId;
}
