:information_source: breakdown of matching engine
This breakdown is only a logical seperation of the matching engine
```plantuml
@startuml
!pragma teoz true
box Kalypso #lightblue
box "Matching Engine" #lightgreen
control "Event Listeners" as EL
entity "Matching Algorithm" as MA
entity "Matching Engine Signer" as MES
end box
entity "Kalypso\nSmart Contracts" as KSC
end box
== Start Loading ==
KSC--> EL: Fetch the previous requests and generator's data (if exists)
== End Loading ==
KSC -->>o EL: Listen to REGISTER event
activate EL
note right of EL
REGISTER contains
generator's address
generator's supported marketId
end note
EL -> MA: Store the generator data and market ID
deactivate EL
KSC -->> EL: Listen to ASK event
note right of EL
ASK contains
askId
end note
activate EL
EL --> MA: Send the ASK ID
activate MA
deactivate EL
MA --> MES: Send generator assignement info
deactivate MA
MES -> KSC: Broadcast the transaction
KSC --> EL: Listen to generator state change (this may be optional)
activate EL
note right of EL
There are 3 other types of events for generator
REQUEST_FOR_EXIT
WIP
EXIT
end note
EL --> MA: Send the state information
deactivate EL
note right of MA
Sync the local state
end note
@enduml
```