summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
Diffstat (limited to 'api')
-rw-r--r--api/src/main/java/market/guess/api/AccountContext.java10
-rw-r--r--api/src/main/java/market/guess/api/CatalogContext.java28
-rw-r--r--api/src/main/java/market/guess/api/GuessMarketContext.java12
-rw-r--r--api/src/main/java/market/guess/model/event/CreateEventRequest.java16
-rw-r--r--api/src/main/java/market/guess/model/event/EventDetailDTO.java5
-rw-r--r--api/src/main/java/market/guess/model/event/EventSummaryDTO.java3
-rw-r--r--api/src/main/java/market/guess/model/event/ParticipantDTO.java10
-rw-r--r--api/src/main/java/market/guess/model/market/BookOrderDTO.java8
-rw-r--r--api/src/main/java/market/guess/model/market/OrderBookDTO.java11
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 @@
1package market.guess.api;
2
3import java.util.List;
4import market.guess.model.ledger.LedgerDTO;
5
6public 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
3import java.nio.file.Path; 3import java.nio.file.Path;
4import java.util.List; 4import java.util.List;
5import market.guess.model.event.CommissionTiming;
6import market.guess.model.event.CreateEventRequest;
5import market.guess.model.event.EventDetailDTO; 7import market.guess.model.event.EventDetailDTO;
6import market.guess.model.event.EventSummaryDTO; 8import market.guess.model.event.EventSummaryDTO;
9import market.guess.model.event.MechanismType;
7 10
8public interface CatalogContext { 11public 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;
5import market.guess.model.market.PurchaseReceiptDTO; 5import market.guess.model.market.PurchaseReceiptDTO;
6 6
7public interface GuessMarketContext { 7public 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 @@
1package market.guess.model.event;
2
3import java.math.BigDecimal;
4import java.util.List;
5
6public 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
3import java.util.List; 3import java.util.List;
4import market.guess.model.market.MarketStateDTO; 4import market.guess.model.market.MarketStateDTO;
5import market.guess.model.market.OrderBookDTO;
5import market.guess.model.market.TradeRowDTO; 6import market.guess.model.market.TradeRowDTO;
6 7
7public record EventDetailDTO( 8public 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 @@
1package market.guess.model.event;
2
3public 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 @@
1package market.guess.model.market;
2
3public 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 @@
1package market.guess.model.market;
2
3import java.util.List;
4
5public record OrderBookDTO(
6 String optionKey,
7 String optionName,
8 String bestBid,
9 String bestAsk,
10 String spread,
11 List<BookOrderDTO> orders) {}