import { BigNumber } from './BigNumber.mjs';
import { OneOrMore } from './typeHelpers.mjs';
import { TransferProphet_Fee_Rate, TransferProphet_Fee_Fixed, TransferProphet, TransferProphetAggregated } from './types/TransferProphet.mjs';
import 'big.js';
import '../xlinkSdkUtils/types.mjs';
import './buildSupportedRoutes.mjs';
import '../types.internal-8d3OI2Qm.mjs';
import 'viem';
import '../evmUtils/evmContractAddresses.mjs';
import './types/knownIds.mjs';

interface TransferProphetAppliedResult {
    fees: ((TransferProphet_Fee_Rate & {
        amount: BigNumber;
    }) | TransferProphet_Fee_Fixed)[];
    netAmount: BigNumber;
}
declare const applyTransferProphets: (transferProphets: OneOrMore<TransferProphet>, amount: BigNumber) => OneOrMore<TransferProphetAppliedResult>;
declare const applyTransferProphet: (transferProphet: TransferProphet, amount: BigNumber) => TransferProphetAppliedResult;
/**
 * @example
 * composeTransferProphets(
 *   [
 *     // tokenA : chain1 -> chain2
 *     transferProphetOf(tokenAChain1, tokenAChain2),
 *     // tokenB : chain2 -> chain3
 *     transferProphetOf(tokenBChain2, tokenBChain3),
 *     // tokenC : chain3 -> chain4
 *     transferProphetOf(tokenCChain3, tokenCChain4),
 *   ],
 *   [
 *     // tokenA -> tokenB : chain2
 *     exchangeRateOf(tokenAChain2, tokenBChain2),
 *     // tokenB -> tokenC : chain3
 *     exchangeRateOf(tokenBChain3, tokenCChain3),
 *   ],
 * )
 */
declare const composeTransferProphets: (transferProphets: readonly TransferProphet[], exchangeRates: readonly BigNumber[]) => TransferProphetAggregated<TransferProphet[]>;
declare const composeTransferProphet2: (transferProphet1: TransferProphet, transferProphet2: TransferProphet, exchangeRate: BigNumber) => TransferProphetAggregated<[TransferProphet, TransferProphet]>;
declare const composeRates2: (rate1: BigNumber, rate2: BigNumber) => BigNumber;

export { type TransferProphetAppliedResult, applyTransferProphet, applyTransferProphets, composeRates2, composeTransferProphet2, composeTransferProphets };
