react-native-zcash 0.9.13 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/android/build.gradle +6 -6
  3. package/android/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/3130000.json +8 -0
  4. package/android/src/main/java/app/edge/rnzcash/RNZcashModule.kt +126 -69
  5. package/ios/RNZcash.m +0 -5
  6. package/ios/RNZcash.swift +153 -104
  7. package/ios/ZCashLightClientKit/Account/Account.swift +48 -0
  8. package/ios/ZCashLightClientKit/Account/AccountMetadataKey.swift +96 -0
  9. package/ios/ZCashLightClientKit/Block/Actions/ScanAction.swift +23 -4
  10. package/ios/ZCashLightClientKit/Block/Actions/UpdateChainTipAction.swift +6 -2
  11. package/ios/ZCashLightClientKit/Block/Actions/UpdateSubtreeRootsAction.swift +4 -2
  12. package/ios/ZCashLightClientKit/Block/Actions/ValidateServerAction.swift +4 -1
  13. package/ios/ZCashLightClientKit/Block/CompactBlockProcessor.swift +83 -16
  14. package/ios/ZCashLightClientKit/Block/Download/BlockDownloader.swift +4 -2
  15. package/ios/ZCashLightClientKit/Block/Download/BlockDownloaderService.swift +22 -19
  16. package/ios/ZCashLightClientKit/Block/Enhance/BlockEnhancer.swift +50 -19
  17. package/ios/ZCashLightClientKit/Block/FetchUnspentTxOutputs/UTXOFetcher.swift +5 -3
  18. package/ios/ZCashLightClientKit/Block/SaplingParameters/SaplingParametersHandler.swift +22 -5
  19. package/ios/ZCashLightClientKit/Block/Scan/BlockScanner.swift +2 -1
  20. package/ios/ZCashLightClientKit/Block/Utils/CompactBlockProgress.swift +5 -3
  21. package/ios/ZCashLightClientKit/Checkpoint/BundleCheckpointSource.swift +88 -0
  22. package/ios/ZCashLightClientKit/Checkpoint/CheckpointSource.swift +4 -0
  23. package/ios/ZCashLightClientKit/ClosureSynchronizer.swift +52 -21
  24. package/ios/ZCashLightClientKit/CombineSynchronizer.swift +49 -27
  25. package/ios/ZCashLightClientKit/Constants/ZcashSDK.swift +8 -2
  26. package/ios/ZCashLightClientKit/DAO/BlockDao.swift +65 -0
  27. package/ios/ZCashLightClientKit/DAO/TransactionDao.swift +86 -1
  28. package/ios/ZCashLightClientKit/Entity/AccountEntity.swift +4 -4
  29. package/ios/ZCashLightClientKit/Entity/Pczt.swift +10 -0
  30. package/ios/ZCashLightClientKit/Entity/SentNoteEntity.swift +2 -2
  31. package/ios/ZCashLightClientKit/Entity/TransactionEntity.swift +40 -16
  32. package/ios/ZCashLightClientKit/Error/Sourcery/generateErrorCode.sh +1 -1
  33. package/ios/ZCashLightClientKit/Error/ZcashError.swift +182 -14
  34. package/ios/ZCashLightClientKit/Error/ZcashErrorCode.swift +63 -5
  35. package/ios/ZCashLightClientKit/Error/ZcashErrorCodeDefinition.swift +122 -12
  36. package/ios/ZCashLightClientKit/Initializer.swift +49 -14
  37. package/ios/ZCashLightClientKit/Metrics/SDKMetrics.swift +15 -6
  38. package/ios/ZCashLightClientKit/Model/SingleUseTransparentAddress.swift +29 -0
  39. package/ios/ZCashLightClientKit/Model/TransactionDataRequest.swift +83 -2
  40. package/ios/ZCashLightClientKit/Model/WalletSummary.swift +21 -4
  41. package/ios/ZCashLightClientKit/Model/WalletTypes.swift +38 -8
  42. package/ios/ZCashLightClientKit/Modules/Service/GRPC/LightWalletGRPCService.swift +177 -45
  43. package/ios/ZCashLightClientKit/Modules/Service/LightWalletService.swift +63 -16
  44. package/ios/ZCashLightClientKit/Modules/Service/Tor/LightWalletGRPCServiceOverTor.swift +273 -0
  45. package/ios/ZCashLightClientKit/Providers/LatestBlocksDataProvider.swift +5 -2
  46. package/ios/ZCashLightClientKit/Repository/TransactionRepository.swift +2 -0
  47. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2675000.json +8 -0
  48. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2677500.json +8 -0
  49. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2682500.json +8 -0
  50. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2685000.json +8 -0
  51. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2687500.json +8 -0
  52. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2692500.json +8 -0
  53. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2695000.json +8 -0
  54. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2697500.json +8 -0
  55. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2702500.json +8 -0
  56. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2705000.json +8 -0
  57. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2707500.json +8 -0
  58. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2712500.json +8 -0
  59. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2715000.json +8 -0
  60. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2717500.json +8 -0
  61. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2722500.json +8 -0
  62. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2725000.json +8 -0
  63. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2727500.json +8 -0
  64. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2732500.json +8 -0
  65. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2735000.json +8 -0
  66. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2737500.json +8 -0
  67. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2742500.json +8 -0
  68. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2745000.json +8 -0
  69. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2747500.json +8 -0
  70. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2752500.json +8 -0
  71. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2755000.json +8 -0
  72. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2757500.json +8 -0
  73. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2762500.json +8 -0
  74. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2765000.json +8 -0
  75. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2767500.json +8 -0
  76. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2772500.json +8 -0
  77. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2775000.json +8 -0
  78. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2777500.json +8 -0
  79. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2782500.json +8 -0
  80. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2785000.json +8 -0
  81. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2787500.json +8 -0
  82. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2792500.json +8 -0
  83. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2795000.json +8 -0
  84. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2797500.json +8 -0
  85. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2802500.json +8 -0
  86. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2805000.json +8 -0
  87. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2807500.json +8 -0
  88. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2812500.json +8 -0
  89. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2815000.json +8 -0
  90. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2817500.json +8 -0
  91. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2822500.json +8 -0
  92. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2825000.json +8 -0
  93. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2827500.json +8 -0
  94. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2832500.json +8 -0
  95. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2835000.json +8 -0
  96. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2837500.json +8 -0
  97. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2842500.json +8 -0
  98. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2845000.json +8 -0
  99. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2847500.json +8 -0
  100. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2852500.json +8 -0
  101. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2855000.json +8 -0
  102. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2857500.json +8 -0
  103. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2862500.json +8 -0
  104. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2865000.json +8 -0
  105. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2867500.json +8 -0
  106. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2872500.json +8 -0
  107. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2875000.json +8 -0
  108. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2877500.json +8 -0
  109. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2882500.json +8 -0
  110. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2885000.json +8 -0
  111. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2887500.json +8 -0
  112. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2892500.json +8 -0
  113. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2895000.json +8 -0
  114. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2897500.json +8 -0
  115. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2902500.json +8 -0
  116. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2905000.json +8 -0
  117. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2907500.json +8 -0
  118. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2912500.json +8 -0
  119. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2915000.json +8 -0
  120. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2917500.json +8 -0
  121. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2922500.json +8 -0
  122. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2925000.json +8 -0
  123. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2927500.json +8 -0
  124. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2932500.json +8 -0
  125. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2935000.json +8 -0
  126. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2937500.json +8 -0
  127. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2942500.json +8 -0
  128. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2945000.json +8 -0
  129. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2947500.json +8 -0
  130. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2952500.json +8 -0
  131. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2955000.json +8 -0
  132. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2957500.json +8 -0
  133. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2962500.json +8 -0
  134. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2965000.json +8 -0
  135. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2967500.json +8 -0
  136. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2972500.json +8 -0
  137. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2975000.json +8 -0
  138. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2977500.json +8 -0
  139. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2982500.json +8 -0
  140. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2985000.json +8 -0
  141. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2987500.json +8 -0
  142. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2992500.json +8 -0
  143. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2995000.json +8 -0
  144. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2997500.json +8 -0
  145. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3002500.json +8 -0
  146. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3005000.json +8 -0
  147. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3007500.json +8 -0
  148. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3012500.json +8 -0
  149. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3015000.json +8 -0
  150. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3017500.json +8 -0
  151. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3022500.json +8 -0
  152. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3025000.json +8 -0
  153. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3027500.json +8 -0
  154. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3032500.json +8 -0
  155. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3035000.json +8 -0
  156. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3037500.json +8 -0
  157. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3042500.json +8 -0
  158. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3045000.json +8 -0
  159. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3047500.json +8 -0
  160. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3052500.json +8 -0
  161. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3055000.json +8 -0
  162. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3057500.json +8 -0
  163. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3062500.json +8 -0
  164. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3065000.json +8 -0
  165. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3067500.json +8 -0
  166. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3072500.json +8 -0
  167. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3075000.json +8 -0
  168. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3077500.json +8 -0
  169. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3082500.json +8 -0
  170. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3085000.json +8 -0
  171. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3087500.json +8 -0
  172. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3092500.json +8 -0
  173. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3095000.json +8 -0
  174. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3097500.json +8 -0
  175. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3102500.json +8 -0
  176. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3105000.json +8 -0
  177. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3107500.json +8 -0
  178. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3112500.json +8 -0
  179. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3115000.json +8 -0
  180. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3117500.json +8 -0
  181. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3122500.json +8 -0
  182. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3125000.json +8 -0
  183. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3127500.json +8 -0
  184. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3130000.json +8 -0
  185. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3010000.json +8 -0
  186. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3020000.json +8 -0
  187. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3030000.json +8 -0
  188. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3040000.json +8 -0
  189. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3050000.json +8 -0
  190. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3060000.json +8 -0
  191. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3070000.json +8 -0
  192. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3080000.json +8 -0
  193. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3090000.json +8 -0
  194. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3100000.json +8 -0
  195. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3110000.json +8 -0
  196. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3120000.json +8 -0
  197. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3130000.json +8 -0
  198. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3140000.json +8 -0
  199. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3150000.json +8 -0
  200. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3160000.json +8 -0
  201. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3170000.json +8 -0
  202. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3180000.json +8 -0
  203. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3190000.json +8 -0
  204. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3200000.json +8 -0
  205. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3210000.json +8 -0
  206. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3220000.json +8 -0
  207. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3230000.json +8 -0
  208. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3240000.json +8 -0
  209. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3250000.json +8 -0
  210. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3260000.json +8 -0
  211. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3270000.json +8 -0
  212. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3280000.json +8 -0
  213. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3290000.json +8 -0
  214. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3300000.json +8 -0
  215. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3310000.json +8 -0
  216. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3320000.json +8 -0
  217. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3330000.json +8 -0
  218. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3340000.json +8 -0
  219. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3350000.json +8 -0
  220. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3360000.json +8 -0
  221. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3370000.json +8 -0
  222. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3380000.json +8 -0
  223. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3390000.json +8 -0
  224. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3400000.json +8 -0
  225. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3410000.json +8 -0
  226. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3420000.json +8 -0
  227. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3430000.json +8 -0
  228. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3440000.json +8 -0
  229. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3450000.json +8 -0
  230. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3460000.json +8 -0
  231. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3470000.json +8 -0
  232. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3480000.json +8 -0
  233. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3490000.json +8 -0
  234. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3500000.json +8 -0
  235. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3510000.json +8 -0
  236. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3520000.json +8 -0
  237. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3530000.json +8 -0
  238. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3540000.json +8 -0
  239. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3550000.json +8 -0
  240. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3560000.json +8 -0
  241. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3570000.json +8 -0
  242. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3580000.json +8 -0
  243. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3590000.json +8 -0
  244. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3600000.json +8 -0
  245. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3610000.json +8 -0
  246. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3620000.json +8 -0
  247. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3630000.json +8 -0
  248. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3640000.json +8 -0
  249. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3650000.json +8 -0
  250. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3660000.json +8 -0
  251. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/3670000.json +8 -0
  252. package/ios/ZCashLightClientKit/Rust/ZcashKeyDerivationBackend.swift +89 -10
  253. package/ios/ZCashLightClientKit/Rust/ZcashKeyDerivationBackendWelding.swift +39 -3
  254. package/ios/ZCashLightClientKit/Rust/ZcashRustBackend.swift +532 -74
  255. package/ios/ZCashLightClientKit/Rust/ZcashRustBackendWelding.swift +97 -14
  256. package/ios/ZCashLightClientKit/Synchronizer/ClosureSDKSynchronizer.swift +104 -28
  257. package/ios/ZCashLightClientKit/Synchronizer/CombineSDKSynchronizer.swift +105 -31
  258. package/ios/ZCashLightClientKit/Synchronizer/Dependencies.swift +36 -9
  259. package/ios/ZCashLightClientKit/Synchronizer/SDKSynchronizer.swift +401 -175
  260. package/ios/ZCashLightClientKit/Synchronizer.swift +192 -69
  261. package/ios/ZCashLightClientKit/Tool/DerivationTool.swift +69 -12
  262. package/ios/ZCashLightClientKit/Tor/TorClient.swift +502 -11
  263. package/ios/ZCashLightClientKit/Transaction/TransactionEncoder.swift +10 -6
  264. package/ios/ZCashLightClientKit/Transaction/WalletTransactionEncoder.swift +24 -9
  265. package/ios/ZCashLightClientKit/Utils/SDKFlags.swift +71 -0
  266. package/ios/libzcashlc.xcframework/Info.plist +5 -5
  267. package/ios/libzcashlc.xcframework/ios-arm64/libzcashlc.a +0 -0
  268. package/ios/libzcashlc.xcframework/ios-arm64_x86_64-simulator/libzcashlc.a +0 -0
  269. package/ios/zcashlc.h +1640 -378
  270. package/lib/rnzcash.rn.js.map +1 -1
  271. package/lib/src/react-native.d.ts +2 -2
  272. package/lib/src/types.d.ts +2 -0
  273. package/package.json +1 -1
  274. package/src/react-native.ts +2 -3
  275. package/src/types.ts +2 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.10.0 (2025-11-18)
6
+
7
+ - changed: Upgrade iOS and Android sdks to v2.4.0
8
+
5
9
  ## 0.9.13 (2025-11-04)
6
10
 
7
11
  - changed: Updated checkpoints
@@ -1,14 +1,14 @@
1
1
  buildscript {
2
2
  def kotlinVersion = rootProject.ext.has('kotlinVersion')
3
3
  ? rootProject.ext.get('kotlinVersion')
4
- : '1.9.23'
4
+ : '2.1.10'
5
5
 
6
6
  repositories {
7
7
  mavenCentral()
8
8
  google()
9
9
  }
10
10
  dependencies {
11
- classpath 'com.android.tools.build:gradle:7.3.1'
11
+ classpath 'com.android.tools.build:gradle:8.5.0'
12
12
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}"
13
13
  }
14
14
  }
@@ -22,10 +22,10 @@ def safeExtGet(prop, fallback) {
22
22
  }
23
23
 
24
24
  android {
25
- compileSdkVersion safeExtGet('compileSdkVersion', 32)
25
+ compileSdkVersion safeExtGet('compileSdkVersion', 35)
26
26
  defaultConfig {
27
27
  minSdkVersion safeExtGet('minSdkVersion', 27)
28
- targetSdkVersion safeExtGet('targetSdkVersion', 32)
28
+ targetSdkVersion safeExtGet('targetSdkVersion', 35)
29
29
  }
30
30
  lintOptions {
31
31
  abortOnError false
@@ -49,8 +49,8 @@ dependencies {
49
49
 
50
50
  implementation 'androidx.appcompat:appcompat:1.6.1'
51
51
  implementation 'androidx.paging:paging-runtime-ktx:2.1.2'
52
- implementation 'cash.z.ecc.android:zcash-android-sdk:2.2.5'
53
- implementation 'cash.z.ecc.android:zcash-android-sdk-incubator:2.2.5'
52
+ implementation 'cash.z.ecc.android:zcash-android-sdk:2.4.0'
53
+ implementation 'cash.z.ecc.android:zcash-android-sdk-incubator:2.4.0'
54
54
  implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"
55
55
  implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3"
56
56
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "network": "main",
3
+ "height": "3130000",
4
+ "hash": "0000000000ef4e1eb5738c3bd0db88bb6e6a19cdc1e3c0e665d557a643afe173",
5
+ "time": 1762778627,
6
+ "saplingTree": "0115e0b53bb054be5004ff2f1ef130c7bb4bd5c13160f058fa08f4887cc680974e01f86c92c25efef689a7da41e72cde3a22bdf217f4b3f373c76bf764b9a16531001f000000000001223296c894014e7b74bc6a1ea13a1f5e1f3c8e1e2c7054e9aef18f3cb24a7120000001d50edf1002f4e8c2a36e04279b1bdf1a856afaa1e742d8a186c619c500c5d735000188ab63dddc016b9eafeacb0c31a6225f86433af6bfeb1dbbba2116c756e2e4280000000194ba2edf2d7ccac96720733e47705dcdf8861639357e16599e294b1b5222765c0001931c48ea50688eae5e54c24d0df7a6b00ce498f92eb5e1cfd6a2d87d8ebd5364017d1ce2f0839bdbf1bad7ae37f845e7fe2116e0c1197536bfbad549f3876c3c590000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
7
+ "orchardTree": "01904cb5adb532dd53cfd62ddd526f2962591953d3b46a94b5c9a76df075aac13f001f000001bf3361530e303d4d5c98a7632b3689cebab6bb483c457ce047d8df99e3078d0501026fd02680012c3eef695c4cb55670430e850f63549fb960912e37a90b747938014dc12d7cc7ad433c695de1b21b04e2c01c8ce1ffdc87a5a91e0421d0c407c003000001bbeeb7b2a0d2de54595f2c50660a829792c1fa3b2520cf33b3ae3f7f12c7541801bef8700b622f8e5d4b2ba937d4640dc3ac60c1fbd54943df2bd3e0b058a593030001ec9103be2788c06f06aa5a76a072d88a2ca76fb4897157addf68df0d83657b06015c8789d27ee4405e38d33a59037dd9e3f47c008738017d20f61f7ea63ff33e010000000001905ae252612cb76b216003da1312a47b95d56eeb72207dbe5a809e53032157270000017c8ece2b2ab2355d809b58809b21c7a5e95cfc693cd689387f7533ec8749261e01cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
8
+ }
@@ -12,7 +12,6 @@ import cash.z.ecc.android.sdk.type.*
12
12
  import co.electriccoin.lightwallet.client.LightWalletClient
13
13
  import co.electriccoin.lightwallet.client.model.LightWalletEndpoint
14
14
  import co.electriccoin.lightwallet.client.model.Response
15
- import co.electriccoin.lightwallet.client.new
16
15
  import com.facebook.react.bridge.*
17
16
  import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
18
17
  import kotlinx.coroutines.CoroutineScope
@@ -33,6 +32,15 @@ class RNZcashModule(
33
32
  private var moduleScope: CoroutineScope = CoroutineScope(Dispatchers.IO)
34
33
  private var synchronizerMap = mutableMapOf<String, SdkSynchronizer>()
35
34
 
35
+ // Track emitted transactions per alias to only emit new or updated transactions
36
+ private val emittedTransactions = mutableMapOf<String, MutableMap<String, EmittedTxState>>()
37
+
38
+ // Data class to track what we've emitted for each transaction
39
+ private data class EmittedTxState(
40
+ val minedHeight: BlockHeight?,
41
+ val transactionState: TransactionState,
42
+ )
43
+
36
44
  private val networks = mapOf("mainnet" to ZcashNetwork.Mainnet, "testnet" to ZcashNetwork.Testnet)
37
45
 
38
46
  override fun getName() = "RNZcash"
@@ -57,13 +65,19 @@ class RNZcashModule(
57
65
  if (!synchronizerMap.containsKey(alias)) {
58
66
  synchronizerMap[alias] =
59
67
  Synchronizer.new(
60
- reactApplicationContext,
61
- network,
62
68
  alias,
63
- endpoint,
64
- seedPhrase.toByteArray(),
65
69
  BlockHeight.new(birthdayHeight.toLong()),
70
+ reactApplicationContext,
71
+ endpoint,
72
+ AccountCreateSetup(
73
+ accountName = alias,
74
+ keySource = null,
75
+ seed = FirstClassByteArray(seedPhrase.toByteArray()),
76
+ ),
66
77
  initMode,
78
+ network,
79
+ false, // isTorEnabled
80
+ false, // isExchangeRateEnabled
67
81
  ) as SdkSynchronizer
68
82
  }
69
83
  val wallet = getWallet(alias)
@@ -90,11 +104,39 @@ class RNZcashModule(
90
104
  args.putString("name", status.toString())
91
105
  }
92
106
  }
93
- wallet.transactions.collectWith(scope) { txList ->
107
+ wallet.allTransactions.collectWith(scope) { txList ->
94
108
  scope.launch {
109
+ // Get or create the tracking map for this alias
110
+ val emittedForAlias = emittedTransactions.getOrPut(alias) { mutableMapOf() }
111
+
112
+ val transactionsToEmit = mutableListOf<TransactionOverview>()
113
+
114
+ txList.forEach { tx ->
115
+ val txId = tx.txId.txIdString()
116
+ val previousState = emittedForAlias[txId]
117
+
118
+ // Check if this is a new transaction or if minedHeight/transactionState changed
119
+ val isNew = previousState == null
120
+ val minedHeightChanged = previousState?.minedHeight != tx.minedHeight
121
+ val stateChanged = previousState?.transactionState != tx.transactionState
122
+
123
+ if (isNew || minedHeightChanged || stateChanged) {
124
+ transactionsToEmit.add(tx)
125
+ // Update our tracking
126
+ emittedForAlias[txId] =
127
+ EmittedTxState(
128
+ minedHeight = tx.minedHeight,
129
+ transactionState = tx.transactionState,
130
+ )
131
+ }
132
+ }
133
+
134
+ if (transactionsToEmit.isEmpty()) {
135
+ return@launch
136
+ }
137
+
95
138
  val nativeArray = Arguments.createArray()
96
- txList
97
- .filter { tx -> tx.transactionState != TransactionState.Expired }
139
+ transactionsToEmit
98
140
  .map { tx ->
99
141
  launch {
100
142
  val parsedTx = parseTx(wallet, tx)
@@ -104,27 +146,15 @@ class RNZcashModule(
104
146
 
105
147
  sendEvent("TransactionEvent") { args ->
106
148
  args.putString("alias", alias)
107
- args.putArray(
108
- "transactions",
109
- nativeArray,
110
- )
149
+ args.putArray("transactions", nativeArray)
111
150
  }
112
151
  }
113
152
  }
114
- combine(
115
- wallet.transparentBalance,
116
- wallet.saplingBalances,
117
- wallet.orchardBalances,
118
- ) { transparentBalance: Zatoshi?, saplingBalances: WalletBalance?, orchardBalances: WalletBalance? ->
119
- return@combine Balances(
120
- transparentBalance = transparentBalance,
121
- saplingBalances = saplingBalances,
122
- orchardBalances = orchardBalances,
123
- )
124
- }.collectWith(scope) { map ->
125
- val transparentBalance = map.transparentBalance
126
- val saplingBalances = map.saplingBalances
127
- val orchardBalances = map.orchardBalances
153
+ wallet.walletBalances.collectWith(scope) { balancesMap ->
154
+ val accountBalance = balancesMap?.values?.firstOrNull()
155
+ val transparentBalance = accountBalance?.unshielded
156
+ val saplingBalances = accountBalance?.sapling
157
+ val orchardBalances = accountBalance?.orchard
128
158
 
129
159
  val transparentAvailableZatoshi = transparentBalance ?: Zatoshi(0L)
130
160
  val transparentTotalZatoshi = transparentBalance ?: Zatoshi(0L)
@@ -188,11 +218,15 @@ class RNZcashModule(
188
218
  alias: String,
189
219
  promise: Promise,
190
220
  ) {
191
- promise.wrap {
192
- val wallet = getWallet(alias)
193
- wallet.close()
194
- synchronizerMap.remove(alias)
195
- return@wrap null
221
+ val wallet = getWallet(alias)
222
+ moduleScope.launch {
223
+ try {
224
+ wallet.closeFlow().first()
225
+ synchronizerMap.remove(alias)
226
+ promise.resolve(null)
227
+ } catch (t: Throwable) {
228
+ promise.reject("Err", t)
229
+ }
196
230
  }
197
231
  }
198
232
 
@@ -204,19 +238,20 @@ class RNZcashModule(
204
238
  val job =
205
239
  wallet.coroutineScope.launch {
206
240
  map.putString("value", tx.netValue.value.toString())
207
- if (tx.feePaid != null) {
208
- map.putString("fee", tx.feePaid!!.value.toString())
209
- }
241
+ tx.feePaid?.let { fee -> map.putString("fee", fee.value.toString()) }
210
242
  map.putInt("minedHeight", tx.minedHeight?.value?.toInt() ?: 0)
211
243
  map.putInt("blockTimeInSeconds", tx.blockTimeEpochSeconds?.toInt() ?: 0)
212
- map.putString("rawTransactionId", tx.txIdString())
213
- if (tx.raw != null) {
214
- map.putString("raw", tx.raw!!.byteArray.toHex())
215
- }
244
+ map.putString("rawTransactionId", tx.txId.txIdString())
245
+ map.putBoolean("isShielding", tx.isShielding)
246
+ map.putBoolean("isExpired", tx.transactionState == TransactionState.Expired)
247
+ tx.raw
248
+ ?.byteArray
249
+ ?.toHex()
250
+ ?.let { hex -> map.putString("raw", hex) }
216
251
  if (tx.isSentTransaction) {
217
252
  try {
218
253
  val recipient = wallet.getRecipients(tx).first()
219
- if (recipient is TransactionRecipient.Address) {
254
+ if (recipient.addressValue != null) {
220
255
  map.putString("toAddress", recipient.addressValue)
221
256
  }
222
257
  } catch (t: Throwable) {
@@ -240,11 +275,15 @@ class RNZcashModule(
240
275
  promise: Promise,
241
276
  ) {
242
277
  val wallet = getWallet(alias)
243
- wallet.coroutineScope.launch {
244
- promise.wrap {
245
- wallet.rewindToNearestHeight(wallet.latestBirthdayHeight)
246
- return@wrap null
247
- }
278
+ moduleScope.launch {
279
+ // Clear emitted transactions tracking and starting block height for this alias
280
+ emittedTransactions[alias]?.clear()
281
+
282
+ wallet.coroutineScope
283
+ .async {
284
+ wallet.rewindToNearestHeight(wallet.latestBirthdayHeight)
285
+ }.await()
286
+ promise.resolve(null)
248
287
  }
249
288
  }
250
289
 
@@ -303,6 +342,10 @@ class RNZcashModule(
303
342
  response.toThrowable(),
304
343
  )
305
344
  }
345
+
346
+ else -> {
347
+ throw Exception("Unknown response type")
348
+ }
306
349
  }
307
350
  }
308
351
  }
@@ -319,9 +362,10 @@ class RNZcashModule(
319
362
  val wallet = getWallet(alias)
320
363
  wallet.coroutineScope.launch {
321
364
  try {
365
+ val account = wallet.getAccounts().first()
322
366
  val proposal =
323
367
  wallet.proposeTransfer(
324
- Account.DEFAULT,
368
+ account,
325
369
  toAddress,
326
370
  Zatoshi(zatoshi.toLong()),
327
371
  memo,
@@ -349,7 +393,12 @@ class RNZcashModule(
349
393
  wallet.coroutineScope.launch {
350
394
  try {
351
395
  val seedPhrase = SeedPhrase.new(seed)
352
- val usk = DerivationTool.getInstance().deriveUnifiedSpendingKey(seedPhrase.toByteArray(), wallet.network, Account.DEFAULT)
396
+ val usk =
397
+ DerivationTool.getInstance().deriveUnifiedSpendingKey(
398
+ seedPhrase.toByteArray(),
399
+ wallet.network,
400
+ Zip32AccountIndex.new(0),
401
+ )
353
402
  val proposalByteArray = Base64.getDecoder().decode(proposalBase64)
354
403
  val proposal = Proposal.fromByteArray(proposalByteArray)
355
404
 
@@ -377,21 +426,32 @@ class RNZcashModule(
377
426
  val wallet = getWallet(alias)
378
427
  wallet.coroutineScope.launch {
379
428
  try {
429
+ val account = wallet.getAccounts().first()
430
+ val proposal = wallet.proposeShielding(account, Zatoshi(threshold.toLong()), memo, null)
431
+ if (proposal == null) {
432
+ promise.reject("Err", Exception("Failed to propose shielding transaction"))
433
+ return@launch
434
+ }
380
435
  val seedPhrase = SeedPhrase.new(seed)
381
- val usk = DerivationTool.getInstance().deriveUnifiedSpendingKey(seedPhrase.toByteArray(), wallet.network, Account.DEFAULT)
382
- val internalId =
383
- wallet.shieldFunds(
436
+ val usk =
437
+ DerivationTool.getInstance().deriveUnifiedSpendingKey(
438
+ seedPhrase.toByteArray(),
439
+ wallet.network,
440
+ Zip32AccountIndex.new(0),
441
+ )
442
+ val result =
443
+ wallet.createProposedTransactions(
444
+ proposal,
384
445
  usk,
385
- memo,
386
446
  )
387
- val tx = wallet.coroutineScope.async { wallet.transactions.first().first() }.await()
388
- val parsedTx = parseTx(wallet, tx)
389
-
390
- // Hack: Memos aren't ready to be queried right after broadcast
391
- val memos = Arguments.createArray()
392
- memos.pushString(memo)
393
- parsedTx.putArray("memos", memos)
394
- promise.resolve(parsedTx)
447
+ val shieldingTx = result.first()
448
+
449
+ if (shieldingTx is TransactionSubmitResult.Success) {
450
+ val shieldingTxid = shieldingTx.txIdString()
451
+ promise.resolve(shieldingTxid)
452
+ } else {
453
+ promise.reject("Err", Exception("Failed to create shielding transaction"))
454
+ }
395
455
  } catch (t: Throwable) {
396
456
  promise.reject("Err", t)
397
457
  }
@@ -409,16 +469,19 @@ class RNZcashModule(
409
469
  ) {
410
470
  val wallet = getWallet(alias)
411
471
  wallet.coroutineScope.launch {
412
- promise.wrap {
413
- val unifiedAddress = wallet.getUnifiedAddress(Account(0))
414
- val saplingAddress = wallet.getSaplingAddress(Account(0))
415
- val transparentAddress = wallet.getTransparentAddress(Account(0))
472
+ try {
473
+ val account = wallet.getAccounts().first()
474
+ val unifiedAddress = wallet.getUnifiedAddress(account)
475
+ val saplingAddress = wallet.getSaplingAddress(account)
476
+ val transparentAddress = wallet.getTransparentAddress(account)
416
477
 
417
478
  val map = Arguments.createMap()
418
479
  map.putString("unifiedAddress", unifiedAddress)
419
480
  map.putString("saplingAddress", saplingAddress)
420
481
  map.putString("transparentAddress", transparentAddress)
421
- return@wrap map
482
+ promise.resolve(map)
483
+ } catch (t: Throwable) {
484
+ promise.reject("Err", t)
422
485
  }
423
486
  }
424
487
  }
@@ -474,10 +537,4 @@ class RNZcashModule(
474
537
  .getJSModule(RCTDeviceEventEmitter::class.java)
475
538
  .emit(eventName, args)
476
539
  }
477
-
478
- data class Balances(
479
- val transparentBalance: Zatoshi?,
480
- val saplingBalances: WalletBalance?,
481
- val orchardBalances: WalletBalance?,
482
- )
483
540
  }
package/ios/RNZcash.m CHANGED
@@ -15,11 +15,6 @@ resolver:(RCTPromiseResolveBlock)resolve
15
15
  rejecter:(RCTPromiseRejectBlock)reject
16
16
  )
17
17
 
18
- RCT_EXTERN_METHOD(start:(NSString *)alias
19
- resolver:(RCTPromiseResolveBlock)resolve
20
- rejecter:(RCTPromiseRejectBlock)reject
21
- )
22
-
23
18
  RCT_EXTERN_METHOD(stop:(NSString *)alias
24
19
  resolver:(RCTPromiseResolveBlock)resolve
25
20
  rejecter:(RCTPromiseRejectBlock)reject