import type { AccountLike, IUser } from "../accounts";
import { BaseContract } from "ethers";
import { AddressString } from "../types";
export interface IERC20 extends IERC20Module {
    use: (user: IUser) => IERC20Module;
}
export interface IERC20Module extends AccountLike {
    name: string;
    symbol: string;
    decimals: number;
    totalSupply: () => Promise<number>;
    balanceOf: (owner: AccountLike | AddressString) => Promise<number>;
    transfer: (to: AccountLike | AddressString, amount: number) => Promise<boolean | void>;
    transferFrom: (from: AccountLike | AddressString, to: AccountLike | AddressString, amount: number) => Promise<boolean | void>;
    allowance: (owner: AccountLike | AddressString, spender: AccountLike | AddressString) => Promise<number>;
    approve: (spender: AccountLike | AddressString, amount: number | string | "max") => Promise<boolean | void>;
    faucet: (to: AccountLike | AddressString, amount: number) => Promise<boolean | void>;
    isNative: boolean;
    contract: BaseContract;
}
export declare function ERC20(token: any, init?: {
    address: string | AccountLike;
    name: string;
    symbol: string;
    decimals: number;
}): Promise<IERC20>;
export default ERC20;
//# sourceMappingURL=ERC20.d.ts.map