/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.interestrate; import com.opengamma.analytics.financial.commodity.derivative.AgricultureForward; import com.opengamma.analytics.financial.commodity.derivative.AgricultureFuture; import com.opengamma.analytics.financial.commodity.derivative.AgricultureFutureOption; import com.opengamma.analytics.financial.commodity.derivative.EnergyForward; import com.opengamma.analytics.financial.commodity.derivative.EnergyFuture; import com.opengamma.analytics.financial.commodity.derivative.EnergyFutureOption; import com.opengamma.analytics.financial.commodity.derivative.MetalForward; import com.opengamma.analytics.financial.commodity.derivative.MetalFuture; import com.opengamma.analytics.financial.commodity.derivative.MetalFutureOption; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.AgricultureFutureSecurity; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.AgricultureFutureTransaction; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.CouponCommodityCashSettle; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.CouponCommodityPhysicalSettle; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.EnergyFutureSecurity; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.EnergyFutureTransaction; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.ForwardCommodityCashSettle; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.ForwardCommodityPhysicalSettle; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.MetalFutureSecurity; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.MetalFutureTransaction; import com.opengamma.analytics.financial.equity.Equity; import com.opengamma.analytics.financial.equity.future.derivative.CashSettledFuture; import com.opengamma.analytics.financial.equity.future.derivative.EquityFuture; import com.opengamma.analytics.financial.equity.future.derivative.EquityIndexDividendFuture; import com.opengamma.analytics.financial.equity.future.derivative.EquityIndexFuture; import com.opengamma.analytics.financial.equity.future.derivative.IndexFuture; import com.opengamma.analytics.financial.equity.future.derivative.VolatilityIndexFuture; import com.opengamma.analytics.financial.equity.option.EquityIndexFutureOption; import com.opengamma.analytics.financial.equity.option.EquityIndexOption; import com.opengamma.analytics.financial.equity.option.EquityOption; import com.opengamma.analytics.financial.equity.trs.definition.EquityTotalReturnSwap; import com.opengamma.analytics.financial.equity.variance.EquityVarianceSwap; import com.opengamma.analytics.financial.forex.derivative.Forex; import com.opengamma.analytics.financial.forex.derivative.ForexNonDeliverableForward; import com.opengamma.analytics.financial.forex.derivative.ForexNonDeliverableOption; import com.opengamma.analytics.financial.forex.derivative.ForexOptionDigital; import com.opengamma.analytics.financial.forex.derivative.ForexOptionSingleBarrier; import com.opengamma.analytics.financial.forex.derivative.ForexOptionVanilla; import com.opengamma.analytics.financial.forex.derivative.ForexSwap; import com.opengamma.analytics.financial.instrument.index.IndexDeposit; import com.opengamma.analytics.financial.interestrate.annuity.derivative.Annuity; import com.opengamma.analytics.financial.interestrate.annuity.derivative.AnnuityCouponFixed; import com.opengamma.analytics.financial.interestrate.annuity.derivative.AnnuityCouponIborRatchet; import com.opengamma.analytics.financial.interestrate.bond.definition.BillSecurity; import com.opengamma.analytics.financial.interestrate.bond.definition.BillTotalReturnSwap; import com.opengamma.analytics.financial.interestrate.bond.definition.BillTransaction; import com.opengamma.analytics.financial.interestrate.bond.definition.BondCapitalIndexedSecurity; import com.opengamma.analytics.financial.interestrate.bond.definition.BondCapitalIndexedTransaction; import com.opengamma.analytics.financial.interestrate.bond.definition.BondFixedSecurity; import com.opengamma.analytics.financial.interestrate.bond.definition.BondFixedTransaction; import com.opengamma.analytics.financial.interestrate.bond.definition.BondIborSecurity; import com.opengamma.analytics.financial.interestrate.bond.definition.BondIborTransaction; import com.opengamma.analytics.financial.interestrate.bond.definition.BondInterestIndexedSecurity; import com.opengamma.analytics.financial.interestrate.bond.definition.BondInterestIndexedTransaction; import com.opengamma.analytics.financial.interestrate.bond.definition.BondTotalReturnSwap; import com.opengamma.analytics.financial.interestrate.cash.derivative.Cash; import com.opengamma.analytics.financial.interestrate.cash.derivative.DepositCounterpart; import com.opengamma.analytics.financial.interestrate.cash.derivative.DepositIbor; import com.opengamma.analytics.financial.interestrate.cash.derivative.DepositZero; import com.opengamma.analytics.financial.interestrate.fra.derivative.ForwardRateAgreement; import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuture; import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuturesOptionPremiumSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuturesOptionPremiumTransaction; import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuturesOptionMarginSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuturesOptionMarginTransaction; import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuturesSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuturesTransaction; import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuturesYieldAverageSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuturesYieldAverageTransaction; import com.opengamma.analytics.financial.interestrate.future.derivative.FederalFundsFutureSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.FederalFundsFutureTransaction; import com.opengamma.analytics.financial.interestrate.future.derivative.InterestRateFutureOptionMarginSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.InterestRateFutureOptionMarginTransaction; import com.opengamma.analytics.financial.interestrate.future.derivative.InterestRateFutureOptionPremiumSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.InterestRateFutureOptionPremiumTransaction; import com.opengamma.analytics.financial.interestrate.future.derivative.InterestRateFutureSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.InterestRateFutureTransaction; import com.opengamma.analytics.financial.interestrate.future.derivative.SwapFuturesPriceDeliverableSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.SwapFuturesPriceDeliverableTransaction; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CapFloorInflationYearOnYearInterpolation; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CapFloorInflationYearOnYearMonthly; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CapFloorInflationZeroCouponInterpolation; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CapFloorInflationZeroCouponMonthly; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CouponInflationYearOnYearInterpolation; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CouponInflationYearOnYearInterpolationWithMargin; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CouponInflationYearOnYearMonthly; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CouponInflationYearOnYearMonthlyWithMargin; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CouponInflationZeroCouponInterpolation; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CouponInflationZeroCouponInterpolationGearing; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CouponInflationZeroCouponMonthly; import com.opengamma.analytics.financial.interestrate.inflation.derivative.CouponInflationZeroCouponMonthlyGearing; import com.opengamma.analytics.financial.interestrate.payments.ForexForward; import com.opengamma.analytics.financial.interestrate.payments.derivative.CapFloorCMS; import com.opengamma.analytics.financial.interestrate.payments.derivative.CapFloorCMSSpread; import com.opengamma.analytics.financial.interestrate.payments.derivative.CapFloorIbor; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponCMS; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponFixed; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponFixedAccruedCompounding; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponFixedCompounding; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponFixedFxReset; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIbor; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborAverage; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborAverageFixingDates; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborAverageFixingDatesCompounding; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborAverageFixingDatesCompoundingFlatSpread; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborCompounding; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborCompoundingFlatSpread; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborCompoundingSimpleSpread; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborCompoundingSpread; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborFxReset; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborGearing; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborSpread; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponON; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponONArithmeticAverage; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponONArithmeticAverageSpread; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponONArithmeticAverageSpreadSimplified; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponONCompounded; import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponONSpread; import com.opengamma.analytics.financial.interestrate.payments.derivative.DepositIndexCoupon; import com.opengamma.analytics.financial.interestrate.payments.derivative.InterpolatedStubCoupon; import com.opengamma.analytics.financial.interestrate.payments.derivative.Payment; import com.opengamma.analytics.financial.interestrate.payments.derivative.PaymentFixed; import com.opengamma.analytics.financial.interestrate.swap.derivative.Swap; import com.opengamma.analytics.financial.interestrate.swap.derivative.SwapFixedCompoundingCoupon; import com.opengamma.analytics.financial.interestrate.swap.derivative.SwapFixedCoupon; import com.opengamma.analytics.financial.interestrate.swap.derivative.SwapMultileg; import com.opengamma.analytics.financial.interestrate.swap.derivative.TotalReturnSwap; import com.opengamma.analytics.financial.interestrate.swaption.derivative.SwaptionBermudaFixedIbor; import com.opengamma.analytics.financial.interestrate.swaption.derivative.SwaptionCashFixedCompoundedONCompounded; import com.opengamma.analytics.financial.interestrate.swaption.derivative.SwaptionCashFixedIbor; import com.opengamma.analytics.financial.interestrate.swaption.derivative.SwaptionPhysicalFixedCompoundedONCompounded; import com.opengamma.analytics.financial.interestrate.swaption.derivative.SwaptionPhysicalFixedIbor; import com.opengamma.analytics.financial.varianceswap.VarianceSwap; import com.opengamma.analytics.financial.volatilityswap.FXVolatilitySwap; import com.opengamma.analytics.financial.volatilityswap.VolatilitySwap; /** * * @param <DATA_TYPE> The type of the data * @param <RESULT_TYPE> The return type of the calculation */ @SuppressWarnings("deprecation") public interface InstrumentDerivativeVisitor<DATA_TYPE, RESULT_TYPE> { // Two arguments /** * Fixed-coupon bond security method that takes data. * @param bond A fixed-coupon bond security * @param data The data * @return The result */ RESULT_TYPE visitBondFixedSecurity(BondFixedSecurity bond, DATA_TYPE data); /** * Fixed-coupon bond transaction method that takes data. * @param bond A fixed-coupon bond transaction * @param data The data * @return The result */ RESULT_TYPE visitBondFixedTransaction(BondFixedTransaction bond, DATA_TYPE data); /** * Ibor bond security method that takes data. * @param bond An ibor bond security * @param data The data * @return The result */ RESULT_TYPE visitBondIborSecurity(BondIborSecurity bond, DATA_TYPE data); /** * Ibor bond transaction method that takes data. * @param bond An ibor bond transaction * @param data The data * @return The result */ RESULT_TYPE visitBondIborTransaction(BondIborTransaction bond, DATA_TYPE data); /** * Bill security method that takes data. * @param bill A bill security * @param data The data * @return The result */ RESULT_TYPE visitBillSecurity(BillSecurity bill, DATA_TYPE data); /** * Bill transaction method that takes data. * @param bill A bill transaction * @param data The data * @return The result */ RESULT_TYPE visitBillTransaction(BillTransaction bill, DATA_TYPE data); /** * Generic annuity method that takes data. * @param genericAnnuity A generic annuity * @param data The data * @return The result */ RESULT_TYPE visitGenericAnnuity(Annuity<? extends Payment> genericAnnuity, DATA_TYPE data); /** * Fixed-coupon annuity method that takes data. * @param fixedCouponAnnuity A fixed-coupon annuity * @param data The data * @return The result */ RESULT_TYPE visitFixedCouponAnnuity(AnnuityCouponFixed fixedCouponAnnuity, DATA_TYPE data); /** * Ratcheting ibor coupon method that takes data. * @param annuity A annuity * @param data The data * @return The result */ RESULT_TYPE visitAnnuityCouponIborRatchet(AnnuityCouponIborRatchet annuity, DATA_TYPE data); /** * Fixed-coupon swap method that takes data. * @param swap A fixed-coupon swap * @param data The data * @return The result */ RESULT_TYPE visitFixedCouponSwap(SwapFixedCoupon<?> swap, DATA_TYPE data); /** * Fixed-compounding swap method that takes data. * @param swap A fixed-compounding swap * @param data The data * @return The result */ RESULT_TYPE visitFixedCompoundingCouponSwap(SwapFixedCompoundingCoupon<?> swap, DATA_TYPE data); /** * Cash-settled swaption method that takes data. * @param swaption A cash-settled swaption * @param data The data * @return The result */ RESULT_TYPE visitSwaptionCashFixedIbor(SwaptionCashFixedIbor swaption, DATA_TYPE data); /** * Physically-settled swaption method that takes data. * @param swaption A physically-settled swaption * @param data The data * @return The result */ RESULT_TYPE visitSwaptionPhysicalFixedIbor(SwaptionPhysicalFixedIbor swaption, DATA_TYPE data); /** * Bermudan swaption method that takes data. * @param swaption A Bermudan swaption * @param data The data * @return The result */ RESULT_TYPE visitSwaptionBermudaFixedIbor(SwaptionBermudaFixedIbor swaption, DATA_TYPE data); /** * A BRL-type swaption method that takes data. * @param swaption A swaption * @param data The data * @return The result */ RESULT_TYPE visitSwaptionCashFixedCompoundedONCompounded(SwaptionCashFixedCompoundedONCompounded swaption, DATA_TYPE data); RESULT_TYPE visitSwaptionPhysicalFixedCompoundedONCompounded(SwaptionPhysicalFixedCompoundedONCompounded swaption, DATA_TYPE data); RESULT_TYPE visitForexForward(ForexForward fx, DATA_TYPE data); RESULT_TYPE visitCash(Cash cash, DATA_TYPE data); RESULT_TYPE visitFixedPayment(PaymentFixed payment, DATA_TYPE data); RESULT_TYPE visitCouponCMS(CouponCMS payment, DATA_TYPE data); RESULT_TYPE visitCapFloorIbor(CapFloorIbor payment, DATA_TYPE data); RESULT_TYPE visitCapFloorCMS(CapFloorCMS payment, DATA_TYPE data); RESULT_TYPE visitCapFloorCMSSpread(CapFloorCMSSpread payment, DATA_TYPE data); RESULT_TYPE visitForwardRateAgreement(ForwardRateAgreement fra, DATA_TYPE data); RESULT_TYPE visitBondCapitalIndexedSecurity(BondCapitalIndexedSecurity<?> bond, DATA_TYPE data); RESULT_TYPE visitBondCapitalIndexedTransaction(BondCapitalIndexedTransaction<?> bond, DATA_TYPE data); RESULT_TYPE visitBondInterestIndexedTransaction(BondInterestIndexedTransaction<?, ?> bond, DATA_TYPE data); // One argument RESULT_TYPE visitBondFixedSecurity(BondFixedSecurity bond); RESULT_TYPE visitBondFixedTransaction(BondFixedTransaction bond); RESULT_TYPE visitBondIborSecurity(BondIborSecurity bond); RESULT_TYPE visitBondIborTransaction(BondIborTransaction bond); RESULT_TYPE visitBillSecurity(BillSecurity bill); RESULT_TYPE visitBillTransaction(BillTransaction bill); RESULT_TYPE visitGenericAnnuity(Annuity<? extends Payment> genericAnnuity); RESULT_TYPE visitFixedCouponAnnuity(AnnuityCouponFixed fixedCouponAnnuity); RESULT_TYPE visitAnnuityCouponIborRatchet(AnnuityCouponIborRatchet annuity); RESULT_TYPE visitFixedCouponSwap(SwapFixedCoupon<?> swap); RESULT_TYPE visitFixedCompoundingCouponSwap(SwapFixedCompoundingCoupon<?> swap); RESULT_TYPE visitSwaptionCashFixedIbor(SwaptionCashFixedIbor swaption); RESULT_TYPE visitSwaptionPhysicalFixedIbor(SwaptionPhysicalFixedIbor swaption); RESULT_TYPE visitSwaptionCashFixedCompoundedONCompounded(SwaptionCashFixedCompoundedONCompounded swaption); RESULT_TYPE visitSwaptionPhysicalFixedCompoundedONCompounded(SwaptionPhysicalFixedCompoundedONCompounded swaption); RESULT_TYPE visitSwaptionBermudaFixedIbor(SwaptionBermudaFixedIbor swaption); RESULT_TYPE visitForexForward(ForexForward fx); RESULT_TYPE visitCash(Cash cash); RESULT_TYPE visitFixedPayment(PaymentFixed payment); RESULT_TYPE visitCouponCMS(CouponCMS payment); RESULT_TYPE visitCapFloorIbor(CapFloorIbor payment); RESULT_TYPE visitCapFloorCMS(CapFloorCMS payment); RESULT_TYPE visitCapFloorCMSSpread(CapFloorCMSSpread payment); RESULT_TYPE visitForwardRateAgreement(ForwardRateAgreement fra); RESULT_TYPE visitBondCapitalIndexedSecurity(BondCapitalIndexedSecurity<?> bond); RESULT_TYPE visitBondCapitalIndexedTransaction(BondCapitalIndexedTransaction<?> bond); RESULT_TYPE visitBondInterestIndexedTransaction(BondInterestIndexedTransaction<?, ?> bond); RESULT_TYPE visitBondInterestIndexedSecurity(BondInterestIndexedSecurity<?, ?> bond); RESULT_TYPE visitBondInterestIndexedSecurity(BondInterestIndexedSecurity<?, ?> bond, DATA_TYPE data); // ----- Coupons ----- RESULT_TYPE visitCouponFixed(CouponFixed payment, DATA_TYPE data); RESULT_TYPE visitCouponFixed(CouponFixed payment); RESULT_TYPE visitCouponFixedCompounding(CouponFixedCompounding payment, DATA_TYPE data); RESULT_TYPE visitCouponFixedCompounding(CouponFixedCompounding payment); RESULT_TYPE visitCouponFixedAccruedCompounding(CouponFixedAccruedCompounding payment, DATA_TYPE data); RESULT_TYPE visitCouponFixedAccruedCompounding(CouponFixedAccruedCompounding payment); RESULT_TYPE visitInterpolatedStubCoupon(InterpolatedStubCoupon<? extends DepositIndexCoupon<? extends IndexDeposit>, ? extends IndexDeposit> payment, DATA_TYPE data); RESULT_TYPE visitInterpolatedStubCoupon(InterpolatedStubCoupon<? extends DepositIndexCoupon<? extends IndexDeposit>, ? extends IndexDeposit> payment); RESULT_TYPE visitCouponFixedFxReset(CouponFixedFxReset payment, DATA_TYPE data); RESULT_TYPE visitCouponFixedFxReset(CouponFixedFxReset payment); RESULT_TYPE visitCouponIborFxReset(CouponIborFxReset payment, DATA_TYPE data); RESULT_TYPE visitCouponIborFxReset(CouponIborFxReset payment); RESULT_TYPE visitCouponIbor(CouponIbor payment, DATA_TYPE data); RESULT_TYPE visitCouponIbor(CouponIbor payment); RESULT_TYPE visitCouponIborAverage(CouponIborAverage payment, DATA_TYPE data); RESULT_TYPE visitCouponIborAverage(CouponIborAverage payment); RESULT_TYPE visitCouponIborSpread(CouponIborSpread payment, DATA_TYPE data); RESULT_TYPE visitCouponIborSpread(CouponIborSpread payment); RESULT_TYPE visitCouponIborGearing(CouponIborGearing payment); RESULT_TYPE visitCouponIborGearing(CouponIborGearing payment, DATA_TYPE data); RESULT_TYPE visitCouponIborCompounding(CouponIborCompounding payment); RESULT_TYPE visitCouponIborCompounding(CouponIborCompounding payment, DATA_TYPE data); RESULT_TYPE visitCouponIborCompoundingSpread(CouponIborCompoundingSpread payment); RESULT_TYPE visitCouponIborCompoundingSpread(CouponIborCompoundingSpread payment, DATA_TYPE data); RESULT_TYPE visitCouponIborCompoundingFlatSpread(CouponIborCompoundingFlatSpread payment); RESULT_TYPE visitCouponIborCompoundingFlatSpread(CouponIborCompoundingFlatSpread payment, DATA_TYPE data); RESULT_TYPE visitCouponIborCompoundingSimpleSpread(CouponIborCompoundingSimpleSpread payment); RESULT_TYPE visitCouponIborCompoundingSimpleSpread(CouponIborCompoundingSimpleSpread payment, DATA_TYPE data); RESULT_TYPE visitCouponOIS(CouponON payment, DATA_TYPE data); RESULT_TYPE visitCouponOIS(CouponON payment); RESULT_TYPE visitCouponONCompounded(CouponONCompounded payment, DATA_TYPE data); RESULT_TYPE visitCouponONCompounded(CouponONCompounded payment); RESULT_TYPE visitCouponONSpread(CouponONSpread payment, DATA_TYPE data); RESULT_TYPE visitCouponONSpread(CouponONSpread payment); RESULT_TYPE visitCouponONArithmeticAverage(CouponONArithmeticAverage payment, DATA_TYPE data); RESULT_TYPE visitCouponONArithmeticAverage(CouponONArithmeticAverage payment); RESULT_TYPE visitCouponONArithmeticAverageSpread(CouponONArithmeticAverageSpread payment, DATA_TYPE data); RESULT_TYPE visitCouponONArithmeticAverageSpread(CouponONArithmeticAverageSpread payment); RESULT_TYPE visitCouponONArithmeticAverageSpreadSimplified(CouponONArithmeticAverageSpreadSimplified payment, DATA_TYPE data); RESULT_TYPE visitCouponONArithmeticAverageSpreadSimplified(CouponONArithmeticAverageSpreadSimplified payment); RESULT_TYPE visitCouponIborAverageFixingDates(CouponIborAverageFixingDates payment, DATA_TYPE data); RESULT_TYPE visitCouponIborAverageFixingDates(CouponIborAverageFixingDates payment); RESULT_TYPE visitCouponIborAverageCompounding(CouponIborAverageFixingDatesCompounding payment, DATA_TYPE data); RESULT_TYPE visitCouponIborAverageCompounding(CouponIborAverageFixingDatesCompounding payment); RESULT_TYPE visitCouponIborAverageFlatCompoundingSpread(CouponIborAverageFixingDatesCompoundingFlatSpread payment, DATA_TYPE data); RESULT_TYPE visitCouponIborAverageFlatCompoundingSpread(CouponIborAverageFixingDatesCompoundingFlatSpread payment); // ----- Swap ----- RESULT_TYPE visitSwap(Swap<?, ?> swap, DATA_TYPE data); RESULT_TYPE visitSwap(Swap<?, ?> swap); RESULT_TYPE visitSwapMultileg(SwapMultileg swap, DATA_TYPE data); RESULT_TYPE visitSwapMultileg(SwapMultileg swap); // ----- Inflation ----- RESULT_TYPE visitCouponInflationZeroCouponMonthly(CouponInflationZeroCouponMonthly coupon, DATA_TYPE data); RESULT_TYPE visitCouponInflationZeroCouponMonthly(CouponInflationZeroCouponMonthly coupon); RESULT_TYPE visitCouponInflationZeroCouponMonthlyGearing(CouponInflationZeroCouponMonthlyGearing coupon, DATA_TYPE data); RESULT_TYPE visitCouponInflationZeroCouponMonthlyGearing(CouponInflationZeroCouponMonthlyGearing coupon); RESULT_TYPE visitCouponInflationZeroCouponInterpolation(CouponInflationZeroCouponInterpolation coupon, DATA_TYPE data); RESULT_TYPE visitCouponInflationZeroCouponInterpolation(CouponInflationZeroCouponInterpolation coupon); RESULT_TYPE visitCouponInflationZeroCouponInterpolationGearing(CouponInflationZeroCouponInterpolationGearing coupon, DATA_TYPE data); RESULT_TYPE visitCouponInflationZeroCouponInterpolationGearing(CouponInflationZeroCouponInterpolationGearing coupon); RESULT_TYPE visitCouponInflationYearOnYearMonthly(CouponInflationYearOnYearMonthly coupon, DATA_TYPE data); RESULT_TYPE visitCouponInflationYearOnYearMonthly(CouponInflationYearOnYearMonthly coupon); RESULT_TYPE visitCouponInflationYearOnYearMonthlyWithMargin(CouponInflationYearOnYearMonthlyWithMargin coupon, DATA_TYPE data); RESULT_TYPE visitCouponInflationYearOnYearMonthlyWithMargin(CouponInflationYearOnYearMonthlyWithMargin coupon); RESULT_TYPE visitCouponInflationYearOnYearInterpolation(CouponInflationYearOnYearInterpolation coupon, DATA_TYPE data); RESULT_TYPE visitCouponInflationYearOnYearInterpolation(CouponInflationYearOnYearInterpolation coupon); RESULT_TYPE visitCouponInflationYearOnYearInterpolationWithMargin(CouponInflationYearOnYearInterpolationWithMargin coupon, DATA_TYPE data); RESULT_TYPE visitCouponInflationYearOnYearInterpolationWithMargin(CouponInflationYearOnYearInterpolationWithMargin coupon); RESULT_TYPE visitCapFloorInflationZeroCouponInterpolation(CapFloorInflationZeroCouponInterpolation coupon, DATA_TYPE data); RESULT_TYPE visitCapFloorInflationZeroCouponInterpolation(CapFloorInflationZeroCouponInterpolation coupon); RESULT_TYPE visitCapFloorInflationZeroCouponMonthly(CapFloorInflationZeroCouponMonthly coupon, DATA_TYPE data); RESULT_TYPE visitCapFloorInflationZeroCouponMonthly(CapFloorInflationZeroCouponMonthly coupon); RESULT_TYPE visitCapFloorInflationYearOnYearInterpolation(CapFloorInflationYearOnYearInterpolation coupon, DATA_TYPE data); RESULT_TYPE visitCapFloorInflationYearOnYearInterpolation(CapFloorInflationYearOnYearInterpolation coupon); RESULT_TYPE visitCapFloorInflationYearOnYearMonthly(CapFloorInflationYearOnYearMonthly coupon, DATA_TYPE data); RESULT_TYPE visitCapFloorInflationYearOnYearMonthly(CapFloorInflationYearOnYearMonthly coupon); // ----- Futures ----- RESULT_TYPE visitCashSettledFuture(CashSettledFuture future, DATA_TYPE data); RESULT_TYPE visitCashSettledFuture(CashSettledFuture future); RESULT_TYPE visitBondFuture(BondFuture bondFuture, DATA_TYPE data); RESULT_TYPE visitBondFuture(BondFuture future); RESULT_TYPE visitBondFuturesSecurity(BondFuturesSecurity bondFutures, DATA_TYPE data); RESULT_TYPE visitBondFuturesSecurity(BondFuturesSecurity bondFutures); RESULT_TYPE visitBondFuturesTransaction(BondFuturesTransaction bondFutures, DATA_TYPE data); RESULT_TYPE visitBondFuturesTransaction(BondFuturesTransaction bondFutures); RESULT_TYPE visitBondFuturesYieldAverageSecurity(BondFuturesYieldAverageSecurity bondFutures, DATA_TYPE data); RESULT_TYPE visitBondFuturesYieldAverageSecurity(BondFuturesYieldAverageSecurity bondFutures); RESULT_TYPE visitYieldAverageBondFuturesTransaction(BondFuturesYieldAverageTransaction bondFutures, DATA_TYPE data); RESULT_TYPE visitYieldAverageBondFuturesTransaction(BondFuturesYieldAverageTransaction bondFutures); RESULT_TYPE visitInterestRateFutureTransaction(InterestRateFutureTransaction future, DATA_TYPE data); RESULT_TYPE visitInterestRateFutureTransaction(InterestRateFutureTransaction future); RESULT_TYPE visitInterestRateFutureSecurity(InterestRateFutureSecurity future, DATA_TYPE data); RESULT_TYPE visitInterestRateFutureSecurity(InterestRateFutureSecurity future); RESULT_TYPE visitFederalFundsFutureSecurity(FederalFundsFutureSecurity future, DATA_TYPE data); RESULT_TYPE visitFederalFundsFutureSecurity(FederalFundsFutureSecurity future); RESULT_TYPE visitFederalFundsFutureTransaction(FederalFundsFutureTransaction future, DATA_TYPE data); RESULT_TYPE visitFederalFundsFutureTransaction(FederalFundsFutureTransaction future); RESULT_TYPE visitSwapFuturesPriceDeliverableSecurity(SwapFuturesPriceDeliverableSecurity futures, DATA_TYPE data); RESULT_TYPE visitSwapFuturesPriceDeliverableSecurity(SwapFuturesPriceDeliverableSecurity futures); RESULT_TYPE visitSwapFuturesPriceDeliverableTransaction(SwapFuturesPriceDeliverableTransaction futures, DATA_TYPE data); RESULT_TYPE visitSwapFuturesPriceDeliverableTransaction(SwapFuturesPriceDeliverableTransaction futures); // ----- Futures options ----- RESULT_TYPE visitBondFuturesOptionMarginSecurity(BondFuturesOptionMarginSecurity option, DATA_TYPE data); RESULT_TYPE visitBondFuturesOptionMarginSecurity(BondFuturesOptionMarginSecurity option); RESULT_TYPE visitBondFuturesOptionMarginTransaction(BondFuturesOptionMarginTransaction option, DATA_TYPE data); RESULT_TYPE visitBondFuturesOptionMarginTransaction(BondFuturesOptionMarginTransaction option); RESULT_TYPE visitBondFutureOptionPremiumSecurity(BondFuturesOptionPremiumSecurity option, DATA_TYPE data); RESULT_TYPE visitBondFutureOptionPremiumSecurity(BondFuturesOptionPremiumSecurity option); RESULT_TYPE visitBondFutureOptionPremiumTransaction(BondFuturesOptionPremiumTransaction option, DATA_TYPE data); RESULT_TYPE visitBondFutureOptionPremiumTransaction(BondFuturesOptionPremiumTransaction option); RESULT_TYPE visitInterestRateFutureOptionMarginSecurity(InterestRateFutureOptionMarginSecurity option, DATA_TYPE data); RESULT_TYPE visitInterestRateFutureOptionMarginSecurity(InterestRateFutureOptionMarginSecurity option); RESULT_TYPE visitInterestRateFutureOptionMarginTransaction(InterestRateFutureOptionMarginTransaction option, DATA_TYPE data); RESULT_TYPE visitInterestRateFutureOptionMarginTransaction(InterestRateFutureOptionMarginTransaction option); RESULT_TYPE visitInterestRateFutureOptionPremiumSecurity(InterestRateFutureOptionPremiumSecurity option, DATA_TYPE data); RESULT_TYPE visitInterestRateFutureOptionPremiumSecurity(InterestRateFutureOptionPremiumSecurity option); RESULT_TYPE visitInterestRateFutureOptionPremiumTransaction(InterestRateFutureOptionPremiumTransaction option, DATA_TYPE data); RESULT_TYPE visitInterestRateFutureOptionPremiumTransaction(InterestRateFutureOptionPremiumTransaction option); // ----- Deposit ----- RESULT_TYPE visitDepositIbor(DepositIbor deposit, DATA_TYPE data); RESULT_TYPE visitDepositIbor(DepositIbor deposit); RESULT_TYPE visitDepositCounterpart(DepositCounterpart deposit, DATA_TYPE data); RESULT_TYPE visitDepositCounterpart(DepositCounterpart deposit); RESULT_TYPE visitDepositZero(DepositZero deposit, DATA_TYPE data); RESULT_TYPE visitDepositZero(DepositZero deposit); // ----- Forex ----- RESULT_TYPE visitForex(Forex derivative, DATA_TYPE data); RESULT_TYPE visitForex(Forex derivative); RESULT_TYPE visitForexSwap(ForexSwap derivative, DATA_TYPE data); RESULT_TYPE visitForexSwap(ForexSwap derivative); RESULT_TYPE visitForexOptionVanilla(ForexOptionVanilla derivative, DATA_TYPE data); RESULT_TYPE visitForexOptionVanilla(ForexOptionVanilla derivative); RESULT_TYPE visitForexOptionSingleBarrier(ForexOptionSingleBarrier derivative, DATA_TYPE data); RESULT_TYPE visitForexOptionSingleBarrier(ForexOptionSingleBarrier derivative); RESULT_TYPE visitForexNonDeliverableForward(ForexNonDeliverableForward derivative, DATA_TYPE data); RESULT_TYPE visitForexNonDeliverableForward(ForexNonDeliverableForward derivative); RESULT_TYPE visitForexNonDeliverableOption(ForexNonDeliverableOption derivative, DATA_TYPE data); RESULT_TYPE visitForexNonDeliverableOption(ForexNonDeliverableOption derivative); RESULT_TYPE visitForexOptionDigital(ForexOptionDigital derivative, DATA_TYPE data); RESULT_TYPE visitForexOptionDigital(ForexOptionDigital derivative); // ----- Commodity ----- RESULT_TYPE visitMetalForward(MetalForward future, DATA_TYPE data); RESULT_TYPE visitMetalForward(MetalForward future); RESULT_TYPE visitMetalFuture(MetalFuture future, DATA_TYPE data); RESULT_TYPE visitMetalFuture(MetalFuture future); RESULT_TYPE visitMetalFutureOption(MetalFutureOption future, DATA_TYPE data); RESULT_TYPE visitMetalFutureOption(MetalFutureOption future); RESULT_TYPE visitAgricultureForward(AgricultureForward future, DATA_TYPE data); RESULT_TYPE visitAgricultureForward(AgricultureForward future); RESULT_TYPE visitAgricultureFuture(AgricultureFuture future, DATA_TYPE data); RESULT_TYPE visitAgricultureFuture(AgricultureFuture future); RESULT_TYPE visitAgricultureFutureOption(AgricultureFutureOption future, DATA_TYPE data); RESULT_TYPE visitAgricultureFutureOption(AgricultureFutureOption future); RESULT_TYPE visitEnergyForward(EnergyForward future, DATA_TYPE data); RESULT_TYPE visitEnergyForward(EnergyForward future); RESULT_TYPE visitEnergyFuture(EnergyFuture future, DATA_TYPE data); RESULT_TYPE visitEnergyFuture(EnergyFuture future); RESULT_TYPE visitEnergyFutureOption(EnergyFutureOption future, DATA_TYPE data); RESULT_TYPE visitEnergyFutureOption(EnergyFutureOption future); RESULT_TYPE visitMetalFutureSecurity(MetalFutureSecurity future, DATA_TYPE data); RESULT_TYPE visitMetalFutureSecurity(MetalFutureSecurity future); RESULT_TYPE visitEnergyFutureSecurity(EnergyFutureSecurity future, DATA_TYPE data); RESULT_TYPE visitEnergyFutureSecurity(EnergyFutureSecurity future); RESULT_TYPE visitAgricultureFutureSecurity(AgricultureFutureSecurity future, DATA_TYPE data); RESULT_TYPE visitAgricultureFutureSecurity(AgricultureFutureSecurity future); RESULT_TYPE visitMetalFutureTransaction(MetalFutureTransaction future, DATA_TYPE data); RESULT_TYPE visitMetalFutureTransaction(MetalFutureTransaction future); RESULT_TYPE visitEnergyFutureTransaction(EnergyFutureTransaction future, DATA_TYPE data); RESULT_TYPE visitEnergyFutureTransaction(EnergyFutureTransaction future); RESULT_TYPE visitAgricultureFutureTransaction(AgricultureFutureTransaction future, DATA_TYPE data); RESULT_TYPE visitAgricultureFutureTransaction(AgricultureFutureTransaction future); RESULT_TYPE visitCouponCommodityCashSettle(CouponCommodityCashSettle coupon, DATA_TYPE data); RESULT_TYPE visitCouponCommodityCashSettle(CouponCommodityCashSettle coupon); RESULT_TYPE visitCouponCommodityPhysicalSettle(CouponCommodityPhysicalSettle coupon, DATA_TYPE data); RESULT_TYPE visitCouponCommodityPhysicalSettle(CouponCommodityPhysicalSettle coupon); RESULT_TYPE visitForwardCommodityCashSettle(ForwardCommodityCashSettle forward, DATA_TYPE data); RESULT_TYPE visitForwardCommodityCashSettle(ForwardCommodityCashSettle forward); RESULT_TYPE visitForwardCommodityPhysicalSettle(ForwardCommodityPhysicalSettle forward, DATA_TYPE data); RESULT_TYPE visitForwardCommodityPhysicalSettle(ForwardCommodityPhysicalSettle forward); // ----- Equity ----- RESULT_TYPE visitEquityFuture(EquityFuture future); RESULT_TYPE visitEquityFuture(EquityFuture future, DATA_TYPE data); RESULT_TYPE visitIndexFuture(IndexFuture future, DATA_TYPE data); RESULT_TYPE visitIndexFuture(IndexFuture future); RESULT_TYPE visitEquityIndexFuture(EquityIndexFuture future, DATA_TYPE data); RESULT_TYPE visitEquityIndexFuture(EquityIndexFuture future); RESULT_TYPE visitEquityIndexDividendFuture(EquityIndexDividendFuture future); RESULT_TYPE visitEquityIndexDividendFuture(EquityIndexDividendFuture future, DATA_TYPE data); RESULT_TYPE visitVolatilityIndexFuture(VolatilityIndexFuture future, DATA_TYPE data); RESULT_TYPE visitVolatilityIndexFuture(VolatilityIndexFuture future); RESULT_TYPE visitEquityIndexOption(EquityIndexOption option, DATA_TYPE data); RESULT_TYPE visitEquityIndexOption(EquityIndexOption option); RESULT_TYPE visitEquityOption(EquityOption option, DATA_TYPE data); RESULT_TYPE visitEquityOption(EquityOption option); RESULT_TYPE visitEquityIndexFutureOption(EquityIndexFutureOption option, DATA_TYPE data); RESULT_TYPE visitEquityIndexFutureOption(EquityIndexFutureOption option); // ----- Variance and volatility swaps ----- /** * Variance swap method. * @param varianceSwap A variance swap * @return The result */ RESULT_TYPE visitVarianceSwap(VarianceSwap varianceSwap); /** * Variance swap method that takes data. * @param varianceSwap A variance swap * @param data The data * @return The result */ RESULT_TYPE visitVarianceSwap(VarianceSwap varianceSwap, DATA_TYPE data); /** * Variance swap method. * @param varianceSwap A variance swap * @return The result */ RESULT_TYPE visitEquityVarianceSwap(EquityVarianceSwap varianceSwap); /** * Variance swap method that takes data. * @param varianceSwap A variance swap * @param data The data * @return The result */ RESULT_TYPE visitEquityVarianceSwap(EquityVarianceSwap varianceSwap, DATA_TYPE data); /** * Volatility swap method. * @param volatilitySwap A volatility swap * @return The result */ RESULT_TYPE visitVolatilitySwap(VolatilitySwap volatilitySwap); /** * Volatility swap method that takes data. * @param volatilitySwap A volatility swap * @param data The data * @return The result */ RESULT_TYPE visitVolatilitySwap(VolatilitySwap volatilitySwap, DATA_TYPE data); /** * FX volatility swap method. * @param volatilitySwap A volatility swap * @return The result */ RESULT_TYPE visitFXVolatilitySwap(FXVolatilitySwap volatilitySwap); /** * FX volatility swap method that takes data. * @param volatilitySwap A volatility swap * @param data The data * @return The result */ RESULT_TYPE visitFXVolatilitySwap(FXVolatilitySwap volatilitySwap, DATA_TYPE data); /** * The total return swap method. * @param totalReturnSwap A total return swap * @return The result */ RESULT_TYPE visitTotalReturnSwap(TotalReturnSwap totalReturnSwap); /** * The total return swap method. * @param totalReturnSwap A total return swap * @param data The data * @return The result */ RESULT_TYPE visitTotalReturnSwap(TotalReturnSwap totalReturnSwap, DATA_TYPE data); /** * The bond total return swap method. * @param totalReturnSwap A bond total return swap * @return The result */ RESULT_TYPE visitBondTotalReturnSwap(BondTotalReturnSwap totalReturnSwap); /** * The bond total return swap method. * @param totalReturnSwap A bond total return swap * @param data The data * @return The result */ RESULT_TYPE visitBondTotalReturnSwap(BondTotalReturnSwap totalReturnSwap, DATA_TYPE data); /** * The bill total return swap method. * @param totalReturnSwap A bill total return swap * @return The result */ RESULT_TYPE visitBillTotalReturnSwap(BillTotalReturnSwap totalReturnSwap); /** * The bill total return swap method. * @param totalReturnSwap A bill total return swap * @param data The data * @return The result */ RESULT_TYPE visitBillTotalReturnSwap(BillTotalReturnSwap totalReturnSwap, DATA_TYPE data); /** * The equity total return swap method. * @param totalReturnSwap A equity total return swap * @return The result */ RESULT_TYPE visitEquityTotalReturnSwap(EquityTotalReturnSwap totalReturnSwap); /** * The equity total return swap method. * @param totalReturnSwap A equity total return swap * @param data The data * @return The result */ RESULT_TYPE visitEquityTotalReturnSwap(EquityTotalReturnSwap totalReturnSwap, DATA_TYPE data); /** * The equity method. * @param equity A equity * @return The result */ RESULT_TYPE visitEquity(Equity equity); /** * The equity method. * @param equity An equity * @param data The data * @return The result */ RESULT_TYPE visitEquity(Equity equity, DATA_TYPE data); }