/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.basics.index;
import com.opengamma.strata.basics.currency.Currency;
import com.opengamma.strata.basics.date.DayCount;
import com.opengamma.strata.basics.date.HolidayCalendarId;
import com.opengamma.strata.basics.date.Tenor;
/**
* A index of interest rates, such as an Overnight or Inter-Bank rate.
* <p>
* Many financial products require knowledge of interest rate indices, such as Libor.
* Implementations of this interface define these indices.
* See {@link IborIndex} and {@link OvernightIndex}.
* <p>
* All implementations of this interface must be immutable and thread-safe.
*/
public interface RateIndex
extends Index {
/**
* Gets the currency of the index.
*
* @return the currency of the index
*/
public abstract Currency getCurrency();
/**
* Gets whether the index is active.
* <p>
* Over time some indices become inactive and are no longer produced.
* If this occurs, this method will return false.
*
* @return true if the index is active, false if inactive
*/
public abstract boolean isActive();
/**
* Gets the day count convention of the index.
*
* @return the day count convention
*/
public abstract DayCount getDayCount();
/**
* Gets the calendar that determines which dates are fixing dates.
* <p>
* The rate will be fixed on each business day in this calendar.
*
* @return the calendar used to determine the fixing dates of the index
*/
public abstract HolidayCalendarId getFixingCalendar();
/**
* Gets the tenor of the index.
*
* @return the tenor
*/
public abstract Tenor getTenor();
/**
* Gets the floating rate name for this index.
* <p>
* For an Ibor index, the {@link FloatingRateName} does not include the tenor.
* It can be used to find the other tenors available for this index.
*
* @return the floating rate name
*/
public abstract FloatingRateName getFloatingRateName();
}