class InterpolatedStrikeSmileDeltaTermStructure implements SmileDeltaTermStructure, ParameterizedData, ImmutableBean, Serializable {

  public static InterpolatedStrikeSmileDeltaTermStructure of(
      List<SmileDeltaParameters> volatilityTerm,
      DayCount dayCount) {

    return of(volatilityTerm, dayCount, TIME_SQUARE, FLAT, FLAT, LINEAR, FLAT, FLAT);
  }

  @ImmutableConstructor private  InterpolatedStrikeSmileDeltaTermStructure(
      List<SmileDeltaParameters> volatilityTerm,
      DayCount dayCount,
      CurveInterpolator timeInterpolator,
      CurveExtrapolator timeExtrapolatorLeft,
      CurveExtrapolator timeExtrapolatorRight,
      CurveInterpolator strikeInterpolator,
      CurveExtrapolator strikeExtrapolatorLeft,
      CurveExtrapolator strikeExtrapolatorRight);
  private  InterpolatedStrikeSmileDeltaTermStructure(
      List<SmileDeltaParameters> volatilityTerm,
      DayCount dayCount,
      CurveInterpolator timeInterpolator,
      CurveExtrapolator timeExtrapolatorLeft,
      CurveExtrapolator timeExtrapolatorRight,
      CurveInterpolator strikeInterpolator,
      CurveExtrapolator strikeExtrapolatorLeft,
      CurveExtrapolator strikeExtrapolatorRight,
      DoubleArray expiries);

}