/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame;
import org.threeten.bp.ZonedDateTime;
import com.opengamma.analytics.financial.instrument.InstrumentDefinition;
import com.opengamma.analytics.financial.interestrate.InstrumentDerivative;
import com.opengamma.financial.analytics.ircurve.strips.CurveNodeWithIdentifier;
import com.opengamma.util.result.Result;
/**
* Converts curve nodes into instruments, in particular for curve calibration.
*/
public interface CurveNodeConverterFn {
/**
* Converts a time independent instrument definition into a time dependent instrument derivative.
*
* @param env the function execution environment
* @param node The curve node
* @param definition The definition
* @param valuationTime The valuation time
* @return A derivative instrument
*/
Result<InstrumentDerivative> getDerivative(Environment env,
CurveNodeWithIdentifier node,
InstrumentDefinition<?> definition,
ZonedDateTime valuationTime);
}