package Ġcom . block set . wallet kit Ċ Ċ import Ġwallet kit . core .* Ċ import Ġwallet kit . core . WK Wallet EventType .* Ċ import Ġcom . block set . wallet kit . System . Companion . system Ċ import Ġkotlinx . c interop .* Ċ Ċ internal Ġfun Ġwallet EventHandler ( ĊĠĠĠ Ġctx : ĠW K Listener Context ?, ĊĠĠĠ Ġc wm : ĠW K Wallet Manager ?, ĊĠĠĠ Ġcw : ĠW K Wallet ?, ĊĠĠĠ Ġevent : ĠW K Wallet Event ? Ċ ) Ġ= Ġmem Scoped Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( ctx ) Ġ{ Ġ" missing Ġcontext " Ġ} ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( c wm ) Ġ{ Ġ" missing Ġwallet Ġmanager " Ġ} ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( cw ) Ġ{ Ġ" missing Ġwallet " Ġ} ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( event ) Ġ{ Ġ" missing Ġwallet Ġevent " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsystem Ġ= Ġctx . system ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠcheckNotNull ( system . get Wallet Manager ( c wm )) Ġ{ Ġ" get Ġwallet Ġmanager Ġfailed " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġwallet Ġ= ĠcheckNotNull ( manager . get Wallet ( cw )) Ġ{ Ġ" get Ġwallet Ġfailed " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠeventType Ġ= Ġw k Wallet Event GetType ( event ) ĊĠĠĠĠĠĠĠ Ġval Ġevent String Ġ= Ġw k Wallet EventType String ( eventType )?. to K String From Utf 8 () ĊĊĠĠĠĠĠĠĠ Ġval Ġwallet Event Ġ= Ġwhen Ġ( eventType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K _ WAL LET _ EVENT _ CREATED Ġ-> ĠWallet Event . Created ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K _ WAL LET _ EVENT _ DELETED Ġ-> ĠWallet Event . Deleted ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K _ WAL LET _ EVENT _ BAL ANCE _ UPDATED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġalloc < WK Amount Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( wk Wallet Event Extract Balance Update ( event , Ġamount . ptr ). to Boolean ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet Event . Balance Updated ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbalance Ġ= ĠAmount ( checkNotNull ( amount . value ), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K _ WAL LET _ EVENT _ CHANGED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġalloc < WK Wallet State . Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Ġ= Ġalloc < WK Wallet State . Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( wk Wallet Event Extract State ( event , Ġold . ptr , Ġnew . ptr ). to Boolean ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet Event . Change ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold State Ġ= Ġold . value . as Api State (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewState Ġ= Ġnew . value . as Api State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K _ WAL LET _ EVENT _ TRANSFER _ AD DED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcore Transfer Ġ= Ġalloc < WK Transfer Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( wk Wallet Event Extract Transfer ( event , Ġcore Transfer . ptr ). to Boolean ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet Event . Transfer Added ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransfer Ġ= ĠcheckNotNull ( wallet . get Transfer ( checkNotNull ( core Transfer . value ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K _ WAL LET _ EVENT _ TRANSFER _ CHANGED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcore Transfer Ġ= Ġalloc < WK Transfer Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( wk Wallet Event Extract Transfer ( event , Ġcore Transfer . ptr ). to Boolean ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet Event . Transfer Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransfer Ġ= ĠcheckNotNull ( wallet . get Transfer ( checkNotNull ( core Transfer . value ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K _ WAL LET _ EVENT _ TRANSFER _ SUBMIT TED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcore Transfer Ġ= Ġalloc < WK Transfer Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( wk Wallet Event Extract Transfer Submit ( event , Ġcore Transfer . ptr ). to Boolean ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet Event . Transfer Submitted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransfer Ġ= ĠcheckNotNull ( wallet . get Transfer ( checkNotNull ( core Transfer . value ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K _ WAL LET _ EVENT _ TRANSFER _ DELETED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcore Transfer Ġ= Ġalloc < WK Transfer Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( wk Wallet Event Extract Transfer ( event , Ġcore Transfer . ptr ). to Boolean ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet Event . Transfer Deleted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransfer Ġ= ĠcheckNotNull ( wallet . get Transfer ( checkNotNull ( core Transfer . value ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K _ WAL LET _ EVENT _ F EE _ BAS IS _ UPDATED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcore Basis Ġ= Ġalloc < WK Fee Basis Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( wk Wallet Event Extract Fee Basis Update ( event , Ġcore Basis . ptr ). to Boolean ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet Event . Fee Basis Updated ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfee Basis Ġ= ĠTransfer Fee Basis ( checkNotNull ( core Basis . value ), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW K _ WAL LET _ EVENT _ F EE _ BAS IS _ EST IM ATED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġalloc < WK Status Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcookie Ġ= Ġalloc < WK Cookie Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcore Basis Ġ= Ġalloc < WK Fee Basis Var >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw k Wallet Event Extract Fee Basis Estimate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus . ptr , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookie . ptr , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcore Basis . ptr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). to Boolean () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet Event . Fee Basis Est imated ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfee Basis Ġ= ĠTransfer Fee Basis ( checkNotNull ( core Basis . value ), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unknown ĠW K Wallet EventType ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln (" C WM : Ġ$ event String ") ĊĠĠĠĠĠĠĠ Ġsystem . announce Wallet Event ( manager , Ġwallet , Ġwallet Event ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Error Ġhandling Ġwallet Ġevent ") ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġw k Wallet Give ( cw ) ĊĠĠĠĠĠĠĠ Ġw k Wallet Manager Give ( c wm ) ĊĠĠĠĠĠĠĠ Ġw k Wallet Event Give ( event ) ĊĠĠĠ Ġ} Ċ } Ċ