/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.security;
import com.opengamma.financial.security.bond.BillSecurity;
import com.opengamma.financial.security.bond.CorporateBondSecurity;
import com.opengamma.financial.security.bond.FloatingRateNoteSecurity;
import com.opengamma.financial.security.bond.GovernmentBondSecurity;
import com.opengamma.financial.security.bond.InflationBondSecurity;
import com.opengamma.financial.security.bond.MunicipalBondSecurity;
import com.opengamma.financial.security.capfloor.CapFloorCMSSpreadSecurity;
import com.opengamma.financial.security.capfloor.CapFloorSecurity;
import com.opengamma.financial.security.cash.CashBalanceSecurity;
import com.opengamma.financial.security.cash.CashSecurity;
import com.opengamma.financial.security.cashflow.CashFlowSecurity;
import com.opengamma.financial.security.credit.IndexCDSDefinitionSecurity;
import com.opengamma.financial.security.credit.IndexCDSSecurity;
import com.opengamma.financial.security.credit.LegacyCDSSecurity;
import com.opengamma.financial.security.credit.StandardCDSSecurity;
import com.opengamma.financial.security.deposit.ContinuousZeroDepositSecurity;
import com.opengamma.financial.security.deposit.PeriodicZeroDepositSecurity;
import com.opengamma.financial.security.deposit.SimpleZeroDepositSecurity;
import com.opengamma.financial.security.equity.AmericanDepositaryReceiptSecurity;
import com.opengamma.financial.security.equity.EquitySecurity;
import com.opengamma.financial.security.equity.EquityVarianceSwapSecurity;
import com.opengamma.financial.security.equity.ExchangeTradedFundSecurity;
import com.opengamma.financial.security.fra.FRASecurity;
import com.opengamma.financial.security.fra.ForwardRateAgreementSecurity;
import com.opengamma.financial.security.future.AgricultureFutureSecurity;
import com.opengamma.financial.security.future.BondFutureSecurity;
import com.opengamma.financial.security.future.EnergyFutureSecurity;
import com.opengamma.financial.security.future.EquityFutureSecurity;
import com.opengamma.financial.security.future.EquityIndexDividendFutureSecurity;
import com.opengamma.financial.security.future.FXFutureSecurity;
import com.opengamma.financial.security.future.IndexFutureSecurity;
import com.opengamma.financial.security.future.InterestRateFutureSecurity;
import com.opengamma.financial.security.future.MetalFutureSecurity;
import com.opengamma.financial.security.future.StockFutureSecurity;
import com.opengamma.financial.security.fx.FXForwardSecurity;
import com.opengamma.financial.security.fx.FXVolatilitySwapSecurity;
import com.opengamma.financial.security.fx.NonDeliverableFXForwardSecurity;
import com.opengamma.financial.security.irs.InterestRateSwapSecurity;
import com.opengamma.financial.security.option.BondFutureOptionSecurity;
import com.opengamma.financial.security.option.CommodityFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityBarrierOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexDividendFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexOptionSecurity;
import com.opengamma.financial.security.option.EquityOptionSecurity;
import com.opengamma.financial.security.option.EquityWarrantSecurity;
import com.opengamma.financial.security.option.FXBarrierOptionSecurity;
import com.opengamma.financial.security.option.FXDigitalOptionSecurity;
import com.opengamma.financial.security.option.FXOptionSecurity;
import com.opengamma.financial.security.option.FxFutureOptionSecurity;
import com.opengamma.financial.security.option.IRFutureOptionSecurity;
import com.opengamma.financial.security.option.NonDeliverableFXDigitalOptionSecurity;
import com.opengamma.financial.security.option.NonDeliverableFXOptionSecurity;
import com.opengamma.financial.security.option.SwaptionSecurity;
import com.opengamma.financial.security.swap.BillTotalReturnSwapSecurity;
import com.opengamma.financial.security.swap.BondTotalReturnSwapSecurity;
import com.opengamma.financial.security.swap.EquityTotalReturnSwapSecurity;
import com.opengamma.financial.security.swap.ForwardSwapSecurity;
import com.opengamma.financial.security.swap.SwapSecurity;
import com.opengamma.financial.security.swap.YearOnYearInflationSwapSecurity;
import com.opengamma.financial.security.swap.ZeroCouponInflationSwapSecurity;
/**
* General visitor for top level asset classes.
*
* @param <T> Return type for visitor.
*/
public interface FinancialSecurityVisitor<T> extends FutureSecurityVisitor<T>, CommodityForwardSecurityVisitor<T>, CreditSecurityVisitor<T> {
// FUTURES ----------------------------------------------------------------------------
@Override
T visitAgricultureFutureSecurity(AgricultureFutureSecurity security);
@Override
T visitBondFutureSecurity(BondFutureSecurity security);
@Override
T visitEquityIndexDividendFutureSecurity(EquityIndexDividendFutureSecurity security);
@Override
T visitFXFutureSecurity(FXFutureSecurity security);
@Override
T visitStockFutureSecurity(StockFutureSecurity security);
@Override
T visitEquityFutureSecurity(EquityFutureSecurity security);
@Override
T visitEnergyFutureSecurity(EnergyFutureSecurity security);
@Override
T visitIndexFutureSecurity(IndexFutureSecurity security);
@Override
T visitInterestRateFutureSecurity(InterestRateFutureSecurity security);
@Override
T visitMetalFutureSecurity(MetalFutureSecurity security);
// ------------------------------------------------------------------------------------
T visitBillSecurity(BillSecurity security);
T visitCapFloorCMSSpreadSecurity(CapFloorCMSSpreadSecurity security);
T visitCapFloorSecurity(CapFloorSecurity security);
T visitCashBalanceSecurity(CashBalanceSecurity security);
T visitCashSecurity(CashSecurity security);
T visitCashFlowSecurity(CashFlowSecurity security);
T visitCommodityFutureOptionSecurity(CommodityFutureOptionSecurity security);
T visitFxFutureOptionSecurity(FxFutureOptionSecurity security);
T visitBondFutureOptionSecurity(BondFutureOptionSecurity security);
T visitContinuousZeroDepositSecurity(ContinuousZeroDepositSecurity security);
T visitCorporateBondSecurity(CorporateBondSecurity security);
T visitEquityBarrierOptionSecurity(EquityBarrierOptionSecurity security);
T visitEquityIndexDividendFutureOptionSecurity(EquityIndexDividendFutureOptionSecurity security);
T visitEquityIndexFutureOptionSecurity(EquityIndexFutureOptionSecurity security);
T visitEquityIndexOptionSecurity(EquityIndexOptionSecurity security);
T visitEquityOptionSecurity(EquityOptionSecurity security);
T visitEquitySecurity(EquitySecurity security);
T visitEquityVarianceSwapSecurity(EquityVarianceSwapSecurity security);
T visitFloatingRateNoteSecurity(FloatingRateNoteSecurity security);
T visitFRASecurity(FRASecurity security);
T visitForwardRateAgreementSecurity(ForwardRateAgreementSecurity security);
T visitFXBarrierOptionSecurity(FXBarrierOptionSecurity security);
T visitFXDigitalOptionSecurity(FXDigitalOptionSecurity security);
T visitFXForwardSecurity(FXForwardSecurity security);
T visitFXOptionSecurity(FXOptionSecurity security);
T visitForwardSwapSecurity(ForwardSwapSecurity security);
T visitGovernmentBondSecurity(GovernmentBondSecurity security);
T visitIRFutureOptionSecurity(IRFutureOptionSecurity security);
T visitMunicipalBondSecurity(MunicipalBondSecurity security);
T visitInflationBondSecurity(InflationBondSecurity security);
T visitNonDeliverableFXDigitalOptionSecurity(NonDeliverableFXDigitalOptionSecurity security);
T visitNonDeliverableFXForwardSecurity(NonDeliverableFXForwardSecurity security);
T visitNonDeliverableFXOptionSecurity(NonDeliverableFXOptionSecurity security);
T visitPeriodicZeroDepositSecurity(PeriodicZeroDepositSecurity security);
T visitSimpleZeroDepositSecurity(SimpleZeroDepositSecurity security);
T visitSwapSecurity(SwapSecurity security);
T visitSwaptionSecurity(SwaptionSecurity security);
T visitZeroCouponInflationSwapSecurity(ZeroCouponInflationSwapSecurity security);
T visitYearOnYearInflationSwapSecurity(YearOnYearInflationSwapSecurity security);
T visitInterestRateSwapSecurity(InterestRateSwapSecurity security);
T visitFXVolatilitySwapSecurity(FXVolatilitySwapSecurity security);
T visitExchangeTradedFundSecurity(ExchangeTradedFundSecurity security);
T visitAmericanDepositaryReceiptSecurity(AmericanDepositaryReceiptSecurity security);
T visitEquityWarrantSecurity(EquityWarrantSecurity security);
T visitEquityTotalReturnSwapSecurity(EquityTotalReturnSwapSecurity security);
T visitBondTotalReturnSwapSecurity(BondTotalReturnSwapSecurity security);
T visitBillTotalReturnSwapSecurity(BillTotalReturnSwapSecurity security);
// Credit
T visitStandardCDSSecurity(StandardCDSSecurity security);
T visitLegacyCDSSecurity(LegacyCDSSecurity security);
T visitIndexCDSSecurity(IndexCDSSecurity security);
T visitIndexCDSDefinitionSecurity(IndexCDSDefinitionSecurity security);
}