- orderId: OrderId (UUID)
- clientId: ClientId
- instrument: InstrumentCode (NSE/BSE)
- segment: EQUITY | FNO | COMMODITY
- side: BUY | SELL
- orderType: MARKET | LIMIT | SL | SL_MARKET
- quantity: Int
- price: Money?
- triggerPrice: Money?
- validity: DAY | IOC | GTC
- status: OrderStatus
- brokerRefId: String?
- executedQty: Int
- avgPrice: Money?
+ place(): DomainEvent[TradeOrderPlaced]
+ fill(qty, price): DomainEvent[OrderFilled]
+ partialFill(qty, price): DomainEvent[OrderPartiallyFilled]
+ reject(reason): DomainEvent[OrderRejected]
+ cancel(): DomainEvent[OrderCancelled]
+ modify(newPrice, newQty): void
- watchlistId: WatchlistId
- clientId: ClientId
- name: String (max 5 per client)
- instruments: Set<InstrumentCode> (max 50)
- sortOrder: List<InstrumentCode>
+ addInstrument(code): void
+ removeInstrument(code): void
+ reorder(sorted): void