import { ethers } from "ethers";
import type { ContractNameType } from "../../../types";
import type { CallbackType } from "../../../utils/ethers/contractHelper";
import { LandId } from "../../../config/constants";
import { TransactionResponse } from "@ethersproject/providers";
/**
 * ERC20 Allowance
 * @param provider Ethers provider
 * @param contractName Contract name
 * @param from From, account address
 * @param spender Spender
 * @param callback Callback
 * @returns String amount
 */
export declare const erc20Allowance: (landId: LandId, provider: ethers.providers.Provider, contractName: ContractNameType, from: string, spender: string, callback?: CallbackType | undefined) => Promise<string>;
/**
 * ERC20 Allowance By Contract Address
 * @param provider Ethers provider
 * @param contractAddress Contract address
 * @param from From
 * @param spender Spender
 * @param callback Callback
 * @returns String amount
 */
export declare const erc20AllowanceByContractAddress: (provider: ethers.providers.Provider, contractAddress: string, from: string, spender: string, callback?: CallbackType | undefined) => Promise<string>;
/**
 * ERC20 Approve
 * @param signer Ethers signer
 * @param contractName Contract name
 * @param spender Spender
 * @param value Value
 * @param callback Callback
 */
export declare const erc20Approve: (landId: LandId, signer: ethers.Signer, contractName: ContractNameType, spender: string, value?: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * ERC20 Approve By Contract Address
 * @param signer Ethers signer
 * @param contractAddress Contract address
 * @param spender Spender
 * @param value Value
 * @param callback Callback
 */
export declare const erc20ApproveByContractAddress: (signer: ethers.Signer, contractAddress: string, spender: string, value?: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * ERC20 Transfer
 * @param signer Signer
 * @param contractAddress Token contract address
 * @param dst Recipient
 * @param wad Amount
 * @param callback Callback
 * @returns any
 */
export declare const erc20TransferByContractAddress: (signer: ethers.Signer, contractAddress: string, dst: string, wad: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Get token balance by address
 * @param provider Provider
 * @param tokenAddress ERC20 contract address
 * @param account Address
 * @param callback Callbcak
 * @returns any
 */
export declare const erc20BalanceOf: (provider: ethers.providers.Provider, tokenAddress: string, account: string, callback?: CallbackType | undefined) => Promise<string>;
/**
 * Get token total supply
 * @param provider Provider
 * @param tokenAddress ERC20 contract address
 * @param callback Callback
 * @returns any
 */
export declare const erc20TotalSupply: (provider: ethers.providers.Provider, tokenAddress: string, callback?: CallbackType | undefined) => Promise<string>;
