import { TransferOutOptions } from '../../types/requestTypes';
import { IMapCrossChainService } from '../interfaces/IMapCrossChainService';
import { BarterTransactionResponse } from '../../types/responseTypes';
import { FinalExecutionOutcome } from 'near-api-js/lib/providers';
import { NearProviderType } from '../../types/paramTypes';
export declare class NearCrossChainService implements IMapCrossChainService {
    provider: NearProviderType;
    /**
     * we treat account as class member cuz to initialize a near account, async is required
     * @param provider
     */
    constructor(provider: NearProviderType);
    /**
     * transfer out token(not native coin) from source chain to designated token on target chain
     * @param fromAddress
     * @param tokenAddress input token address
     * @param amount amount in minimal unit
     * @param toAddress target chain receiving address
     * @param toChainId target chain id
     * @param options see {@link TransferOutOptions} for more detail
     */
    doTransferOutToken(fromAddress: string, tokenAddress: string, amount: string, toAddress: string, toChainId: string, options: TransferOutOptions): Promise<BarterTransactionResponse>;
    /**
     * transfer out native coin from source chain to designated token on target chain
     * @param fromAddress
     * @param toAddress target chain receiving address
     * @param toChainId target chain id
     * @param amount amount to bridge in minimal unit
     * @param options see {@link TransferOutOptions} for more detail
     */
    doTransferOutNative(fromAddress: string, toAddress: string, toChainId: string, amount: string, options: TransferOutOptions): Promise<BarterTransactionResponse>;
    /**
     * add tochain to allowed transfer out chains.
     * @param toChainId
     */
    addNativeToChain(toChainId: string): Promise<FinalExecutionOutcome | undefined>;
    addTokenToChain(tokenAddress: string, toChainId: number): Promise<FinalExecutionOutcome | undefined>;
    /**
     * call near smart contract
     * @param account
     * @param options
     * @private
     */
    private _doNearFunctionCall;
    doDepositOutToken(tokenAddress: string, from: string, to: string, amount: string, options?: TransferOutOptions): Promise<string>;
    gasEstimateTransferOutNative(fromAddress: string, toAddress: string, toChainId: string, amount: string, options?: TransferOutOptions): Promise<string>;
    gasEstimateTransferOutToken(fromAddress: string, tokenAddress: string, amount: string, toAddress: string, toChainId: string, options?: TransferOutOptions): Promise<string>;
    addFungibleTokenToChain(tokenAddress: string, toChainId: string): Promise<void>;
}
