import Operation from "./Operation";
import { ERC20AllowanceParams, ERC20BalanceOfParams, IBaseSuperTokenParams, ITransferFromParams, ProviderOrSigner } from "./interfaces";
import { IERC20Metadata } from "./typechain-types";
export default class ERC20Token {
    readonly address: string;
    readonly contract: IERC20Metadata;
    constructor(address: string);
    /** ### ERC20 Token Contract Read Functions ### */
    /**
     * Returns the allowance the `owner` has granted the `spender`.
     * @param owner the owner who has allotted the allowance
     * @param spender the spender who has received the allowance
     * @param providerOrSigner a provider or signer for executing a web3 call
     * @returns {Promise<string>} the allowance amount
     */
    allowance: ({ owner, spender, providerOrSigner, }: ERC20AllowanceParams) => Promise<string>;
    /**
     * Returns the ERC20 balanceOf the `account`, this can't be negative and will just display 0.
     * @param account the account you would like to query
     * @param providerOrSigner a provider or signer for executing a web3 call
     * @returns {Promise<string>} the token balance of `account`
     */
    balanceOf: ({ account, providerOrSigner, }: ERC20BalanceOfParams) => Promise<string>;
    /**
     * Returns the token name
     * @param providerOrSigner a provider or signer for executing a web3 call
     * @returns {string} the token name
     */
    name: ({ providerOrSigner, }: {
        providerOrSigner: ProviderOrSigner;
    }) => Promise<string>;
    /**
     * Returns the token symbol
     * @param providerOrSigner a provider or signer for executing a web3 call
     * @returns {string} the token symbol
     */
    symbol: ({ providerOrSigner, }: {
        providerOrSigner: ProviderOrSigner;
    }) => Promise<string>;
    /**
     * Returns the total supply of the token.
     * @param providerOrSigner a provider or signer for executing a web3 call
     * @returns {Promise<string>} the total supply of the token
     */
    totalSupply: ({ providerOrSigner, }: {
        providerOrSigner: ProviderOrSigner;
    }) => Promise<string>;
    /** ### ERC20 Token Contract Write Functions ### */
    /**
     * Approve `receiver` to spend `amount` tokens.
     * @param receiver The receiver approved.
     * @param amount The amount approved.
     * @param overrides ethers overrides object for more control over the transaction sent.
     * @returns {Operation} An instance of Operation which can be executed or batched.
     */
    approve: (params: IBaseSuperTokenParams) => Operation;
    /**
     * Transfer `receiver` `amount` tokens.
     * @param receiver The receiver of the transfer.
     * @param amount The amount to be transferred.
     * @param overrides ethers overrides object for more control over the transaction sent.
     * @returns {Operation} An instance of Operation which can be executed or batched.
     */
    transfer: (params: IBaseSuperTokenParams) => Operation;
    /**
     * Transfer from `sender` to `receiver` `amount` tokens.
     * @param sender The sender of the transfer.
     * @param receiver The receiver of the transfer.
     * @param amount The amount to be transferred.
     * @param overrides ethers overrides object for more control over the transaction sent.
     * @returns {Operation} An instance of Operation which can be executed or batched.
     */
    transferFrom: (params: ITransferFromParams) => Operation;
}
//# sourceMappingURL=ERC20Token.d.ts.map