react-native-zcash 0.3.4 → 0.4.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 (716) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +22 -0
  3. package/README.md +40 -37
  4. package/android/build.gradle +7 -5
  5. package/android/src/main/assets/saplingtree/mainnet/1310000.json +1 -1
  6. package/android/src/main/assets/saplingtree/mainnet/1320000.json +1 -1
  7. package/android/src/main/assets/saplingtree/mainnet/1330000.json +1 -1
  8. package/android/src/main/assets/saplingtree/mainnet/1340000.json +1 -1
  9. package/android/src/main/assets/saplingtree/mainnet/1350000.json +1 -1
  10. package/android/src/main/assets/saplingtree/mainnet/1360000.json +1 -1
  11. package/android/src/main/assets/saplingtree/mainnet/1370000.json +1 -1
  12. package/android/src/main/assets/saplingtree/mainnet/1380000.json +1 -1
  13. package/android/src/main/assets/saplingtree/mainnet/1390000.json +1 -1
  14. package/android/src/main/assets/saplingtree/mainnet/1400000.json +1 -1
  15. package/android/src/main/assets/saplingtree/mainnet/1410000.json +1 -1
  16. package/android/src/main/assets/saplingtree/mainnet/1420000.json +1 -1
  17. package/android/src/main/assets/saplingtree/mainnet/1430000.json +1 -1
  18. package/android/src/main/assets/saplingtree/mainnet/1440000.json +1 -1
  19. package/android/src/main/assets/saplingtree/mainnet/1450000.json +1 -1
  20. package/android/src/main/assets/saplingtree/mainnet/1460000.json +1 -1
  21. package/android/src/main/assets/saplingtree/mainnet/1470000.json +1 -1
  22. package/android/src/main/assets/saplingtree/mainnet/1480000.json +1 -1
  23. package/android/src/main/assets/saplingtree/mainnet/1490000.json +1 -1
  24. package/android/src/main/assets/saplingtree/mainnet/1500000.json +1 -1
  25. package/android/src/main/assets/saplingtree/mainnet/1510000.json +1 -1
  26. package/android/src/main/assets/saplingtree/mainnet/1520000.json +1 -1
  27. package/android/src/main/assets/saplingtree/mainnet/1530000.json +1 -1
  28. package/android/src/main/assets/saplingtree/mainnet/1540000.json +1 -1
  29. package/android/src/main/assets/saplingtree/mainnet/1550000.json +1 -1
  30. package/android/src/main/assets/saplingtree/mainnet/1560000.json +1 -1
  31. package/android/src/main/assets/saplingtree/mainnet/1570000.json +1 -1
  32. package/android/src/main/assets/saplingtree/mainnet/1580000.json +1 -1
  33. package/android/src/main/assets/saplingtree/mainnet/1590000.json +1 -1
  34. package/android/src/main/assets/saplingtree/mainnet/1600000.json +1 -1
  35. package/android/src/main/assets/saplingtree/mainnet/1610000.json +1 -1
  36. package/android/src/main/assets/saplingtree/mainnet/1620000.json +1 -1
  37. package/android/src/main/assets/saplingtree/mainnet/1630000.json +1 -1
  38. package/android/src/main/assets/saplingtree/mainnet/1640000.json +1 -1
  39. package/android/src/main/assets/saplingtree/mainnet/1650000.json +1 -1
  40. package/android/src/main/assets/saplingtree/mainnet/1660000.json +1 -1
  41. package/android/src/main/assets/saplingtree/mainnet/1670000.json +1 -1
  42. package/android/src/main/assets/saplingtree/mainnet/1680000.json +1 -1
  43. package/android/src/main/assets/saplingtree/mainnet/1690000.json +2 -1
  44. package/android/src/main/assets/saplingtree/mainnet/1700000.json +2 -1
  45. package/android/src/main/assets/saplingtree/mainnet/1710000.json +2 -1
  46. package/android/src/main/assets/saplingtree/mainnet/1720000.json +2 -1
  47. package/android/src/main/assets/saplingtree/mainnet/1730000.json +2 -1
  48. package/android/src/main/assets/saplingtree/mainnet/1740000.json +2 -1
  49. package/android/src/main/assets/saplingtree/mainnet/1750000.json +2 -1
  50. package/android/src/main/assets/saplingtree/mainnet/1760000.json +2 -1
  51. package/android/src/main/assets/saplingtree/mainnet/1770000.json +2 -1
  52. package/android/src/main/assets/saplingtree/mainnet/1780000.json +2 -1
  53. package/android/src/main/assets/saplingtree/mainnet/1790000.json +2 -1
  54. package/android/src/main/assets/saplingtree/mainnet/1800000.json +2 -1
  55. package/android/src/main/assets/saplingtree/mainnet/1810000.json +2 -1
  56. package/android/src/main/assets/saplingtree/mainnet/1820000.json +2 -1
  57. package/android/src/main/assets/saplingtree/mainnet/1830000.json +2 -1
  58. package/android/src/main/assets/saplingtree/mainnet/1840000.json +2 -1
  59. package/android/src/main/assets/saplingtree/mainnet/1850000.json +2 -1
  60. package/android/src/main/assets/saplingtree/mainnet/1860000.json +2 -1
  61. package/android/src/main/assets/saplingtree/mainnet/1870000.json +2 -1
  62. package/android/src/main/assets/saplingtree/mainnet/1880000.json +2 -1
  63. package/android/src/main/assets/saplingtree/mainnet/1890000.json +2 -1
  64. package/android/src/main/assets/saplingtree/mainnet/1900000.json +2 -1
  65. package/android/src/main/assets/saplingtree/mainnet/1910000.json +2 -1
  66. package/android/src/main/assets/saplingtree/mainnet/1920000.json +2 -1
  67. package/android/src/main/assets/saplingtree/mainnet/1930000.json +2 -1
  68. package/android/src/main/assets/saplingtree/mainnet/1940000.json +2 -1
  69. package/android/src/main/assets/saplingtree/mainnet/1950000.json +2 -1
  70. package/android/src/main/assets/saplingtree/mainnet/1960000.json +2 -1
  71. package/android/src/main/assets/saplingtree/mainnet/1970000.json +2 -1
  72. package/android/src/main/assets/saplingtree/mainnet/1980000.json +2 -1
  73. package/android/src/main/assets/saplingtree/mainnet/1990000.json +2 -1
  74. package/android/src/main/assets/saplingtree/mainnet/2000000.json +2 -1
  75. package/android/src/main/assets/saplingtree/mainnet/2010000.json +2 -1
  76. package/android/src/main/assets/saplingtree/mainnet/2020000.json +2 -1
  77. package/android/src/main/assets/saplingtree/mainnet/2030000.json +2 -1
  78. package/android/src/main/assets/saplingtree/mainnet/2040000.json +2 -1
  79. package/android/src/main/assets/saplingtree/mainnet/2050000.json +2 -1
  80. package/android/src/main/assets/saplingtree/mainnet/2060000.json +2 -1
  81. package/android/src/main/assets/saplingtree/mainnet/2070000.json +2 -1
  82. package/android/src/main/assets/saplingtree/mainnet/2080000.json +2 -1
  83. package/android/src/main/assets/saplingtree/mainnet/2090000.json +2 -1
  84. package/android/src/main/assets/saplingtree/mainnet/2100000.json +2 -1
  85. package/android/src/main/assets/saplingtree/mainnet/2110000.json +2 -1
  86. package/android/src/main/assets/saplingtree/mainnet/2120000.json +2 -1
  87. package/android/src/main/assets/saplingtree/mainnet/2130000.json +2 -1
  88. package/android/src/main/assets/saplingtree/mainnet/2140000.json +2 -1
  89. package/android/src/main/assets/saplingtree/mainnet/2150000.json +2 -1
  90. package/android/src/main/assets/saplingtree/mainnet/2160000.json +2 -1
  91. package/android/src/main/assets/saplingtree/mainnet/2170000.json +2 -1
  92. package/android/src/main/assets/saplingtree/mainnet/2180000.json +8 -0
  93. package/android/src/main/assets/saplingtree/mainnet/2190000.json +8 -0
  94. package/android/src/main/assets/saplingtree/mainnet/2200000.json +8 -0
  95. package/android/src/main/assets/saplingtree/mainnet/2210000.json +8 -0
  96. package/android/src/main/java/app/edge/rnzcash/RNZcashModule.kt +179 -175
  97. package/android/src/main/java/app/edge/rnzcash/RNZcashPackage.kt +2 -3
  98. package/ios/RNZcash.m +5 -22
  99. package/ios/RNZcash.swift +532 -514
  100. package/ios/ZCashLightClientKit/Block/CompactBlockProcessor.swift +1365 -0
  101. package/ios/ZCashLightClientKit/Block/DatabaseStorage/ConnectorProvider.swift +12 -0
  102. package/ios/ZCashLightClientKit/Block/DatabaseStorage/DatabaseStorageError.swift +20 -0
  103. package/ios/ZCashLightClientKit/Block/DatabaseStorage/SimpleConnectionProvider.swift +39 -0
  104. package/ios/ZCashLightClientKit/Block/Download/BlockDownloader.swift +295 -0
  105. package/ios/ZCashLightClientKit/Block/Download/BlockDownloaderService.swift +117 -0
  106. package/ios/ZCashLightClientKit/Block/Enhance/BlockEnhancer.swift +123 -0
  107. package/ios/ZCashLightClientKit/Block/FetchUnspentTxOutputs/UTXOFetcher.swift +114 -0
  108. package/ios/ZCashLightClientKit/Block/FilesystemStorage/FSCompactBlockRepository.swift +419 -0
  109. package/ios/ZCashLightClientKit/Block/SaplingParameters/SaplingParametersHandler.swift +52 -0
  110. package/ios/ZCashLightClientKit/Block/Scan/BlockScanner.swift +114 -0
  111. package/ios/ZCashLightClientKit/Block/Utils/AfterSyncHooksManager.swift +88 -0
  112. package/ios/ZCashLightClientKit/Block/Utils/InternalSyncProgress.swift +200 -0
  113. package/ios/ZCashLightClientKit/Block/Validate/BlockValidator.swift +51 -0
  114. package/ios/ZCashLightClientKit/ClosureSynchronizer.swift +84 -0
  115. package/ios/ZCashLightClientKit/CombineSynchronizer.swift +76 -0
  116. package/ios/ZCashLightClientKit/Constants/Checkpoint+Constants.swift +98 -0
  117. package/ios/ZCashLightClientKit/Constants/Checkpoint+mainnet.swift +19 -0
  118. package/ios/ZCashLightClientKit/Constants/Checkpoint+testnet.swift +20 -0
  119. package/ios/ZCashLightClientKit/Constants/ZcashSDK.swift +215 -0
  120. package/ios/ZCashLightClientKit/DAO/BlockDao.swift +112 -0
  121. package/ios/ZCashLightClientKit/DAO/PagedTransactionDao.swift +54 -0
  122. package/ios/ZCashLightClientKit/DAO/TransactionDao.swift +245 -0
  123. package/ios/ZCashLightClientKit/DAO/UnspentTransactionOutputDao.swift +210 -0
  124. package/ios/ZCashLightClientKit/Entity/AccountEntity.swift +199 -0
  125. package/ios/ZCashLightClientKit/Entity/BlockProgress.swift +24 -0
  126. package/ios/ZCashLightClientKit/Entity/EncodedTransactionEntity.swift +26 -0
  127. package/ios/ZCashLightClientKit/Entity/SentNoteEntity.swift +48 -0
  128. package/ios/ZCashLightClientKit/Entity/TransactionEntity.swift +235 -0
  129. package/ios/ZCashLightClientKit/Entity/UnspentTransactionOutputEntity.swift +18 -0
  130. package/ios/ZCashLightClientKit/Entity/ZcashCompactBlock.swift +96 -0
  131. package/ios/ZCashLightClientKit/Error/Sourcery/ZcashError.stencil +40 -0
  132. package/ios/ZCashLightClientKit/Error/Sourcery/ZcashErrorCode.stencil +15 -0
  133. package/ios/ZCashLightClientKit/Error/Sourcery/generateErrorCode.sh +34 -0
  134. package/ios/ZCashLightClientKit/Error/ZcashError.swift +820 -0
  135. package/ios/ZCashLightClientKit/Error/ZcashErrorCode.swift +306 -0
  136. package/ios/ZCashLightClientKit/Error/ZcashErrorCodeDefinition.swift +596 -0
  137. package/ios/ZCashLightClientKit/Extensions/Data+Zcash.swift +17 -0
  138. package/ios/ZCashLightClientKit/Extensions/Data+internal.swift +35 -0
  139. package/ios/ZCashLightClientKit/Extensions/Error+ZcashError.swift +18 -0
  140. package/ios/ZCashLightClientKit/Extensions/HexEncode.swift +41 -0
  141. package/ios/ZCashLightClientKit/Extensions/NumberFormatter+Zcash.swift +19 -0
  142. package/ios/ZCashLightClientKit/Extensions/URL+UpdateWithAlias.swift +36 -0
  143. package/ios/ZCashLightClientKit/Extensions/Undescribable.swift +22 -0
  144. package/ios/ZCashLightClientKit/Extensions/Zatoshi+SQLite.swift +20 -0
  145. package/ios/ZCashLightClientKit/Extensions/ZcashRust+Utils.swift +26 -0
  146. package/ios/ZCashLightClientKit/Extensions/ZcashSDK+extensions.swift +34 -0
  147. package/ios/ZCashLightClientKit/Initializer.swift +433 -0
  148. package/ios/ZCashLightClientKit/Metrics/SDKMetrics.swift +270 -0
  149. package/ios/ZCashLightClientKit/Model/Checkpoint.swift +84 -0
  150. package/ios/ZCashLightClientKit/Model/Memo.swift +236 -0
  151. package/ios/ZCashLightClientKit/Model/WalletTypes.swift +281 -0
  152. package/ios/ZCashLightClientKit/Model/Zatoshi.swift +115 -0
  153. package/ios/ZCashLightClientKit/Modules/Service/GRPC/LightWalletGRPCService.swift +342 -0
  154. package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/Extensions/Protocolbuffer+Extensions.swift +50 -0
  155. package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/compact_formats.pb.swift +399 -0
  156. package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/proto/compact_formats.proto +66 -0
  157. package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/proto/service.proto +185 -0
  158. package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/service.grpc.swift +1123 -0
  159. package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/service.pb.swift +1208 -0
  160. package/ios/ZCashLightClientKit/Modules/Service/LightWalletService.swift +195 -0
  161. package/ios/ZCashLightClientKit/Providers/LatestBlocksDataProvider.swift +69 -0
  162. package/ios/ZCashLightClientKit/Providers/ResourceProvider.swift +65 -0
  163. package/ios/ZCashLightClientKit/Repository/BlockRepository.swift +13 -0
  164. package/ios/ZCashLightClientKit/Repository/CompactBlockRepository.swift +43 -0
  165. package/ios/ZCashLightClientKit/Repository/NotesRepository.swift +17 -0
  166. package/ios/ZCashLightClientKit/Repository/PaginatedTransactionRepository.swift +35 -0
  167. package/ios/ZCashLightClientKit/Repository/TransactionRepository.swift +29 -0
  168. package/ios/ZCashLightClientKit/Repository/TransactionRepositoryBuilder.swift +24 -0
  169. package/ios/ZCashLightClientKit/Repository/UnspentTransactionOutputRepository.swift +16 -0
  170. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1000000.json +7 -0
  171. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1010000.json +7 -0
  172. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1020000.json +7 -0
  173. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1030000.json +7 -0
  174. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1040000.json +7 -0
  175. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1050000.json +7 -0
  176. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1060000.json +7 -0
  177. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1070000.json +7 -0
  178. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1080000.json +7 -0
  179. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1090000.json +7 -0
  180. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1100000.json +7 -0
  181. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1110000.json +7 -0
  182. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1120000.json +7 -0
  183. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1130000.json +7 -0
  184. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1140000.json +7 -0
  185. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1150000.json +7 -0
  186. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1160000.json +7 -0
  187. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1170000.json +7 -0
  188. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1180000.json +7 -0
  189. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1190000.json +7 -0
  190. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1200000.json +7 -0
  191. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1210000.json +7 -0
  192. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1220000.json +7 -0
  193. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1230000.json +7 -0
  194. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1240000.json +7 -0
  195. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1250000.json +7 -0
  196. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1260000.json +7 -0
  197. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1270000.json +7 -0
  198. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1280000.json +7 -0
  199. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1290000.json +7 -0
  200. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1300000.json +7 -0
  201. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1310000.json +7 -0
  202. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1320000.json +7 -0
  203. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1330000.json +7 -0
  204. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1340000.json +7 -0
  205. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1350000.json +7 -0
  206. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1360000.json +7 -0
  207. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1370000.json +7 -0
  208. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1380000.json +7 -0
  209. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1390000.json +7 -0
  210. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1400000.json +7 -0
  211. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1410000.json +7 -0
  212. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1420000.json +7 -0
  213. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1430000.json +7 -0
  214. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1440000.json +7 -0
  215. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1450000.json +7 -0
  216. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1460000.json +7 -0
  217. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1470000.json +7 -0
  218. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1480000.json +7 -0
  219. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1490000.json +7 -0
  220. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1500000.json +7 -0
  221. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1510000.json +7 -0
  222. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1520000.json +7 -0
  223. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1530000.json +7 -0
  224. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1540000.json +7 -0
  225. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1550000.json +7 -0
  226. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1560000.json +7 -0
  227. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1570000.json +7 -0
  228. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1580000.json +7 -0
  229. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1590000.json +7 -0
  230. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1600000.json +7 -0
  231. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1610000.json +7 -0
  232. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1620000.json +7 -0
  233. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1630000.json +7 -0
  234. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1631000.json +7 -0
  235. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1640000.json +7 -0
  236. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1650000.json +7 -0
  237. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1660000.json +7 -0
  238. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1670000.json +7 -0
  239. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1680000.json +7 -0
  240. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1686871.json +7 -0
  241. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1687104.json +8 -0
  242. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1690000.json +8 -0
  243. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1700000.json +8 -0
  244. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1710000.json +8 -0
  245. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1720000.json +8 -0
  246. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1722500.json +8 -0
  247. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1725000.json +8 -0
  248. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1727500.json +8 -0
  249. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1730000.json +8 -0
  250. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1732500.json +8 -0
  251. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1735000.json +8 -0
  252. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1737500.json +8 -0
  253. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1740000.json +8 -0
  254. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1742500.json +8 -0
  255. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1745000.json +8 -0
  256. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1747500.json +8 -0
  257. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1750000.json +8 -0
  258. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1752500.json +8 -0
  259. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1755000.json +9 -0
  260. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1757500.json +8 -0
  261. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1760000.json +8 -0
  262. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1762500.json +8 -0
  263. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1765000.json +8 -0
  264. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1767500.json +8 -0
  265. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1770000.json +8 -0
  266. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1772500.json +8 -0
  267. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1775000.json +8 -0
  268. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1777500.json +8 -0
  269. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1780000.json +8 -0
  270. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1782500.json +8 -0
  271. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1785000.json +8 -0
  272. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1787500.json +8 -0
  273. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1790000.json +8 -0
  274. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1792500.json +8 -0
  275. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1795000.json +8 -0
  276. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1797500.json +8 -0
  277. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1800000.json +8 -0
  278. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1802500.json +8 -0
  279. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1805000.json +8 -0
  280. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1807500.json +8 -0
  281. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1810000.json +8 -0
  282. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1812500.json +8 -0
  283. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1815000.json +8 -0
  284. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1817500.json +8 -0
  285. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1820000.json +8 -0
  286. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1822500.json +8 -0
  287. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1825000.json +8 -0
  288. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1827500.json +8 -0
  289. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1830000.json +8 -0
  290. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1832500.json +8 -0
  291. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1835000.json +8 -0
  292. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1837500.json +8 -0
  293. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1840000.json +8 -0
  294. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1842500.json +8 -0
  295. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1845000.json +8 -0
  296. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1847500.json +8 -0
  297. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1850000.json +8 -0
  298. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1852500.json +8 -0
  299. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1855000.json +8 -0
  300. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1857500.json +8 -0
  301. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1860000.json +8 -0
  302. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1862500.json +8 -0
  303. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1865000.json +8 -0
  304. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1867500.json +8 -0
  305. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1870000.json +8 -0
  306. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1872500.json +8 -0
  307. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1875000.json +8 -0
  308. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1877500.json +8 -0
  309. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1880000.json +8 -0
  310. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1882500.json +8 -0
  311. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1885000.json +8 -0
  312. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1887500.json +8 -0
  313. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1890000.json +8 -0
  314. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1892500.json +8 -0
  315. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1895000.json +8 -0
  316. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1897500.json +8 -0
  317. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1900000.json +8 -0
  318. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1902500.json +8 -0
  319. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1905000.json +8 -0
  320. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1907500.json +8 -0
  321. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1910000.json +8 -0
  322. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1912500.json +8 -0
  323. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1915000.json +8 -0
  324. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1917500.json +8 -0
  325. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1920000.json +8 -0
  326. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1922500.json +8 -0
  327. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1925000.json +8 -0
  328. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1927500.json +8 -0
  329. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1930000.json +8 -0
  330. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1932500.json +8 -0
  331. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1935000.json +8 -0
  332. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1937500.json +8 -0
  333. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1940000.json +8 -0
  334. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1942500.json +8 -0
  335. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1945000.json +8 -0
  336. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1947500.json +8 -0
  337. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1950000.json +8 -0
  338. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1952500.json +8 -0
  339. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1955000.json +8 -0
  340. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1957500.json +8 -0
  341. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1960000.json +8 -0
  342. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1962500.json +8 -0
  343. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1965000.json +8 -0
  344. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1967500.json +8 -0
  345. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1970000.json +8 -0
  346. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1972500.json +8 -0
  347. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1975000.json +8 -0
  348. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1977500.json +8 -0
  349. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1980000.json +8 -0
  350. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1982500.json +8 -0
  351. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1985000.json +8 -0
  352. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1987500.json +8 -0
  353. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1990000.json +8 -0
  354. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1992500.json +8 -0
  355. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1995000.json +8 -0
  356. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1997500.json +8 -0
  357. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2000000.json +8 -0
  358. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2002500.json +8 -0
  359. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2005000.json +8 -0
  360. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2007500.json +8 -0
  361. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2010000.json +8 -0
  362. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2012500.json +8 -0
  363. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2015000.json +8 -0
  364. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2017500.json +8 -0
  365. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2020000.json +8 -0
  366. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2022500.json +8 -0
  367. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2025000.json +8 -0
  368. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2027500.json +8 -0
  369. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2030000.json +8 -0
  370. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2032500.json +8 -0
  371. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2035000.json +8 -0
  372. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2037500.json +8 -0
  373. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2040000.json +8 -0
  374. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2042500.json +8 -0
  375. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2045000.json +8 -0
  376. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2047500.json +8 -0
  377. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2050000.json +8 -0
  378. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2052500.json +8 -0
  379. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2055000.json +8 -0
  380. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2057500.json +8 -0
  381. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2060000.json +8 -0
  382. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2062500.json +8 -0
  383. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2065000.json +8 -0
  384. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2067500.json +8 -0
  385. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2070000.json +8 -0
  386. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2072500.json +8 -0
  387. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2075000.json +8 -0
  388. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2077500.json +8 -0
  389. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2080000.json +8 -0
  390. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2082500.json +8 -0
  391. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2085000.json +8 -0
  392. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2087500.json +8 -0
  393. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2090000.json +8 -0
  394. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2100000.json +8 -0
  395. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2110000.json +8 -0
  396. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2120000.json +8 -0
  397. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2130000.json +8 -0
  398. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2140000.json +8 -0
  399. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2150000.json +8 -0
  400. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2160000.json +8 -0
  401. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2170000.json +8 -0
  402. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2180000.json +8 -0
  403. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2190000.json +8 -0
  404. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2200000.json +8 -0
  405. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2210000.json +8 -0
  406. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/419200.json +7 -0
  407. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/500000.json +7 -0
  408. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/510000.json +7 -0
  409. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/520000.json +7 -0
  410. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/530000.json +7 -0
  411. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/540000.json +7 -0
  412. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/550000.json +7 -0
  413. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/560000.json +7 -0
  414. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/570000.json +7 -0
  415. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/580000.json +7 -0
  416. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/590000.json +7 -0
  417. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/600000.json +7 -0
  418. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/610000.json +7 -0
  419. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/620000.json +7 -0
  420. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/630000.json +7 -0
  421. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/640000.json +7 -0
  422. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/650000.json +7 -0
  423. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/660000.json +7 -0
  424. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/663150.json +8 -0
  425. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/670000.json +7 -0
  426. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/680000.json +7 -0
  427. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/690000.json +7 -0
  428. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/700000.json +7 -0
  429. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/710000.json +7 -0
  430. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/720000.json +7 -0
  431. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/730000.json +7 -0
  432. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/740000.json +7 -0
  433. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/750000.json +7 -0
  434. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/760000.json +7 -0
  435. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/770000.json +7 -0
  436. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/780000.json +7 -0
  437. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/790000.json +7 -0
  438. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/800000.json +7 -0
  439. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/810000.json +7 -0
  440. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/820000.json +7 -0
  441. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/830000.json +7 -0
  442. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/840000.json +7 -0
  443. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/850000.json +7 -0
  444. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/860000.json +7 -0
  445. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/870000.json +7 -0
  446. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/880000.json +7 -0
  447. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/890000.json +7 -0
  448. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/900000.json +7 -0
  449. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/910000.json +7 -0
  450. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/920000.json +7 -0
  451. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/930000.json +7 -0
  452. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/940000.json +7 -0
  453. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/950000.json +7 -0
  454. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/960000.json +7 -0
  455. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/970000.json +7 -0
  456. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/980000.json +7 -0
  457. package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/990000.json +7 -0
  458. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1000000.json +7 -0
  459. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1010000.json +7 -0
  460. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1020000.json +7 -0
  461. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1030000.json +7 -0
  462. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1040000.json +7 -0
  463. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1050000.json +7 -0
  464. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1060000.json +7 -0
  465. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1070000.json +7 -0
  466. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1080000.json +7 -0
  467. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1090000.json +7 -0
  468. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1100000.json +7 -0
  469. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1110000.json +7 -0
  470. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1120000.json +7 -0
  471. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1130000.json +7 -0
  472. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1140000.json +7 -0
  473. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1150000.json +7 -0
  474. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1160000.json +7 -0
  475. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1170000.json +7 -0
  476. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1180000.json +7 -0
  477. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1190000.json +7 -0
  478. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1200000.json +7 -0
  479. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1210000.json +7 -0
  480. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1220000.json +7 -0
  481. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1230000.json +7 -0
  482. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1240000.json +7 -0
  483. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1250000.json +7 -0
  484. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1260000.json +7 -0
  485. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1270000.json +7 -0
  486. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1280000.json +7 -0
  487. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1290000.json +7 -0
  488. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1300000.json +7 -0
  489. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1310000.json +7 -0
  490. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1320000.json +7 -0
  491. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1330000.json +7 -0
  492. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1340000.json +7 -0
  493. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1350000.json +7 -0
  494. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1360000.json +7 -0
  495. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1370000.json +7 -0
  496. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1380000.json +7 -0
  497. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1390000.json +7 -0
  498. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1400000.json +7 -0
  499. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1410000.json +7 -0
  500. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1420000.json +7 -0
  501. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1430000.json +7 -0
  502. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1440000.json +7 -0
  503. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1450000.json +7 -0
  504. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1460000.json +7 -0
  505. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1470000.json +7 -0
  506. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1480000.json +7 -0
  507. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1490000.json +7 -0
  508. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1500000.json +7 -0
  509. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1510000.json +7 -0
  510. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1520000.json +7 -0
  511. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1530000.json +7 -0
  512. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1540000.json +7 -0
  513. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1550000.json +7 -0
  514. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1560000.json +7 -0
  515. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1570000.json +7 -0
  516. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1580000.json +7 -0
  517. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1590000.json +7 -0
  518. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1600000.json +7 -0
  519. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1610000.json +7 -0
  520. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1620000.json +7 -0
  521. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1630000.json +7 -0
  522. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1640000.json +7 -0
  523. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1650000.json +7 -0
  524. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1660000.json +7 -0
  525. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1670000.json +7 -0
  526. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1680000.json +7 -0
  527. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1690000.json +7 -0
  528. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1700000.json +7 -0
  529. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1710000.json +7 -0
  530. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1720000.json +7 -0
  531. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1730000.json +7 -0
  532. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1740000.json +7 -0
  533. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1750000.json +7 -0
  534. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1760000.json +7 -0
  535. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1770000.json +7 -0
  536. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1780000.json +7 -0
  537. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1790000.json +7 -0
  538. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1800000.json +7 -0
  539. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1810000.json +7 -0
  540. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1820000.json +7 -0
  541. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1830000.json +7 -0
  542. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1840000.json +7 -0
  543. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1842420.json +8 -0
  544. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1850000.json +8 -0
  545. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1860000.json +8 -0
  546. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1870000.json +8 -0
  547. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1880000.json +8 -0
  548. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1890000.json +8 -0
  549. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1900000.json +8 -0
  550. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1910000.json +8 -0
  551. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1920000.json +8 -0
  552. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1930000.json +8 -0
  553. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1940000.json +8 -0
  554. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1950000.json +8 -0
  555. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1960000.json +8 -0
  556. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1970000.json +8 -0
  557. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1980000.json +8 -0
  558. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1990000.json +8 -0
  559. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2000000.json +8 -0
  560. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2010000.json +8 -0
  561. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2020000.json +8 -0
  562. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2030000.json +8 -0
  563. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2040000.json +8 -0
  564. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2050000.json +8 -0
  565. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2060000.json +8 -0
  566. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2070000.json +8 -0
  567. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2080000.json +8 -0
  568. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2090000.json +8 -0
  569. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2100000.json +8 -0
  570. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2110000.json +8 -0
  571. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2120000.json +8 -0
  572. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2130000.json +8 -0
  573. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2140000.json +8 -0
  574. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2150000.json +8 -0
  575. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2160000.json +8 -0
  576. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2170000.json +8 -0
  577. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2180000.json +8 -0
  578. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2190000.json +8 -0
  579. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2200000.json +8 -0
  580. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2210000.json +8 -0
  581. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2220000.json +8 -0
  582. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2230000.json +8 -0
  583. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2240000.json +8 -0
  584. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2250000.json +8 -0
  585. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2260000.json +8 -0
  586. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2270000.json +8 -0
  587. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2280000.json +8 -0
  588. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2290000.json +8 -0
  589. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2300000.json +8 -0
  590. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2310000.json +8 -0
  591. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2320000.json +8 -0
  592. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2330000.json +8 -0
  593. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2340000.json +8 -0
  594. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/280000.json +7 -0
  595. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/290000.json +7 -0
  596. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/300000.json +7 -0
  597. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/310000.json +7 -0
  598. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/320000.json +7 -0
  599. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/330000.json +7 -0
  600. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/340000.json +7 -0
  601. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/350000.json +7 -0
  602. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/360000.json +7 -0
  603. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/370000.json +7 -0
  604. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/380000.json +7 -0
  605. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/390000.json +7 -0
  606. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/400000.json +7 -0
  607. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/410000.json +7 -0
  608. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/420000.json +7 -0
  609. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/430000.json +7 -0
  610. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/440000.json +7 -0
  611. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/450000.json +7 -0
  612. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/460000.json +7 -0
  613. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/470000.json +7 -0
  614. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/480000.json +7 -0
  615. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/490000.json +7 -0
  616. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/500000.json +7 -0
  617. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/510000.json +7 -0
  618. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/520000.json +7 -0
  619. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/530000.json +7 -0
  620. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/540000.json +7 -0
  621. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/550000.json +7 -0
  622. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/560000.json +7 -0
  623. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/570000.json +7 -0
  624. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/580000.json +7 -0
  625. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/590000.json +7 -0
  626. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/600000.json +7 -0
  627. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/610000.json +7 -0
  628. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/620000.json +7 -0
  629. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/630000.json +7 -0
  630. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/640000.json +7 -0
  631. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/650000.json +7 -0
  632. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/660000.json +7 -0
  633. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/670000.json +7 -0
  634. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/680000.json +7 -0
  635. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/690000.json +7 -0
  636. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/700000.json +7 -0
  637. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/710000.json +7 -0
  638. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/720000.json +7 -0
  639. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/730000.json +7 -0
  640. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/740000.json +7 -0
  641. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/750000.json +7 -0
  642. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/760000.json +7 -0
  643. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/770000.json +7 -0
  644. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/780000.json +7 -0
  645. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/790000.json +7 -0
  646. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/800000.json +7 -0
  647. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/810000.json +7 -0
  648. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/820000.json +7 -0
  649. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/830000.json +7 -0
  650. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/840000.json +7 -0
  651. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/850000.json +7 -0
  652. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/860000.json +7 -0
  653. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/870000.json +7 -0
  654. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/880000.json +7 -0
  655. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/890000.json +7 -0
  656. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/900000.json +7 -0
  657. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/910000.json +7 -0
  658. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/920000.json +7 -0
  659. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/930000.json +7 -0
  660. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/940000.json +7 -0
  661. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/950000.json +7 -0
  662. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/960000.json +7 -0
  663. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/970000.json +7 -0
  664. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/980000.json +7 -0
  665. package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/990000.json +7 -0
  666. package/ios/ZCashLightClientKit/Rust/ZcashKeyDerivationBackend.swift +218 -0
  667. package/ios/ZCashLightClientKit/Rust/ZcashKeyDerivationBackendWelding.swift +88 -0
  668. package/ios/ZCashLightClientKit/Rust/ZcashRustBackend.swift +645 -0
  669. package/ios/ZCashLightClientKit/Rust/ZcashRustBackendWelding.swift +256 -0
  670. package/ios/ZCashLightClientKit/Rust/zcashlc.h +1051 -0
  671. package/ios/ZCashLightClientKit/Synchronizer/ClosureSDKSynchronizer.swift +180 -0
  672. package/ios/ZCashLightClientKit/Synchronizer/CombineSDKSynchronizer.swift +175 -0
  673. package/ios/ZCashLightClientKit/Synchronizer/Dependencies.swift +207 -0
  674. package/ios/ZCashLightClientKit/Synchronizer/SDKSynchronizer.swift +663 -0
  675. package/ios/ZCashLightClientKit/Synchronizer.swift +504 -0
  676. package/ios/ZCashLightClientKit/Tool/DerivationTool.swift +207 -0
  677. package/ios/ZCashLightClientKit/Transaction/TransactionEncoder.swift +66 -0
  678. package/ios/ZCashLightClientKit/Transaction/WalletTransactionEncoder.swift +165 -0
  679. package/ios/ZCashLightClientKit/Utils/AsyncToClosureGateway.swift +46 -0
  680. package/ios/ZCashLightClientKit/Utils/AsyncToCombineGateway.swift +59 -0
  681. package/ios/ZCashLightClientKit/Utils/Clamped.swift +32 -0
  682. package/ios/ZCashLightClientKit/Utils/DIContainer.swift +86 -0
  683. package/ios/ZCashLightClientKit/Utils/GenericActor.swift +18 -0
  684. package/ios/ZCashLightClientKit/Utils/LoggingProxy.swift +48 -0
  685. package/ios/ZCashLightClientKit/Utils/OSLogger.swift +109 -0
  686. package/ios/ZCashLightClientKit/Utils/SaplingParameterDownloader.swift +159 -0
  687. package/ios/ZCashLightClientKit/Utils/SpecificCombineTypes.swift +16 -0
  688. package/ios/ZCashLightClientKit/Utils/SyncSessionIDGenerator.swift +32 -0
  689. package/ios/ZCashLightClientKit/Utils/Task+sleep.swift +14 -0
  690. package/ios/ZCashLightClientKit/Utils/UsedAliasesChecker.swift +41 -0
  691. package/ios/libzcashlc.xcframework/Info.plist +40 -0
  692. package/ios/libzcashlc.xcframework/ios-arm64/libzcashlc.a +0 -0
  693. package/ios/libzcashlc.xcframework/ios-arm64_x86_64-simulator/libzcashlc.a +0 -0
  694. package/ios/react-native-zcash-Bridging-Header.h +2 -0
  695. package/ios/react-native-zcash.xcodeproj/project.pbxproj +1 -0
  696. package/lib/rnzcash.rn.js +37 -80
  697. package/lib/rnzcash.rn.js.map +1 -1
  698. package/lib/scripts/copyCheckpoints.d.ts +5 -0
  699. package/lib/scripts/updateSources.d.ts +1 -0
  700. package/lib/src/react-native.d.ts +5 -10
  701. package/lib/src/types.d.ts +3 -4
  702. package/package.json +23 -37
  703. package/react-native-zcash.podspec +19 -8
  704. package/src/react-native.ts +15 -41
  705. package/src/types.ts +3 -4
  706. package/ios/RNZcash-Bridging-Header.h +0 -6
  707. package/ios/RNZcash.xcodeproj/project.pbxproj +0 -271
  708. package/ios/RNZcash.xcworkspace/contents.xcworkspacedata +0 -7
  709. package/ios/RNZcash.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  710. package/lib/src/browser.d.ts +0 -0
  711. package/lib/src/index.d.ts +0 -0
  712. package/lib/test/test.test.d.ts +0 -0
  713. package/scripts/copyCheckpoints.js +0 -12
  714. package/src/browser.ts +0 -36
  715. package/src/index.flow.js +0 -168
  716. package/src/index.ts +0 -1
package/ios/RNZcash.swift CHANGED
@@ -1,582 +1,600 @@
1
+ import Combine
1
2
  import Foundation
2
- import ZcashLightClientKit
3
+ import MnemonicSwift
3
4
  import os
4
5
 
5
6
  var SynchronizerMap = [String: WalletSynchronizer]()
6
- var loggerProxy = RNZcashLogger(logLevel: .debug)
7
-
8
- struct ViewingKey: UnifiedViewingKey {
9
- var extfvk: ExtendedFullViewingKey
10
- var extpub: ExtendedPublicKey
11
- }
12
7
 
13
8
  struct ConfirmedTx {
14
- var minedHeight: Int
15
- var toAddress: String?
16
- var rawTransactionId: String
17
- var blockTimeInSeconds: Int
18
- var value: String
19
- var memo: String?
20
- var dictionary: [String: Any] {
21
- return [
22
- "minedHeight": minedHeight,
23
- "toAddress": toAddress,
24
- "rawTransactionId": rawTransactionId,
25
- "blockTimeInSeconds": blockTimeInSeconds,
26
- "value": value,
27
- "memo": memo
28
- ]
29
- }
30
- var nsDictionary: NSDictionary {
31
- return dictionary as NSDictionary
32
- }
9
+ var minedHeight: Int
10
+ var toAddress: String?
11
+ var rawTransactionId: String
12
+ var blockTimeInSeconds: Int
13
+ var value: String
14
+ var memo: Array<String>?
15
+ var dictionary: [String: Any?] {
16
+ return [
17
+ "minedHeight": minedHeight,
18
+ "toAddress": toAddress,
19
+ "rawTransactionId": rawTransactionId,
20
+ "blockTimeInSeconds": blockTimeInSeconds,
21
+ "value": value,
22
+ "memo": memo,
23
+ ]
24
+ }
25
+ var nsDictionary: NSDictionary {
26
+ return dictionary as NSDictionary
27
+ }
33
28
  }
34
29
 
35
- struct ShieldedBalance {
36
- var availableZatoshi: String
37
- var totalZatoshi: String
38
- var dictionary: [String: Any] {
39
- return [
40
- "availableZatoshi": availableZatoshi,
41
- "totalZatoshi": totalZatoshi
42
- ]
43
- }
44
- var nsDictionary: NSDictionary {
45
- return dictionary as NSDictionary
46
- }
30
+ struct TotalBalances {
31
+ var availableZatoshi: String
32
+ var totalZatoshi: String
33
+ var dictionary: [String: Any] {
34
+ return [
35
+ "availableZatoshi": availableZatoshi,
36
+ "totalZatoshi": totalZatoshi,
37
+ ]
38
+ }
39
+ var nsDictionary: NSDictionary {
40
+ return dictionary as NSDictionary
41
+ }
47
42
  }
48
43
 
49
44
  struct ProcessorState {
50
- var alias: String
51
- var lastDownloadedHeight: Int
52
- var lastScannedHeight: Int
53
- var scanProgress: Int
54
- var networkBlockHeight: Int
55
- var dictionary: [String: Any] {
56
- return [
57
- "alias": alias,
58
- "lastDownloadedHeight": lastDownloadedHeight,
59
- "lastScannedHeight": lastScannedHeight,
60
- "scanProgress": scanProgress,
61
- "networkBlockHeight": networkBlockHeight
62
- ]
63
- }
64
- var nsDictionary: NSDictionary {
65
- return dictionary as NSDictionary
66
- }
45
+ var alias: String
46
+ var lastDownloadedHeight: Int
47
+ var lastScannedHeight: Int
48
+ var scanProgress: Int
49
+ var networkBlockHeight: Int
50
+ var dictionary: [String: Any] {
51
+ return [
52
+ "alias": alias,
53
+ "lastDownloadedHeight": lastDownloadedHeight,
54
+ "lastScannedHeight": lastScannedHeight,
55
+ "scanProgress": scanProgress,
56
+ "networkBlockHeight": networkBlockHeight,
57
+ ]
58
+ }
59
+ var nsDictionary: NSDictionary {
60
+ return dictionary as NSDictionary
61
+ }
67
62
  }
68
63
 
69
64
  // Used when calling reject where there isn't an error object
70
65
  let genericError = NSError(domain: "", code: 0)
71
66
 
72
67
  @objc(RNZcash)
73
- class RNZcash : RCTEventEmitter {
68
+ class RNZcash: RCTEventEmitter {
74
69
 
75
- override static func requiresMainQueueSetup() -> Bool {
76
- return true
77
- }
70
+ override static func requiresMainQueueSetup() -> Bool {
71
+ return true
72
+ }
78
73
 
79
- private func getNetworkParams(_ network: String) -> ZcashNetwork {
74
+ private func getNetworkParams(_ network: String) -> ZcashNetwork {
80
75
  switch network {
81
- case "testnet":
82
- return ZcashNetworkBuilder.network(for: .testnet)
83
- default:
84
- return ZcashNetworkBuilder.network(for: .mainnet)
85
- }
86
- }
87
-
88
- // Synchronizer
89
- @objc func initialize(_ extfvk: String, _ extpub: String, _ birthdayHeight: Int, _ alias: String, _ networkName: String, _ defaultHost: String, _ defaultPort: Int, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
90
- let network = getNetworkParams(networkName)
91
- let endpoint = LightWalletEndpoint(address: defaultHost, port: defaultPort, secure: true)
92
- let viewingKey = ViewingKey(extfvk: extfvk, extpub:extpub)
93
- let initializer = Initializer(
94
- cacheDbURL: try! cacheDbURLHelper(alias, network),
95
- dataDbURL: try! dataDbURLHelper(alias, network),
96
- pendingDbURL: try! pendingDbURLHelper(alias, network),
97
- endpoint: endpoint,
98
- network: network,
99
- spendParamsURL: try! spendParamsURLHelper(alias),
100
- outputParamsURL: try! outputParamsURLHelper(alias),
101
- viewingKeys: [viewingKey],
102
- walletBirthday: birthdayHeight,
103
- loggerProxy: loggerProxy
104
- )
105
- if (SynchronizerMap[alias] == nil) {
106
- do {
107
- let wallet = try WalletSynchronizer(alias:alias, initializer:initializer, emitter:sendToJs)
108
- try wallet.synchronizer.initialize()
109
- try wallet.synchronizer.prepare()
110
- SynchronizerMap[alias] = wallet
111
- resolve(nil)
112
- } catch {
113
- reject("InitializeError", "Synchronizer failed to initialize", error)
114
- }
115
- } else {
116
- // Wallet already initialized
117
- resolve(nil)
76
+ case "testnet":
77
+ return ZcashNetworkBuilder.network(for: .testnet)
78
+ default:
79
+ return ZcashNetworkBuilder.network(for: .mainnet)
80
+ }
81
+ }
82
+
83
+ // Synchronizer
84
+ @objc func initialize(
85
+ _ seed: String, _ birthdayHeight: Int, _ alias: String, _ networkName: String,
86
+ _ defaultHost: String, _ defaultPort: Int, resolver resolve: @escaping RCTPromiseResolveBlock,
87
+ rejecter reject: @escaping RCTPromiseRejectBlock
88
+ ) {
89
+ Task {
90
+ let network = getNetworkParams(networkName)
91
+ let endpoint = LightWalletEndpoint(address: defaultHost, port: defaultPort, secure: true)
92
+ let initializer = Initializer(
93
+ cacheDbURL: try! cacheDbURLHelper(alias, network),
94
+ fsBlockDbRoot: try! fsBlockDbRootURLHelper(alias, network),
95
+ dataDbURL: try! dataDbURLHelper(alias, network),
96
+ endpoint: endpoint,
97
+ network: network,
98
+ spendParamsURL: try! spendParamsURLHelper(alias),
99
+ outputParamsURL: try! outputParamsURLHelper(alias),
100
+ saplingParamsSourceURL: SaplingParamsSourceURL.default,
101
+ alias: ZcashSynchronizerAlias.custom(alias)
102
+ )
103
+ if SynchronizerMap[alias] == nil {
104
+ do {
105
+ let wallet = try WalletSynchronizer(
106
+ alias: alias, initializer: initializer, emitter: sendToJs)
107
+ let seedBytes = try Mnemonic.deterministicSeedBytes(from: seed)
108
+ let viewingKeys = try deriveUnifiedViewingKey(seed, network)
109
+
110
+ _ = try await wallet.synchronizer.prepare(
111
+ with: seedBytes,
112
+ viewingKeys: [viewingKeys],
113
+ walletBirthday: birthdayHeight
114
+ )
115
+ try await wallet.synchronizer.start()
116
+ wallet.subscribe()
117
+ SynchronizerMap[alias] = wallet
118
+ resolve(nil)
119
+ } catch {
120
+ reject("InitializeError", "Synchronizer failed to initialize", error)
118
121
  }
119
- }
120
-
121
- @objc func start(_ alias: String, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
122
- if let wallet = SynchronizerMap[alias] {
123
- do {
124
- try wallet.synchronizer.start()
125
- wallet.subscribe()
126
- } catch {
127
- reject("StartError", "Synchronizer failed to start", error)
128
- }
129
- resolve(nil)
130
- } else {
131
- reject("StartError", "Wallet does not exist", genericError)
122
+ } else {
123
+ // Wallet already initialized
124
+ resolve(nil)
125
+ }
126
+ }
127
+ }
128
+
129
+ @objc func start(
130
+ _ alias: String, resolver resolve: @escaping RCTPromiseResolveBlock,
131
+ rejecter reject: @escaping RCTPromiseRejectBlock
132
+ ) {
133
+ Task {
134
+ if let wallet = SynchronizerMap[alias] {
135
+ do {
136
+ try await wallet.synchronizer.start()
137
+ wallet.subscribe()
138
+ } catch {
139
+ reject("StartError", "Synchronizer failed to start", error)
132
140
  }
133
- }
134
-
135
- @objc func stop(_ alias: String, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
136
- if let wallet = SynchronizerMap[alias] {
137
- wallet.synchronizer.stop()
138
- SynchronizerMap[alias] = nil
139
- resolve(nil)
140
- } else {
141
- reject("StopError", "Wallet does not exist", genericError)
141
+ resolve(nil)
142
+ } else {
143
+ reject("StartError", "Wallet does not exist", genericError)
144
+ }
145
+ }
146
+ }
147
+
148
+ @objc func stop(
149
+ _ alias: String, resolver resolve: @escaping RCTPromiseResolveBlock,
150
+ rejecter reject: @escaping RCTPromiseRejectBlock
151
+ ) {
152
+ if let wallet = SynchronizerMap[alias] {
153
+ wallet.synchronizer.stop()
154
+ wallet.cancellables.forEach { $0.cancel() }
155
+ SynchronizerMap[alias] = nil
156
+ resolve(nil)
157
+ } else {
158
+ reject("StopError", "Wallet does not exist", genericError)
159
+ }
160
+ }
161
+
162
+ @objc func getLatestNetworkHeight(
163
+ _ alias: String, resolver resolve: @escaping RCTPromiseResolveBlock,
164
+ rejecter reject: @escaping RCTPromiseRejectBlock
165
+ ) {
166
+ Task {
167
+ if let wallet = SynchronizerMap[alias] {
168
+ do {
169
+ let height = try await wallet.synchronizer.latestHeight()
170
+ resolve(height)
171
+ } catch {
172
+ reject("getLatestNetworkHeight", "Failed to query blockheight", error)
142
173
  }
143
- }
144
-
145
- @objc func getLatestNetworkHeight(_ alias: String, resolver resolve:@escaping RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {
146
- if let wallet = SynchronizerMap[alias] {
147
- do {
148
- let height = try wallet.synchronizer.latestHeight()
149
- resolve(height)
150
- } catch {
151
- reject("getLatestNetworkHeight", "Failed to query blockheight", error)
152
- }
153
- } else {
154
- reject("getLatestNetworkHeightError", "Wallet does not exist", genericError)
174
+ } else {
175
+ reject("getLatestNetworkHeightError", "Wallet does not exist", genericError)
176
+ }
177
+ }
178
+ }
179
+
180
+ // A convenience method to get the block height when the synchronizer isn't running
181
+ @objc func getBirthdayHeight(
182
+ _ host: String, _ port: Int, resolver resolve: @escaping RCTPromiseResolveBlock,
183
+ rejecter reject: @escaping RCTPromiseRejectBlock
184
+ ) {
185
+ Task {
186
+ do {
187
+ let endpoint = LightWalletEndpoint(address: host, port: port, secure: true)
188
+ let lightwalletd: LightWalletService = LightWalletGRPCService(endpoint: endpoint)
189
+ let height = try await lightwalletd.latestBlockHeight()
190
+ lightwalletd.closeConnection()
191
+ resolve(height)
192
+ } catch {
193
+ reject("getLatestNetworkHeightGrpc", "Failed to query blockheight", error)
194
+ }
195
+ }
196
+ }
197
+
198
+ @objc func sendToAddress(
199
+ _ alias: String, _ zatoshi: String, _ toAddress: String, _ memo: String, _ seed: String,
200
+ resolver resolve: @escaping RCTPromiseResolveBlock,
201
+ rejecter reject: @escaping RCTPromiseRejectBlock
202
+ ) {
203
+ Task {
204
+ if let wallet = SynchronizerMap[alias] {
205
+ let amount = Int64(zatoshi)
206
+ if amount == nil {
207
+ reject("SpendToAddressError", "Amount is invalid", genericError)
208
+ return
155
209
  }
156
- }
157
210
 
158
- // A convenience method to get the block height when the synchronizer isn't running
159
- @objc func getBirthdayHeight(_ host: String, _ port: Int, resolver resolve:@escaping RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {
160
211
  do {
161
- let endpoint = LightWalletEndpoint(address: host, port: port, secure: true)
162
- let lightwalletd: LightWalletService = LightWalletGRPCService(endpoint:endpoint)
163
- let height = try lightwalletd.latestBlockHeight()
164
- lightwalletd.closeConnection()
165
- resolve(height)
212
+ let spendingKey = try deriveUnifiedSpendingKey(seed, wallet.synchronizer.network)
213
+ var sdkMemo: Memo? = nil
214
+ if memo != "" {
215
+ sdkMemo = try Memo(string: memo)
216
+ }
217
+ let broadcastTx = try await wallet.synchronizer.sendToAddress(
218
+ spendingKey: spendingKey,
219
+ zatoshi: Zatoshi(amount!),
220
+ toAddress: Recipient(toAddress, network: wallet.synchronizer.network.networkType),
221
+ memo: sdkMemo
222
+ )
223
+
224
+ let tx: NSMutableDictionary = ["txId": broadcastTx.rawID.hexEncodedString()]
225
+ if broadcastTx.raw != nil {
226
+ tx["raw"] = broadcastTx.raw?.hexEncodedString()
227
+ }
228
+ resolve(tx)
166
229
  } catch {
167
- reject("getLatestNetworkHeightGrpc", "Failed to query blockheight", error)
230
+ reject("SpendToAddressError", "Failed to spend", error)
168
231
  }
169
- }
170
-
171
- @objc func spendToAddress(_ alias: String, _ zatoshi: String, _ toAddress: String, _ memo: String, _ fromAccountIndex: Int, _ spendingKey: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
172
- if let wallet = SynchronizerMap[alias] {
173
- let amount = Int64(zatoshi)
174
- if amount == nil {
175
- reject("SpendToAddressError", "Amount is invalid", genericError)
176
- return
177
- }
178
- wallet.synchronizer.sendToAddress(
179
- spendingKey:spendingKey,
180
- zatoshi:amount!,
181
- toAddress:toAddress,
182
- memo: memo,
183
- from:fromAccountIndex
184
- ) { result in
185
- switch result {
186
- case .success(let pendingTransaction):
187
- if (pendingTransaction.rawTransactionId != nil && pendingTransaction.raw != nil) {
188
- let tx: NSDictionary = ["txId": pendingTransaction.rawTransactionId!.toHexStringTxId(), "raw":z_hexEncodedString(data:pendingTransaction.raw!)]
189
- resolve(tx)
190
- } else {
191
- reject("SpendToAddressError", "Missing txid or rawtx in success object", genericError)
192
- }
193
- case .failure(let error):
194
- reject("SpendToAddressError", "Failed to spend", error)
195
- }
196
- }
197
- } else {
198
- reject("SpendToAddressError", "Wallet does not exist", genericError)
232
+ } else {
233
+ reject("SpendToAddressError", "Wallet does not exist", genericError)
234
+ }
235
+ }
236
+ }
237
+
238
+ @objc func getTransactions(
239
+ _ alias: String, _ first: Int, _ last: Int, resolver resolve: @escaping RCTPromiseResolveBlock,
240
+ rejecter reject: @escaping RCTPromiseRejectBlock
241
+ ) {
242
+ Task {
243
+ if let wallet = SynchronizerMap[alias] {
244
+ if !wallet.fullySynced {
245
+ reject("GetTransactionsError", "Wallet is not synced", genericError)
246
+ return
199
247
  }
200
- }
201
248
 
202
- @objc func getTransactions(_ alias: String, _ first: Int, _ last: Int, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
203
- if let wallet = SynchronizerMap[alias] {
204
- if !wallet.fullySynced {
205
- reject("GetTransactionsError", "Wallet is not synced", genericError)
206
- return
249
+ var out: [NSDictionary] = []
250
+ do {
251
+ let txs = try await wallet.synchronizer.allTransactions()
252
+ let filterTxs = txs.filter {
253
+ $0.minedHeight != nil && $0.minedHeight! >= first && $0.minedHeight! <= last
254
+ && $0.blockTime != nil
255
+ }
256
+ for tx in filterTxs {
257
+ var confTx = ConfirmedTx(
258
+ minedHeight: tx.minedHeight!,
259
+ rawTransactionId: (tx.rawID.toHexStringTxId()),
260
+ blockTimeInSeconds: Int(tx.blockTime!),
261
+ value: String(describing: abs(tx.value.amount))
262
+ )
263
+ if tx.isSentTransaction {
264
+ let recipients = await wallet.synchronizer.getRecipients(for: tx)
265
+ if recipients.count > 0 {
266
+ let addresses = recipients.compactMap {
267
+ if case let .address(address) = $0 {
268
+ return address
269
+ } else {
270
+ return nil
271
+ }
272
+ }
273
+ confTx.toAddress = addresses.first!.stringEncoded
274
+ }
207
275
  }
208
- var out: [NSDictionary] = []
209
- if let txs = try? wallet.synchronizer.allConfirmedTransactions(from:nil, limit:Int.max) {
210
- // Get all txs, all the time, because the iOS SDK doesn't support querying by block height
211
- for tx in txs {
212
- if (tx.rawTransactionId != nil) {
213
- var confTx = ConfirmedTx(
214
- minedHeight: tx.minedHeight,
215
- rawTransactionId: (tx.rawTransactionId?.toHexStringTxId())!,
216
- blockTimeInSeconds: Int(tx.blockTimeInSeconds),
217
- value: String(describing: tx.value)
218
- )
219
- if (tx.toAddress != nil) {
220
- confTx.toAddress = tx.toAddress
221
- }
222
- if (tx.memo != nil) {
223
- confTx.memo = String(bytes: tx.memo!, encoding: .utf8)
224
- }
225
- out.append(confTx.nsDictionary)
226
- }
276
+ if tx.memoCount > 0 {
277
+ let memos = (try? await wallet.synchronizer.getMemos(for: tx)) ?? []
278
+ let textMemos = memos.compactMap {
279
+ if case let .text(memo) = $0 {
280
+ return memo.string
281
+ } else {
282
+ return nil
227
283
  }
228
- resolve(out)
229
- } else {
230
- reject("GetTransactionsError", "Failed to query transactions", genericError)
284
+ }
285
+ confTx.memo = textMemos
231
286
  }
232
- } else {
233
- reject("GetTransactionsError", "Wallet does not exist", genericError)
287
+ out.append(confTx.nsDictionary)
288
+ }
289
+ resolve(out)
290
+ } catch {
291
+ reject("GetTransactionsError", "Failed to get transactions", genericError)
234
292
  }
235
- }
236
-
237
- @objc func getShieldedBalance(_ alias: String, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
238
- if let wallet = SynchronizerMap[alias] {
239
- let total = String(describing: wallet.synchronizer.getShieldedBalance())
240
- let available = String(describing: wallet.synchronizer.getShieldedVerifiedBalance())
241
- let balance = ShieldedBalance(availableZatoshi:available, totalZatoshi:total)
242
- resolve(balance.nsDictionary)
243
- } else {
244
- reject("GetShieldedBalanceError", "Wallet does not exist", genericError)
293
+ } else {
294
+ reject("GetTransactionsError", "Wallet does not exist", genericError)
295
+ }
296
+ }
297
+ }
298
+
299
+ @objc func getBalance(
300
+ _ alias: String, resolver resolve: @escaping RCTPromiseResolveBlock,
301
+ rejecter reject: @escaping RCTPromiseRejectBlock
302
+ ) {
303
+ Task {
304
+ if let wallet = SynchronizerMap[alias] {
305
+ do {
306
+ let totalShieldedBalance = try await wallet.synchronizer.getShieldedBalance()
307
+ let availableShieldedBalance = try await wallet.synchronizer.getShieldedVerifiedBalance()
308
+
309
+ let transparentWalletBalance = try await wallet.synchronizer.getTransparentBalance(
310
+ accountIndex: 0)
311
+ let totalTransparentBalance = transparentWalletBalance.total
312
+ let availableTransparentBalance = transparentWalletBalance.verified
313
+
314
+ let totalAvailable = availableShieldedBalance + availableTransparentBalance
315
+ let totalTotal = totalShieldedBalance + totalTransparentBalance
316
+
317
+ let balance = TotalBalances(
318
+ availableZatoshi: String(totalAvailable.amount), totalZatoshi: String(totalTotal.amount)
319
+ )
320
+ resolve(balance.nsDictionary)
321
+ return
322
+ } catch {
323
+ reject("GetShieldedBalanceError", "Error", error)
245
324
  }
246
- }
247
-
248
- @objc func rescan(_ alias: String, _ height: Int, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
249
- if let wallet = SynchronizerMap[alias] {
250
- do {
251
- try wallet.synchronizer.rewind(.height(blockheight: height))
252
- wallet.restart = true
325
+ } else {
326
+ reject("GetShieldedBalanceError", "Wallet does not exist", genericError)
327
+ }
328
+ }
329
+ }
330
+
331
+ @objc func rescan(
332
+ _ alias: String, resolver resolve: @escaping RCTPromiseResolveBlock,
333
+ rejecter reject: @escaping RCTPromiseRejectBlock
334
+ ) {
335
+ Task {
336
+ if let wallet = SynchronizerMap[alias] {
337
+ wallet.synchronizer.rewind(.birthday).sink(
338
+ receiveCompletion: { completion in
339
+ Task {
340
+ switch completion {
341
+ case .finished:
342
+ wallet.status = "STOPPED"
253
343
  wallet.fullySynced = false
254
- } catch {
255
- reject("RescanError", "Failed to rescan wallet", error)
256
- }
257
- resolve(nil)
258
- } else {
259
- reject("RescanError", "Wallet does not exist", genericError)
260
- }
261
- }
262
-
263
- // Derivation Tool
264
- private func getDerivationToolForNetwork(_ network: String) -> DerivationTool {
265
- switch network {
266
- case "testnet":
267
- return DerivationTool(networkType:ZcashNetworkBuilder.network(for: .testnet).networkType)
268
- default:
269
- return DerivationTool(networkType:ZcashNetworkBuilder.network(for: .mainnet).networkType)
270
- }
271
- }
272
-
273
- @objc func deriveViewingKey(_ seed: String, _ network: String, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
274
- let derivationTool = getDerivationToolForNetwork(network)
275
- if let viewingKeys: [UnifiedViewingKey] = try? derivationTool.deriveUnifiedViewingKeysFromSeed(seed.hexaBytes, numberOfAccounts:1) {
276
- let out = ["extfvk": viewingKeys[0].extfvk, "extpub": viewingKeys[0].extpub]
277
- resolve(out);
278
- } else {
279
- reject("DeriveViewingKeyError", "Failed to derive viewing key", genericError)
280
- }
281
- }
282
-
283
- @objc func deriveSpendingKey(_ seed: String, _ network: String, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
284
- let derivationTool = getDerivationToolForNetwork(network)
285
- if let spendingKeys: [String] = try? derivationTool.deriveSpendingKeys(seed:seed.hexaBytes, numberOfAccounts:1) {
286
- resolve(spendingKeys[0]);
287
- } else {
288
- reject("DeriveSpendingKeyError", "Failed to derive spending key", genericError)
289
- }
290
- }
291
-
292
- @objc func deriveShieldedAddress(_ viewingKey: String, _ network: String, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
293
- let derivationTool = getDerivationToolForNetwork(network)
294
- if let address: String = try? derivationTool.deriveShieldedAddress(viewingKey:viewingKey) {
295
- resolve(address);
296
- } else {
297
- reject("DeriveShieldedAddressError", "Failed to derive shielded address", genericError)
298
- }
299
- }
300
-
301
- @objc func isValidShieldedAddress(_ address: String, _ network: String, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
302
- let derivationTool = getDerivationToolForNetwork(network)
303
- if let bool = try? derivationTool.isValidShieldedAddress(address) {
304
- resolve(bool);
305
- } else {
306
- resolve(false)
307
- }
344
+ wallet.restart = true
345
+ wallet.initializeProcessorState()
346
+ wallet.cancellables.forEach { $0.cancel() }
347
+ wallet.subscribe()
348
+ resolve(nil)
349
+ case .failure:
350
+ reject("RescanError", "Failed to rescan wallet", genericError)
351
+ }
352
+ }
353
+ }, receiveValue: { _ in }
354
+ ).store(in: &wallet.cancellables)
355
+ } else {
356
+ reject("RescanError", "Wallet does not exist", genericError)
357
+ }
308
358
  }
359
+ }
309
360
 
310
- @objc func isValidTransparentAddress(_ address: String, _ network: String, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
311
- let derivationTool = getDerivationToolForNetwork(network)
312
- if let bool = try? derivationTool.isValidTransparentAddress(address) {
313
- resolve(bool);
314
- } else {
315
- resolve(false)
361
+ // Derivation Tool
362
+ private func getDerivationToolForNetwork(_ network: String) -> DerivationTool {
363
+ switch network {
364
+ case "testnet":
365
+ return DerivationTool(networkType: ZcashNetworkBuilder.network(for: .testnet).networkType)
366
+ default:
367
+ return DerivationTool(networkType: ZcashNetworkBuilder.network(for: .mainnet).networkType)
368
+ }
369
+ }
370
+
371
+ private func deriveUnifiedSpendingKey(_ seed: String, _ network: ZcashNetwork) throws
372
+ -> UnifiedSpendingKey
373
+ {
374
+ let derivationTool = DerivationTool(networkType: network.networkType)
375
+ let seedBytes = try Mnemonic.deterministicSeedBytes(from: seed)
376
+ let spendingKey = try derivationTool.deriveUnifiedSpendingKey(seed: seedBytes, accountIndex: 0)
377
+ return spendingKey
378
+ }
379
+
380
+ private func deriveUnifiedViewingKey(_ seed: String, _ network: ZcashNetwork) throws
381
+ -> UnifiedFullViewingKey
382
+ {
383
+ let spendingKey = try deriveUnifiedSpendingKey(seed, network)
384
+ let derivationTool = DerivationTool(networkType: network.networkType)
385
+ let viewingKey = try derivationTool.deriveUnifiedFullViewingKey(from: spendingKey)
386
+ return viewingKey
387
+ }
388
+
389
+ @objc func deriveViewingKey(
390
+ _ seed: String, _ network: String, resolver resolve: @escaping RCTPromiseResolveBlock,
391
+ rejecter reject: @escaping RCTPromiseRejectBlock
392
+ ) {
393
+ do {
394
+ let zcashNetwork = getNetworkParams(network)
395
+ let viewingKey = try deriveUnifiedViewingKey(seed, zcashNetwork)
396
+ resolve(viewingKey.stringEncoded)
397
+ } catch {
398
+ reject("DeriveViewingKeyError", "Failed to derive viewing key", error)
399
+ }
400
+ }
401
+
402
+ @objc func deriveUnifiedAddress(
403
+ _ alias: String, resolver resolve: @escaping RCTPromiseResolveBlock,
404
+ rejecter reject: @escaping RCTPromiseRejectBlock
405
+ ) {
406
+ Task {
407
+ if let wallet = SynchronizerMap[alias] {
408
+ do {
409
+ let unifiedAddress = try await wallet.synchronizer.getUnifiedAddress(accountIndex: 0)
410
+ resolve(unifiedAddress.stringEncoded)
411
+ return
412
+ } catch {
413
+ reject("deriveUnifiedAddress", "Failed to derive unified address", error)
316
414
  }
317
- }
318
-
319
- // Events
320
- public func sendToJs(name: String, data: Any) {
321
- self.sendEvent(withName:name, body:data)
322
- }
323
-
324
- override func supportedEvents() -> [String] {
325
- return ["StatusEvent", "UpdateEvent"]
326
- }
415
+ } else {
416
+ reject("deriveUnifiedAddress", "Wallet does not exist", genericError)
417
+ }
418
+ }
419
+ }
420
+
421
+ @objc func isValidAddress(
422
+ _ address: String, _ network: String, resolver resolve: @escaping RCTPromiseResolveBlock,
423
+ rejecter reject: @escaping RCTPromiseRejectBlock
424
+ ) {
425
+ let derivationTool = getDerivationToolForNetwork(network)
426
+ if derivationTool.isValidUnifiedAddress(address)
427
+ || derivationTool.isValidSaplingAddress(address)
428
+ || derivationTool.isValidTransparentAddress(address)
429
+ {
430
+ resolve(true)
431
+ } else {
432
+ resolve(false)
433
+ }
434
+ }
435
+
436
+ // Events
437
+ public func sendToJs(name: String, data: Any) {
438
+ self.sendEvent(withName: name, body: data)
439
+ }
440
+
441
+ override func supportedEvents() -> [String] {
442
+ return ["StatusEvent", "UpdateEvent"]
443
+ }
327
444
  }
328
445
 
329
-
330
- class WalletSynchronizer : NSObject {
331
- public var alias: String
332
- public var synchronizer: SDKSynchronizer
333
- var status: String
334
- var emit: (String, Any) -> Void
335
- var fullySynced: Bool
336
- var restart: Bool
337
- var processorState: ProcessorState
338
-
339
- init(alias: String, initializer: Initializer, emitter:@escaping (String, Any) -> Void) throws {
340
- self.alias = alias
341
- self.synchronizer = try SDKSynchronizer(initializer:initializer)
342
- self.status = "DISCONNECTED"
343
- self.emit = emitter
344
- self.fullySynced = false
446
+ class WalletSynchronizer: NSObject {
447
+ public var alias: String
448
+ public var synchronizer: SDKSynchronizer
449
+ var status: String
450
+ var emit: (String, Any) -> Void
451
+ var fullySynced: Bool
452
+ var restart: Bool
453
+ var processorState: ProcessorState
454
+ var cancellables: [AnyCancellable] = []
455
+
456
+ init(alias: String, initializer: Initializer, emitter: @escaping (String, Any) -> Void) throws {
457
+ self.alias = alias
458
+ self.synchronizer = SDKSynchronizer(initializer: initializer)
459
+ self.status = "STOPPED"
460
+ self.emit = emitter
461
+ self.fullySynced = false
462
+ self.restart = false
463
+ self.processorState = ProcessorState(
464
+ alias: self.alias,
465
+ lastDownloadedHeight: 0,
466
+ lastScannedHeight: 0,
467
+ scanProgress: 0,
468
+ networkBlockHeight: 0
469
+ )
470
+ }
471
+
472
+ public func subscribe() {
473
+ self.synchronizer.stateStream
474
+ .throttle(for: .seconds(0.3), scheduler: DispatchQueue.main, latest: true)
475
+ .sink(receiveValue: { [weak self] state in self?.updateSyncStatus(event: state) })
476
+ .store(in: &cancellables)
477
+ }
478
+
479
+ func updateSyncStatus(event: SynchronizerState) {
480
+
481
+ if !self.fullySynced {
482
+ switch event.internalSyncStatus {
483
+ case .syncing:
484
+ self.status = "SYNCING"
345
485
  self.restart = false
346
- self.processorState = ProcessorState(
347
- alias:self.alias,
348
- lastDownloadedHeight:0,
349
- lastScannedHeight:0,
350
- scanProgress:0,
351
- networkBlockHeight:0
352
- )
353
- }
354
-
355
- public func subscribe() {
356
- // Processor status
357
- NotificationCenter.default.addObserver(self, selector: #selector(updateProcessorState(notification:)), name: nil, object: self.synchronizer.blockProcessor)
358
- // Synchronizer Status
359
- NotificationCenter.default.addObserver(self, selector: #selector(updateSyncStatus(notification:)), name: .synchronizerDisconnected, object: self.synchronizer)
360
- NotificationCenter.default.addObserver(self, selector: #selector(updateSyncStatus(notification:)), name: .synchronizerStopped, object: self.synchronizer)
361
- NotificationCenter.default.addObserver(self, selector: #selector(updateSyncStatus(notification:)), name: .synchronizerSynced, object: self.synchronizer)
362
- NotificationCenter.default.addObserver(self, selector: #selector(updateSyncStatus(notification:)), name: .synchronizerDownloading, object: self.synchronizer)
363
- NotificationCenter.default.addObserver(self, selector: #selector(updateSyncStatus(notification:)), name: .synchronizerValidating, object: self.synchronizer)
364
- NotificationCenter.default.addObserver(self, selector: #selector(updateSyncStatus(notification:)), name: .synchronizerScanning, object: self.synchronizer)
365
- NotificationCenter.default.addObserver(self, selector: #selector(updateSyncStatus(notification:)), name: .synchronizerEnhancing, object: self.synchronizer)
366
- }
367
-
368
- @objc public func updateSyncStatus(notification: NSNotification) {
369
- if !self.fullySynced {
370
- switch notification.name.rawValue {
371
- case "SDKSyncronizerStopped":
372
- self.status = "STOPPED"
373
- if (self.restart == true) {
374
- try! self.synchronizer.start()
375
- initializeProcessorState()
376
- self.restart = false
377
- }
378
- case "SDKSyncronizerDisconnected":
379
- self.status = "DISCONNECTED"
380
- case "SDKSyncronizerDownloading":
381
- self.status = "DOWNLOADING"
382
- case "SDKSyncronizerScanning":
383
- if (self.processorState.scanProgress < 100) {
384
- self.status = "SCANNING"
385
- } else {
386
- self.status = "SYNCED"
387
- }
388
- case "SDKSyncronizerSynced":
389
- self.status = "SYNCED"
390
- self.fullySynced = true
391
- default:
392
- break
393
- }
394
-
395
- let data: NSDictionary = ["alias": self.alias, "name":self.status]
396
- emit("StatusEvent", data)
397
- }
398
- }
399
-
400
- @objc public func updateProcessorState(notification: NSNotification) {
401
- let prevLastDownloadedHeight = self.processorState.lastDownloadedHeight
402
- let prevScanProgress = self.processorState.scanProgress
403
- let prevLastScannedHeight = self.synchronizer.latestScannedHeight
404
- let prevNetworkBlockHeight = self.processorState.lastScannedHeight
405
-
406
- if !self.fullySynced {
407
- switch self.synchronizer.status {
408
- case .downloading(let status):
409
- // The SDK emits all zero values just before emitting a SYNCED status so we need to ignore these
410
- if status.targetHeight == 0 {
411
- return
412
- }
413
- self.processorState.lastDownloadedHeight = status.progressHeight
414
- self.processorState.networkBlockHeight = status.targetHeight
415
- break
416
- case .scanning(let status):
417
- self.processorState.scanProgress = Int(floor(status.progress * 100))
418
- self.processorState.lastScannedHeight = status.progressHeight
419
- self.processorState.networkBlockHeight = status.targetHeight
420
- default:
421
- return
422
- }
423
- } else {
424
- self.processorState.lastDownloadedHeight = self.synchronizer.latestScannedHeight
425
- self.processorState.scanProgress = 100
426
- self.processorState.lastScannedHeight = self.synchronizer.latestScannedHeight
427
- do {
428
- try self.processorState.networkBlockHeight = self.synchronizer.latestHeight()
429
- } catch {
430
- // ignore if synchronizer throws
431
- }
486
+ case .synced:
487
+ if self.restart {
488
+ // The synchronizer emits "synced" status after starting a rescan. We need to ignore these.
489
+ return
432
490
  }
433
-
434
- if self.processorState.lastDownloadedHeight != prevLastDownloadedHeight || self.processorState.scanProgress != prevScanProgress ||
435
- self.processorState.lastScannedHeight != prevLastScannedHeight ||
436
- self.processorState.networkBlockHeight != prevNetworkBlockHeight {
437
- emit("UpdateEvent", self.processorState.nsDictionary)
438
- }
439
- }
440
-
441
- func initializeProcessorState() {
442
- self.processorState = ProcessorState(
443
- alias:self.alias,
444
- lastDownloadedHeight:0,
445
- lastScannedHeight:0,
446
- scanProgress:0,
447
- networkBlockHeight:0
448
- )
449
- }
450
- }
451
-
452
- // Convert hex strings to [UInt8]
453
- extension StringProtocol {
454
- var hexaData: Data { .init(hexa) }
455
- var hexaBytes: [UInt8] { .init(hexa) }
456
- private var hexa: UnfoldSequence<UInt8, Index> {
457
- sequence(state: startIndex) { startIndex in
458
- guard startIndex < self.endIndex else { return nil }
459
- let endIndex = self.index(startIndex, offsetBy: 2, limitedBy: self.endIndex) ?? self.endIndex
460
- defer { startIndex = endIndex }
461
- return UInt8(self[startIndex..<endIndex], radix: 16)
491
+ self.status = "SYNCED"
492
+ self.fullySynced = true
493
+ default:
494
+ break
495
+ }
496
+
497
+ let data: NSDictionary = ["alias": self.alias, "name": self.status]
498
+ emit("StatusEvent", data)
499
+ }
500
+
501
+ updateProcessorState(event: event)
502
+ }
503
+
504
+ func updateProcessorState(event: SynchronizerState) {
505
+ let prevLastDownloadedHeight = self.processorState.lastDownloadedHeight
506
+ let prevScanProgress = self.processorState.scanProgress
507
+ let prevLastScannedHeight = self.synchronizer.latestState.latestScannedHeight
508
+ let prevNetworkBlockHeight = self.processorState.lastScannedHeight
509
+
510
+ if event.internalSyncStatus != .synced {
511
+ switch event.internalSyncStatus {
512
+ case .syncing(let status):
513
+ // The SDK emits all zero values just before emitting a SYNCED status so we need to ignore these
514
+ if status.targetHeight == 0 {
515
+ return
462
516
  }
463
- }
517
+ self.processorState.lastDownloadedHeight = status.progressHeight
518
+ self.processorState.scanProgress = Int(floor(status.progress * 100))
519
+ self.processorState.lastScannedHeight = status.progressHeight
520
+ self.processorState.networkBlockHeight = status.targetHeight
521
+ default:
522
+ return
523
+ }
524
+ } else {
525
+ self.processorState.lastDownloadedHeight = self.synchronizer.latestState.latestScannedHeight
526
+ self.processorState.scanProgress = 100
527
+ self.processorState.lastScannedHeight = self.synchronizer.latestState.latestScannedHeight
528
+ self.processorState.networkBlockHeight = event.latestBlockHeight
529
+ }
530
+
531
+ if self.processorState.lastDownloadedHeight != prevLastDownloadedHeight
532
+ || self.processorState.scanProgress != prevScanProgress
533
+ || self.processorState.lastScannedHeight != prevLastScannedHeight
534
+ || self.processorState.networkBlockHeight != prevNetworkBlockHeight
535
+ {
536
+ emit("UpdateEvent", self.processorState.nsDictionary)
537
+ }
538
+ }
539
+
540
+ func initializeProcessorState() {
541
+ self.processorState = ProcessorState(
542
+ alias: self.alias,
543
+ lastDownloadedHeight: 0,
544
+ lastScannedHeight: 0,
545
+ scanProgress: 0,
546
+ networkBlockHeight: 0
547
+ )
548
+ }
464
549
  }
465
550
 
466
551
  func z_hexEncodedString(data: Data) -> String {
467
- let hexDigits = Array("0123456789abcdef".utf16)
468
- var chars: [unichar] = []
552
+ let hexDigits = Array("0123456789abcdef".utf16)
553
+ var chars: [unichar] = []
469
554
 
470
- chars.reserveCapacity(2 * data.count)
471
- for byte in data {
472
- chars.append(hexDigits[Int(byte / 16)])
473
- chars.append(hexDigits[Int(byte % 16)])
474
- }
555
+ chars.reserveCapacity(2 * data.count)
556
+ for byte in data {
557
+ chars.append(hexDigits[Int(byte / 16)])
558
+ chars.append(hexDigits[Int(byte % 16)])
559
+ }
475
560
 
476
- return String(utf16CodeUnits: chars, count: chars.count)
561
+ return String(utf16CodeUnits: chars, count: chars.count)
477
562
  }
478
563
 
479
564
  // Local file helper funcs
480
565
  func documentsDirectoryHelper() throws -> URL {
481
- try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
566
+ try FileManager.default.url(
567
+ for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
482
568
  }
483
569
 
484
570
  func cacheDbURLHelper(_ alias: String, _ network: ZcashNetwork) throws -> URL {
485
- try documentsDirectoryHelper()
486
- .appendingPathComponent(
487
- network.constants.defaultDbNamePrefix + alias + ZcashSDK.defaultCacheDbName,
488
- isDirectory: false
489
- )
571
+ try documentsDirectoryHelper()
572
+ .appendingPathComponent(
573
+ network.constants.defaultDbNamePrefix + alias + ZcashSDK.defaultCacheDbName,
574
+ isDirectory: false
575
+ )
490
576
  }
491
577
 
492
578
  func dataDbURLHelper(_ alias: String, _ network: ZcashNetwork) throws -> URL {
493
- try documentsDirectoryHelper()
494
- .appendingPathComponent(
495
- network.constants.defaultDbNamePrefix + alias + ZcashSDK.defaultDataDbName,
496
- isDirectory: false
497
- )
498
- }
499
-
500
- func pendingDbURLHelper(_ alias: String, _ network: ZcashNetwork) throws -> URL {
501
- try documentsDirectoryHelper()
502
- .appendingPathComponent(network.constants.defaultDbNamePrefix + alias + ZcashSDK.defaultPendingDbName)
579
+ try documentsDirectoryHelper()
580
+ .appendingPathComponent(
581
+ network.constants.defaultDbNamePrefix + alias + ZcashSDK.defaultDataDbName,
582
+ isDirectory: false
583
+ )
503
584
  }
504
585
 
505
586
  func spendParamsURLHelper(_ alias: String) throws -> URL {
506
- try documentsDirectoryHelper().appendingPathComponent(alias + "sapling-spend.params")
587
+ try documentsDirectoryHelper().appendingPathComponent(alias + "sapling-spend.params")
507
588
  }
508
589
 
509
590
  func outputParamsURLHelper(_ alias: String) throws -> URL {
510
- try documentsDirectoryHelper().appendingPathComponent(alias + "sapling-output.params")
591
+ try documentsDirectoryHelper().appendingPathComponent(alias + "sapling-output.params")
511
592
  }
512
593
 
513
-
514
- // Logger
515
- class RNZcashLogger: ZcashLightClientKit.Logger {
516
- enum LogLevel: Int {
517
- case debug
518
- case error
519
- case warning
520
- case event
521
- case info
522
- }
523
-
524
- enum LoggerType {
525
- case osLog
526
- case printerLog
527
- }
528
-
529
- var level: LogLevel
530
- var loggerType: LoggerType
531
-
532
- init(logLevel: LogLevel, type: LoggerType = .osLog) {
533
- self.level = logLevel
534
- self.loggerType = type
535
- }
536
-
537
- private static let subsystem = Bundle.main.bundleIdentifier!
538
- static let oslog = OSLog(subsystem: subsystem, category: "logs")
539
-
540
- func debug(_ message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
541
- guard level.rawValue == LogLevel.debug.rawValue else { return }
542
- log(level: "DEBUG 🐞", message: message, file: file, function: function, line: line)
543
- }
544
-
545
- func error(_ message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
546
- guard level.rawValue <= LogLevel.error.rawValue else { return }
547
- log(level: "ERROR đŸ’Ĩ", message: message, file: file, function: function, line: line)
548
- }
549
-
550
- func warn(_ message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
551
- guard level.rawValue <= LogLevel.warning.rawValue else { return }
552
- log(level: "WARNING âš ī¸", message: message, file: file, function: function, line: line)
553
- }
554
-
555
- func event(_ message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
556
- guard level.rawValue <= LogLevel.event.rawValue else { return }
557
- log(level: "EVENT ⏱", message: message, file: file, function: function, line: line)
558
- }
559
-
560
- func info(_ message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
561
- guard level.rawValue <= LogLevel.info.rawValue else { return }
562
- log(level: "INFO â„šī¸", message: message, file: file, function: function, line: line)
563
- }
564
-
565
- private func log(level: String, message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
566
- let fileName = (String(describing: file) as NSString).lastPathComponent
567
- switch loggerType {
568
- case .printerLog:
569
- print("[\(level)] \(fileName) - \(function) - line: \(line) -> \(message)")
570
- default:
571
- os_log(
572
- "[%{public}@] %{public}@ - %{public}@ - Line: %{public}d -> %{public}@",
573
- level,
574
- fileName,
575
- String(describing: function),
576
- line,
577
- message
578
- )
579
- }
580
- }
594
+ func fsBlockDbRootURLHelper(_ alias: String, _ network: ZcashNetwork) throws -> URL {
595
+ try documentsDirectoryHelper()
596
+ .appendingPathComponent(
597
+ network.constants.defaultDbNamePrefix + alias + ZcashSDK.defaultFsCacheName,
598
+ isDirectory: true
599
+ )
581
600
  }
582
-