/* ----------------------------------------------------------------------------
 * 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 SpreadCdsHelper extends DefaultProbabilityHelper {
  private transient long swigCPtr;
  private transient boolean swigCMemOwnDerived;

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

  protected static long getCPtr(SpreadCdsHelper 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_SpreadCdsHelper(swigCPtr);
      }
      swigCPtr = 0;
    }
    super.delete();
  }

  public SpreadCdsHelper(QuoteHandle spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual, boolean paysAtDefaultTime, Date startDate, DayCounter lastPeriodDayCounter, boolean rebatesAccrual, CreditDefaultSwap.PricingModel model) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_0(QuoteHandle.getCPtr(spread), spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual, paysAtDefaultTime, Date.getCPtr(startDate), startDate, DayCounter.getCPtr(lastPeriodDayCounter), lastPeriodDayCounter, rebatesAccrual, model.swigValue()), true);
  }

  public SpreadCdsHelper(QuoteHandle spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual, boolean paysAtDefaultTime, Date startDate, DayCounter lastPeriodDayCounter, boolean rebatesAccrual) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_1(QuoteHandle.getCPtr(spread), spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual, paysAtDefaultTime, Date.getCPtr(startDate), startDate, DayCounter.getCPtr(lastPeriodDayCounter), lastPeriodDayCounter, rebatesAccrual), true);
  }

  public SpreadCdsHelper(QuoteHandle spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual, boolean paysAtDefaultTime, Date startDate, DayCounter lastPeriodDayCounter) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_2(QuoteHandle.getCPtr(spread), spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual, paysAtDefaultTime, Date.getCPtr(startDate), startDate, DayCounter.getCPtr(lastPeriodDayCounter), lastPeriodDayCounter), true);
  }

  public SpreadCdsHelper(QuoteHandle spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual, boolean paysAtDefaultTime, Date startDate) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_3(QuoteHandle.getCPtr(spread), spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual, paysAtDefaultTime, Date.getCPtr(startDate), startDate), true);
  }

  public SpreadCdsHelper(QuoteHandle spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual, boolean paysAtDefaultTime) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_4(QuoteHandle.getCPtr(spread), spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual, paysAtDefaultTime), true);
  }

  public SpreadCdsHelper(QuoteHandle spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_5(QuoteHandle.getCPtr(spread), spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual), true);
  }

  public SpreadCdsHelper(QuoteHandle spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_6(QuoteHandle.getCPtr(spread), spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve), true);
  }

  public SpreadCdsHelper(double spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual, boolean paysAtDefaultTime, Date startDate, DayCounter lastPeriodDayCounter, boolean rebatesAccrual, CreditDefaultSwap.PricingModel model) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_7(spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual, paysAtDefaultTime, Date.getCPtr(startDate), startDate, DayCounter.getCPtr(lastPeriodDayCounter), lastPeriodDayCounter, rebatesAccrual, model.swigValue()), true);
  }

  public SpreadCdsHelper(double spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual, boolean paysAtDefaultTime, Date startDate, DayCounter lastPeriodDayCounter, boolean rebatesAccrual) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_8(spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual, paysAtDefaultTime, Date.getCPtr(startDate), startDate, DayCounter.getCPtr(lastPeriodDayCounter), lastPeriodDayCounter, rebatesAccrual), true);
  }

  public SpreadCdsHelper(double spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual, boolean paysAtDefaultTime, Date startDate, DayCounter lastPeriodDayCounter) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_9(spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual, paysAtDefaultTime, Date.getCPtr(startDate), startDate, DayCounter.getCPtr(lastPeriodDayCounter), lastPeriodDayCounter), true);
  }

  public SpreadCdsHelper(double spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual, boolean paysAtDefaultTime, Date startDate) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_10(spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual, paysAtDefaultTime, Date.getCPtr(startDate), startDate), true);
  }

  public SpreadCdsHelper(double spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual, boolean paysAtDefaultTime) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_11(spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual, paysAtDefaultTime), true);
  }

  public SpreadCdsHelper(double spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve, boolean settlesAccrual) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_12(spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve, settlesAccrual), true);
  }

  public SpreadCdsHelper(double spread, Period tenor, int settlementDays, Calendar calendar, Frequency frequency, BusinessDayConvention convention, DateGeneration.Rule rule, DayCounter dayCounter, double recoveryRate, YieldTermStructureHandle discountCurve) {
    this(QuantLibJNI.new_SpreadCdsHelper__SWIG_13(spread, Period.getCPtr(tenor), tenor, settlementDays, Calendar.getCPtr(calendar), calendar, frequency.swigValue(), convention.swigValue(), rule.swigValue(), DayCounter.getCPtr(dayCounter), dayCounter, recoveryRate, YieldTermStructureHandle.getCPtr(discountCurve), discountCurve), true);
  }

}
