/* ----------------------------------------------------------------------------
 * 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 SABRInterpolation {
  private transient long swigCPtr;
  protected transient boolean swigCMemOwn;

  protected SABRInterpolation(long cPtr, boolean cMemoryOwn) {
    swigCMemOwn = cMemoryOwn;
    swigCPtr = cPtr;
  }

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

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

  public synchronized void delete() {
    if (swigCPtr != 0) {
      if (swigCMemOwn) {
        swigCMemOwn = false;
        QuantLibJNI.delete_SABRInterpolation(swigCPtr);
      }
      swigCPtr = 0;
    }
  }

  public SABRInterpolation(Array x, Array y, double t, double forward, double alpha, double beta, double nu, double rho, boolean alphaIsFixed, boolean betaIsFixed, boolean nuIsFixed, boolean rhoIsFixed, boolean vegaWeighted, EndCriteria endCriteria, OptimizationMethod optMethod, double errorAccept, boolean useMaxError, long maxGuesses, double shift) {
    this(QuantLibJNI.new_SABRInterpolation__SWIG_0(Array.getCPtr(x), x, Array.getCPtr(y), y, t, forward, alpha, beta, nu, rho, alphaIsFixed, betaIsFixed, nuIsFixed, rhoIsFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria, OptimizationMethod.getCPtr(optMethod), optMethod, errorAccept, useMaxError, maxGuesses, shift), true);
  }

  public SABRInterpolation(Array x, Array y, double t, double forward, double alpha, double beta, double nu, double rho, boolean alphaIsFixed, boolean betaIsFixed, boolean nuIsFixed, boolean rhoIsFixed, boolean vegaWeighted, EndCriteria endCriteria, OptimizationMethod optMethod, double errorAccept, boolean useMaxError, long maxGuesses) {
    this(QuantLibJNI.new_SABRInterpolation__SWIG_1(Array.getCPtr(x), x, Array.getCPtr(y), y, t, forward, alpha, beta, nu, rho, alphaIsFixed, betaIsFixed, nuIsFixed, rhoIsFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria, OptimizationMethod.getCPtr(optMethod), optMethod, errorAccept, useMaxError, maxGuesses), true);
  }

  public SABRInterpolation(Array x, Array y, double t, double forward, double alpha, double beta, double nu, double rho, boolean alphaIsFixed, boolean betaIsFixed, boolean nuIsFixed, boolean rhoIsFixed, boolean vegaWeighted, EndCriteria endCriteria, OptimizationMethod optMethod, double errorAccept, boolean useMaxError) {
    this(QuantLibJNI.new_SABRInterpolation__SWIG_2(Array.getCPtr(x), x, Array.getCPtr(y), y, t, forward, alpha, beta, nu, rho, alphaIsFixed, betaIsFixed, nuIsFixed, rhoIsFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria, OptimizationMethod.getCPtr(optMethod), optMethod, errorAccept, useMaxError), true);
  }

  public SABRInterpolation(Array x, Array y, double t, double forward, double alpha, double beta, double nu, double rho, boolean alphaIsFixed, boolean betaIsFixed, boolean nuIsFixed, boolean rhoIsFixed, boolean vegaWeighted, EndCriteria endCriteria, OptimizationMethod optMethod, double errorAccept) {
    this(QuantLibJNI.new_SABRInterpolation__SWIG_3(Array.getCPtr(x), x, Array.getCPtr(y), y, t, forward, alpha, beta, nu, rho, alphaIsFixed, betaIsFixed, nuIsFixed, rhoIsFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria, OptimizationMethod.getCPtr(optMethod), optMethod, errorAccept), true);
  }

  public SABRInterpolation(Array x, Array y, double t, double forward, double alpha, double beta, double nu, double rho, boolean alphaIsFixed, boolean betaIsFixed, boolean nuIsFixed, boolean rhoIsFixed, boolean vegaWeighted, EndCriteria endCriteria, OptimizationMethod optMethod) {
    this(QuantLibJNI.new_SABRInterpolation__SWIG_4(Array.getCPtr(x), x, Array.getCPtr(y), y, t, forward, alpha, beta, nu, rho, alphaIsFixed, betaIsFixed, nuIsFixed, rhoIsFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria, OptimizationMethod.getCPtr(optMethod), optMethod), true);
  }

  public SABRInterpolation(Array x, Array y, double t, double forward, double alpha, double beta, double nu, double rho, boolean alphaIsFixed, boolean betaIsFixed, boolean nuIsFixed, boolean rhoIsFixed, boolean vegaWeighted, EndCriteria endCriteria) {
    this(QuantLibJNI.new_SABRInterpolation__SWIG_5(Array.getCPtr(x), x, Array.getCPtr(y), y, t, forward, alpha, beta, nu, rho, alphaIsFixed, betaIsFixed, nuIsFixed, rhoIsFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria), true);
  }

  public SABRInterpolation(Array x, Array y, double t, double forward, double alpha, double beta, double nu, double rho, boolean alphaIsFixed, boolean betaIsFixed, boolean nuIsFixed, boolean rhoIsFixed, boolean vegaWeighted) {
    this(QuantLibJNI.new_SABRInterpolation__SWIG_6(Array.getCPtr(x), x, Array.getCPtr(y), y, t, forward, alpha, beta, nu, rho, alphaIsFixed, betaIsFixed, nuIsFixed, rhoIsFixed, vegaWeighted), true);
  }

  public SABRInterpolation(Array x, Array y, double t, double forward, double alpha, double beta, double nu, double rho, boolean alphaIsFixed, boolean betaIsFixed, boolean nuIsFixed, boolean rhoIsFixed) {
    this(QuantLibJNI.new_SABRInterpolation__SWIG_7(Array.getCPtr(x), x, Array.getCPtr(y), y, t, forward, alpha, beta, nu, rho, alphaIsFixed, betaIsFixed, nuIsFixed, rhoIsFixed), true);
  }

  public double getValue(double x, boolean allowExtrapolation) {
    return QuantLibJNI.SABRInterpolation_getValue__SWIG_0(swigCPtr, this, x, allowExtrapolation);
  }

  public double getValue(double x) {
    return QuantLibJNI.SABRInterpolation_getValue__SWIG_1(swigCPtr, this, x);
  }

  public double alpha() {
    return QuantLibJNI.SABRInterpolation_alpha(swigCPtr, this);
  }

  public double beta() {
    return QuantLibJNI.SABRInterpolation_beta(swigCPtr, this);
  }

  public double rho() {
    return QuantLibJNI.SABRInterpolation_rho(swigCPtr, this);
  }

  public double nu() {
    return QuantLibJNI.SABRInterpolation_nu(swigCPtr, this);
  }

}
