/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame;
import com.opengamma.analytics.financial.forex.method.FXMatrix;
import com.opengamma.analytics.financial.provider.curve.CurveBuildingBlockBundle;
import com.opengamma.analytics.financial.provider.description.interestrate.MulticurveProviderDiscount;
import com.opengamma.sesame.trade.TradeWrapper;
import com.opengamma.util.result.Result;
import com.opengamma.util.tuple.Pair;
/**
* Returns a multicurve bundle for a trade.
*/
public interface DiscountingMulticurveCombinerFn {
/**
* Returns the merged multicurve bundle for a specified environment, trade and FX matrix.
*
* @param env the environment to merge the multicurve bundle for.
* @param trade the trade to merge the multicurve bundle for.
* @param fxMatrix the FX matrix to include inside the multicurve bundle.
* @return the merged multicurve bundle.
* @deprecated use {@link #getMulticurveBundle(Environment, TradeWrapper)}
*/
@Deprecated
Result<Pair<MulticurveProviderDiscount, CurveBuildingBlockBundle>> createMergedMulticurveBundle(
Environment env, TradeWrapper trade, FXMatrix fxMatrix);
/**
* Returns the multicurve bundle for a trade.
*
* @param env the calculation environment
* @param trade the trade for which a multicurve is required
* @return the multicurve to use when performing calculations for the trade
*/
Result<MulticurveBundle> getMulticurveBundle(Environment env, TradeWrapper<?> trade);
}