class SabrIborCapletFloorletVolatilityBootstrapDefinition implements IborCapletFloorletVolatilityDefinition, ImmutableBean, Serializable {

  public static SabrIborCapletFloorletVolatilityBootstrapDefinition ofFixedBeta(
      IborCapletFloorletVolatilitiesName name,
      IborIndex index,
      DayCount dayCount,
      double beta,
      CurveInterpolator interpolator,
      CurveExtrapolator extrapolatorLeft,
      CurveExtrapolator extrapolatorRight,
      SabrVolatilityFormula sabrVolatilityFormula) {

    Curve shiftCurve = ConstantCurve.of("Zero shift", 0d);
    ConstantCurve betaCurve = ConstantCurve.of(
        Curves.sabrParameterByExpiry(name.getName() + "-Beta", dayCount, SABR_BETA), beta);
    return new SabrIborCapletFloorletVolatilityBootstrapDefinition(
        name,
        index,
        dayCount,
        betaCurve,
        null,
        shiftCurve,
        interpolator,
        extrapolatorLeft,
        extrapolatorRight,
        sabrVolatilityFormula);
  }

  private  SabrIborCapletFloorletVolatilityBootstrapDefinition(
      IborCapletFloorletVolatilitiesName name,
      IborIndex index,
      DayCount dayCount,
      Curve betaCurve,
      Curve rhoCurve,
      Curve shiftCurve,
      CurveInterpolator interpolator,
      CurveExtrapolator extrapolatorLeft,
      CurveExtrapolator extrapolatorRight,
      SabrVolatilityFormula sabrVolatilityFormula);

}