@startuml;
actor Creator;
actor Organizer;
actor User1;
actor User2;
participant "Universe" as U;
participant "Event (ERC721)" as E;
Organizer -> U: createEvent;
activate U;
U -> E : constructor;
U -> U: Fees;
deactivate U;
User1 -> E: BuyTicket;
activate E;
E -> E: TicketPrice;
E -> U: Commission;
E -> User1: Ticket;
deactivate E;
User1 -> E: ProposeTransfer;
activate E;
User2 -> E: BuyWithEther;
E -> E: Commission;
E -> User2: Ticket;
deactivate E;
Organizer -> E: Withdraw;
activate E;
E -> Organizer: Fees;
deactivate E;
Creator -> U: Withdraw;
activate U;
U -> Creator: Fees;
deactivate U;
User2 -> E: UseTicket;
activate E;
E -> User2: QrCode;
User2 -> Organizer: QrCode;
Organizer -> E: ConfirmUse;
deactivate E;
@enduml