/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.provider.description.interestrate;
import java.util.List;
import java.util.Set;
import com.opengamma.analytics.financial.legalentity.LegalEntity;
import com.opengamma.analytics.financial.legalentity.LegalEntityFilter;
import com.opengamma.util.tuple.Pair;
/**
* Interface for issuer-specific curves.
*/
public interface IssuerProviderInterface extends ParameterIssuerProviderInterface {
// TODO: Can probably be merged with MulticurveProvider if the Currency is replaced by a UniqueIdentifiable.
@Override
IssuerProviderInterface copy();
/**
* Gets the discount factor for one issuer in one currency.
* @param issuer The issuer.
* @param time The time.
* @return The discount factor.
*/
double getDiscountFactor(LegalEntity issuer, Double time);
/**
* Return the name associated to the discounting for an issuer.
* @param issuer The issuer.
* @return The name.
*/
String getName(Pair<Object, LegalEntityFilter<LegalEntity>> issuer);
/**
* Return the name associated to the discounting for an issuer.
* @param issuer The issuer.
* @return The name.
*/
String getName(LegalEntity issuer);
/**
* Gets the names of all curves (discounting, forward, and issuers).
* @return The names.
*/
Set<String> getAllNames();
/**
* Returns the MulticurveProvider from which the IssuerProvider is composed.
* @return The multi-curves provider.
*/
@Override
MulticurveProviderInterface getMulticurveProvider();
/**
* Gets the number of parameters for the named curve
* @param name The name
* @return The number of parameters
*/
Integer getNumberOfParameters(String name);
/**
* Gets the underlying curve names for a curve.
* @param name The name
* @return The underlying curve names
*/
List<String> getUnderlyingCurvesNames(String name);
/**
* Gets all issuers represented in this bundle.
* @return The issuers
*/
Set<Pair<Object, LegalEntityFilter<LegalEntity>>> getIssuers();
}