package Ġcash . z . ecc . android . sdk Ċ Ċ import Ġandroid . content . Context Ċ import Ġcash . z . ecc . android . sdk . exception . Initializer Exception Ċ import Ġcash . z . ecc . android . sdk . ext . Z cash Sdk Ċ import Ġcash . z . ecc . android . sdk . internal . Sdk Dispatch ers Ċ import Ġcash . z . ecc . android . sdk . internal . ext . getCache Dir Suspend Ċ import Ġcash . z . ecc . android . sdk . internal . ext . get Database Path Suspend Ċ import Ġcash . z . ecc . android . sdk . internal . twig Ċ import Ġcash . z . ecc . android . sdk . jni . Rust Backend Ċ import Ġcash . z . ecc . android . sdk . tool . Der ivation Tool Ċ import Ġcash . z . ecc . android . sdk . tool . Wallet Birth day Tool Ċ import Ġcash . z . ecc . android . sdk . type . Unified View ing Key Ċ import Ġcash . z . ecc . android . sdk . type . Wallet Birth day Ċ import Ġcash . z . ecc . android . sdk . type . Z cash Network Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠSimpl ified ĠInitial izer Ġfocused Ġon Ġstarting Ġfrom Ġa ĠView ing Key . Ċ Ġ*/ Ċ class ĠInitial izer Ġprivate Ġconstructor ( ĊĠĠĠ Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġval Ġrust Backend : ĠRust Backend , ĊĠĠĠ Ġval Ġnetwork : ĠZ cash Network , ĊĠĠĠ Ġval Ġalias : ĠString , ĊĠĠĠ Ġval Ġhost : ĠString , ĊĠĠĠ Ġval Ġport : ĠInt , ĊĠĠĠ Ġval Ġviewing Keys : ĠList < Unified View ing Key >, ĊĠĠĠ Ġval Ġoverwrite V ks : ĠBoolean , ĊĠĠĠ Ġval Ġbirthday : ĠWallet Birth day Ċ ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġerase () Ġ= Ġerase ( context , Ġnetwork , Ġalias ) ĊĊĠĠĠ Ġclass ĠConfig Ġprivate Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġviewing Keys : ĠMutable List < Unified View ing Key > Ġ= Ġmutable ListOf (), ĊĠĠĠĠĠĠĠ Ġvar Ġalias : ĠString Ġ= ĠZ cash Sdk . DEFAULT _ ALIAS , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbirthday Height : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġnetwork : ĠZ cash Network ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġhost : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġvar Ġport : ĠInt Ġ= ĠZ cash Network . Main net . default Port ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDetermines Ġthe Ġdefault Ġbehavior Ġfor Ġnull Ġbirth days . ĠWhen Ġnull , Ġnothing Ġhas Ġbeen Ġspecified ĊĠĠĠĠĠĠĠĠ Ġ* Ġso Ġa Ġnull Ġbirthday Height Ġvalue Ġis Ġan Ġerror . ĠWhen Ġfalse , Ġnull Ġbirth days Ġwill Ġbe Ġreplaced ĊĠĠĠĠĠĠĠĠ Ġ* Ġwith Ġthe Ġmost Ġrecent Ġcheckpoint Ġheight Ġavailable Ġ( typ ically , Ġthe Ġlatest Ġ` *. json ` Ġfile Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` assets / zc ash / sap ling tree / `). ĠWhen Ġtrue , Ġnull Ġbirth days Ġwill Ġbe Ġreplaced Ġwith Ġthe Ġoldest ĊĠĠĠĠĠĠĠĠ Ġ* Ġreasonable Ġheight Ġwhere Ġa Ġtransaction Ġcould Ġexist Ġ( typ ically , Ġsap ling Ġactivation Ġbut ĊĠĠĠĠĠĠĠĠ Ġ* Ġbetter Ġapprox im ations Ġcould Ġbe Ġdev ised Ġin Ġthe Ġfuture , Ġsuch Ġas Ġthe Ġdate Ġwhen Ġthe Ġfirst ĊĠĠĠĠĠĠĠĠ Ġ* ĠB IP - 3 9 Ġz cash Ġwallet s Ġcame Ġonline ). ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġdefault To Ol dest Height : ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġvar Ġoverwrite V ks : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġconstructor ( block : Ġ( Config ) Ġ-> ĠUnit ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠB irth day Ġfunctions ĊĠĠĠĠĠĠĠ Ġ// ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġthe Ġbirthday Ġheight Ġfor Ġthis Ġconfiguration . ĠWhen Ġthe Ġheight Ġis Ġnot Ġknown , Ġthe Ġwallet ĊĠĠĠĠĠĠĠĠ Ġ* Ġcan Ġeither Ġdefault Ġto Ġthe Ġlatest Ġknown Ġbirthday Ġ( in Ġorder Ġto Ġsync Ġnew Ġwallet s Ġfaster ) Ġor ĊĠĠĠĠĠĠĠĠ Ġ* Ġthe Ġoldest Ġpossible Ġbirthday Ġ( in Ġorder Ġto Ġimport Ġa Ġwallet Ġwith Ġan Ġunknown Ġbirthday ĊĠĠĠĠĠĠĠĠ Ġ* Ġwithout Ġskipping Ġold Ġtransactions ). ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġheight Ġnullable Ġbirthday Ġheight Ġto Ġuse Ġfor Ġthis Ġconfiguration . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdefault To Ol dest Height Ġdetermines Ġhow Ġa Ġnull Ġbirthday Ġheight Ġwill Ġbe ĊĠĠĠĠĠĠĠĠ Ġ* Ġinterpreted . ĠTypically , Ġ` false ` Ġfor Ġnew Ġwallet s Ġand Ġ` true ` Ġfor Ġrestored Ġwallet s Ġbecause ĊĠĠĠĠĠĠĠĠ Ġ* Ġnew Ġwallet s Ġwant Ġto Ġload Ġquickly Ġbut Ġrestored Ġwallet s Ġwant Ġto Ġfind Ġall Ġpossible ĊĠĠĠĠĠĠĠĠ Ġ* Ġtransactions . ĠAgain , Ġthis Ġvalue Ġis Ġonly Ġconsidered Ġwhen Ġ[ height ] Ġis Ġnull . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Birth day Height ( height : ĠInt ?, Ġdefault To Ol dest Height : ĠBoolean Ġ= Ġfalse ): ĠConfig Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . birthday Height Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . default To Ol dest Height Ġ= Ġdefault To Ol dest Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠLoad Ġthe Ġmost Ġrecent Ġcheckpoint Ġavailable . ĠThis Ġis Ġuseful Ġfor Ġnew Ġwallet s . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Wallet Birth day (): ĠConfig Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbirthday Height Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault To Ol dest Height Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠLoad Ġthe Ġbirthday Ġcheckpoint Ġclosest Ġto Ġthe Ġgiven Ġwallet Ġbirthday . ĠThis Ġis Ġuseful Ġwhen ĊĠĠĠĠĠĠĠĠ Ġ* Ġimporting Ġa Ġpre - existing Ġwallet . ĠIt Ġis Ġthe Ġsame Ġas Ġcalling ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` birthday Height Ġ= Ġimported Height `. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġimported Wallet Birth day ( imported Height : ĠInt ?): ĠConfig Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbirthday Height Ġ= Ġimported Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault To Ol dest Height Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠView ing Ġkey Ġfunctions ĊĠĠĠĠĠĠĠ Ġ// ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdd Ġviewing Ġkeys Ġto Ġthe Ġset Ġof Ġaccounts Ġto Ġmonitor . ĠNote : ĠUsing Ġmore Ġthan Ġone Ġviewing Ġkey ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġnot Ġcurrently Ġwell Ġsupported . ĠConsider Ġit Ġan Ġalpha - preview Ġfeature Ġthat Ġmight Ġwork Ġbut ĊĠĠĠĠĠĠĠĠ Ġ* Ġprobably Ġhas Ġserious Ġbugs . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset View ing Keys ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġunified View ing Keys : ĠUn ified View ing Key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverwrite : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ): ĠConfig Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverwrite V ks Ġ= Ġoverwrite ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewing Keys . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( unified View ing Keys ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Overwrite Keys ( is Overwrite : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverwrite V ks Ġ= Ġis Overwrite ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdd Ġviewing Ġkey Ġto Ġthe Ġset Ġof Ġaccounts Ġto Ġmonitor . ĠNote : ĠUsing Ġmore Ġthan Ġone Ġviewing Ġkey ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġnot Ġcurrently Ġwell Ġsupported . ĠConsider Ġit Ġan Ġalpha - preview Ġfeature Ġthat Ġmight Ġwork Ġbut ĊĠĠĠĠĠĠĠĠ Ġ* Ġprobably Ġhas Ġserious Ġbugs . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġadd View ing Key ( unified Full View ing Key : ĠUn ified View ing Key ): ĠConfig Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewing Keys . add ( unified Full View ing Key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠConvenience Ġfunctions ĊĠĠĠĠĠĠĠ Ġ// ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġthe Ġserver Ġand Ġthe Ġnetwork Ġproperty Ġat Ġthe Ġsame Ġtime Ġto Ġprevent Ġthem Ġfrom Ġgetting Ġout ĊĠĠĠĠĠĠĠĠ Ġ* Ġof Ġsync . ĠU lt imately , Ġthis Ġdetermines Ġwhich Ġhost Ġa Ġsynchron izer Ġwill Ġuse Ġin Ġorder Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġconnect Ġto Ġlight w alle td . ĠIn Ġmost Ġcases , Ġthe Ġdefault Ġhost Ġis Ġsufficient Ġbut Ġan Ġoverride ĊĠĠĠĠĠĠĠĠ Ġ* Ġcan Ġbe Ġprovided . ĠThe Ġhost Ġcannot Ġbe Ġchanged Ġwithout Ġexplicitly Ġsetting Ġthe Ġnetwork . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnetwork Ġthe ĠZ cash Ġnetwork Ġto Ġuse . ĠEither Ġtest net , Ġmain net , Ġp ir aten et . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġhost Ġthe Ġlight w alle td Ġhost Ġto Ġuse . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġport Ġthe Ġlight w alle td Ġport Ġto Ġuse . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Network ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost : ĠString Ġ= Ġnetwork . default Host , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġport : ĠInt Ġ= Ġnetwork . default Port ĊĠĠĠĠĠĠĠ Ġ): ĠConfig Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . network Ġ= Ġnetwork ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . host Ġ= Ġhost ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . port Ġ= Ġport ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠImport Ġa Ġwallet Ġusing Ġthe Ġfirst Ġviewing Ġkey Ġderived Ġfrom Ġthe Ġgiven Ġseed . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġimport Wallet ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseed : ĠByteArray , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbirthday Height : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost : ĠString Ġ= Ġnetwork . default Host , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġport : ĠInt Ġ= Ġnetwork . default Port , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias : ĠString Ġ= ĠZ cash Sdk . DEFAULT _ ALIAS ĊĠĠĠĠĠĠĠ Ġ): ĠConfig Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Wallet ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDer ivation Tool . derive Unified View ing Keys ( seed , Ġnetwork Ġ= Ġnetwork )[ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbirthday Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġport , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalias ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefault Ġfunction Ġfor Ġimporting Ġa Ġwallet . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġimport Wallet ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewing Key : ĠUn ified View ing Key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbirthday Height : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost : ĠString Ġ= Ġnetwork . default Host , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġport : ĠInt Ġ= Ġnetwork . default Port , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias : ĠString Ġ= ĠZ cash Sdk . DEFAULT _ ALIAS ĊĠĠĠĠĠĠĠ Ġ): ĠConfig Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset View ing Keys ( view ing Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Network ( network , Ġhost , Ġport ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimported Wallet Birth day ( birthday Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . alias Ġ= Ġalias ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġwallet Ġusing Ġthe Ġfirst Ġviewing Ġkey Ġderived Ġfrom Ġthe Ġgiven Ġseed . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġnew Wallet ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseed : ĠByteArray , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost : ĠString Ġ= Ġnetwork . default Host , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġport : ĠInt Ġ= Ġnetwork . default Port , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias : ĠString Ġ= ĠZ cash Sdk . DEFAULT _ ALIAS ĊĠĠĠĠĠĠĠ Ġ): ĠConfig Ġ= Ġnew Wallet ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDer ivation Tool . derive Unified View ing Keys ( seed , Ġnetwork )[ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġport , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefault Ġfunction Ġfor Ġcreating Ġa Ġnew Ġwallet . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Wallet ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewing Key : ĠUn ified View ing Key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost : ĠString Ġ= Ġnetwork . default Host , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġport : ĠInt Ġ= Ġnetwork . default Port , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias : ĠString Ġ= ĠZ cash Sdk . DEFAULT _ ALIAS ĊĠĠĠĠĠĠĠ Ġ): ĠConfig Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset View ing Keys ( view ing Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Network ( network , Ġhost , Ġport ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Wallet Birth day () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . alias Ġ= Ġalias ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvenience Ġmethod Ġfor Ġsetting Ġthe w Ġviewing Keys Ġfrom Ġa Ġgiven Ġseed . ĠThis Ġis Ġthe Ġsame Ġas ĊĠĠĠĠĠĠĠĠ Ġ* Ġcalling Ġ` setView ing Keys ` Ġwith Ġthe Ġkeys Ġthat Ġmatch Ġthis Ġseed . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġset Seed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseed : ĠByteArray , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Accounts : ĠInt Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ): ĠConfig Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset View ing Keys ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Der ivation Tool . derive Unified View ing Keys ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Accounts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġnetwork Ġfrom Ġa Ġnetwork Ġid , Ġthrowing Ġan Ġexception Ġif Ġthe Ġid Ġis Ġnot Ġrecognized . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnetwork Id Ġthe ĠID Ġof Ġthe Ġnetwork Ġcorresponding Ġto Ġthe Ġ[ Z cash Network ] Ġenum . ĊĠĠĠĠĠĠĠĠ Ġ* ĠTypically , Ġit Ġis Ġ 0 Ġfor Ġtest net Ġand Ġ 1 Ġfor Ġmain net Ġand Ġ 2 Ġfor Ġp ir aten et . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Network Id ( network Id : ĠInt ): ĠConfig Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Ġ= ĠZ cash Network . from ( network Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠValidation Ġhelpers ĊĠĠĠĠĠĠĠ Ġ// ĊĊĠĠĠĠĠĠĠ Ġfun Ġvalidate (): ĠConfig Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Alias ( alias ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate View ing Keys () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Birth day () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġvalidate Birth day () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġbirthday Ġis Ġmissing Ġthen Ġwe Ġneed Ġto Ġknow Ġhow Ġto Ġinterpret Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġso Ġdefault To Ol dest Height Ġo ught Ġto Ġbe Ġset , Ġin Ġthat Ġcase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( birthday Height Ġ== Ġnull Ġ&& Ġdefault To Ol dest Height Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInitial izer Exception . Missing Default Birth day Exception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġallow Ġeither Ġnull Ġor Ġa Ġvalue Ġgreater Ġthan Ġthe Ġactivation Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( birthday Height Ġ?: Ġnetwork . sap ling Activation Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Ġnetwork . sap ling Activation Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInitial izer Exception . Invalid Birth day Height Exception ( birthday Height , Ġnetwork ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġvalidate View ing Keys () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( view ing Keys . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Unified ĠView ing Ġkeys Ġare Ġrequired . ĠEnsure Ġthat Ġthe Ġunified Ġviewing Ġkeys Ġor Ġseed " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġhave Ġbeen Ġset Ġon Ġthis ĠInitial izer ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewing Keys . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDer ivation Tool . validate Unified View ing Key ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠS dk Synchron izer . E ras able Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġnew ( app Context : ĠContext , Ġconfig : ĠConfig ) Ġ= Ġnew ( app Context , Ġnull , Ġconfig ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Blocking ( app Context : ĠContext , Ġconfig : ĠConfig ) Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġnew ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Critical ErrorHandler : Ġ(( Throwable ?) Ġ-> ĠBoolean )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock : Ġ( Config ) Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġnew ( app Context , Ġon Critical ErrorHandler , ĠConfig ( block )) ĊĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġnew ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Critical ErrorHandler : Ġ(( Throwable ?) Ġ-> ĠBoolean )? , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig : ĠConfig ĊĠĠĠĠĠĠĠ Ġ): ĠInitial izer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . validate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight ToUse Ġ= Ġconfig . birthday Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ( if Ġ( config . default To Ol dest Height Ġ== Ġtrue ) Ġconfig . network . sap ling Activation Height Ġelse Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloaded Birth day Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet Birth day Tool . load Nearest ( context , Ġconfig . network , Ġheight ToUse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrust Backend Ġ= Ġinit Rust Backend ( context , Ġconfig . network , Ġconfig . alias , Ġloaded Birth day ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInitial izer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrust Backend , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . network , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . alias , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . host , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . port , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . view ing Keys , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . overwrite V ks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloaded Birth day ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġon Critical Error ( on Critical ErrorHandler : Ġ(( Throwable ?) Ġ-> ĠBoolean )? , Ġerror : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtw ig (" ******** ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtw ig (" ******** Ġ ĠINITIAL IZER ĠERROR : Ġ$ error ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error . cause Ġ!= Ġnull ) Ġtw ig (" ******** Ġcaused Ġby Ġ${ error . cause }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error . cause ?. cause Ġ!= Ġnull ) Ġtw ig (" ******** Ġcaused Ġby Ġ${ error . cause ?. cause }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtw ig (" ******** ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtw ig ( error ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Critical ErrorHandler Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtw ig ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WARNING : Ġa Ġcritical Ġerror Ġoccurred Ġon Ġthe ĠInitial izer Ġbut Ġno Ġcallback Ġis Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" registered Ġto Ġbe Ġnotified Ġof Ġcritical Ġerrors ! ĠTHIS ĠIS ĠPRO B AB LY ĠA ĠM IST A KE . ĠTo Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" respond Ġto Ġthese Ġerrors Ġ( per haps Ġto Ġupdate Ġthe ĠUI Ġor Ġalert Ġthe Ġuser ) Ġset Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" initializer . on Critical ErrorHandler Ġto Ġa Ġnon - null Ġvalue Ġor Ġuse Ġthe Ġsecondary Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" constructor : ĠInitial izer ( context , Ġhandler ) Ġ{ Ġ... Ġ}. ĠNote Ġthat Ġthe Ġsynchron izer Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" and Ġinitializer ĠBOT H Ġhave Ġerror Ġhandlers Ġand Ġsince Ġthe Ġinitializer Ġexists Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" before Ġthe Ġsynchron izer , Ġit Ġneeds Ġits Ġerror Ġhandler Ġset Ġseparately ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Critical ErrorHandler ?. invoke ( error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġsuspend Ġfun Ġinit Rust Backend ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbirthday : ĠWallet Birth day ĊĠĠĠĠĠĠĠ Ġ): ĠRust Backend Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRust Backend . init ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Db Path ( context , Ġnetwork , Ġalias ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Db Path ( context , Ġnetwork , Ġalias ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( context . getCache Dir Suspend (), Ġ" params "). absolute Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbirthday . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDelete Ġthe Ġdatabases Ġassociated Ġwith Ġthis Ġwallet . ĠThis Ġremoves Ġall Ġcompact Ġblocks Ġand ĊĠĠĠĠĠĠĠĠ Ġ* Ġdata Ġderived Ġfrom Ġthose Ġblocks . ĠFor Ġmost Ġwallet s , Ġthis Ġshould Ġnot Ġresult Ġin Ġa Ġloss Ġof ĊĠĠĠĠĠĠĠĠ Ġ* Ġfunds Ġbecause Ġthe Ġseed Ġand Ġs pending Ġkeys Ġare Ġstored Ġseparately . ĠThis Ġcall Ġjust Ġremoves ĊĠĠĠĠĠĠĠĠ Ġ* Ġthe Ġassociated Ġdata Ġbut Ġnot Ġthe Ġseed Ġor Ġs pending Ġkey , Ġthemselves , Ġbecause Ġthose Ġare ĊĠĠĠĠĠĠĠĠ Ġ* Ġmanaged Ġseparately Ġby Ġthe Ġwallet . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġapp Context Ġthe Ġapplication Ġcontext . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnetwork Ġthe Ġnetwork Ġassociated Ġwith Ġthe Ġdata Ġto Ġbe Ġer ased . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġalias Ġthe Ġalias Ġused Ġto Ġcreate Ġthe Ġlocal Ġdata . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġwhen Ġone Ġof Ġthe Ġassociated Ġfiles Ġwas Ġfound . ĠFalse Ġmost Ġlikely Ġindicates ĊĠĠĠĠĠĠĠĠ Ġ* Ġthat Ġthe Ġwrong Ġalias Ġwas Ġprovided . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġerase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcache Deleted Ġ= Ġdelete Db ( cache Db Path ( app Context , Ġnetwork , Ġalias )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Deleted Ġ= Ġdelete Db ( data Db Path ( app Context , Ġnetwork , Ġalias )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata Deleted Ġ|| Ġcache Deleted ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠPath ĠHelpers ĊĠĠĠĠĠĠĠ Ġ// ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthe Ġpath Ġto Ġthe Ġcache Ġdatabase Ġthat Ġwould Ġcorrespond Ġto Ġthe Ġgiven Ġalias . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġapp Context Ġthe Ġapplication Ġcontext ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnetwork Ġthe Ġnetwork Ġassociated Ġwith Ġthe Ġdata Ġin Ġthe Ġcache Ġdatabase . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġalias Ġthe Ġalias Ġto Ġconvert Ġinto Ġa Ġdatabase Ġpath ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġsuspend Ġfun Ġcache Db Path ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias To Path ( app Context , Ġnetwork , Ġalias , ĠZ cash Sdk . DB _ CACHE _ NAME ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthe Ġpath Ġto Ġthe Ġdata Ġdatabase Ġthat Ġwould Ġcorrespond Ġto Ġthe Ġgiven Ġalias . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġapp Context Ġthe Ġapplication Ġcontext ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Ġ@ param Ġnetwork Ġthe Ġnetwork Ġassociated Ġwith Ġthe Ġdata Ġin Ġthe Ġdatabase . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġalias Ġthe Ġalias Ġto Ġconvert Ġinto Ġa Ġdatabase Ġpath ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġsuspend Ġfun Ġdata Db Path ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias To Path ( app Context , Ġnetwork , Ġalias , ĠZ cash Sdk . DB _ DATA _ NAME ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġsuspend Ġfun Ġalias To Path ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠZ cash Network , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb FileName : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Dir : ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context . get Database Path Suspend (" unused . db "). parent File ?. absolute Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠInitial izer Exception . Database Path Exception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġif Ġ( alias . endsWith ('_ ')) Ġalias Ġelse Ġ"${ alias }_ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFile ( parent Dir , Ġ"$ prefix ${ network . network Name }_ $ db FileName "). absolute Path ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDelete Ġa Ġdatabase Ġand Ġit 's Ġpotential Ġjournal Ġfile Ġat Ġthe Ġgiven Ġpath . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠfilePath Ġthe Ġpath Ġof Ġthe Ġdb Ġto Ġerase . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġwhen Ġa Ġfile Ġexists Ġat Ġthe Ġgiven Ġpath Ġand Ġwas Ġdeleted . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġsuspend Ġfun Ġdelete Db ( filePath : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġjust Ġtry Ġthe Ġjournal Ġfile . ĠDoes n 't Ġmatter Ġif Ġit 's Ġnot Ġthere . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete ("$ filePath - journal ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelete ( filePath ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDelete Ġthe Ġfile Ġat Ġthe Ġgiven Ġpath . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠfilePath Ġthe Ġpath Ġof Ġthe Ġfile Ġto Ġerase . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġwhen Ġa Ġfile Ġexists Ġat Ġthe Ġgiven Ġpath Ġand Ġwas Ġdeleted . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġsuspend Ġfun Ġdelete ( filePath : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFile ( filePath ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Sdk Dispatch ers . DATABASE _ IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtw ig (" Deleting Ġ${ it . name } !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠValidate Ġthat Ġthe Ġalias Ġdoesn 't Ġcontain Ġm alic ious Ġcharacters Ġby Ġen for cing Ġsimple Ġrules Ġwhich Ċ Ġ* Ġpermit Ġthe Ġalias Ġto Ġbe Ġused Ġas Ġpart Ġof Ġa Ġfile Ġname Ġfor Ġthe Ġpreferences Ġand Ġdatabases . ĠThis Ċ Ġ* Ġenables Ġmultiple Ġwallet s Ġto Ġexist Ġon Ġone Ġdevice , Ġwhich Ġis Ġalso Ġhelpful Ġfor Ġsweep ing Ġfunds . Ċ Ġ* Ċ Ġ* Ġ@ param Ġalias Ġthe Ġalias Ġto Ġvalidate . Ċ Ġ* Ċ Ġ* Ġ@ throws ĠIllegalArgumentException Ġwhenever Ġthe Ġalias Ġis Ġnot Ġless Ġthan Ġ 1 0 0 Ġcharacters Ġor Ċ Ġ* Ġcontains Ġsomething Ġother Ġthan Ġal phanumeric Ġcharacters . ĠUnd ers cores Ġare Ġallowed Ġbut Ġaliases Ċ Ġ* Ġmust Ġstart Ġwith Ġa Ġletter . Ċ Ġ*/ Ċ internal Ġfun Ġvalidate Alias ( alias : ĠString ) Ġ{ ĊĠĠĠ Ġrequire ( ĊĠĠĠĠĠĠĠ Ġalias . length Ġin Ġ 1 .. 9 9 Ġ&& Ġalias [ 0 ]. is Letter () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias . all Ġ{ Ġit . is Letter Or Digit () Ġ|| Ġit Ġ== Ġ'_' Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" ERROR : ĠInvalid Ġalias Ġ($ alias ). ĠFor Ġsecurity , Ġthe Ġalias Ġmust Ġbe Ġshorter Ġthan Ġ 1 0 0 Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" characters Ġand Ġonly Ġcontain Ġletters , Ġdigits Ġor Ġunders cores Ġand Ġstart Ġwith Ġa Ġletter ." ĊĠĠĠ Ġ} Ċ } Ċ