import { GearApi, HexString } from '@gear-js/api';
import { KeyringPair } from '@polkadot/keyring/types';
import { ActorId, Signer } from './utils.js';
import { TransactionWrapper } from './utils.js';
export declare class FungibleToken {
    private readonly gasLimit;
    private readonly erc20;
    private admin?;
    private constructor();
    static deploy(api: GearApi, deployer: KeyringPair, name?: string, symbol?: string, decimals?: bigint, gasLimit?: bigint): Promise<`0x${string}`>;
    static load(api: GearApi, gasLimit?: bigint): Promise<FungibleToken>;
    programId(): HexString;
    setAdmin(admin: KeyringPair): void;
    allowance(owner: ActorId, spender: ActorId, tokenAddress: HexString): Promise<bigint>;
    balanceOf(owner: ActorId, tokenAddress: HexString): Promise<bigint>;
    decimals(tokenAddress: HexString): Promise<bigint>;
    name(tokenAddress: HexString): Promise<string>;
    symbol(tokenAddress: HexString): Promise<string>;
    totalSupply(tokenAddress: HexString): Promise<bigint>;
    approveTx(spender: ActorId, amount: bigint, tokenAddress: HexString, gasLimit?: bigint): Promise<TransactionWrapper<boolean>>;
    approve(owner: Signer, spender: ActorId, amount: bigint, tokenAddress: HexString): Promise<boolean>;
    burnTx(account: ActorId, amount: bigint, tokenAddress: HexString, gasLimit?: bigint): Promise<TransactionWrapper<boolean>>;
    burn(account: ActorId, amount: bigint, tokenAddress: HexString): Promise<boolean>;
    mintTx(account: ActorId, amount: bigint, tokenAddress: HexString, gasLimit?: bigint): Promise<TransactionWrapper<boolean>>;
    mint(account: ActorId, amount: bigint, tokenAddress: HexString): Promise<boolean>;
    setTransferFail(flag: boolean, tokenAddress: HexString, gasLimit?: bigint): Promise<null>;
    transferTx(to: ActorId, amount: bigint, tokenAddress: HexString, gasLimit?: bigint): Promise<TransactionWrapper<boolean>>;
    transfer(signer: Signer, to: ActorId, amount: bigint, tokenAddress: HexString): Promise<boolean>;
    transferFromTx(from: ActorId, to: ActorId, amount: bigint, tokenAddress: HexString, gasLimit?: bigint): Promise<TransactionWrapper<boolean>>;
    transferFrom(signer: Signer, from: ActorId, to: ActorId, amount: bigint, tokenAddress: HexString): Promise<boolean>;
}
