pragma solidity ^0.4.15; import "../ScalarEvent.sol"; import "./MarketMaker.sol"; /// @title Abstract market contract - Functions to be implemented by market contracts contract Market { /* * Events */ event MarketFunding(uint funding); event MarketClosing(); event FeeWithdrawal(uint fees); event OutcomeTokenPurchase(address indexed buyer, uint8 outcomeTokenIndex, uint outcomeTokenCount, uint outcomeTokenCost, uint marketFees); event OutcomeTokenSale(address indexed seller, uint8 outcomeTokenIndex, uint outcomeTokenCount, uint outcomeTokenProfit, uint marketFees); event OutcomeTokenShortSale(address indexed buyer, uint8 outcomeTokenIndex, uint outcomeTokenCount, uint cost); /* * Storage */ address public creator; uint public createdAtBlock; ScalarEvent public eventContract; MarketMaker public marketMaker; uint24 public fee; uint public funding; int[] public netOutcomeTokensSold; Stages public stage; enum Stages { MarketCreated, MarketFunded, MarketClosed } }