package Ġcom . f ow allet . wallet core . b ts Ċ Ċ import Ġbit shares .* Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min ĊĊ Ċ class ĠBit shares Client Manager Ġ{ ĊĠĠĠ Ġ// Ġ Ġ åįķ ä¾ĭ æĸ¹æ³ķ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġ_ shared Bit shares Client Manager Ġ= ĠBit shares Client Manager () ĊĊĠĠĠĠĠĠĠ Ġfun Ġshared Bit shares Client Manager (): ĠBit shares Client Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ shared Bit shares Client Manager ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess _ transaction ( tr : ĠTransaction Builder ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtr . set _ required _ fees ( null ). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ then Ġtr . broadcast () ĊĠĠĠĠĠĠĠ Ġ}. then Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠTODO : f ow allet Ġ åĪ° è¿ĻéĩĮ å°±æĺ¯ äº¤æĺĵ å¹¿ æĴŃ æĪĲåĬŁ Ġ å¹¶ä¸Ķ Ġ åĽŀè°ĥ å·²ç»ı æī§è¡Į äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ then Ġdata ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ( public ) Ġä»İ ç½ĳç»ľ è®¡ç®Ĺ æīĭ ç»Ń è´¹ Ġ/ Ġcal cu ate Ġfees Ġfrom Ġnetwork ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcalc Operation Fee ( op _ data : ĠJSONObject , Ġop _ code : ĠE Bit shares Operations ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( op _ code , Ġop _ data ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtr . set _ required _ fees ( null ). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall fees Ġ= Ġit Ġas ĠJSONArray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ then Ġall fees [ 0 ] Ġas ĠJSONObject ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åıĸæ¶Ī éĻĲ ä»· åįķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcancel Limit Orders ( op data _ array : ĠJSONArray ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġop data _ array . forEach < JSONObject > Ġ{ Ġop data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ limit _ order _ cancel , Ġop data !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( op data . getString (" fee _ pay ing _ account "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠåĪĽå»º çĲĨ äºĭ ä¼ļ æĪĲåĳĺ ĠRE MARK ï¼ļ éľĢè¦ģ ç»Ī èº« ä¼ļ åĳĺ æĿĥéĻĲ ãĢĤ ĠĠĠ ĠTODO ï¼ļ æľª å®ĮæĪĲ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Member Commit tee (): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ĠTODO : ĊĠĠĠĠĠĠĠ Ġreturn ĠPromise () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠåĪĽå»º è§ģ è¯ģ äºº æĪĲåĳĺ ĠRE MARK ï¼ļ éľĢè¦ģ ç»Ī èº« ä¼ļ åĳĺ æĿĥéĻĲ ãĢĤ ĠĠĠ ĠTODO ï¼ļ æľª å®ĮæĪĲ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate W itness (): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ĠTODO : ĊĠĠĠĠĠĠĠ Ġreturn ĠPromise () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ Ġ è½¬ è´¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtransfer ( transfer _ op _ data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ transfer , Ġtransfer _ op _ data ) ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( transfer _ op _ data . getString (" from "))) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠæĽ´æĸ° å¸ Ĳ åı· ä¿¡æģ¯ ï¼Ī æĬķ ç¥¨ çŃī ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġaccount Update ( account _ update _ op _ data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ account _ update , Ġaccount _ update _ op _ data ) ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( account _ update _ op _ data . getString (" account "))) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ Ġ åįĩçº§ è´¦åı· ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġaccount Up gr de ( account _ upgrade _ op _ data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ account _ upgrade , Ġaccount _ upgrade _ op _ data ) ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( account _ upgrade _ op _ data . getString (" account _ to _ upgrade "))) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠæĽ´æĸ° ä¿Ŀè¯ģ éĩĳ ï¼Ī æĬ µ æĬ ¼ åĢ Ł è´ · ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcall Order Update ( op _ data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ call _ order _ update , Ġop _ data ) ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( op _ data . getString (" fund ing _ account "))) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º éĻĲ ä»· åįķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Limit Order ( limit _ order _ op : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ limit _ order _ create , Ġlimit _ order _ op ) ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( limit _ order _ op . getString (" seller "))) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠOP Ġ- ĠåĪĽå»º å¾ħ è§£ åĨ » éĩĳé¢Ŀ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġv esting Balance Create ( op data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ v esting _ balance _ create , Ġop data ) ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( op data . getString (" creator "))) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠOP Ġ- ĠæıĲ åıĸ å¾ħ è§£ åĨ » éĩĳé¢Ŀ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġv esting Balance Withdraw ( op data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ v esting _ balance _ withdraw , Ġop data ) ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( op data . getString (" owner "))) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠOP Ġ- ĠåĪĽå»º æıĲ æ¡Ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġproposal Create ( opcode : ĠE Bit shares Operations , Ġop data : ĠJSONObject , Ġop account : ĠJSONObject , Ġproposal _ create _ args : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk Fee Pay ing Account Ġ= Ġproposal _ create _ args . getJSONObject (" k Fee Pay ing Account ") ĊĠĠĠĠĠĠĠ Ġval Ġk Approve Period Ġ= Ġproposal _ create _ args . getInt (" k Approve Period ") ĊĠĠĠĠĠĠĠ Ġval Ġk Review Period Ġ= Ġproposal _ create _ args . getInt (" k Review Period ") ĊĊĠĠĠĠĠĠĠ Ġassert ( k Fee Pay ing Account Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġassert ( k Approve Period Ġ> Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfee _ pay ing _ account _ id Ġ= Ġk Fee Pay ing Account . getString (" id ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ_ wrap _ op data _ with _ fee ( opcode , Ġop data ). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġop data _ with _ fee Ġ= Ġit Ġas ĠJSONObject ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠæıĲ æ¡Ī æľīæķĪ æľŁ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġproposal _ lifetime _ sec Ġ= Ġk Approve Period Ġ+ Ġk Review Period ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠæıĲ æ¡Ī å®¡æł¸ æľŁ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġreview _ period _ seconds Ġ= Ġk Review Period ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġèİ·åıĸ åħ¨å±Ģ åıĤæķ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgp Ġ= ĠChain Object Manager . shared Chain Object Manager (). getObject Global Properties () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġgp . opt JSONObject (" parameters ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parameters Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ ä¸įèĥ½ Ġ è¶ħè¿ĩ æľĢå¤§ åĢ¼ ï¼Ī å½ĵåīį åĢ¼ 2 8 å¤© ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaximum _ proposal _ lifetime Ġ= Ġparameters . getInt (" maximum _ proposal _ lifetime ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproposal _ lifetime _ sec Ġ= Ġmin ( maximum _ proposal _ lifetime , Ġproposal _ lifetime _ sec ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ ä¸įèĥ½ ä½İ äºİ æľĢ ä½İ åĢ¼ ï¼Ī å½ĵåīį åĢ¼ 1 å°ı æĹ¶ ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommit tee _ proposal _ review _ period Ġ= Ġparameters . getInt (" committee _ proposal _ review _ period ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreview _ period _ seconds Ġ= Ġmax ( committee _ proposal _ review _ period , Ġreview _ period _ seconds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( proposal _ lifetime _ sec Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( review _ period _ seconds Ġ< Ġproposal _ lifetime _ sec ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ è¿ĩ æľŁ æĹ¶éĹ´ æĪ ³ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow _ sec Ġ= ĠUtils . now _ ts () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpiration _ ts Ġ= Ġnow _ sec Ġ+ Ġproposal _ lifetime _ sec ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġop Ġ= ĠjsonObject from K VS ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fee ", ĠjsonObject from K VS (" amount ", Ġ 0 , Ġ" asset _ id ", ĠB TS _ NETWORK _ CORE _ AS SET _ ID ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fee _ pay ing _ account ", Ġfee _ pay ing _ account _ id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" expiration _ time ", Ġexpiration _ ts , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pro posed _ ops ", Ġjson Array from ( jsonObject from K VS (" op ", Ġjson Array from ( opcode . value , Ġop data _ with _ fee ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( op account . getString (" id ") Ġ!= ĠB TS _ GR AP HEN E _ COMMIT TE E _ ACCOUNT Ġ|| Ġk Review Period Ġ> Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġæ·»åĬł å®¡æł¸ æľŁ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k Review Period Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop . put (" review _ period _ seconds ", Ġreview _ period _ seconds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠåĪĽå»º äº¤æĺĵ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ proposal _ create , Ġop ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( fee _ pay ing _ account _ id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ then Ġprocess _ transaction ( tr ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ Ġ( private ) Ġè¿ĶåĽŀ åĮħåĲ« æīĭ ç»Ń è´¹ å¯¹è±¡çļĦ Ġop data ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġ_ wrap _ op data _ with _ fee ( opcode : ĠE Bit shares Operations , Ġop data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠPromise () ĊĠĠĠĠĠĠĠ Ġval Ġop data _ fee Ġ= Ġop data . opt JSONObject (" fee ") ĊĠĠĠĠĠĠĠ Ġif Ġ( op data _ fee Ġ== Ġnull Ġ|| Ġop data _ fee . getString (" amount "). to Long () Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ è®¡ç®Ĺ æīĭ ç»Ń è´¹ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalc Operation Fee ( op data , Ġopcode ). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfee _ price _ item Ġ= Ġit Ġas ĠJSONObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop data . put (" fee ", Ġfee _ price _ item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp . resolve ( op data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ then Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. catch Ġ{ Ġerr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp . reject ( err ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġæľī æīĭ ç»Ń è´¹ çĽ´æİ¥ è¿ĶåĽŀ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . resolve ( op data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġp ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠOP Ġ- ĠæĽ´æĸ° æıĲ æ¡Ī ï¼Ī æ·»åĬł æİĪæĿĥ or ç§»éĻ¤ æİĪæĿĥ ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġproposal Update ( op data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ proposal _ update , Ġop data ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ Ġèİ·åıĸ æīĢæľī éľĢè¦ģ çŃ¾åĲį çļĦ KEY ĊĠĠĠĠĠĠĠ Ġval Ġwallet Mgr Ġ= ĠWallet Manager . shared Wallet Manager () ĊĠĠĠĠĠĠĠ Ġval Ġid Account Data Hash Ġ= Ġwallet Mgr . getAll Account Data Hash ( false ) ĊĊĠĠĠĠĠĠĠ Ġop data . get JSONArray (" active _ appro vals _ to _ add "). forEach < String > Ġ{ Ġuid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount _ data Ġ= Ġid Account Data Hash . getJSONObject ( uid !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( wallet Mgr . get Sign Keys ( account _ data . getJSONObject (" active "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġop data . get JSONArray (" active _ appro vals _ to _ remove "). forEach < String > Ġ{ Ġuid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount _ data Ġ= Ġid Account Data Hash . getJSONObject ( uid !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( wallet Mgr . get Sign Keys ( account _ data . getJSONObject (" active "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġop data . get JSONArray (" owner _ appro vals _ to _ add "). forEach < String > Ġ{ Ġuid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount _ data Ġ= Ġid Account Data Hash . getJSONObject ( uid !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( wallet Mgr . get Sign Keys ( account _ data . getJSONObject (" owner "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġop data . get JSONArray (" owner _ appro vals _ to _ remove "). forEach < String > Ġ{ Ġuid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount _ data Ġ= Ġid Account Data Hash . getJSONObject ( uid !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( wallet Mgr . get Sign Keys ( account _ data . getJSONObject (" owner "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġop data . get JSONArray (" key _ appro vals _ to _ add "). forEach < String > Ġ{ Ġpub key Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( wallet Mgr . have PrivateKey ( pubkey !! )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr . add Sign Key ( pubkey ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġop data . get JSONArray (" key _ appro vals _ to _ remove "). forEach < String > Ġ{ Ġpub key Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( wallet Mgr . have PrivateKey ( pubkey !! )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr . add Sign Key ( pubkey ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ Ġ æīĭ ç»Ń è´¹ æĶ¯ä»ĺ è´¦åı· ä¹Ł éľĢè¦ģ çŃ¾åĲį ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( wallet Mgr . get Sign Keys From Fee Pay ing Account ( op data . getString (" fee _ pay ing _ account "))) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠOP Ġ- ĠåĪĽå»º HT LC åĲĪ çº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġht lc Create ( op data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ ht lc _ create , Ġop data ) ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( op data . getString (" from "))) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠOP Ġ- ĠæıĲ åıĸ HT LC åĲĪ çº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġht lc Re deem ( op data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ ht lc _ re deem , Ġop data ) ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( op data . getString (" re deem er "))) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠOP Ġ- Ġ æī©å±ķ HT LC åĲĪ çº¦ æľīæķĪ æľŁ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġht lc Extend ( op data : ĠJSONObject ): ĠPromise Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠTransaction Builder () ĊĠĠĠĠĠĠĠ Ġtr . add _ operation ( E Bit shares Operations . e bo _ ht lc _ extend , Ġop data ) ĊĠĠĠĠĠĠĠ Ġtr . add Sign Keys ( Wallet Manager . shared Wallet Manager (). get Sign Keys From Fee Pay ing Account ( op data . getString (" update _ issuer "))) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess _ transaction ( tr ) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊĊ ĊĊĊĊĊ