package Ġcom . ap top ay ments . mobile . repository . p 2 p Ċ Ċ import Ġcom . ap top ay ments . mobile . data . PhoneNumber Ċ import Ġcom . ap top ay ments . mobile . data . card . Money Ċ import Ġcom . ap top ay ments . mobile . data . transfer money . Card Holder Data Ċ import Ġcom . ap top ay ments . mobile . data . transfer money . P 2 p Transfer Response Ċ import Ġcom . ap top ay ments . mobile . exception . Failure Ċ import Ġcom . ap top ay ments . mobile . functional . Either Ċ import Ġcom . ap top ay ments . mobile . platform . Base No Network Repository Ċ import Ġcom . ap top ay ments . mobile . repository . p 2 p . remote . P 2 p Service Ċ Ċ internal Ġinterface ĠP 2 p Repository Ġ: ĠBase No Network Repository Ġ{ ĊĠĠĠ Ġfun Ġfind Recipient ( phoneNumber : ĠPhone Number ? Ġ= Ġnull , Ġemail : ĠString ? Ġ= Ġnull ): ĠEither < Failure , ĠCard Holder Data > ĊĠĠĠ Ġfun Ġmake Transfer ( source Id : ĠString , Ġrecipient Id : ĠString , Ġamount : ĠMoney ): ĠEither < Failure , ĠP 2 p Transfer Response > Ċ } Ċ Ċ internal Ġclass ĠP 2 p Repository Impl ( private Ġval Ġservice : ĠP 2 p Service ) Ġ: ĠP 2 p Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfind Recipient ( phoneNumber : ĠPhone Number ?, Ġemail : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠ Ġservice . find Recipient ( phoneNumber , Ġemail ) ĊĊĠĠĠ Ġoverride Ġfun Ġmake Transfer ( source Id : ĠString , Ġrecipient Id : ĠString , Ġamount : ĠMoney ) Ġ= ĊĠĠĠĠĠĠĠ Ġservice . make Transfer ( source Id , Ġrecipient Id , Ġamount ) Ċ } Ċ