Add new contract interface for writing pricing strategies
pragma solidity ^0.4.11;

/* Interface for defining crowdsale pricing */

contract PricingStrategy {

  /* Interface declaration. */
  function isPricingStrategy() public constant returns (bool) {
    return true;
  }

  /* Self check if all references are correctly set */
  function isSane(address crowdsale) public constant returns (bool) {
    return true;
  }

  /**
   * When somebody tries to buy tokens for X eth, calculate how many tokens they get.
   *
   *
   * @param value - What is the value of the transaction send in as wei
   * @param tokensSold - how much tokens have been sold this far
   * @param weiRaised - how much money has been raised this far
   * @param msgSender - who is the investor of this transaction
   * @param decimals - how many decimal units the token has
   * @return Amount of tokens the investor receives
   */
  function calculatePrice(uint value, uint weiRaised, uint tokensSold, address msgSender, uint decimals) public constant returns (uint tokenAmount);
}