import { BaseCurrency } from '../../entities';
import { ButterFee, ButterFeeDistribution, VaultBalance } from '../../types/responseTypes';
import { ButterJsonRpcProvider } from '../../types/paramTypes';
/**
 * get fee for bridging srcToken to targetChain
 * @param srcToken
 * @param targetChain
 * @param amount
 * @param mapRpcProvider
 */
export declare function getBridgeFee(srcToken: BaseCurrency, targetChain: string, amount: string, mapRpcProvider: ButterJsonRpcProvider): Promise<ButterFee>;
/**
 * get fee for cross-chain exchange
 * @param srcToken source token
 * @param targetChain target chain id
 * @param amount amount in minimal uint
 * @param routeStr cross-chain route in string format
 * @param mapRpcProvider map relay chain rpc provider
 */
export declare function getSwapFee(srcToken: BaseCurrency, targetChain: string, amount: string, routeStr: string, mapRpcProvider: ButterJsonRpcProvider): Promise<ButterFee>;
/**
 * get vault balance
 * @param fromChainId
 * @param fromToken
 * @param toChainId
 * @param rpcProvider
 */
export declare function getVaultBalance(fromChainId: string, fromToken: BaseCurrency, toChainId: string, rpcProvider: ButterJsonRpcProvider): Promise<VaultBalance>;
/**
 * get srcToken mapping token on target chain
 * @param srcToken
 * @param targetChainId
 * @param rpcProvider
 */
export declare function getTargetToken(srcToken: BaseCurrency, targetChainId: string, rpcProvider: ButterJsonRpcProvider): Promise<BaseCurrency>;
/**
 * get srcToken mapping token on target chain
 * @param srcToken
 * @param targetChainId
 * @param rpcProvider
 */
export declare function getTargetTokenAddress(srcToken: BaseCurrency, targetChainId: string, rpcProvider: ButterJsonRpcProvider): Promise<string>;
/**
 * get what token can be bridge from src chain to target chain
 * @param fromChainId
 * @param toChainId
 * @param provider
 */
export declare function getTokenCandidatesOneByOne(fromChainId: string, toChainId: string, provider: ButterJsonRpcProvider): Promise<BaseCurrency[]>;
/**
 * get token candidates with one transaction call
 * @param fromChainId
 * @param toChainId
 * @param provider
 */
export declare function getTokenCandidates(fromChainId: string, toChainId: string, provider: ButterJsonRpcProvider): Promise<BaseCurrency[]>;
/**
 * check if a token is mintable on mos
 * @param tokenAddress
 * @param chainId
 */
export declare function isTokenMintable(tokenAddress: string, chainId: string): Promise<boolean>;
export declare function getDistributeRate(mapChainId: string): Promise<ButterFeeDistribution>;
