aboutsummaryrefslogtreecommitdiffstats
path: root/test/compilationTests/gnosis/Events/CategoricalEvent.sol
diff options
context:
space:
mode:
Diffstat (limited to 'test/compilationTests/gnosis/Events/CategoricalEvent.sol')
-rw-r--r--test/compilationTests/gnosis/Events/CategoricalEvent.sol53
1 files changed, 53 insertions, 0 deletions
diff --git a/test/compilationTests/gnosis/Events/CategoricalEvent.sol b/test/compilationTests/gnosis/Events/CategoricalEvent.sol
new file mode 100644
index 00000000..fbd1d744
--- /dev/null
+++ b/test/compilationTests/gnosis/Events/CategoricalEvent.sol
@@ -0,0 +1,53 @@
+pragma solidity ^0.4.11;
+import "../Events/Event.sol";
+
+
+/// @title Categorical event contract - Categorical events resolve to an outcome from a set of outcomes
+/// @author Stefan George - <stefan@gnosis.pm>
+contract CategoricalEvent is Event {
+
+ /*
+ * Public functions
+ */
+ /// @dev Contract constructor validates and sets basic event properties
+ /// @param _collateralToken Tokens used as collateral in exchange for outcome tokens
+ /// @param _oracle Oracle contract used to resolve the event
+ /// @param outcomeCount Number of event outcomes
+ function CategoricalEvent(
+ Token _collateralToken,
+ Oracle _oracle,
+ uint8 outcomeCount
+ )
+ public
+ Event(_collateralToken, _oracle, outcomeCount)
+ {
+
+ }
+
+ /// @dev Exchanges sender's winning outcome tokens for collateral tokens
+ /// @return Sender's winnings
+ function redeemWinnings()
+ public
+ returns (uint winnings)
+ {
+ // Winning outcome has to be set
+ require(isOutcomeSet);
+ // Calculate winnings
+ winnings = outcomeTokens[uint(outcome)].balanceOf(msg.sender);
+ // Revoke tokens from winning outcome
+ outcomeTokens[uint(outcome)].revoke(msg.sender, winnings);
+ // Payout winnings
+ require(collateralToken.transfer(msg.sender, winnings));
+ WinningsRedemption(msg.sender, winnings);
+ }
+
+ /// @dev Calculates and returns event hash
+ /// @return Event hash
+ function getEventHash()
+ public
+ constant
+ returns (bytes32)
+ {
+ return keccak256(collateralToken, oracle, outcomeTokens.length);
+ }
+}