Skip to content

Instantly share code, notes, and snippets.

@andr11111
Created May 30, 2018 20:00
Show Gist options
  • Save andr11111/e055a1c2a788ca8a40536d9402ae3871 to your computer and use it in GitHub Desktop.
Save andr11111/e055a1c2a788ca8a40536d9402ae3871 to your computer and use it in GitHub Desktop.
contract BlockSigmaBase is StandardToken {
/**
* @dev Constructor
* @param _underlyingTokenAddress address of the underlying ERC20 token.
* @param _currencyTokenAddress address of the currency ERC20 token.
* @param _strike option strike denominated in the currency token.
* @param _exp expiration timestamp.
* @param _minReserve minimum (excess) reserve
* @param _underlyingBancorConverter address of the Bancor converter contract that converts underlying token into BNT.
* @param _currencyBancorConverter address of the Bancor converter contract that converts currency token into BNT.
* @param _issuer address that is allowed to issue(underwrite) new contracts.
*/
function BlockSigmaBase(address _underlyingTokenAddress, address _currencyTokenAddress,
uint256 _strike, uint256 _exp, uint256 _minReserve,
address _underlyingBancorConverter, address _currencyBancorConverter,
address _issuer) public;
/**
* @dev get the required maintenance margin level in currency token.
*/
function getRequiredReserve() public view returns (uint256);
/**
* @dev Get price of the underlying token expressed in currency token from Bancor
*/
function getUnderlyingPrice() public view returns (uint256);
/**
* @dev Ability for writer to issue(underwrite) new contracts
* @param amount how many contracts to issue (in wei).
*/
function issue(uint256 amount) public onlyIssuer returns (bool);
/**
* @dev Buyer can exercise the option anytime before the maturity. Buyer deposits currency(call) or underlying tokens(put).
*/
function exercise() public returns (bool);
/**
* @dev Writer delivers the underlying tokens(call) or currency(put).
* @param to which buyer to deliver to.
*/
function deliver(address to) public onlyIssuer returns (bool);
/**
* @dev Buyer can force liquidation if exercise is past due or reserve is below requirement
*/
function forceLiquidate() public returns (bool);
/**
* @dev Writer can deposit additional reserve
* @param amount how much currency token to deposit.
*/
function depositReserve(uint256 amount) public returns (bool);
/**
* @dev Writer can withdraw reserve
* @param amount how much currency token to withdraw.
*/
function withdrawReserve(uint256 amount) public onlyIssuer returns (bool);
/**
* @dev Is reserve below the requirement?
*/
function isReserveLow() public view returns (bool);
/**
* @dev Is option series expired?
*/
function isExpired() public view returns (bool);
/**
* @dev Can option be liquidated?
*/
function canLiquidate() public view returns (bool);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment