class ForexNonDeliverableForwardDiscountingMethod {

  public MultipleCurrencyAmount presentValue(final ForexNonDeliverableForward ndf, final MulticurveProviderInterface multicurves) {
    ArgumentChecker.notNull(ndf, "Non deliverable forward");
    ArgumentChecker.notNull(multicurves, "Multi-curves provider");
    final double df2 = multicurves.getDiscountFactor(ndf.getCurrency2(), ndf.getPaymentTime());
    final double df1 = multicurves.getDiscountFactor(ndf.getCurrency1(), ndf.getPaymentTime());
    final double spot = multicurves.getFxRate(ndf.getCurrency2(), ndf.getCurrency1());
    final double pv2 = ndf.getNotionalCurrency2() * (df2 - ndf.getExchangeRate() / spot * df1);
    return MultipleCurrencyAmount.of(ndf.getCurrency2(), pv2);
  }

  private  ForexNonDeliverableForwardDiscountingMethod();

}