class VolatilitySurfaceInterpolator {

  public BlackVolatilitySurfaceMoneynessFcnBackedByGrid getBumpedVolatilitySurface(final SmileSurfaceDataBundle marketData, final int expiryIndex, final int strikeIndex,
      final double amount) {
    ArgumentChecker.notNull(marketData, "marketData");
    final SmileSurfaceDataBundle bumpedData = marketData.withBumpedPoint(expiryIndex, strikeIndex, amount);
    return getVolatilitySurface(bumpedData);
  }

  public  VolatilitySurfaceInterpolator();
  public  VolatilitySurfaceInterpolator(final GeneralSmileInterpolator smileInterpolator);
  public  VolatilitySurfaceInterpolator(final Interpolator1D timeInterpolator);
  public  VolatilitySurfaceInterpolator(final GeneralSmileInterpolator smileInterpolator, final Interpolator1D timeInterpolator);
  public  VolatilitySurfaceInterpolator(final boolean useIntegratedVariance, final boolean useLogTime, final boolean useLogVariance);
  public  VolatilitySurfaceInterpolator(final GeneralSmileInterpolator smileInterpolator, final boolean useLogTime, final boolean useIntegratedVariance,
      final boolean useLogValue);
  public  VolatilitySurfaceInterpolator(final Interpolator1D timeInterpolator, final boolean useLogTime, final boolean useIntegratedVariance, final boolean useLogValue);
  public  VolatilitySurfaceInterpolator(final GeneralSmileInterpolator smileInterpolator, final Interpolator1D timeInterpolator, final boolean useLogTime,
      final boolean useIntegratedVariance, final boolean useLogValue);

}