package Ġio . pro venance . hd wallet . wallet Ċ Ċ import Ġio . pro venance . hd wallet . be ch 3 2 . Address Ċ import Ġio . pro venance . hd wallet . bip 3 2 . Account Type . ROOT Ċ import Ġio . pro venance . hd wallet . bip 3 2 . Ext Key Ċ import Ġio . pro venance . hd wallet . bip 4 4 . Path Element Ċ import Ġio . pro venance . hd wallet . ec . EC KeyPair Ċ import Ġio . pro venance . hd wallet . encoding . base 5 8 . base 5 8 Encode Checked Ċ import Ġio . pro venance . hd wallet . signer . B CE C Signer Ċ import Ġio . pro venance . hd wallet . signer . Signer Ċ Ċ class ĠDefault Wallet ( private Ġval Ġh rp : ĠString , Ġprivate Ġval Ġkey : ĠExt Key ) Ġ: ĠWallet Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( key . depth Ġ== ĠROOT ) Ġ{ Ġ" cannot Ġinit Ġwallet Ġwith Ġnon - root Ġkey " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ( path : ĠList < Path Element >): ĠAccount Ġ= Ġpath ĊĠĠĠĠĠĠĠ Ġ. fold ( key ) Ġ{ Ġt , Ġp Ġ-> Ġt . child Key ( p . hard ened Number , Ġp . hard ened ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠDefault Account ( hr p , Ġit ) Ġ} Ċ } Ċ Ċ class ĠDefault Account ( ĊĠĠĠ Ġprivate Ġval Ġh rp : ĠString , ĊĠĠĠ Ġprivate Ġval Ġkey : ĠExt Key , ĊĠĠĠ Ġprivate Ġval Ġsigner : ĠSign er Ġ= ĠB CE C Signer () Ċ ) Ġ: ĠAccount Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġaddress : ĠAddress Ġ= Ġkey . key Pair . publicKey . address ( hr p ) ĊĊĠĠĠ Ġoverride Ġfun Ġserialize Ext Key ( public Only : ĠBoolean ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġkey . serialize ( public Only ). base 5 8 Encode Checked () ĊĊĠĠĠ Ġoverride Ġval Ġkey Pair : ĠEC KeyPair Ġ= Ġkey . key Pair ĊĊĠĠĠ Ġoverride Ġfun Ġsign ( payload : ĠByteArray , Ġhash : Ġ( ByteArray ) Ġ-> ĠByteArray ): ĠByteArray Ġ= ĊĠĠĠĠĠĠĠ Ġsigner . sign ( key . key Pair . privateKey , Ġhash ( payload )). encode As BTC (). toByteArray () ĊĊĠĠĠ Ġoverride Ġfun Ġget ( index : ĠInt , Ġhard ened : ĠBoolean ): ĠAccount Ġ= ĊĠĠĠĠĠĠĠ ĠDefault Account ( hr p , Ġkey . child Key ( index , Ġhard ened ), Ġsigner ) Ċ } Ċ