/**
 * @license
 * SKALE ima-js
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
/**
 * @file TokenManagerERC20.ts
 * @copyright SKALE Labs 2022-Present
 */
import { type TransactionResponse, type BigNumberish } from 'ethers';
import { TokenManager } from './TokenManager';
import type TxOpts from '../../TxOpts';
export declare class TokenManagerERC20 extends TokenManager {
    tokenMappingLenghtSlot: number;
    addTokenByOwner(originChainName: string, erc20OnMainnet: string, erc20OnSchain: string, opts: TxOpts): Promise<TransactionResponse>;
    getTokenCloneAddress(originTokenAddress: string, originChainName?: string): Promise<string>;
    approve(tokenName: string, amount: BigNumberish, address: string, opts: TxOpts): Promise<TransactionResponse>;
    wrap(tokenName: string, amount: BigNumberish, opts: TxOpts): Promise<TransactionResponse>;
    unwrap(tokenName: string, amount: BigNumberish, opts: TxOpts): Promise<TransactionResponse>;
    /**
     * Funds an exit for the given token by sending a transaction.
     * @param tokenName - The name of the token for which the exit is to be funded.
     * @param opts - Transaction options including the value to be sent as part of the transaction.
     * @returns Promise<any> - The Promise that resolves to the transaction receipt.
     * @remarks
     * This is a payable transaction and the value should be passed in the opts object.
     * This function can be executed only for supported tokens.
     */
    fundExit(tokenName: string, opts: TxOpts): Promise<any>;
    /**
     * Reverses a previously funded exit for the given token by sending a transaction.
     * @param tokenName - The name of the token for which the exit is to be undone.
     * @param opts - Transaction options.
     * @returns Promise<any> - The Promise that resolves to the transaction receipt.
     * @remarks
     * This function can be executed only for supported tokens.
     */
    undoExit(tokenName: string, opts: TxOpts): Promise<any>;
    withdraw(mainnetTokenAddress: string, amount: bigint, opts: TxOpts): Promise<TransactionResponse>;
    transferToSchain(targetSchainName: string, mainnetTokenAddress: string, amount: BigNumberish, opts: TxOpts): Promise<TransactionResponse>;
}
