/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (https://www.swig.org).
 * Version 4.1.1
 *
 * Do not make changes to this file unless you know what you are doing - modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package org.quantlib;

public class DatedOISRateHelper extends RateHelper {
  private transient long swigCPtr;
  private transient boolean swigCMemOwnDerived;

  protected DatedOISRateHelper(long cPtr, boolean cMemoryOwn) {
    super(QuantLibJNI.DatedOISRateHelper_SWIGSmartPtrUpcast(cPtr), true);
    swigCMemOwnDerived = cMemoryOwn;
    swigCPtr = cPtr;
  }

  protected static long getCPtr(DatedOISRateHelper obj) {
    return (obj == null) ? 0 : obj.swigCPtr;
  }

  protected void swigSetCMemOwn(boolean own) {
    swigCMemOwnDerived = own;
    super.swigSetCMemOwn(own);
  }

  @SuppressWarnings("deprecation")
  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if (swigCPtr != 0) {
      if (swigCMemOwnDerived) {
        swigCMemOwnDerived = false;
        QuantLibJNI.delete_DatedOISRateHelper(swigCPtr);
      }
      swigCPtr = 0;
    }
    super.delete();
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates, RateAveraging.Type averagingMethod, int paymentLag, BusinessDayConvention paymentConvention, Frequency paymentFrequency, Calendar paymentCalendar, Period forwardStart, double overnightSpread, OptionalBool endOfMonth, OptionalFrequency fixedPaymentFrequency, Calendar fixedCalendar) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_0(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates, averagingMethod.swigValue(), paymentLag, paymentConvention.swigValue(), paymentFrequency.swigValue(), Calendar.getCPtr(paymentCalendar), paymentCalendar, Period.getCPtr(forwardStart), forwardStart, overnightSpread, OptionalBool.getCPtr(endOfMonth), endOfMonth, OptionalFrequency.getCPtr(fixedPaymentFrequency), fixedPaymentFrequency, Calendar.getCPtr(fixedCalendar), fixedCalendar), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates, RateAveraging.Type averagingMethod, int paymentLag, BusinessDayConvention paymentConvention, Frequency paymentFrequency, Calendar paymentCalendar, Period forwardStart, double overnightSpread, OptionalBool endOfMonth, OptionalFrequency fixedPaymentFrequency) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_1(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates, averagingMethod.swigValue(), paymentLag, paymentConvention.swigValue(), paymentFrequency.swigValue(), Calendar.getCPtr(paymentCalendar), paymentCalendar, Period.getCPtr(forwardStart), forwardStart, overnightSpread, OptionalBool.getCPtr(endOfMonth), endOfMonth, OptionalFrequency.getCPtr(fixedPaymentFrequency), fixedPaymentFrequency), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates, RateAveraging.Type averagingMethod, int paymentLag, BusinessDayConvention paymentConvention, Frequency paymentFrequency, Calendar paymentCalendar, Period forwardStart, double overnightSpread, OptionalBool endOfMonth) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_2(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates, averagingMethod.swigValue(), paymentLag, paymentConvention.swigValue(), paymentFrequency.swigValue(), Calendar.getCPtr(paymentCalendar), paymentCalendar, Period.getCPtr(forwardStart), forwardStart, overnightSpread, OptionalBool.getCPtr(endOfMonth), endOfMonth), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates, RateAveraging.Type averagingMethod, int paymentLag, BusinessDayConvention paymentConvention, Frequency paymentFrequency, Calendar paymentCalendar, Period forwardStart, double overnightSpread) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_3(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates, averagingMethod.swigValue(), paymentLag, paymentConvention.swigValue(), paymentFrequency.swigValue(), Calendar.getCPtr(paymentCalendar), paymentCalendar, Period.getCPtr(forwardStart), forwardStart, overnightSpread), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates, RateAveraging.Type averagingMethod, int paymentLag, BusinessDayConvention paymentConvention, Frequency paymentFrequency, Calendar paymentCalendar, Period forwardStart) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_4(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates, averagingMethod.swigValue(), paymentLag, paymentConvention.swigValue(), paymentFrequency.swigValue(), Calendar.getCPtr(paymentCalendar), paymentCalendar, Period.getCPtr(forwardStart), forwardStart), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates, RateAveraging.Type averagingMethod, int paymentLag, BusinessDayConvention paymentConvention, Frequency paymentFrequency, Calendar paymentCalendar) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_5(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates, averagingMethod.swigValue(), paymentLag, paymentConvention.swigValue(), paymentFrequency.swigValue(), Calendar.getCPtr(paymentCalendar), paymentCalendar), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates, RateAveraging.Type averagingMethod, int paymentLag, BusinessDayConvention paymentConvention, Frequency paymentFrequency) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_6(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates, averagingMethod.swigValue(), paymentLag, paymentConvention.swigValue(), paymentFrequency.swigValue()), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates, RateAveraging.Type averagingMethod, int paymentLag, BusinessDayConvention paymentConvention) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_7(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates, averagingMethod.swigValue(), paymentLag, paymentConvention.swigValue()), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates, RateAveraging.Type averagingMethod, int paymentLag) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_8(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates, averagingMethod.swigValue(), paymentLag), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates, RateAveraging.Type averagingMethod) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_9(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates, averagingMethod.swigValue()), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve, boolean telescopicValueDates) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_10(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve, telescopicValueDates), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index, YieldTermStructureHandle discountingCurve) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_11(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index, YieldTermStructureHandle.getCPtr(discountingCurve), discountingCurve), true);
  }

  public DatedOISRateHelper(Date startDate, Date endDate, QuoteHandle rate, OvernightIndex index) {
    this(QuantLibJNI.new_DatedOISRateHelper__SWIG_12(Date.getCPtr(startDate), startDate, Date.getCPtr(endDate), endDate, QuoteHandle.getCPtr(rate), rate, OvernightIndex.getCPtr(index), index), true);
  }

}
