/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.instrument; import com.opengamma.analytics.financial.commodity.definition.AgricultureForwardDefinition; import com.opengamma.analytics.financial.commodity.definition.AgricultureFutureDefinition; import com.opengamma.analytics.financial.commodity.definition.AgricultureFutureOptionDefinition; import com.opengamma.analytics.financial.commodity.definition.EnergyForwardDefinition; import com.opengamma.analytics.financial.commodity.definition.EnergyFutureDefinition; import com.opengamma.analytics.financial.commodity.definition.EnergyFutureOptionDefinition; import com.opengamma.analytics.financial.commodity.definition.MetalForwardDefinition; import com.opengamma.analytics.financial.commodity.definition.MetalFutureDefinition; import com.opengamma.analytics.financial.commodity.definition.MetalFutureOptionDefinition; import com.opengamma.analytics.financial.commodity.multicurvecommodity.definition.AgricultureFutureSecurityDefinition; import com.opengamma.analytics.financial.commodity.multicurvecommodity.definition.AgricultureFutureTransactionDefinition; import com.opengamma.analytics.financial.commodity.multicurvecommodity.definition.CouponCommodityCashSettleDefinition; import com.opengamma.analytics.financial.commodity.multicurvecommodity.definition.CouponCommodityPhysicalSettleDefinition; import com.opengamma.analytics.financial.commodity.multicurvecommodity.definition.EnergyFutureSecurityDefinition; import com.opengamma.analytics.financial.commodity.multicurvecommodity.definition.EnergyFutureTransactionDefinition; import com.opengamma.analytics.financial.commodity.multicurvecommodity.definition.ForwardCommodityCashSettleDefinition; import com.opengamma.analytics.financial.commodity.multicurvecommodity.definition.ForwardCommodityPhysicalSettleDefinition; import com.opengamma.analytics.financial.commodity.multicurvecommodity.definition.MetalFutureSecurityDefinition; import com.opengamma.analytics.financial.commodity.multicurvecommodity.definition.MetalFutureTransactionDefinition; import com.opengamma.analytics.financial.equity.EquityDefinition; import com.opengamma.analytics.financial.equity.future.definition.EquityFutureDefinition; import com.opengamma.analytics.financial.equity.future.definition.EquityIndexDividendFutureDefinition; import com.opengamma.analytics.financial.equity.future.definition.EquityIndexFutureDefinition; import com.opengamma.analytics.financial.equity.future.definition.IndexFutureDefinition; import com.opengamma.analytics.financial.equity.future.definition.VolatilityIndexFutureDefinition; import com.opengamma.analytics.financial.equity.option.EquityIndexFutureOptionDefinition; import com.opengamma.analytics.financial.equity.option.EquityIndexOptionDefinition; import com.opengamma.analytics.financial.equity.option.EquityOptionDefinition; import com.opengamma.analytics.financial.equity.trs.definition.EquityTotalReturnSwapDefinition; import com.opengamma.analytics.financial.equity.variance.EquityVarianceSwapDefinition; import com.opengamma.analytics.financial.forex.definition.ForexDefinition; import com.opengamma.analytics.financial.forex.definition.ForexNonDeliverableForwardDefinition; import com.opengamma.analytics.financial.forex.definition.ForexNonDeliverableOptionDefinition; import com.opengamma.analytics.financial.forex.definition.ForexOptionDigitalDefinition; import com.opengamma.analytics.financial.forex.definition.ForexOptionSingleBarrierDefinition; import com.opengamma.analytics.financial.forex.definition.ForexOptionVanillaDefinition; import com.opengamma.analytics.financial.forex.definition.ForexSwapDefinition; import com.opengamma.analytics.financial.instrument.annuity.AnnuityDefinition; import com.opengamma.analytics.financial.instrument.bond.BillSecurityDefinition; import com.opengamma.analytics.financial.instrument.bond.BillTotalReturnSwapDefinition; import com.opengamma.analytics.financial.instrument.bond.BillTransactionDefinition; import com.opengamma.analytics.financial.instrument.bond.BondCapitalIndexedSecurityDefinition; import com.opengamma.analytics.financial.instrument.bond.BondCapitalIndexedTransactionDefinition; import com.opengamma.analytics.financial.instrument.bond.BondFixedSecurityDefinition; import com.opengamma.analytics.financial.instrument.bond.BondFixedTransactionDefinition; import com.opengamma.analytics.financial.instrument.bond.BondIborSecurityDefinition; import com.opengamma.analytics.financial.instrument.bond.BondIborTransactionDefinition; import com.opengamma.analytics.financial.instrument.bond.BondInterestIndexedSecurityDefinition; import com.opengamma.analytics.financial.instrument.bond.BondInterestIndexedTransactionDefinition; import com.opengamma.analytics.financial.instrument.bond.BondTotalReturnSwapDefinition; import com.opengamma.analytics.financial.instrument.cash.CashDefinition; import com.opengamma.analytics.financial.instrument.cash.DepositCounterpartDefinition; import com.opengamma.analytics.financial.instrument.cash.DepositIborDefinition; import com.opengamma.analytics.financial.instrument.cash.DepositZeroDefinition; import com.opengamma.analytics.financial.instrument.fra.ForwardRateAgreementDefinition; import com.opengamma.analytics.financial.instrument.future.BondFutureDefinition; import com.opengamma.analytics.financial.instrument.future.BondFuturesOptionPremiumSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.BondFuturesOptionPremiumTransactionDefinition; import com.opengamma.analytics.financial.instrument.future.BondFuturesOptionMarginSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.BondFuturesOptionMarginTransactionDefinition; import com.opengamma.analytics.financial.instrument.future.BondFuturesSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.BondFuturesTransactionDefinition; import com.opengamma.analytics.financial.instrument.future.BondFuturesYieldAverageSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.BondFuturesYieldAverageTransactionDefinition; import com.opengamma.analytics.financial.instrument.future.FederalFundsFutureSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.FederalFundsFutureTransactionDefinition; import com.opengamma.analytics.financial.instrument.future.InterestRateFutureOptionMarginSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.InterestRateFutureOptionMarginTransactionDefinition; import com.opengamma.analytics.financial.instrument.future.InterestRateFutureOptionPremiumSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.InterestRateFutureOptionPremiumTransactionDefinition; import com.opengamma.analytics.financial.instrument.future.InterestRateFutureSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.InterestRateFutureTransactionDefinition; import com.opengamma.analytics.financial.instrument.future.SwapFuturesPriceDeliverableSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.SwapFuturesPriceDeliverableTransactionDefinition; import com.opengamma.analytics.financial.instrument.inflation.CapFloorInflationYearOnYearInterpolationDefinition; import com.opengamma.analytics.financial.instrument.inflation.CapFloorInflationYearOnYearMonthlyDefinition; import com.opengamma.analytics.financial.instrument.inflation.CapFloorInflationZeroCouponInterpolationDefinition; import com.opengamma.analytics.financial.instrument.inflation.CapFloorInflationZeroCouponMonthlyDefinition; import com.opengamma.analytics.financial.instrument.inflation.CouponInflationYearOnYearInterpolationDefinition; import com.opengamma.analytics.financial.instrument.inflation.CouponInflationYearOnYearInterpolationWithMarginDefinition; import com.opengamma.analytics.financial.instrument.inflation.CouponInflationYearOnYearMonthlyDefinition; import com.opengamma.analytics.financial.instrument.inflation.CouponInflationYearOnYearMonthlyWithMarginDefinition; import com.opengamma.analytics.financial.instrument.inflation.CouponInflationZeroCouponInterpolationDefinition; import com.opengamma.analytics.financial.instrument.inflation.CouponInflationZeroCouponInterpolationGearingDefinition; import com.opengamma.analytics.financial.instrument.inflation.CouponInflationZeroCouponMonthlyDefinition; import com.opengamma.analytics.financial.instrument.inflation.CouponInflationZeroCouponMonthlyGearingDefinition; import com.opengamma.analytics.financial.instrument.payment.CapFloorCMSDefinition; import com.opengamma.analytics.financial.instrument.payment.CapFloorCMSSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CapFloorIborDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponCMSDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponFixedAccruedCompoundingDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponFixedCompoundingDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponFixedDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponFixedFxResetDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborAverageFixingDatesCompoundingDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborAverageFixingDatesCompoundingFlatSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborAverageFixingDatesDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborAverageIndexDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborCompoundingDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborCompoundingFlatSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborCompoundingSimpleSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborCompoundingSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborFxResetDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborGearingDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborRatchetDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONArithmeticAverageDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONArithmeticAverageSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONArithmeticAverageSpreadSimplifiedDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONCompoundedDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONSimplifiedDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONSpreadSimplifiedDefinition; import com.opengamma.analytics.financial.instrument.payment.PaymentDefinition; import com.opengamma.analytics.financial.instrument.payment.PaymentFixedDefinition; import com.opengamma.analytics.financial.instrument.swap.SwapDefinition; import com.opengamma.analytics.financial.instrument.swap.SwapFixedIborDefinition; import com.opengamma.analytics.financial.instrument.swap.SwapFixedIborSpreadDefinition; import com.opengamma.analytics.financial.instrument.swap.SwapIborIborDefinition; import com.opengamma.analytics.financial.instrument.swap.SwapMultilegDefinition; import com.opengamma.analytics.financial.instrument.swap.SwapXCcyIborIborDefinition; import com.opengamma.analytics.financial.instrument.swap.TotalReturnSwapDefinition; import com.opengamma.analytics.financial.instrument.swaption.SwaptionBermudaFixedIborDefinition; import com.opengamma.analytics.financial.instrument.swaption.SwaptionCashFixedCompoundedONCompoundingDefinition; import com.opengamma.analytics.financial.instrument.swaption.SwaptionCashFixedIborDefinition; import com.opengamma.analytics.financial.instrument.swaption.SwaptionPhysicalFixedIborDefinition; import com.opengamma.analytics.financial.instrument.swaption.SwaptionPhysicalFixedIborSpreadDefinition; import com.opengamma.analytics.financial.instrument.varianceswap.VarianceSwapDefinition; import com.opengamma.analytics.financial.instrument.volatilityswap.FXVolatilitySwapDefinition; import com.opengamma.analytics.financial.instrument.volatilityswap.VolatilitySwapDefinition; /** * * @param <DATA_TYPE> Type of the data * @param <RESULT_TYPE> Type of the result */ public interface InstrumentDefinitionVisitor<DATA_TYPE, RESULT_TYPE> { // ----- Bond and bill ----- /** * Fixed-coupon bond security method that takes data. * @param bond A fixed-coupon bond security * @param data The data * @return The result */ RESULT_TYPE visitBondFixedSecurityDefinition(BondFixedSecurityDefinition bond, DATA_TYPE data); /** * Fixed-coupon bond security method. * @param bond A fixed-coupon bond security * @return The result */ RESULT_TYPE visitBondFixedSecurityDefinition(BondFixedSecurityDefinition bond); /** * Fixed-coupon bond transaction method that takes data. * @param bond A fixed-coupon bond transaction * @param data The data * @return The result */ RESULT_TYPE visitBondFixedTransactionDefinition(BondFixedTransactionDefinition bond, DATA_TYPE data); /** * Fixed-coupon bond transaction method. * @param bond A fixed-coupon bond transaction * @return The result */ RESULT_TYPE visitBondFixedTransactionDefinition(BondFixedTransactionDefinition bond); /** * Ibor bond transaction method that takes data. * @param bond An ibor bond transaction * @param data The data * @return The result */ RESULT_TYPE visitBondIborTransactionDefinition(BondIborTransactionDefinition bond, DATA_TYPE data); /** * Ibor bond transaction method. * @param bond An ibor bond transaction * @return The result */ RESULT_TYPE visitBondIborTransactionDefinition(BondIborTransactionDefinition bond); /** * Ibor bond security method that takes data. * @param bond An ibor bond security * @param data The data * @return The result */ RESULT_TYPE visitBondIborSecurityDefinition(BondIborSecurityDefinition bond, DATA_TYPE data); /** * Ibor bond security method. * @param bond An ibor bond security * @return The result */ RESULT_TYPE visitBondIborSecurityDefinition(BondIborSecurityDefinition bond); /** * Bill security method that takes data. * @param bill A bill security * @param data The data * @return The result */ RESULT_TYPE visitBillSecurityDefinition(BillSecurityDefinition bill, DATA_TYPE data); /** * Bill security method. * @param bill A bill security * @return The result */ RESULT_TYPE visitBillSecurityDefinition(BillSecurityDefinition bill); /** * Bill transaction method that takes data. * @param bill A bill transaction * @param data The data * @return The result */ RESULT_TYPE visitBillTransactionDefinition(BillTransactionDefinition bill, DATA_TYPE data); /** * Bill transaction method. * @param bill A bill transaction * @return The result */ RESULT_TYPE visitBillTransactionDefinition(BillTransactionDefinition bill); // ----- Deposit ----- /** * Cash method that takes data. * @param cash The cash * @param data The data * @return The result */ RESULT_TYPE visitCashDefinition(CashDefinition cash, DATA_TYPE data); /** * Cash method. * @param cash The cash * @return The result */ RESULT_TYPE visitCashDefinition(CashDefinition cash); /** * Ibor deposit method that takes data. * @param deposit The ibor deposit * @param data The data * @return The result */ RESULT_TYPE visitDepositIborDefinition(DepositIborDefinition deposit, DATA_TYPE data); /** * Ibor deposit method. * @param deposit The ibor deposit * @return The result */ RESULT_TYPE visitDepositIborDefinition(DepositIborDefinition deposit); /** * Counterparty deposit method that takes data. * @param deposit The counterparty deposit * @param data The data * @return The result */ RESULT_TYPE visitDepositCounterpartDefinition(DepositCounterpartDefinition deposit, DATA_TYPE data); /** * Counterparty deposit method. * @param deposit The counterparty deposit * @return The result */ RESULT_TYPE visitDepositCounterpartDefinition(DepositCounterpartDefinition deposit); /** * Zero deposit method that takes data. * @param deposit The zero deposit * @param data The data * @return The result */ RESULT_TYPE visitDepositZeroDefinition(DepositZeroDefinition deposit, DATA_TYPE data); /** * Zero deposit method. * @param deposit The zero deposit * @return The result */ RESULT_TYPE visitDepositZeroDefinition(DepositZeroDefinition deposit); // ----- Futures ----- /** * Bond future method that takes data. * @param bondFuture A bond future * @param data The data * @return The result * @deprecated {@link BondFutureDefinition} is deprecated */ @Deprecated RESULT_TYPE visitBondFutureDefinition(BondFutureDefinition bondFuture, DATA_TYPE data); /** * Bond future method. * @param bondFuture A bond future * @return The result * @deprecated {@link BondFutureDefinition} is deprecated */ @Deprecated RESULT_TYPE visitBondFutureDefinition(BondFutureDefinition bondFuture); /** * Bond future security method that takes data. * @param bondFuture A bond future security * @param data The data * @return The result */ RESULT_TYPE visitBondFuturesSecurityDefinition(BondFuturesSecurityDefinition bondFuture, DATA_TYPE data); /** * Bond future security method. * @param bondFuture A bond future security * @return The result */ RESULT_TYPE visitBondFuturesSecurityDefinition(BondFuturesSecurityDefinition bondFuture); /** * Bond future transaction method that takes data. * @param bondFuture A bond future transaction * @param data The data * @return The result */ RESULT_TYPE visitBondFuturesTransactionDefinition(BondFuturesTransactionDefinition bondFuture, DATA_TYPE data); /** * Bond future transaction method. * @param bondFuture A bond future transaction * @return The result */ RESULT_TYPE visitBondFuturesTransactionDefinition(BondFuturesTransactionDefinition bondFuture); /** * Yield average bond future security method that takes data. * @param bondFuture A bond future security * @param data The data * @return The result */ RESULT_TYPE visitBondFuturesYieldAverageSecurityDefinition(BondFuturesYieldAverageSecurityDefinition bondFuture, DATA_TYPE data); /** * Yield average bond future security method. * @param bondFuture A bond future security * @return The result */ RESULT_TYPE visitBondFuturesYieldAverageSecurityDefinition(BondFuturesYieldAverageSecurityDefinition bondFuture); /** * Yield average bond future transaction method that takes data. * @param bondFuture A bond future transaction * @param data The data * @return The result */ RESULT_TYPE visitYieldAverageBondFuturesTransactionDefinition(BondFuturesYieldAverageTransactionDefinition bondFuture, DATA_TYPE data); /** * Yield average bond future transaction method. * @param bondFuture A bond future transaction * @return The result */ RESULT_TYPE visitYieldAverageBondFuturesTransactionDefinition(BondFuturesYieldAverageTransactionDefinition bondFuture); /** * Forward rate agreement method that takes data. * @param fra The forward rate agreement * @param data The data * @return The result */ RESULT_TYPE visitForwardRateAgreementDefinition(ForwardRateAgreementDefinition fra, DATA_TYPE data); /** * Forward rate agreement method. * @param fra The forward rate agreement * @return The result */ RESULT_TYPE visitForwardRateAgreementDefinition(ForwardRateAgreementDefinition fra); /** * Interest rate future transaction method that takes data. * @param future An interest rate future transaction * @param data The data * @return The result */ RESULT_TYPE visitInterestRateFutureTransactionDefinition(InterestRateFutureTransactionDefinition future, DATA_TYPE data); /** * Interest rate future transaction method. * @param future An interest rate future transaction * @return The result */ RESULT_TYPE visitInterestRateFutureTransactionDefinition(InterestRateFutureTransactionDefinition future); /** * Interest rate future security method that takes data. * @param future An interest rate future security * @param data The data * @return The result */ RESULT_TYPE visitInterestRateFutureSecurityDefinition(InterestRateFutureSecurityDefinition future, DATA_TYPE data); /** * Interest rate future security method. * @param future An interest rate future security * @return The result */ RESULT_TYPE visitInterestRateFutureSecurityDefinition(InterestRateFutureSecurityDefinition future); /** * Federal funds future security method that takes data. * @param future A Federal funds future security * @param data The data * @return The result */ RESULT_TYPE visitFederalFundsFutureSecurityDefinition(FederalFundsFutureSecurityDefinition future, DATA_TYPE data); /** * Federal funds future security method. * @param future A Federal funds future security * @return The result */ RESULT_TYPE visitFederalFundsFutureSecurityDefinition(FederalFundsFutureSecurityDefinition future); /** * Federal funds future transaction method that takes data. * @param future A Federal funds future transaction * @param data The data * @return The result */ RESULT_TYPE visitFederalFundsFutureTransactionDefinition(FederalFundsFutureTransactionDefinition future, DATA_TYPE data); /** * Federal funds future transaction method. * @param future A Federal funds future transaction * @return The result */ RESULT_TYPE visitFederalFundsFutureTransactionDefinition(FederalFundsFutureTransactionDefinition future); /** * Deliverable swap future security method that takes data. * @param future A deliverable swap future security * @param data The data * @return The result */ RESULT_TYPE visitDeliverableSwapFuturesSecurityDefinition(SwapFuturesPriceDeliverableSecurityDefinition future, DATA_TYPE data); /** * Deliverable swap future security method. * @param future A deliverable swap future security * @return The result */ RESULT_TYPE visitDeliverableSwapFuturesSecurityDefinition(SwapFuturesPriceDeliverableSecurityDefinition future); /** * Deliverable swap future transaction method that takes data. * @param future A deliverable swap future transaction * @param data The data * @return The result */ RESULT_TYPE visitDeliverableSwapFuturesTransactionDefinition(SwapFuturesPriceDeliverableTransactionDefinition future, DATA_TYPE data); /** * Deliverable swap future transaction method. * @param future A deliverable swap future transaction * @return The result */ RESULT_TYPE visitDeliverableSwapFuturesTransactionDefinition(SwapFuturesPriceDeliverableTransactionDefinition future); // ----- Futures options ----- /** * Interest rate future option with premium security method that takes data. * @param futureOption An interest rate future option with premium security * @param data The data * @return The result */ RESULT_TYPE visitInterestRateFutureOptionPremiumSecurityDefinition(InterestRateFutureOptionPremiumSecurityDefinition futureOption, DATA_TYPE data); /** * Interest rate future option with premium security method. * @param futureOption An interest rate future option with premium security * @return The result */ RESULT_TYPE visitInterestRateFutureOptionPremiumSecurityDefinition(InterestRateFutureOptionPremiumSecurityDefinition futureOption); /** * Interest rate future option with premium transaction method that takes data. * @param futureOption An interest rate future option with premium transaction * @param data The data * @return The result */ RESULT_TYPE visitInterestRateFutureOptionPremiumTransactionDefinition(InterestRateFutureOptionPremiumTransactionDefinition futureOption, DATA_TYPE data); /** * Interest rate future option with premium transaction method. * @param futureOption An interest rate future option with premium transaction * @return The result */ RESULT_TYPE visitInterestRateFutureOptionPremiumTransactionDefinition(InterestRateFutureOptionPremiumTransactionDefinition futureOption); /** * Interest rate future option with margin security method that takes data. * @param futureOption An interest rate future option with margin security * @param data The data * @return The result */ RESULT_TYPE visitInterestRateFutureOptionMarginSecurityDefinition(InterestRateFutureOptionMarginSecurityDefinition futureOption, DATA_TYPE data); /** * Interest rate future option with margin security method. * @param futureOption An interest rate future option with margin security * @return The result */ RESULT_TYPE visitInterestRateFutureOptionMarginSecurityDefinition(InterestRateFutureOptionMarginSecurityDefinition futureOption); /** * Interest rate future option with margin transaction method that takes data. * @param futureOption An interest rate future option with margin transaction * @param data The data * @return The result */ RESULT_TYPE visitInterestRateFutureOptionMarginTransactionDefinition(InterestRateFutureOptionMarginTransactionDefinition futureOption, DATA_TYPE data); /** * Interest rate future option with margin transaction method. * @param futureOption An interest rate future option with margin transaction * @return The result */ RESULT_TYPE visitInterestRateFutureOptionMarginTransactionDefinition(InterestRateFutureOptionMarginTransactionDefinition futureOption); /** * Bond future option with premium security method that takes data. * @param bondFutureOption A bond future option with premium security * @param data The data * @return The result */ RESULT_TYPE visitBondFutureOptionPremiumSecurityDefinition(BondFuturesOptionPremiumSecurityDefinition bondFutureOption, DATA_TYPE data); /** * Bond future option with premium security method. * @param bondFutureOption Bond future future option with premium security * @return The result */ RESULT_TYPE visitBondFutureOptionPremiumSecurityDefinition(BondFuturesOptionPremiumSecurityDefinition bondFutureOption); /** * Bond future option with premium transaction method that takes data. * @param bondFutureOption A bond future option with premium transaction * @param data The data * @return The result */ RESULT_TYPE visitBondFutureOptionPremiumTransactionDefinition(BondFuturesOptionPremiumTransactionDefinition bondFutureOption, DATA_TYPE data); /** * Bond future option with premium transaction method. * @param bondFutureOption A bond future option with premium transaction * @return The result */ RESULT_TYPE visitBondFutureOptionPremiumTransactionDefinition(BondFuturesOptionPremiumTransactionDefinition bondFutureOption); /** * Bond future option with margin security method that takes data. * @param bondFutureOption A bond future option with margin security * @param data The data * @return The result */ RESULT_TYPE visitBondFuturesOptionMarginSecurityDefinition(BondFuturesOptionMarginSecurityDefinition bondFutureOption, DATA_TYPE data); /** * Bond future option with margin security method. * @param bondFutureOption Bond future future option with margin security * @return The result */ RESULT_TYPE visitBondFuturesOptionMarginSecurityDefinition(BondFuturesOptionMarginSecurityDefinition bondFutureOption); /** * Bond future option with margin transaction method that takes data. * @param bondFutureOption A bond future option with margin transaction * @param data The data * @return The result */ RESULT_TYPE visitBondFuturesOptionMarginTransactionDefinition(BondFuturesOptionMarginTransactionDefinition bondFutureOption, DATA_TYPE data); /** * Bond future option with margin transaction method. * @param bondFutureOption A bond future option with margin transaction * @return The result */ RESULT_TYPE visitBondFuturesOptionMarginTransactionDefinition(BondFuturesOptionMarginTransactionDefinition bondFutureOption); // ----- Payment and coupon ----- /** * Fixed payment method that takes data. * @param payment A fixed payment * @param data The data * @return The result */ RESULT_TYPE visitPaymentFixedDefinition(PaymentFixedDefinition payment, DATA_TYPE data); /** * Fixed payment method. * @param payment A fixed payment * @return The result */ RESULT_TYPE visitPaymentFixedDefinition(PaymentFixedDefinition payment); /** * Fixed coupon method that takes data. * @param payment A fixed coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponFixedDefinition(CouponFixedDefinition payment, DATA_TYPE data); /** * Fixed coupon method. * @param payment A fixed coupon * @return The result */ RESULT_TYPE visitCouponFixedDefinition(CouponFixedDefinition payment); /** * Fixed coupon with compounding method that takes data. * @param payment A fixed coupon with compounding * @param data The data * @return The result */ RESULT_TYPE visitCouponFixedCompoundingDefinition(CouponFixedCompoundingDefinition payment, DATA_TYPE data); /** * Fixed coupon with compounding method. * @param payment A fixed coupon with compounding * @return The result */ RESULT_TYPE visitCouponFixedCompoundingDefinition(CouponFixedCompoundingDefinition payment); /** * Fixed coupon with accrued compounding method that takes data. * @param payment A fixed coupon with accrued compounding * @param data The data * @return The result */ RESULT_TYPE visitCouponFixedAccruedCompoundingDefinition(CouponFixedAccruedCompoundingDefinition payment, DATA_TYPE data); /** * Fixed coupon with accrued compounding method. * @param payment A fixed coupon with accrued compounding * @return The result */ RESULT_TYPE visitCouponFixedAccruedCompoundingDefinition(CouponFixedAccruedCompoundingDefinition payment); /** * Fixed coupon with FX reset method that takes data. * @param payment A fixed coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponFixedFxResetDefinition(CouponFixedFxResetDefinition payment, DATA_TYPE data); /** * Fixed coupon method. * @param payment A fixed coupon * @return The result */ RESULT_TYPE visitCouponFixedFxResetDefinition(CouponFixedFxResetDefinition payment); /** * Ibor coupon with FX reset method that takes data. * @param payment A ibor coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponIborFxResetDefinition(CouponIborFxResetDefinition payment, DATA_TYPE data); /** * Ibor coupon with FX reset method. * @param payment A ibor coupon * @return The result */ RESULT_TYPE visitCouponIborFxResetDefinition(CouponIborFxResetDefinition payment); /** * Ibor coupon method that takes data. * @param payment An ibor coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponIborDefinition(CouponIborDefinition payment, DATA_TYPE data); /** * Ibor coupon method. * @param payment An ibor coupon * @return The result */ RESULT_TYPE visitCouponIborDefinition(CouponIborDefinition payment); /** * Averaged ibor coupon method that takes data. * @param payment An averaged ibor coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponIborAverageDefinition(CouponIborAverageIndexDefinition payment, DATA_TYPE data); /** * Averaged ibor coupon method. * @param payment An averaged ibor coupon * @return The result */ RESULT_TYPE visitCouponIborAverageDefinition(CouponIborAverageIndexDefinition payment); /** * Ibor coupon with spread method that takes data. * @param payment An ibor coupon with spread * @param data The data * @return The result */ RESULT_TYPE visitCouponIborSpreadDefinition(CouponIborSpreadDefinition payment, DATA_TYPE data); /** * Ibor coupon with spread method that takes data. * @param payment An ibor coupon with spread * @return The result */ RESULT_TYPE visitCouponIborSpreadDefinition(CouponIborSpreadDefinition payment); /** * Ibor coupon with gearing method that takes data. * @param payment An ibor coupon with gearing * @param data The data * @return The result */ RESULT_TYPE visitCouponIborGearingDefinition(CouponIborGearingDefinition payment, DATA_TYPE data); /** * Ibor coupon with gearing method. * @param payment An ibor coupon with gearing * @return The result */ RESULT_TYPE visitCouponIborGearingDefinition(CouponIborGearingDefinition payment); /** * Ibor coupon with compounding method that takes data. * @param payment An ibor coupon with compounding * @param data The data * @return The result */ RESULT_TYPE visitCouponIborCompoundingDefinition(CouponIborCompoundingDefinition payment, DATA_TYPE data); /** * Ibor coupon with compounding method. * @param payment An ibor coupon with compounding * @return The result */ RESULT_TYPE visitCouponIborCompoundingDefinition(CouponIborCompoundingDefinition payment); /** * Ibor coupon with compounding and spread method that takes data. * @param payment An ibor coupon with compounding and spread * @param data The data * @return The result */ RESULT_TYPE visitCouponIborCompoundingSpreadDefinition(CouponIborCompoundingSpreadDefinition payment, DATA_TYPE data); /** * Ibor coupon with compounding and spread method. * @param payment An ibor coupon with compounding and spread * @return The result */ RESULT_TYPE visitCouponIborCompoundingSpreadDefinition(CouponIborCompoundingSpreadDefinition payment); /** * Ibor coupon with compounding of type "Compounding Flat" and spread method that takes data. * @param payment An ibor coupon with compounding and spread * @param data The data * @return The result */ RESULT_TYPE visitCouponIborCompoundingFlatSpreadDefinition(CouponIborCompoundingFlatSpreadDefinition payment, DATA_TYPE data); /** * Ibor coupon with compounding of type "Compounding treating spread as simple interest" and spread method. * @param payment An ibor coupon with compounding and spread * @return The result */ RESULT_TYPE visitCouponIborCompoundingSimpleSpreadDefinition(CouponIborCompoundingSimpleSpreadDefinition payment); /** * Ibor coupon with compounding of type "Compounding treating spread as simple interest" and spread method that takes data. * @param payment An ibor coupon with compounding and spread * @param data The data * @return The result */ RESULT_TYPE visitCouponIborCompoundingSimpleSpreadDefinition(CouponIborCompoundingSimpleSpreadDefinition payment, DATA_TYPE data); /** * Ibor coupon with compounding of type "Compounding Flat" and spread method. * @param payment An ibor coupon with compounding and spread * @return The result */ RESULT_TYPE visitCouponIborCompoundingFlatSpreadDefinition(CouponIborCompoundingFlatSpreadDefinition payment); /** * Ratcheted ibor coupon method that takes data. * @param payment A ratcheted ibor coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponIborRatchetDefinition(CouponIborRatchetDefinition payment, DATA_TYPE data); /** * Ratcheted ibor coupon method. * @param payment A ratcheted ibor coupon * @return The result */ RESULT_TYPE visitCouponIborRatchetDefinition(CouponIborRatchetDefinition payment); /** * Ibor cap/floor method that takes data. * @param payment An ibor cap/floor * @param data The data * @return The result */ RESULT_TYPE visitCapFloorIborDefinition(CapFloorIborDefinition payment, DATA_TYPE data); /** * Ibor cap/floor method. * @param payment An ibor cap/floor * @return The result */ RESULT_TYPE visitCapFloorIborDefinition(CapFloorIborDefinition payment); /** * OIS coupon method that takes data. * @param payment An OIS coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponOISDefinition(CouponONDefinition payment, DATA_TYPE data); /** * OIS coupon method. * @param payment An OIS coupon * @return The result */ RESULT_TYPE visitCouponOISDefinition(CouponONDefinition payment); /** * Overnight compounded coupon method that takes data. * @param payment An overnight compounded coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponONCompoundedDefinition(CouponONCompoundedDefinition payment, DATA_TYPE data); /** * Overnight compounded coupon method. * @param payment An overnight compounded coupon * @return The result */ RESULT_TYPE visitCouponONCompoundedDefinition(CouponONCompoundedDefinition payment); /** * Simplified OIS coupon method that takes data. * @param payment A simplified OIS coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponOISSimplifiedDefinition(CouponONSimplifiedDefinition payment, DATA_TYPE data); /** * Simplified OIS coupon method. * @param payment A simplified OIS coupon * @return The result */ RESULT_TYPE visitCouponOISSimplifiedDefinition(CouponONSimplifiedDefinition payment); /** * Overnight coupon with spread method that takes data. * @param payment An overnight coupon with spread * @param data The data * @return The result */ RESULT_TYPE visitCouponONSpreadDefinition(CouponONSpreadDefinition payment, DATA_TYPE data); /** * Overnight coupon with spread method. * @param payment An overnight coupon with spread * @return The result */ RESULT_TYPE visitCouponONSpreadDefinition(CouponONSpreadDefinition payment); /** * Overnight coupon with spread method that takes data. * @param payment An overnight coupon with spread * @param data The data * @return The result */ RESULT_TYPE visitCouponONSpreadSimplifiedDefinition(CouponONSpreadSimplifiedDefinition payment, DATA_TYPE data); /** * Overnight coupon with spread method. * @param payment An overnight coupon with spread * @return The result */ RESULT_TYPE visitCouponONSpreadSimplifiedDefinition(CouponONSpreadSimplifiedDefinition payment); /** * CMS coupon method that takes data. * @param payment A CMS coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponCMSDefinition(CouponCMSDefinition payment, DATA_TYPE data); /** * CMS coupon method. * @param payment A CMS coupon * @return The result */ RESULT_TYPE visitCouponCMSDefinition(CouponCMSDefinition payment); /** * CMS cap/floor method that takes data. * @param payment A CMS cap/floor * @param data The data * @return The result */ RESULT_TYPE visitCapFloorCMSDefinition(CapFloorCMSDefinition payment, DATA_TYPE data); /** * CMS cap/floor method. * @param payment A CMS cap/floor * @return The result */ RESULT_TYPE visitCapFloorCMSDefinition(CapFloorCMSDefinition payment); /** * CMS cap/floor spread method that takes data. * @param payment A CMS cap/floor spread * @param data The data * @return The result */ RESULT_TYPE visitCapFloorCMSSpreadDefinition(CapFloorCMSSpreadDefinition payment, DATA_TYPE data); /** * CMS cap/floor spread method. * @param payment A CMS cap/floor spread * @return The result */ RESULT_TYPE visitCapFloorCMSSpreadDefinition(CapFloorCMSSpreadDefinition payment); /** * Arithmetic-averaged overnight coupon method that takes data. * @param payment An arithmetic-averaged overnight coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponArithmeticAverageONDefinition(CouponONArithmeticAverageDefinition payment, DATA_TYPE data); /** * Arithmetic-averaged overnight coupon method. * @param payment An arithmetic-averaged overnight coupon * @return The result */ RESULT_TYPE visitCouponArithmeticAverageONDefinition(CouponONArithmeticAverageDefinition payment); /** * Arithmetic-averaged overnight coupon with spread method that takes data. * @param payment An arithmetic-averaged overnight coupon with spread * @param data The data * @return The result */ RESULT_TYPE visitCouponArithmeticAverageONSpreadDefinition(CouponONArithmeticAverageSpreadDefinition payment, DATA_TYPE data); /** * Arithmetic-averaged overnight coupon with spread method. * @param payment An arithmetic-averaged overnight coupon with spread * @return The result */ RESULT_TYPE visitCouponArithmeticAverageONSpreadDefinition(CouponONArithmeticAverageSpreadDefinition payment); /** * Simplified arithmetic-averaged overnight coupon method that takes data. * @param payment A simplified arithmetic-averaged overnight coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponArithmeticAverageONSpreadSimplifiedDefinition(CouponONArithmeticAverageSpreadSimplifiedDefinition payment, DATA_TYPE data); /** * Simplified arithmetic-averaged overnight coupon method. * @param payment A simplified arithmetic-averaged overnight coupon * @return The result */ RESULT_TYPE visitCouponArithmeticAverageONSpreadSimplifiedDefinition(CouponONArithmeticAverageSpreadSimplifiedDefinition payment); RESULT_TYPE visitCouponIborAverageFixingDatesDefinition(CouponIborAverageFixingDatesDefinition payment, DATA_TYPE data); RESULT_TYPE visitCouponIborAverageFixingDatesDefinition(CouponIborAverageFixingDatesDefinition payment); RESULT_TYPE visitCouponIborAverageCompoundingDefinition(CouponIborAverageFixingDatesCompoundingDefinition payment, DATA_TYPE data); RESULT_TYPE visitCouponIborAverageCompoundingDefinition(CouponIborAverageFixingDatesCompoundingDefinition payment); RESULT_TYPE visitCouponIborAverageFlatCompoundingSpreadDefinition(CouponIborAverageFixingDatesCompoundingFlatSpreadDefinition payment, DATA_TYPE data); RESULT_TYPE visitCouponIborAverageFlatCompoundingSpreadDefinition(CouponIborAverageFixingDatesCompoundingFlatSpreadDefinition payment); // ----- Annuity ----- /** * Annuity method that takes data. * @param annuity An annuity * @param data The data * @return The result */ RESULT_TYPE visitAnnuityDefinition(AnnuityDefinition<? extends PaymentDefinition> annuity, DATA_TYPE data); /** * Annuity method. * @param annuity An annuity * @return The result */ RESULT_TYPE visitAnnuityDefinition(AnnuityDefinition<? extends PaymentDefinition> annuity); // ----- Swap ----- /** * Swap with arbitrary pay and receive legs method that takes data. * @param swap A swap * @param data The data * @return The result */ RESULT_TYPE visitSwapDefinition(SwapDefinition swap, DATA_TYPE data); /** * Swap with arbitrary pay and receive legs method. * @param swap A swap * @return The result */ RESULT_TYPE visitSwapDefinition(SwapDefinition swap); /** * Swap with arbitrary multiple legs method that takes data. * @param swap A swap * @param data The data * @return The result */ RESULT_TYPE visitSwapMultilegDefinition(SwapMultilegDefinition swap, DATA_TYPE data); /** * Swap with arbitrary multiple legs method. * @param swap A swap * @return The result */ RESULT_TYPE visitSwapMultilegDefinition(SwapMultilegDefinition swap); /** * Fixed / ibor swap method that takes data. * @param swap A swap * @param data The data * @return The result */ RESULT_TYPE visitSwapFixedIborDefinition(SwapFixedIborDefinition swap, DATA_TYPE data); /** * Fixed / ibor swap method. * @param swap A swap * @return The result */ RESULT_TYPE visitSwapFixedIborDefinition(SwapFixedIborDefinition swap); /** * Fixed / ibor swap with spread method that takes data. * @param swap A fixed / ibor swap * @param data The data * @return The result */ RESULT_TYPE visitSwapFixedIborSpreadDefinition(SwapFixedIborSpreadDefinition swap, DATA_TYPE data); /** * Fixed / ibor swap with spread method. * @param swap A fixed / ibor swap * @return The result */ RESULT_TYPE visitSwapFixedIborSpreadDefinition(SwapFixedIborSpreadDefinition swap); /** * Ibor / ibor swap method that takes data. * @param swap An ibor / ibor swap * @param data The data * @return The result */ RESULT_TYPE visitSwapIborIborDefinition(SwapIborIborDefinition swap, DATA_TYPE data); /** * Ibor / ibor swap method. * @param swap An ibor / ibor swap * @return The result */ RESULT_TYPE visitSwapIborIborDefinition(SwapIborIborDefinition swap); /** * Cross-currency ibor / ibor swap method that takes data. * @param swap A cross-currency ibor / ibor swap * @param data The data * @return The result */ RESULT_TYPE visitSwapXCcyIborIborDefinition(SwapXCcyIborIborDefinition swap, DATA_TYPE data); /** * Cross-currency ibor / ibor swap method. * @param swap A cross-currency ibor / ibor swap * @return The result */ RESULT_TYPE visitSwapXCcyIborIborDefinition(SwapXCcyIborIborDefinition swap); // ----- Swaption ----- /** * Cash-settled fixed / ibor swaption method that takes data. * @param swaption A cash-settled fixed / ibor swaption * @param data The data * @return The result */ RESULT_TYPE visitSwaptionCashFixedIborDefinition(SwaptionCashFixedIborDefinition swaption, DATA_TYPE data); /** * Cash-settled fixed / ibor swaption method. * @param swaption A cash-settled fixed / ibor swaption * @return The result */ RESULT_TYPE visitSwaptionCashFixedIborDefinition(SwaptionCashFixedIborDefinition swaption); /** * Physically-settled fixed / ibor swaption method that takes data. * @param swaption A physically-settled fixed / ibor swaption * @param data The data * @return The result */ RESULT_TYPE visitSwaptionPhysicalFixedIborDefinition(SwaptionPhysicalFixedIborDefinition swaption, DATA_TYPE data); /** * Physically-settled fixed / ibor swaption method. * @param swaption A physically-settled fixed / ibor swaption * @return The result */ RESULT_TYPE visitSwaptionPhysicalFixedIborDefinition(SwaptionPhysicalFixedIborDefinition swaption); /** * Physically-settled fixed / ibor swaption with spread method that takes data. * @param swaption A physically-settled fixed / ibor swaption * @param data The data * @return The result */ RESULT_TYPE visitSwaptionPhysicalFixedIborSpreadDefinition(SwaptionPhysicalFixedIborSpreadDefinition swaption, DATA_TYPE data); /** * Physically-settled fixed / ibor swaption with spread method. * @param swaption A physically-settled fixed / ibor swaption * @return The result */ RESULT_TYPE visitSwaptionPhysicalFixedIborSpreadDefinition(SwaptionPhysicalFixedIborSpreadDefinition swaption); /** * Bermudan fixed / ibor swaption method that takes data. * @param swaption A Bermudan fixed / ibor swaption * @param data The data * @return The result */ RESULT_TYPE visitSwaptionBermudaFixedIborDefinition(SwaptionBermudaFixedIborDefinition swaption, DATA_TYPE data); /** * Bermudan fixed / ibor swaption method. * @param swaption A Bermudan fixed / ibor swaption * @return The result */ RESULT_TYPE visitSwaptionBermudaFixedIborDefinition(SwaptionBermudaFixedIborDefinition swaption); /** * Cash-settled fixed accrued / overnight compounding swaption (i.e. BRL-like) method that takes data. * @param swaption A cash-settled fixed accrued / overnight compounding swaption * @param data The data * @return The result */ RESULT_TYPE visitSwaptionCashFixedONCompoundingDefinition(SwaptionCashFixedCompoundedONCompoundingDefinition swaption, DATA_TYPE data); /** * Cash-settled fixed accrued / overnight compounding swaption (i.e. BRL-like) method. * @param swaption A cash-settled fixed accrued / overnight compounding swaption * @return The result */ RESULT_TYPE visitSwaptionCashFixedONCompoundingDefinition(SwaptionCashFixedCompoundedONCompoundingDefinition swaption); // ----- Inflation ----- /** * First-of-month inflation zero coupon method that takes data. * @param coupon A first-of-month inflation zero coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponInflationZeroCouponFirstOfMonth(CouponInflationZeroCouponMonthlyDefinition coupon, DATA_TYPE data); /** * First-of-month inflation zero coupon method. * @param coupon A first-of-month inflation zero coupon * @return The result */ RESULT_TYPE visitCouponInflationZeroCouponFirstOfMonth(CouponInflationZeroCouponMonthlyDefinition coupon); /** * Interpolated inflation zero coupon method that takes data. * @param coupon An interpolated inflation zero coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponInflationZeroCouponInterpolation(CouponInflationZeroCouponInterpolationDefinition coupon, DATA_TYPE data); /** * Interpolated inflation zero coupon method. * @param coupon An interpolated inflation zero coupon * @return The result */ RESULT_TYPE visitCouponInflationZeroCouponInterpolation(CouponInflationZeroCouponInterpolationDefinition coupon); /** * Monthly inflation zero coupon with gearing method that takes data. * @param coupon A monthly inflation zero coupon with gearing * @param data The data * @return The result */ RESULT_TYPE visitCouponInflationZeroCouponMonthlyGearing(CouponInflationZeroCouponMonthlyGearingDefinition coupon, DATA_TYPE data); /** * Monthly inflation zero coupon with gearing method. * @param coupon A monthly inflation zero coupon with gearing * @return The result */ RESULT_TYPE visitCouponInflationZeroCouponMonthlyGearing(CouponInflationZeroCouponMonthlyGearingDefinition coupon); /** * Interpolated inflation zero coupon with gearing method that takes data. * @param coupon An interpolated inflation zero coupon with gearing * @param data The data * @return The result */ RESULT_TYPE visitCouponInflationZeroCouponInterpolationGearing(CouponInflationZeroCouponInterpolationGearingDefinition coupon, DATA_TYPE data); /** * Interpolated inflation zero coupon with gearing method. * @param coupon An interpolated inflation zero coupon with gearing * @return The result */ RESULT_TYPE visitCouponInflationZeroCouponInterpolationGearing(CouponInflationZeroCouponInterpolationGearingDefinition coupon); /** * Monthly year-on-year inflation zero coupon with margin method that takes data. * @param coupon A monthly year-on-year inflation zero coupon with margin * @param data The data * @return The result */ RESULT_TYPE visitCouponInflationYearOnYearMonthlyWithMargin(CouponInflationYearOnYearMonthlyWithMarginDefinition coupon, DATA_TYPE data); /** * Monthly year-on-year inflation zero coupon with margin method. * @param coupon A monthly year-on-year inflation zero coupon with margin * @return The result */ RESULT_TYPE visitCouponInflationYearOnYearMonthlyWithMargin(CouponInflationYearOnYearMonthlyWithMarginDefinition coupon); /** * Interpolated year-on-year inflation zero coupon with margin method that takes data. * @param coupon An interpolated year-on-year inflation zero coupon with margin * @param data The data * @return The result */ RESULT_TYPE visitCouponInflationYearOnYearInterpolationWithMargin(CouponInflationYearOnYearInterpolationWithMarginDefinition coupon, DATA_TYPE data); /** * Interpolated year-on-year inflation zero coupon with margin method. * @param coupon An interpolated year-on-year inflation zero coupon with margin * @return The result */ RESULT_TYPE visitCouponInflationYearOnYearInterpolationWithMargin(CouponInflationYearOnYearInterpolationWithMarginDefinition coupon); /** * First-of-month year-on-year inflation zero coupon method that takes data. * @param coupon A first-of-month year-on-year inflation zero coupon with margin * @param data The data * @return The result */ RESULT_TYPE visitCouponInflationYearOnYearFirstOfMonth(CouponInflationYearOnYearMonthlyDefinition coupon, DATA_TYPE data); /** * First-of-month year-on-year inflation zero coupon method. * @param coupon A first-of-month year-on-year inflation zero coupon with margin * @return The result */ RESULT_TYPE visitCouponInflationYearOnYearFirstOfMonth(CouponInflationYearOnYearMonthlyDefinition coupon); /** * Interpolated year-on-year inflation zero coupon method that takes data. * @param coupon An interpolated year-on-year inflation zero coupon with margin * @param data The data * @return The result */ RESULT_TYPE visitCouponInflationYearOnYearInterpolationDefinition(CouponInflationYearOnYearInterpolationDefinition coupon, DATA_TYPE data); /** * Interpolated year-on-year inflation zero coupon method. * @param coupon An interpolated year-on-year inflation zero coupon with margin * @return The result */ RESULT_TYPE visitCouponInflationYearOnYearInterpolationDefinition(CouponInflationYearOnYearInterpolationDefinition coupon); /** * Inflation cap / floor zero coupon method that takes data. * @param coupon An inflation cap / floor zero coupon * @param data The data * @return The result */ RESULT_TYPE visitCapFloorInflationZeroCouponInterpolationDefinition(CapFloorInflationZeroCouponInterpolationDefinition coupon, DATA_TYPE data); /** * Inflation cap / floor zero coupon method. * @param coupon An inflation cap / floor zero coupon * @return The result */ RESULT_TYPE visitCapFloorInflationZeroCouponInterpolationDefinition(CapFloorInflationZeroCouponInterpolationDefinition coupon); /** * Monthly cap / floor inflation zero coupon method that takes data. * @param coupon A monthly inflation cap / floor zero coupon * @param data The data * @return The result */ RESULT_TYPE visitCapFloorInflationZeroCouponMonthlyDefinition(CapFloorInflationZeroCouponMonthlyDefinition coupon, DATA_TYPE data); /** * Monthly cap / floor inflation zero coupon method. * @param coupon A monthly inflation cap / floor zero coupon * @return The result */ RESULT_TYPE visitCapFloorInflationZeroCouponMonthlyDefinition(CapFloorInflationZeroCouponMonthlyDefinition coupon); /** * Interpolated inflation cap / floor zero coupon method that takes data. * @param coupon An interpolated inflation cap / floor zero coupon * @param data The data * @return The result */ RESULT_TYPE visitCapFloorInflationYearOnYearInterpolationDefinition(CapFloorInflationYearOnYearInterpolationDefinition coupon, DATA_TYPE data); /** * Interpolated inflation cap / floor zero coupon method. * @param coupon An interpolated inflation cap / floor zero coupon * @return The result */ RESULT_TYPE visitCapFloorInflationYearOnYearInterpolationDefinition(CapFloorInflationYearOnYearInterpolationDefinition coupon); /** * Monthly inflation cap / floor zero coupon method that takes data. * @param coupon A monthly inflation cap / floor zero coupon * @param data The data * @return The result */ RESULT_TYPE visitCapFloorInflationYearOnYearMonthlyDefinition(CapFloorInflationYearOnYearMonthlyDefinition coupon, DATA_TYPE data); /** * Monthly inflation cap / floor zero coupon method. * @param coupon A monthly inflation cap / floor zero coupon * @return The result */ RESULT_TYPE visitCapFloorInflationYearOnYearMonthlyDefinition(CapFloorInflationYearOnYearMonthlyDefinition coupon); /** * Capital-indexed bond security method that takes data. * @param bond A capital-indexed bond security * @param data The data * @return The result */ RESULT_TYPE visitBondCapitalIndexedSecurity(BondCapitalIndexedSecurityDefinition<?> bond, DATA_TYPE data); /** * Capital-indexed bond security method. * @param bond A capital-indexed bond security * @return The result */ RESULT_TYPE visitBondCapitalIndexedSecurity(BondCapitalIndexedSecurityDefinition<?> bond); /** * Interest-indexed bond security method that takes data. * @param bond An interest-indexed bond security * @param data The data * @return The result */ RESULT_TYPE visitBondInterestIndexedSecurity(BondInterestIndexedSecurityDefinition<?, ?> bond, DATA_TYPE data); /** * Interest-indexed bond security method. * @param bond An interest-indexed bond security * @return The result */ RESULT_TYPE visitBondInterestIndexedSecurity(BondInterestIndexedSecurityDefinition<?, ?> bond); /** * Capital-indexed bond transaction method that takes data. * @param bond A capital-indexed bond transaction * @param data The data * @return The result */ RESULT_TYPE visitBondCapitalIndexedTransaction(BondCapitalIndexedTransactionDefinition<?> bond, DATA_TYPE data); /** * Capital-indexed bond transaction method. * @param bond A capital-indexed bond transaction * @return The result */ RESULT_TYPE visitBondCapitalIndexedTransaction(BondCapitalIndexedTransactionDefinition<?> bond); /** * Interest-indexed bond transaction method that takes data. * @param bond An interest-indexed bond transaction * @param data The data * @return The result */ RESULT_TYPE visitBondInterestIndexedTransaction(BondInterestIndexedTransactionDefinition<?, ?> bond, DATA_TYPE data); /** * Interest-indexed bond transaction method. * @param bond An interest-indexed bond transaction * @return The result */ RESULT_TYPE visitBondInterestIndexedTransaction(BondInterestIndexedTransactionDefinition<?, ?> bond); // ----- Forex ----- /** * Forex method that takes data. * @param fx A forex * @param data The data * @return The result */ RESULT_TYPE visitForexDefinition(ForexDefinition fx, DATA_TYPE data); /** * Forex method. * @param fx A forex * @return The result */ RESULT_TYPE visitForexDefinition(ForexDefinition fx); /** * Forex swap method that takes data. * @param fx A forex swap * @param data The data * @return The result */ RESULT_TYPE visitForexSwapDefinition(ForexSwapDefinition fx, DATA_TYPE data); /** * Forex swap method. * @param fx A forex swap * @return The result */ RESULT_TYPE visitForexSwapDefinition(ForexSwapDefinition fx); /** * Vanilla FX option method that takes data. * @param fx A vanilla FX option * @param data The data * @return The result */ RESULT_TYPE visitForexOptionVanillaDefinition(ForexOptionVanillaDefinition fx, DATA_TYPE data); /** * Vanilla FX option method. * @param fx A vanilla FX option * @return The result */ RESULT_TYPE visitForexOptionVanillaDefinition(ForexOptionVanillaDefinition fx); /** * Single-barrier option method that takes data. * @param fx A single-barrier FX option * @param data The data * @return The result */ RESULT_TYPE visitForexOptionSingleBarrierDefiniton(ForexOptionSingleBarrierDefinition fx, DATA_TYPE data); /** * Single-barrier option method. * @param fx A single-barrier FX option * @return The result */ RESULT_TYPE visitForexOptionSingleBarrierDefiniton(ForexOptionSingleBarrierDefinition fx); /** * Non-deliverable FX forward method that takes data. * @param ndf A non-deliverable FX forward * @param data The data * @return The result */ RESULT_TYPE visitForexNonDeliverableForwardDefinition(ForexNonDeliverableForwardDefinition ndf, DATA_TYPE data); /** * Non-deliverable FX forward method. * @param ndf A non-deliverable FX forward * @return The result */ RESULT_TYPE visitForexNonDeliverableForwardDefinition(ForexNonDeliverableForwardDefinition ndf); /** * Non-deliverable FX forward option method that takes data. * @param ndo A non-deliverable FX forward option * @param data The data * @return The result */ RESULT_TYPE visitForexNonDeliverableOptionDefinition(ForexNonDeliverableOptionDefinition ndo, DATA_TYPE data); /** * Non-deliverable FX forward option method. * @param ndo A non-deliverable FX forward option * @return The result */ RESULT_TYPE visitForexNonDeliverableOptionDefinition(ForexNonDeliverableOptionDefinition ndo); /** * FX digital option method that takes data. * @param fx A FX digital option * @param data The data * @return The result */ RESULT_TYPE visitForexOptionDigitalDefinition(ForexOptionDigitalDefinition fx, DATA_TYPE data); /** * FX digital option method. * @param fx A FX digital option * @return The result */ RESULT_TYPE visitForexOptionDigitalDefinition(ForexOptionDigitalDefinition fx); // ----- Commodity ----- /** * Metal forward method that takes data. * @param forward A metal forward * @param data The data * @return The result */ RESULT_TYPE visitMetalForwardDefinition(MetalForwardDefinition forward, DATA_TYPE data); /** * Metal forward method. * @param forward A metal forward * @return The result */ RESULT_TYPE visitMetalForwardDefinition(MetalForwardDefinition forward); /** * Metal future method that takes data. * @param future A metal future * @param data The data * @return The result */ RESULT_TYPE visitMetalFutureDefinition(MetalFutureDefinition future, DATA_TYPE data); /** * Metal future method. * @param future A metal future * @return The result */ RESULT_TYPE visitMetalFutureDefinition(MetalFutureDefinition future); /** * Metal future option method that takes data. * @param option A metal future option * @param data The data * @return The result */ RESULT_TYPE visitMetalFutureOptionDefinition(MetalFutureOptionDefinition option, DATA_TYPE data); /** * Metal future option method. * @param option A metal future option * @return The result */ RESULT_TYPE visitMetalFutureOptionDefinition(MetalFutureOptionDefinition option); /** * Agriculture forward method that takes data. * @param forward An agriculture forward * @param data The data * @return The result */ RESULT_TYPE visitAgricultureForwardDefinition(AgricultureForwardDefinition forward, DATA_TYPE data); /** * Agriculture forward method. * @param forward An agriculture forward * @return The result */ RESULT_TYPE visitAgricultureForwardDefinition(AgricultureForwardDefinition forward); /** * Agriculture future method that takes data. * @param future An agriculture future * @param data The data * @return The result */ RESULT_TYPE visitAgricultureFutureDefinition(AgricultureFutureDefinition future, DATA_TYPE data); /** * Agriculture future method. * @param future An agriculture future * @return The result */ RESULT_TYPE visitAgricultureFutureDefinition(AgricultureFutureDefinition future); /** * Agriculture future option method that takes data. * @param option An agriculture future option * @param data The data * @return The result */ RESULT_TYPE visitAgricultureFutureOptionDefinition(AgricultureFutureOptionDefinition option, DATA_TYPE data); /** * Agriculture future option method. * @param option An agriculture future option * @return The result */ RESULT_TYPE visitAgricultureFutureOptionDefinition(AgricultureFutureOptionDefinition option); /** * Equity forward method that takes data. * @param forward An equity forward * @param data The data * @return The result */ RESULT_TYPE visitEnergyForwardDefinition(EnergyForwardDefinition forward, DATA_TYPE data); /** * Equity forward method. * @param forward An equity forward * @return The result */ RESULT_TYPE visitEnergyForwardDefinition(EnergyForwardDefinition forward); /** * Energy future method that takes data. * @param future An energy future * @param data The data * @return The result */ RESULT_TYPE visitEnergyFutureDefinition(EnergyFutureDefinition future, DATA_TYPE data); /** * Energy future method. * @param future An energy future * @return The result */ RESULT_TYPE visitEnergyFutureDefinition(EnergyFutureDefinition future); /** * Energy future option method that takes data. * @param option An energy future option * @param data The data * @return The result */ RESULT_TYPE visitEnergyFutureOptionDefinition(EnergyFutureOptionDefinition option, DATA_TYPE data); /** * Energy future option method. * @param option An energy future option * @return The result */ RESULT_TYPE visitEnergyFutureOptionDefinition(EnergyFutureOptionDefinition option); /** * Metal future Security method that takes data. * @param future A metal future Security * @param data The data * @return The result */ RESULT_TYPE visitMetalFutureSecurityDefinition(MetalFutureSecurityDefinition future, DATA_TYPE data); /** * Metal future Security method. * @param future A metal future Security * @return The result */ RESULT_TYPE visitMetalFutureSecurityDefinition(MetalFutureSecurityDefinition future); /** * Metal future Transaction method that takes data. * @param future A metal future Transaction * @param data The data * @return The result */ RESULT_TYPE visitMetalFutureTransactionDefinition(MetalFutureTransactionDefinition future, DATA_TYPE data); /** * Metal future Transaction method. * @param future A metal future Transaction * @return The result */ RESULT_TYPE visitMetalFuturTransactioneDefinition(MetalFutureTransactionDefinition future); /** * Agriculture future Security method that takes data. * @param future A metal future Security * @param data The data * @return The result */ RESULT_TYPE visitAgricultureFutureSecurityDefinition(AgricultureFutureSecurityDefinition future, DATA_TYPE data); /** * Agriculture future Security method. * @param future A Agriculture future Security * @return The result */ RESULT_TYPE visitAgricultureFutureSecurityDefinition(AgricultureFutureSecurityDefinition future); /** * Agriculture future Transaction method that takes data. * @param future A Agriculture future Transaction * @param data The data * @return The result */ RESULT_TYPE visitAgricultureFutureTransactionDefinition(AgricultureFutureTransactionDefinition future, DATA_TYPE data); /** * Agriculture future Transaction method. * @param future A Agriculture future Transaction * @return The result */ RESULT_TYPE visitAgricultureFutureTransactionDefinition(AgricultureFutureTransactionDefinition future); /** * Energy future Security method that takes data. * @param future A Energy future Security * @param data The data * @return The result */ RESULT_TYPE visitEnergyFutureSecurityDefinition(EnergyFutureSecurityDefinition future, DATA_TYPE data); /** * Energy future Security method. * @param future A Energy future Security * @return The result */ RESULT_TYPE visitEnergyFutureSecurityDefinition(EnergyFutureSecurityDefinition future); /** * Energy future Transaction method that takes data. * @param future A Energy future Transaction * @param data The data * @return The result */ RESULT_TYPE visitEnergyFutureTransactionDefinition(EnergyFutureTransactionDefinition future, DATA_TYPE data); /** * Energy future Transaction method. * @param future A Energy future Transaction * @return The result */ RESULT_TYPE visitEnergyFutureTransactionDefinition(EnergyFutureTransactionDefinition future); /** * Forward commodity cash settle method that takes data. * @param forward A forward * @param data The data * @return The result */ RESULT_TYPE visitForwardCommodityCashSettleDefinition(ForwardCommodityCashSettleDefinition forward, DATA_TYPE data); /** * Forward commodity cash settle method. * @param forward A forward * @return The result */ RESULT_TYPE visitForwardCommodityCashSettleDefinition(ForwardCommodityCashSettleDefinition forward); /** * Forward commodity Physical settle method that takes data. * @param forward A forward * @param data The data * @return The result */ RESULT_TYPE visitForwardCommodityPhysicalSettleDefinition(ForwardCommodityPhysicalSettleDefinition forward, DATA_TYPE data); /** * Forward commodity Physical settle method. * @param forward A forward * @return The result */ RESULT_TYPE visitForwardCommodityPhysicalSettleDefinition(ForwardCommodityPhysicalSettleDefinition forward); /** * Coupon commodity cash settle method that takes data. * @param coupon A coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponCommodityCashSettleDefinition(CouponCommodityCashSettleDefinition coupon, DATA_TYPE data); /** * Coupon commodity cash settle method. * @param coupon A coupon * @return The result */ RESULT_TYPE visitCouponCommodityCashSettleDefinition(CouponCommodityCashSettleDefinition coupon); /** * Coupon commodity Physical settle method that takes data. * @param coupon A coupon * @param data The data * @return The result */ RESULT_TYPE visitCouponCommodityPhysicalSettleDefinition(CouponCommodityPhysicalSettleDefinition coupon, DATA_TYPE data); /** * Coupon commodity Physical settle method. * @param coupon A coupon * @return The result */ RESULT_TYPE visitCouponCommodityPhysicalSettleDefinition(CouponCommodityPhysicalSettleDefinition coupon); // ----- Equity ----- /** * Equity future method that takes data. * @param future An equity future * @param data The data * @return The result */ RESULT_TYPE visitEquityFutureDefinition(EquityFutureDefinition future, DATA_TYPE data); /** * Equity future method. * @param future An equity future * @return The result */ RESULT_TYPE visitEquityFutureDefinition(EquityFutureDefinition future); /** * Index future method that takes data. * @param future An index future * @param data The data * @return The result */ RESULT_TYPE visitIndexFutureDefinition(IndexFutureDefinition future, DATA_TYPE data); /** * Index future method. * @param future An index future * @return The result */ RESULT_TYPE visitIndexFutureDefinition(IndexFutureDefinition future); /** * Equity index future method that takes data. * @param future An equity index future * @param data The data * @return The result */ RESULT_TYPE visitEquityIndexFutureDefinition(EquityIndexFutureDefinition future, DATA_TYPE data); /** * Equity index future method. * @param future An equity index future * @return The result */ RESULT_TYPE visitEquityIndexFutureDefinition(EquityIndexFutureDefinition future); /** * Equity index dividend future method that takes data. * @param future An equity index dividend future * @param data The data * @return The result */ RESULT_TYPE visitEquityIndexDividendFutureDefinition(EquityIndexDividendFutureDefinition future, DATA_TYPE data); /** * Equity index dividend future method. * @param future An equity index dividend future * @return The result */ RESULT_TYPE visitEquityIndexDividendFutureDefinition(EquityIndexDividendFutureDefinition future); /** * Volatility index future method that takes data. * @param future A volatility index future * @param data The data * @return The result */ RESULT_TYPE visitVolatilityIndexFutureDefinition(VolatilityIndexFutureDefinition future, DATA_TYPE data); /** * Volatility index future method. * @param future A volatility index future * @return The result */ RESULT_TYPE visitVolatilityIndexFutureDefinition(VolatilityIndexFutureDefinition future); /** * Equity index option method that takes data. * @param option An equity index option * @param data The data * @return The result */ RESULT_TYPE visitEquityIndexOptionDefinition(EquityIndexOptionDefinition option, DATA_TYPE data); /** * Equity index option method. * @param option An equity index option * @return The result */ RESULT_TYPE visitEquityIndexOptionDefinition(EquityIndexOptionDefinition option); /** * Equity option method that takes data. * @param option An equity option * @param data The data * @return The result */ RESULT_TYPE visitEquityOptionDefinition(EquityOptionDefinition option, DATA_TYPE data); /** * Equity option method. * @param option An equity option * @return The result */ RESULT_TYPE visitEquityOptionDefinition(EquityOptionDefinition option); /** * Equity index future option method that takes data. * @param option An equity index future option * @param data The data * @return The result */ RESULT_TYPE visitEquityIndexFutureOptionDefinition(EquityIndexFutureOptionDefinition option, DATA_TYPE data); /** * Equity index future option method. * @param option An equity index future option * @return The result */ RESULT_TYPE visitEquityIndexFutureOptionDefinition(EquityIndexFutureOptionDefinition option); // ----- Variance and volatility swap ----- /** * Variance swap method. * @param varianceSwap A variance swap * @return The result */ RESULT_TYPE visitVarianceSwapDefinition(VarianceSwapDefinition varianceSwap); /** * Variance swap method that takes data. * @param varianceSwap A variance swap * @param data The data * @return The result */ RESULT_TYPE visitVarianceSwapDefinition(VarianceSwapDefinition varianceSwap, DATA_TYPE data); /** * Variance swap method. * @param varianceSwap A variance swap * @return The result */ RESULT_TYPE visitEquityVarianceSwapDefinition(EquityVarianceSwapDefinition varianceSwap); /** * Variance swap method that takes data. * @param varianceSwap A variance swap * @param data The data * @return The result */ RESULT_TYPE visitEquityVarianceSwapDefinition(EquityVarianceSwapDefinition varianceSwap, DATA_TYPE data); /** * Volatility swap method. * @param volatilitySwap A volatility swap * @return The result */ RESULT_TYPE visitVolatilitySwapDefinition(VolatilitySwapDefinition volatilitySwap); /** * Volatility swap method that takes data. * @param volatilitySwap A volatility swap * @param data The data * @return The result */ RESULT_TYPE visitVolatilitySwapDefinition(VolatilitySwapDefinition volatilitySwap, DATA_TYPE data); /** * FX volatility swap method. * @param volatilitySwap A volatility swap * @return The result */ RESULT_TYPE visitFXVolatilitySwapDefinition(FXVolatilitySwapDefinition volatilitySwap); /** * FX volatility swap method that takes data. * @param volatilitySwap A volatility swap * @param data The data * @return The result */ RESULT_TYPE visitFXVolatilitySwapDefinition(FXVolatilitySwapDefinition volatilitySwap, DATA_TYPE data); /** * The total return swap method. * @param totalReturnSwap A total return swap * @return The result */ RESULT_TYPE visitTotalReturnSwapDefinition(TotalReturnSwapDefinition totalReturnSwap); /** * The total return swap method. * @param totalReturnSwap A total return swap * @param data The data * @return The result */ RESULT_TYPE visitTotalReturnSwapDefinition(TotalReturnSwapDefinition totalReturnSwap, DATA_TYPE data); /** * The bond total return swap method. * @param totalReturnSwap A bond total return swap * @return The result */ RESULT_TYPE visitBondTotalReturnSwapDefinition(BondTotalReturnSwapDefinition totalReturnSwap); /** * The bond total return swap method. * @param totalReturnSwap A bond total return swap * @param data The data * @return The result */ RESULT_TYPE visitBondTotalReturnSwapDefinition(BondTotalReturnSwapDefinition totalReturnSwap, DATA_TYPE data); /** * The bill total return swap method. * @param totalReturnSwap A bill total return swap * @return The result */ RESULT_TYPE visitBillTotalReturnSwapDefinition(BillTotalReturnSwapDefinition totalReturnSwap); /** * The bill total return swap method. * @param totalReturnSwap A bill total return swap * @param data The data * @return The result */ RESULT_TYPE visitBillTotalReturnSwapDefinition(BillTotalReturnSwapDefinition totalReturnSwap, DATA_TYPE data); /** * The equity total return swap method. * @param totalReturnSwap A equity total return swap * @return The result */ RESULT_TYPE visitEquityTotalReturnSwapDefinition(EquityTotalReturnSwapDefinition totalReturnSwap); /** * The equity total return swap method. * @param totalReturnSwap A equity total return swap * @param data The data * @return The result */ RESULT_TYPE visitEquityTotalReturnSwapDefinition(EquityTotalReturnSwapDefinition totalReturnSwap, DATA_TYPE data); /** * The equity method. * @param equity A equity * @return The result */ RESULT_TYPE visitEquityDefinition(EquityDefinition equity); /** * The equity method. * @param equity An equity * @param data The data * @return The result */ RESULT_TYPE visitEquityDefinition(EquityDefinition equity, DATA_TYPE data); }