class CouponIborGearingDefinition extends CouponFloatingDefinition {

  public static CouponIborGearingDefinition from(final CouponIborDefinition couponIbor, final double spread, final double factor) {
    ArgumentChecker.notNull(couponIbor, "Ibor coupon");
    return new CouponIborGearingDefinition(couponIbor.getCurrency(), couponIbor.getPaymentDate(), couponIbor.getAccrualStartDate(), couponIbor.getAccrualEndDate(),
        couponIbor.getPaymentYearFraction(), couponIbor.getNotional(), couponIbor.getFixingDate(), couponIbor.getIndex(), spread, factor, couponIbor.getCalendar());
  }

  public  CouponIborGearingDefinition(final Currency currency, final ZonedDateTime paymentDate, final ZonedDateTime accrualStartDate, final ZonedDateTime accrualEndDate, final double accrualFactor,
      final double notional, final ZonedDateTime fixingDate, final IborIndex index, final double spread, final double factor, final Calendar calendar);
  public  CouponIborGearingDefinition(
      Currency currency,
      ZonedDateTime paymentDate,
      ZonedDateTime accrualStartDate,
      ZonedDateTime accrualEndDate,
      double accrualFactor,
      double notional,
      ZonedDateTime fixingDate,
      IborIndex index,
      ZonedDateTime fixingPeriodStartDate,
      ZonedDateTime fixingPeriodEndDate,
      double fixingPeriodAccrualFactor,
      double spread,
      double factor);

}