class IndexOptionPricer {

  public double getOptionPriceForSpreadQuotedIndex(final double defaultAdjIndexValue, final double vol, final double strike, final boolean isPayer) {
    ArgumentChecker.isTrue(strike >= 0.0, "strike cannot be negative");
    final double x0 = calibrateX0(defaultAdjIndexValue, vol); //mean of pseudo-spread 
    final double gK = (strike - _coupon) * _annuityFunc.evaluate(strike); //the excise price 
    return optionPrice(defaultAdjIndexValue, x0, vol, gK, isPayer);
  }

  public  IndexOptionPricer(final CDSAnalytic fwdCDS, final double timeToExpiry, final ISDACompliantYieldCurve yieldCurve, final double coupon);
  public  IndexOptionPricer(final CDSAnalytic fwdCDS, final double timeToExpiry, final ISDACompliantYieldCurve yieldCurve, final double coupon, final boolean useExactAnnuityCal);

}