/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 4.0.2
 *
 * 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 Gaussian1dModel extends TermStructureConsistentModel {
  private transient long swigCPtr;
  private transient boolean swigCMemOwnDerived;

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

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

  public StochasticProcess1D stateProcess() {
    long cPtr = QuantLibJNI.Gaussian1dModel_stateProcess(swigCPtr, this);
    return (cPtr == 0) ? null : new StochasticProcess1D(cPtr, true);
  }

  public double numeraire(double t, double y, YieldTermStructureHandle yts) {
    return QuantLibJNI.Gaussian1dModel_numeraire__SWIG_0(swigCPtr, this, t, y, YieldTermStructureHandle.getCPtr(yts), yts);
  }

  public double numeraire(double t, double y) {
    return QuantLibJNI.Gaussian1dModel_numeraire__SWIG_1(swigCPtr, this, t, y);
  }

  public double numeraire(double t) {
    return QuantLibJNI.Gaussian1dModel_numeraire__SWIG_2(swigCPtr, this, t);
  }

  public double zerobond(double T, double t, double y, YieldTermStructureHandle yts) {
    return QuantLibJNI.Gaussian1dModel_zerobond__SWIG_0(swigCPtr, this, T, t, y, YieldTermStructureHandle.getCPtr(yts), yts);
  }

  public double zerobond(double T, double t, double y) {
    return QuantLibJNI.Gaussian1dModel_zerobond__SWIG_1(swigCPtr, this, T, t, y);
  }

  public double zerobond(double T, double t) {
    return QuantLibJNI.Gaussian1dModel_zerobond__SWIG_2(swigCPtr, this, T, t);
  }

  public double zerobond(double T) {
    return QuantLibJNI.Gaussian1dModel_zerobond__SWIG_3(swigCPtr, this, T);
  }

  public double numeraire(Date referenceDate, double y, YieldTermStructureHandle yts) {
    return QuantLibJNI.Gaussian1dModel_numeraire__SWIG_3(swigCPtr, this, Date.getCPtr(referenceDate), referenceDate, y, YieldTermStructureHandle.getCPtr(yts), yts);
  }

  public double numeraire(Date referenceDate, double y) {
    return QuantLibJNI.Gaussian1dModel_numeraire__SWIG_4(swigCPtr, this, Date.getCPtr(referenceDate), referenceDate, y);
  }

  public double numeraire(Date referenceDate) {
    return QuantLibJNI.Gaussian1dModel_numeraire__SWIG_5(swigCPtr, this, Date.getCPtr(referenceDate), referenceDate);
  }

  public double zerobond(Date maturity, Date referenceDate, double y, YieldTermStructureHandle yts) {
    return QuantLibJNI.Gaussian1dModel_zerobond__SWIG_4(swigCPtr, this, Date.getCPtr(maturity), maturity, Date.getCPtr(referenceDate), referenceDate, y, YieldTermStructureHandle.getCPtr(yts), yts);
  }

  public double zerobond(Date maturity, Date referenceDate, double y) {
    return QuantLibJNI.Gaussian1dModel_zerobond__SWIG_5(swigCPtr, this, Date.getCPtr(maturity), maturity, Date.getCPtr(referenceDate), referenceDate, y);
  }

  public double zerobond(Date maturity, Date referenceDate) {
    return QuantLibJNI.Gaussian1dModel_zerobond__SWIG_6(swigCPtr, this, Date.getCPtr(maturity), maturity, Date.getCPtr(referenceDate), referenceDate);
  }

  public double zerobond(Date maturity) {
    return QuantLibJNI.Gaussian1dModel_zerobond__SWIG_7(swigCPtr, this, Date.getCPtr(maturity), maturity);
  }

  public double zerobondOption(Option.Type type, Date expiry, Date valueDate, Date maturity, double strike, Date referenceDate, double y, YieldTermStructureHandle yts, double yStdDevs, long yGridPoints, boolean extrapolatePayoff, boolean flatPayoffExtrapolation) {
    return QuantLibJNI.Gaussian1dModel_zerobondOption__SWIG_0(swigCPtr, this, type.swigValue(), Date.getCPtr(expiry), expiry, Date.getCPtr(valueDate), valueDate, Date.getCPtr(maturity), maturity, strike, Date.getCPtr(referenceDate), referenceDate, y, YieldTermStructureHandle.getCPtr(yts), yts, yStdDevs, yGridPoints, extrapolatePayoff, flatPayoffExtrapolation);
  }

  public double zerobondOption(Option.Type type, Date expiry, Date valueDate, Date maturity, double strike, Date referenceDate, double y, YieldTermStructureHandle yts, double yStdDevs, long yGridPoints, boolean extrapolatePayoff) {
    return QuantLibJNI.Gaussian1dModel_zerobondOption__SWIG_1(swigCPtr, this, type.swigValue(), Date.getCPtr(expiry), expiry, Date.getCPtr(valueDate), valueDate, Date.getCPtr(maturity), maturity, strike, Date.getCPtr(referenceDate), referenceDate, y, YieldTermStructureHandle.getCPtr(yts), yts, yStdDevs, yGridPoints, extrapolatePayoff);
  }

  public double zerobondOption(Option.Type type, Date expiry, Date valueDate, Date maturity, double strike, Date referenceDate, double y, YieldTermStructureHandle yts, double yStdDevs, long yGridPoints) {
    return QuantLibJNI.Gaussian1dModel_zerobondOption__SWIG_2(swigCPtr, this, type.swigValue(), Date.getCPtr(expiry), expiry, Date.getCPtr(valueDate), valueDate, Date.getCPtr(maturity), maturity, strike, Date.getCPtr(referenceDate), referenceDate, y, YieldTermStructureHandle.getCPtr(yts), yts, yStdDevs, yGridPoints);
  }

  public double zerobondOption(Option.Type type, Date expiry, Date valueDate, Date maturity, double strike, Date referenceDate, double y, YieldTermStructureHandle yts, double yStdDevs) {
    return QuantLibJNI.Gaussian1dModel_zerobondOption__SWIG_3(swigCPtr, this, type.swigValue(), Date.getCPtr(expiry), expiry, Date.getCPtr(valueDate), valueDate, Date.getCPtr(maturity), maturity, strike, Date.getCPtr(referenceDate), referenceDate, y, YieldTermStructureHandle.getCPtr(yts), yts, yStdDevs);
  }

  public double zerobondOption(Option.Type type, Date expiry, Date valueDate, Date maturity, double strike, Date referenceDate, double y, YieldTermStructureHandle yts) {
    return QuantLibJNI.Gaussian1dModel_zerobondOption__SWIG_4(swigCPtr, this, type.swigValue(), Date.getCPtr(expiry), expiry, Date.getCPtr(valueDate), valueDate, Date.getCPtr(maturity), maturity, strike, Date.getCPtr(referenceDate), referenceDate, y, YieldTermStructureHandle.getCPtr(yts), yts);
  }

  public double zerobondOption(Option.Type type, Date expiry, Date valueDate, Date maturity, double strike, Date referenceDate, double y) {
    return QuantLibJNI.Gaussian1dModel_zerobondOption__SWIG_5(swigCPtr, this, type.swigValue(), Date.getCPtr(expiry), expiry, Date.getCPtr(valueDate), valueDate, Date.getCPtr(maturity), maturity, strike, Date.getCPtr(referenceDate), referenceDate, y);
  }

  public double zerobondOption(Option.Type type, Date expiry, Date valueDate, Date maturity, double strike, Date referenceDate) {
    return QuantLibJNI.Gaussian1dModel_zerobondOption__SWIG_6(swigCPtr, this, type.swigValue(), Date.getCPtr(expiry), expiry, Date.getCPtr(valueDate), valueDate, Date.getCPtr(maturity), maturity, strike, Date.getCPtr(referenceDate), referenceDate);
  }

  public double zerobondOption(Option.Type type, Date expiry, Date valueDate, Date maturity, double strike) {
    return QuantLibJNI.Gaussian1dModel_zerobondOption__SWIG_7(swigCPtr, this, type.swigValue(), Date.getCPtr(expiry), expiry, Date.getCPtr(valueDate), valueDate, Date.getCPtr(maturity), maturity, strike);
  }

  public double forwardRate(Date fixing, Date referenceDate, double y, IborIndex iborIdx) {
    return QuantLibJNI.Gaussian1dModel_forwardRate__SWIG_0(swigCPtr, this, Date.getCPtr(fixing), fixing, Date.getCPtr(referenceDate), referenceDate, y, IborIndex.getCPtr(iborIdx), iborIdx);
  }

  public double forwardRate(Date fixing, Date referenceDate, double y) {
    return QuantLibJNI.Gaussian1dModel_forwardRate__SWIG_1(swigCPtr, this, Date.getCPtr(fixing), fixing, Date.getCPtr(referenceDate), referenceDate, y);
  }

  public double forwardRate(Date fixing, Date referenceDate) {
    return QuantLibJNI.Gaussian1dModel_forwardRate__SWIG_2(swigCPtr, this, Date.getCPtr(fixing), fixing, Date.getCPtr(referenceDate), referenceDate);
  }

  public double forwardRate(Date fixing) {
    return QuantLibJNI.Gaussian1dModel_forwardRate__SWIG_3(swigCPtr, this, Date.getCPtr(fixing), fixing);
  }

  public double swapRate(Date fixing, Period tenor, Date referenceDate, double y, SwapIndex swapIdx) {
    return QuantLibJNI.Gaussian1dModel_swapRate__SWIG_0(swigCPtr, this, Date.getCPtr(fixing), fixing, Period.getCPtr(tenor), tenor, Date.getCPtr(referenceDate), referenceDate, y, SwapIndex.getCPtr(swapIdx), swapIdx);
  }

  public double swapRate(Date fixing, Period tenor, Date referenceDate, double y) {
    return QuantLibJNI.Gaussian1dModel_swapRate__SWIG_1(swigCPtr, this, Date.getCPtr(fixing), fixing, Period.getCPtr(tenor), tenor, Date.getCPtr(referenceDate), referenceDate, y);
  }

  public double swapRate(Date fixing, Period tenor, Date referenceDate) {
    return QuantLibJNI.Gaussian1dModel_swapRate__SWIG_2(swigCPtr, this, Date.getCPtr(fixing), fixing, Period.getCPtr(tenor), tenor, Date.getCPtr(referenceDate), referenceDate);
  }

  public double swapRate(Date fixing, Period tenor) {
    return QuantLibJNI.Gaussian1dModel_swapRate__SWIG_3(swigCPtr, this, Date.getCPtr(fixing), fixing, Period.getCPtr(tenor), tenor);
  }

  public double swapAnnuity(Date fixing, Period tenor, Date referenceDate, double y, SwapIndex swapIdx) {
    return QuantLibJNI.Gaussian1dModel_swapAnnuity__SWIG_0(swigCPtr, this, Date.getCPtr(fixing), fixing, Period.getCPtr(tenor), tenor, Date.getCPtr(referenceDate), referenceDate, y, SwapIndex.getCPtr(swapIdx), swapIdx);
  }

  public double swapAnnuity(Date fixing, Period tenor, Date referenceDate, double y) {
    return QuantLibJNI.Gaussian1dModel_swapAnnuity__SWIG_1(swigCPtr, this, Date.getCPtr(fixing), fixing, Period.getCPtr(tenor), tenor, Date.getCPtr(referenceDate), referenceDate, y);
  }

  public double swapAnnuity(Date fixing, Period tenor, Date referenceDate) {
    return QuantLibJNI.Gaussian1dModel_swapAnnuity__SWIG_2(swigCPtr, this, Date.getCPtr(fixing), fixing, Period.getCPtr(tenor), tenor, Date.getCPtr(referenceDate), referenceDate);
  }

  public double swapAnnuity(Date fixing, Period tenor) {
    return QuantLibJNI.Gaussian1dModel_swapAnnuity__SWIG_3(swigCPtr, this, Date.getCPtr(fixing), fixing, Period.getCPtr(tenor), tenor);
  }

}
