package Ġcom . block set . wallet kit . client Ċ Ċ import Ġwallet kit . core .* Ċ import Ġcom . block set . wallet kit .* Ċ import Ġcom . block set . wallet kit . System . Companion . system Ċ import Ġkotlinx . c interop .* Ċ Ċ internal Ġfun Ġsystem EventHandler ( ĊĠĠĠ Ġctx : ĠW K Listener Context ?, ĊĠĠĠ Ġcore System : ĠW K System ?, ĊĠĠĠ Ġevent Val : ĠC Value < WK System Event >, Ċ ) Ġ= Ġmem Scoped Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( ctx ) ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( core System ) ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġevent Val . ptr . point ed ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K System EventType . WK _ SYSTEM _ EVENT _ CREATED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsystem Ġ= Ġctx . system ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem . announce System Event ( System Event . Created ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K System EventType . WK _ SYSTEM _ EVENT _ DELETED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsystem Ġ= Ġctx . system ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem . announce System Event ( System Event . Deleted ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K System EventType . WK _ SYSTEM _ EVENT _ CHANGED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold State Ġ= Ġwhen Ġ( event . u . state . old ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW K System State . WK _ SYSTEM _ STATE _ CREATED Ġ-> ĠSystem State . Created ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW K System State . WK _ SYSTEM _ STATE _ DELETED Ġ-> ĠSystem State . Deleted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unknown ĠW K System State ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewState Ġ= Ġwhen Ġ( event . u . state . new ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW K System State . WK _ SYSTEM _ STATE _ CREATED Ġ-> ĠSystem State . Created ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW K System State . WK _ SYSTEM _ STATE _ DELETED Ġ-> ĠSystem State . Deleted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unknown ĠW K System State ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsystem Ġ= Ġctx . system ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem . announce System Event ( System Event . Changed ( old State , ĠnewState )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K System EventType . WK _ SYSTEM _ EVENT _ MANAGER _ AD DED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsystem Ġ= Ġctx . system ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġsystem . get Wallet Manager ( checkNotNull ( event . u . manager )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( manager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġlog ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem . announce System Event ( System Event . Manager Added ( manager )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// WK System EventType . WK _ SYSTEM _ EVENT _ MANAGER _ DELETED Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// WK System EventType . WK _ SYSTEM _ EVENT _ MANAGER _ CHANGED Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K System EventType . WK _ SYSTEM _ EVENT _ NETWORK _ AD DED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsystem Ġ= Ġctx . system ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Ġ= Ġsystem . get Network ( checkNotNull ( event . u . network )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġlog ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem . announce System Event ( System Event . Network Added ( network )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// WK System EventType . WK _ SYSTEM _ EVENT _ NETWORK _ CHANGED Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// WK System EventType . WK _ SYSTEM _ EVENT _ NETWORK _ DELETED Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K System EventType . WK _ SYSTEM _ EVENT _ DIS COVER ED _ NETWORK S Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsystem Ġ= Ġctx . system ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem . announce System Event ( System Event . Dis covered Networks ( system . networks )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unknown ĠW K System EventType ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġw k System Give ( core System ) ĊĠĠĠ Ġ} Ċ } Ċ