diff options
Diffstat (limited to 'api/src')
9 files changed, 100 insertions, 3 deletions
diff --git a/api/src/main/java/market/guess/api/AccountContext.java b/api/src/main/java/market/guess/api/AccountContext.java new file mode 100644 index 0000000..8d880aa --- /dev/null +++ b/api/src/main/java/market/guess/api/AccountContext.java | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | package market.guess.api; | ||
| 2 | |||
| 3 | import java.util.List; | ||
| 4 | import market.guess.model.ledger.LedgerDTO; | ||
| 5 | |||
| 6 | public interface AccountContext { | ||
| 7 | Result<List<LedgerDTO>> getAllAccounts(); | ||
| 8 | |||
| 9 | Result<LedgerDTO> getAccount(String owner); | ||
| 10 | } | ||
diff --git a/api/src/main/java/market/guess/api/CatalogContext.java b/api/src/main/java/market/guess/api/CatalogContext.java index 413a81c..ca75409 100644 --- a/api/src/main/java/market/guess/api/CatalogContext.java +++ b/api/src/main/java/market/guess/api/CatalogContext.java | |||
| @@ -2,8 +2,11 @@ package market.guess.api; | |||
| 2 | 2 | ||
| 3 | import java.nio.file.Path; | 3 | import java.nio.file.Path; |
| 4 | import java.util.List; | 4 | import java.util.List; |
| 5 | import market.guess.model.event.CommissionTiming; | ||
| 6 | import market.guess.model.event.CreateEventRequest; | ||
| 5 | import market.guess.model.event.EventDetailDTO; | 7 | import market.guess.model.event.EventDetailDTO; |
| 6 | import market.guess.model.event.EventSummaryDTO; | 8 | import market.guess.model.event.EventSummaryDTO; |
| 9 | import market.guess.model.event.MechanismType; | ||
| 7 | 10 | ||
| 8 | public interface CatalogContext { | 11 | public interface CatalogContext { |
| 9 | Result<LoadResult> loadEvents(Path path); | 12 | Result<LoadResult> loadEvents(Path path); |
| @@ -15,4 +18,29 @@ public interface CatalogContext { | |||
| 15 | Result<Void> saveState(Path path); | 18 | Result<Void> saveState(Path path); |
| 16 | 19 | ||
| 17 | Result<LoadResult> restoreState(Path path); | 20 | Result<LoadResult> restoreState(Path path); |
| 21 | |||
| 22 | default Result<EventDetailDTO> createEvent(CreateEventRequest request) { | ||
| 23 | if (request == null) { | ||
| 24 | return Result.error("Request cannot be null"); | ||
| 25 | } | ||
| 26 | return createEvent( | ||
| 27 | request.name(), | ||
| 28 | request.description(), | ||
| 29 | request.mechanism(), | ||
| 30 | request.commissionPercent(), | ||
| 31 | request.commissionTiming(), | ||
| 32 | request.mmUserName()); | ||
| 33 | } | ||
| 34 | |||
| 35 | default Result<EventDetailDTO> createEvent( | ||
| 36 | String name, | ||
| 37 | String description, | ||
| 38 | MechanismType mechanism, | ||
| 39 | int commissionPercent, | ||
| 40 | CommissionTiming commissionTiming, | ||
| 41 | String mmUserName) { | ||
| 42 | return Result.error("Not implemented"); | ||
| 43 | } | ||
| 44 | |||
| 45 | Result<EventDetailDTO> openEvent(String eventKey); | ||
| 18 | } | 46 | } |
diff --git a/api/src/main/java/market/guess/api/GuessMarketContext.java b/api/src/main/java/market/guess/api/GuessMarketContext.java index 4edb437..0182ac3 100644 --- a/api/src/main/java/market/guess/api/GuessMarketContext.java +++ b/api/src/main/java/market/guess/api/GuessMarketContext.java | |||
| @@ -5,8 +5,18 @@ import market.guess.model.event.EventDetailDTO; | |||
| 5 | import market.guess.model.market.PurchaseReceiptDTO; | 5 | import market.guess.model.market.PurchaseReceiptDTO; |
| 6 | 6 | ||
| 7 | public interface GuessMarketContext { | 7 | public interface GuessMarketContext { |
| 8 | default Result<PurchaseReceiptDTO> placeOrder( | ||
| 9 | String userName, String eventKey, String optionKey, BigDecimal price, long quantity) { | ||
| 10 | return placeOrder(userName, eventKey, optionKey, "BUY", price, quantity); | ||
| 11 | } | ||
| 12 | |||
| 8 | Result<PurchaseReceiptDTO> placeOrder( | 13 | Result<PurchaseReceiptDTO> placeOrder( |
| 9 | String userName, String eventKey, String optionKey, BigDecimal price, long quantity); | 14 | String userName, |
| 15 | String eventKey, | ||
| 16 | String optionKey, | ||
| 17 | String side, | ||
| 18 | BigDecimal price, | ||
| 19 | long quantity); | ||
| 10 | 20 | ||
| 11 | Result<EventDetailDTO> settleEvent(String userName, String eventKey, String winningOptionKey); | 21 | Result<EventDetailDTO> settleEvent(String userName, String eventKey, String winningOptionKey); |
| 12 | } | 22 | } |
diff --git a/api/src/main/java/market/guess/model/event/CreateEventRequest.java b/api/src/main/java/market/guess/model/event/CreateEventRequest.java new file mode 100644 index 0000000..bac4cad --- /dev/null +++ b/api/src/main/java/market/guess/model/event/CreateEventRequest.java | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | package market.guess.model.event; | ||
| 2 | |||
| 3 | import java.math.BigDecimal; | ||
| 4 | import java.util.List; | ||
| 5 | |||
| 6 | public record CreateEventRequest( | ||
| 7 | String name, | ||
| 8 | String description, | ||
| 9 | MechanismType mechanism, | ||
| 10 | int commissionPercent, | ||
| 11 | CommissionTiming commissionTiming, | ||
| 12 | String mmUserName, | ||
| 13 | Integer liquidityB, | ||
| 14 | BigDecimal baseValueD, | ||
| 15 | List<String> options, | ||
| 16 | boolean allowMinting) {} | ||
diff --git a/api/src/main/java/market/guess/model/event/EventDetailDTO.java b/api/src/main/java/market/guess/model/event/EventDetailDTO.java index f5c4edf..1d2e415 100644 --- a/api/src/main/java/market/guess/model/event/EventDetailDTO.java +++ b/api/src/main/java/market/guess/model/event/EventDetailDTO.java | |||
| @@ -2,10 +2,13 @@ package market.guess.model.event; | |||
| 2 | 2 | ||
| 3 | import java.util.List; | 3 | import java.util.List; |
| 4 | import market.guess.model.market.MarketStateDTO; | 4 | import market.guess.model.market.MarketStateDTO; |
| 5 | import market.guess.model.market.OrderBookDTO; | ||
| 5 | import market.guess.model.market.TradeRowDTO; | 6 | import market.guess.model.market.TradeRowDTO; |
| 6 | 7 | ||
| 7 | public record EventDetailDTO( | 8 | public record EventDetailDTO( |
| 8 | EventSummaryDTO summary, | 9 | EventSummaryDTO summary, |
| 9 | MarketStateDTO state, | 10 | MarketStateDTO state, |
| 10 | List<TradeRowDTO> history, | 11 | List<TradeRowDTO> history, |
| 11 | String settledMarket) {} | 12 | String settledMarket, |
| 13 | List<OrderBookDTO> orderBooks, | ||
| 14 | List<ParticipantDTO> participants) {} | ||
diff --git a/api/src/main/java/market/guess/model/event/EventSummaryDTO.java b/api/src/main/java/market/guess/model/event/EventSummaryDTO.java index 42762c2..d62b7b3 100644 --- a/api/src/main/java/market/guess/model/event/EventSummaryDTO.java +++ b/api/src/main/java/market/guess/model/event/EventSummaryDTO.java | |||
| @@ -12,4 +12,5 @@ public record EventSummaryDTO( | |||
| 12 | MechanismType mechanism, | 12 | MechanismType mechanism, |
| 13 | EventStatus status, | 13 | EventStatus status, |
| 14 | List<String> optionNames, | 14 | List<String> optionNames, |
| 15 | String accountBalance) {} | 15 | String accountBalance, |
| 16 | String marketMaker) {} | ||
diff --git a/api/src/main/java/market/guess/model/event/ParticipantDTO.java b/api/src/main/java/market/guess/model/event/ParticipantDTO.java new file mode 100644 index 0000000..3b15c89 --- /dev/null +++ b/api/src/main/java/market/guess/model/event/ParticipantDTO.java | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | package market.guess.model.event; | ||
| 2 | |||
| 3 | public record ParticipantDTO( | ||
| 4 | String user, | ||
| 5 | String tag, | ||
| 6 | int yes, | ||
| 7 | int no, | ||
| 8 | String value, | ||
| 9 | String fees, | ||
| 10 | String pnl) {} | ||
diff --git a/api/src/main/java/market/guess/model/market/BookOrderDTO.java b/api/src/main/java/market/guess/model/market/BookOrderDTO.java new file mode 100644 index 0000000..9656f44 --- /dev/null +++ b/api/src/main/java/market/guess/model/market/BookOrderDTO.java | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | package market.guess.model.market; | ||
| 2 | |||
| 3 | public record BookOrderDTO( | ||
| 4 | String side, | ||
| 5 | String user, | ||
| 6 | long quantity, | ||
| 7 | String price, | ||
| 8 | boolean isBid) {} | ||
diff --git a/api/src/main/java/market/guess/model/market/OrderBookDTO.java b/api/src/main/java/market/guess/model/market/OrderBookDTO.java new file mode 100644 index 0000000..be0355e --- /dev/null +++ b/api/src/main/java/market/guess/model/market/OrderBookDTO.java | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | package market.guess.model.market; | ||
| 2 | |||
| 3 | import java.util.List; | ||
| 4 | |||
| 5 | public record OrderBookDTO( | ||
| 6 | String optionKey, | ||
| 7 | String optionName, | ||
| 8 | String bestBid, | ||
| 9 | String bestAsk, | ||
| 10 | String spread, | ||
| 11 | List<BookOrderDTO> orders) {} | ||