/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame.function.scenarios;
/**
* Interface for functions that implement scenarios by decorating other functions and transforming their output.
* <p>
* A scenario decorator must implement this interface plus one additional interface. The other interface is
* the function that it will decorate. Additionally the decorator implementation must have a constructor that
* takes an instance of the other interface as an argument. This is the decorated function.
*
* @param <F> this type
* @param <A> the type of argument this function requires. Typically the argument instance describes the
* transformation that should be applied to the data and the function contains the logic to perform
* the transformation.
*
* @deprecated use the new scenario framework
*/
@Deprecated
public interface ScenarioFunction<A extends ScenarioArgument<A, F>, F extends ScenarioFunction<A, F>> {
/**
* Returns the type of the scenario arguments this decorator uses.
* <p>
* The argument should return this type from {@link ScenarioArgument#getFunctionType()}
* <p>
* Arguments should be provided in the environment and are requested by the decorator when it is invoked.
* Decorator implementations should be written to handle the case when there are no suitable arguments
* provided in the environment.
*
* @return the type of the scenario arguments this decorator requires
*/
Class<A> getArgumentType();
}