@matrix-privacy/wallet 0.0.1

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 (270) hide show
  1. package/.eslintrc.js +73 -0
  2. package/.prettierrc.js +21 -0
  3. package/LICENSE +21 -0
  4. package/README.md +7 -0
  5. package/dist/__tests__/index.test.d.ts +1 -0
  6. package/dist/__tests__/index.test.js +13 -0
  7. package/dist/__tests__/index.test.js.map +1 -0
  8. package/dist/index.d.ts +4 -0
  9. package/dist/index.js +20 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/services/artifacts/__tests__/artifact-downloader.test.d.ts +1 -0
  12. package/dist/services/artifacts/__tests__/artifact-downloader.test.js +172 -0
  13. package/dist/services/artifacts/__tests__/artifact-downloader.test.js.map +1 -0
  14. package/dist/services/artifacts/artifact-downloader.d.ts +13 -0
  15. package/dist/services/artifacts/artifact-downloader.js +142 -0
  16. package/dist/services/artifacts/artifact-downloader.js.map +1 -0
  17. package/dist/services/artifacts/artifact-hash.d.ts +3 -0
  18. package/dist/services/artifacts/artifact-hash.js +53 -0
  19. package/dist/services/artifacts/artifact-hash.js.map +1 -0
  20. package/dist/services/artifacts/artifact-store.d.ts +11 -0
  21. package/dist/services/artifacts/artifact-store.js +15 -0
  22. package/dist/services/artifacts/artifact-store.js.map +1 -0
  23. package/dist/services/artifacts/artifact-util.d.ts +7 -0
  24. package/dist/services/artifacts/artifact-util.js +64 -0
  25. package/dist/services/artifacts/artifact-util.js.map +1 -0
  26. package/dist/services/artifacts/index.d.ts +2 -0
  27. package/dist/services/artifacts/index.js +19 -0
  28. package/dist/services/artifacts/index.js.map +1 -0
  29. package/dist/services/artifacts/json/artifact-v2-hashes.json +467 -0
  30. package/dist/services/ethers/__tests__/ethers-util.test.d.ts +1 -0
  31. package/dist/services/ethers/__tests__/ethers-util.test.js +19 -0
  32. package/dist/services/ethers/__tests__/ethers-util.test.js.map +1 -0
  33. package/dist/services/ethers/ethers-util.d.ts +1 -0
  34. package/dist/services/ethers/ethers-util.js +9 -0
  35. package/dist/services/ethers/ethers-util.js.map +1 -0
  36. package/dist/services/ethers/index.d.ts +1 -0
  37. package/dist/services/ethers/index.js +18 -0
  38. package/dist/services/ethers/index.js.map +1 -0
  39. package/dist/services/index.d.ts +4 -0
  40. package/dist/services/index.js +21 -0
  41. package/dist/services/index.js.map +1 -0
  42. package/dist/services/matrix/core/__tests__/engine.test.d.ts +1 -0
  43. package/dist/services/matrix/core/__tests__/engine.test.js +30 -0
  44. package/dist/services/matrix/core/__tests__/engine.test.js.map +1 -0
  45. package/dist/services/matrix/core/__tests__/providers.test.d.ts +1 -0
  46. package/dist/services/matrix/core/__tests__/providers.test.js +54 -0
  47. package/dist/services/matrix/core/__tests__/providers.test.js.map +1 -0
  48. package/dist/services/matrix/core/artifacts.d.ts +10 -0
  49. package/dist/services/matrix/core/artifacts.js +70 -0
  50. package/dist/services/matrix/core/artifacts.js.map +1 -0
  51. package/dist/services/matrix/core/engine.d.ts +4 -0
  52. package/dist/services/matrix/core/engine.js +21 -0
  53. package/dist/services/matrix/core/engine.js.map +1 -0
  54. package/dist/services/matrix/core/index.d.ts +8 -0
  55. package/dist/services/matrix/core/index.js +25 -0
  56. package/dist/services/matrix/core/index.js.map +1 -0
  57. package/dist/services/matrix/core/init.d.ts +21 -0
  58. package/dist/services/matrix/core/init.js +79 -0
  59. package/dist/services/matrix/core/init.js.map +1 -0
  60. package/dist/services/matrix/core/load-provider.d.ts +9 -0
  61. package/dist/services/matrix/core/load-provider.js +100 -0
  62. package/dist/services/matrix/core/load-provider.js.map +1 -0
  63. package/dist/services/matrix/core/merkletree.d.ts +5 -0
  64. package/dist/services/matrix/core/merkletree.js +40 -0
  65. package/dist/services/matrix/core/merkletree.js.map +1 -0
  66. package/dist/services/matrix/core/prover.d.ts +3 -0
  67. package/dist/services/matrix/core/prover.js +14 -0
  68. package/dist/services/matrix/core/prover.js.map +1 -0
  69. package/dist/services/matrix/core/providers.d.ts +9 -0
  70. package/dist/services/matrix/core/providers.js +31 -0
  71. package/dist/services/matrix/core/providers.js.map +1 -0
  72. package/dist/services/matrix/core/shields.d.ts +11 -0
  73. package/dist/services/matrix/core/shields.js +24 -0
  74. package/dist/services/matrix/core/shields.js.map +1 -0
  75. package/dist/services/matrix/history/__tests__/transaction-history.test.d.ts +1 -0
  76. package/dist/services/matrix/history/__tests__/transaction-history.test.js +249 -0
  77. package/dist/services/matrix/history/__tests__/transaction-history.test.js.map +1 -0
  78. package/dist/services/matrix/history/transaction-history.d.ts +4 -0
  79. package/dist/services/matrix/history/transaction-history.js +182 -0
  80. package/dist/services/matrix/history/transaction-history.js.map +1 -0
  81. package/dist/services/matrix/index.d.ts +4 -0
  82. package/dist/services/matrix/index.js +21 -0
  83. package/dist/services/matrix/index.js.map +1 -0
  84. package/dist/services/matrix/process/extract-transaction-data.d.ts +3 -0
  85. package/dist/services/matrix/process/extract-transaction-data.js +19 -0
  86. package/dist/services/matrix/process/extract-transaction-data.js.map +1 -0
  87. package/dist/services/matrix/process/index.d.ts +1 -0
  88. package/dist/services/matrix/process/index.js +18 -0
  89. package/dist/services/matrix/process/index.js.map +1 -0
  90. package/dist/services/matrix/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.d.ts +1 -0
  91. package/dist/services/matrix/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js +56 -0
  92. package/dist/services/matrix/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js.map +1 -0
  93. package/dist/services/matrix/quick-sync/V3/graph-type-formatters-v3.d.ts +8 -0
  94. package/dist/services/matrix/quick-sync/V3/graph-type-formatters-v3.js +103 -0
  95. package/dist/services/matrix/quick-sync/V3/graph-type-formatters-v3.js.map +1 -0
  96. package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/introspectionSchema.d.ts +2 -0
  97. package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/introspectionSchema.js +19861 -0
  98. package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/introspectionSchema.js.map +1 -0
  99. package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/types.d.ts +1352 -0
  100. package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/types.js +4 -0
  101. package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/types.js.map +1 -0
  102. package/dist/services/matrix/quick-sync/V3/graphql/index.d.ts +1680 -0
  103. package/dist/services/matrix/quick-sync/V3/graphql/index.js +348 -0
  104. package/dist/services/matrix/quick-sync/V3/graphql/index.js.map +1 -0
  105. package/dist/services/matrix/quick-sync/V3/quick-sync-events-graph-v3.d.ts +2 -0
  106. package/dist/services/matrix/quick-sync/V3/quick-sync-events-graph-v3.js +99 -0
  107. package/dist/services/matrix/quick-sync/V3/quick-sync-events-graph-v3.js.map +1 -0
  108. package/dist/services/matrix/quick-sync/graph-query.d.ts +5 -0
  109. package/dist/services/matrix/quick-sync/graph-query.js +26 -0
  110. package/dist/services/matrix/quick-sync/graph-query.js.map +1 -0
  111. package/dist/services/matrix/quick-sync/quick-sync-events.d.ts +2 -0
  112. package/dist/services/matrix/quick-sync/quick-sync-events.js +9 -0
  113. package/dist/services/matrix/quick-sync/quick-sync-events.js.map +1 -0
  114. package/dist/services/matrix/quick-sync/shared-formatters.d.ts +8 -0
  115. package/dist/services/matrix/quick-sync/shared-formatters.js +36 -0
  116. package/dist/services/matrix/quick-sync/shared-formatters.js.map +1 -0
  117. package/dist/services/matrix/util/__tests__/bytes-util.test.d.ts +1 -0
  118. package/dist/services/matrix/util/__tests__/bytes-util.test.js +23 -0
  119. package/dist/services/matrix/util/__tests__/bytes-util.test.js.map +1 -0
  120. package/dist/services/matrix/util/__tests__/crypto-util.test.d.ts +1 -0
  121. package/dist/services/matrix/util/__tests__/crypto-util.test.js +62 -0
  122. package/dist/services/matrix/util/__tests__/crypto-util.test.js.map +1 -0
  123. package/dist/services/matrix/util/bytes.d.ts +5 -0
  124. package/dist/services/matrix/util/bytes.js +22 -0
  125. package/dist/services/matrix/util/bytes.js.map +1 -0
  126. package/dist/services/matrix/util/crypto.d.ts +14 -0
  127. package/dist/services/matrix/util/crypto.js +80 -0
  128. package/dist/services/matrix/util/crypto.js.map +1 -0
  129. package/dist/services/matrix/util/graph-util.d.ts +3 -0
  130. package/dist/services/matrix/util/graph-util.js +13 -0
  131. package/dist/services/matrix/util/graph-util.js.map +1 -0
  132. package/dist/services/matrix/util/index.d.ts +2 -0
  133. package/dist/services/matrix/util/index.js +19 -0
  134. package/dist/services/matrix/util/index.js.map +1 -0
  135. package/dist/services/matrix/util/runtime.d.ts +2 -0
  136. package/dist/services/matrix/util/runtime.js +8 -0
  137. package/dist/services/matrix/util/runtime.js.map +1 -0
  138. package/dist/services/matrix/wallets/__tests__/balances-live.test.d.ts +1 -0
  139. package/dist/services/matrix/wallets/__tests__/balances-live.test.js +48 -0
  140. package/dist/services/matrix/wallets/__tests__/balances-live.test.js.map +1 -0
  141. package/dist/services/matrix/wallets/__tests__/balances-update.test.d.ts +1 -0
  142. package/dist/services/matrix/wallets/__tests__/balances-update.test.js +85 -0
  143. package/dist/services/matrix/wallets/__tests__/balances-update.test.js.map +1 -0
  144. package/dist/services/matrix/wallets/__tests__/balances.test.d.ts +1 -0
  145. package/dist/services/matrix/wallets/__tests__/balances.test.js +59 -0
  146. package/dist/services/matrix/wallets/__tests__/balances.test.js.map +1 -0
  147. package/dist/services/matrix/wallets/__tests__/wallets.test.d.ts +1 -0
  148. package/dist/services/matrix/wallets/__tests__/wallets.test.js +80 -0
  149. package/dist/services/matrix/wallets/__tests__/wallets.test.js.map +1 -0
  150. package/dist/services/matrix/wallets/balance-update.d.ts +10 -0
  151. package/dist/services/matrix/wallets/balance-update.js +126 -0
  152. package/dist/services/matrix/wallets/balance-update.js.map +1 -0
  153. package/dist/services/matrix/wallets/balances.d.ts +3 -0
  154. package/dist/services/matrix/wallets/balances.js +32 -0
  155. package/dist/services/matrix/wallets/balances.js.map +1 -0
  156. package/dist/services/matrix/wallets/index.d.ts +4 -0
  157. package/dist/services/matrix/wallets/index.js +21 -0
  158. package/dist/services/matrix/wallets/index.js.map +1 -0
  159. package/dist/services/matrix/wallets/wallets.d.ts +22 -0
  160. package/dist/services/matrix/wallets/wallets.js +252 -0
  161. package/dist/services/matrix/wallets/wallets.js.map +1 -0
  162. package/dist/services/transactions/__tests__/json/formatted-relay-adapt-error-logs.json +216 -0
  163. package/dist/services/transactions/__tests__/proof-cache.test.d.ts +1 -0
  164. package/dist/services/transactions/__tests__/proof-cache.test.js +114 -0
  165. package/dist/services/transactions/__tests__/proof-cache.test.js.map +1 -0
  166. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.d.ts +1 -0
  167. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js +376 -0
  168. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js.map +1 -0
  169. package/dist/services/transactions/__tests__/tx-gas-details.test.d.ts +1 -0
  170. package/dist/services/transactions/__tests__/tx-gas-details.test.js +109 -0
  171. package/dist/services/transactions/__tests__/tx-gas-details.test.js.map +1 -0
  172. package/dist/services/transactions/__tests__/tx-notes.test.d.ts +1 -0
  173. package/dist/services/transactions/__tests__/tx-notes.test.js +193 -0
  174. package/dist/services/transactions/__tests__/tx-notes.test.js.map +1 -0
  175. package/dist/services/transactions/__tests__/tx-shield-base-token.test.d.ts +1 -0
  176. package/dist/services/transactions/__tests__/tx-shield-base-token.test.js +99 -0
  177. package/dist/services/transactions/__tests__/tx-shield-base-token.test.js.map +1 -0
  178. package/dist/services/transactions/__tests__/tx-shield.test.d.ts +1 -0
  179. package/dist/services/transactions/__tests__/tx-shield.test.js +146 -0
  180. package/dist/services/transactions/__tests__/tx-shield.test.js.map +1 -0
  181. package/dist/services/transactions/__tests__/tx-transfer.test.d.ts +1 -0
  182. package/dist/services/transactions/__tests__/tx-transfer.test.js +263 -0
  183. package/dist/services/transactions/__tests__/tx-transfer.test.js.map +1 -0
  184. package/dist/services/transactions/__tests__/tx-unshield.test.d.ts +1 -0
  185. package/dist/services/transactions/__tests__/tx-unshield.test.js +759 -0
  186. package/dist/services/transactions/__tests__/tx-unshield.test.js.map +1 -0
  187. package/dist/services/transactions/index.d.ts +13 -0
  188. package/dist/services/transactions/index.js +30 -0
  189. package/dist/services/transactions/index.js.map +1 -0
  190. package/dist/services/transactions/proof-cache.d.ts +27 -0
  191. package/dist/services/transactions/proof-cache.js +130 -0
  192. package/dist/services/transactions/proof-cache.js.map +1 -0
  193. package/dist/services/transactions/tx-cross-contract-calls.d.ts +12 -0
  194. package/dist/services/transactions/tx-cross-contract-calls.js +210 -0
  195. package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -0
  196. package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.d.ts +5 -0
  197. package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.js +110 -0
  198. package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.js.map +1 -0
  199. package/dist/services/transactions/tx-gas-details.d.ts +5 -0
  200. package/dist/services/transactions/tx-gas-details.js +101 -0
  201. package/dist/services/transactions/tx-gas-details.js.map +1 -0
  202. package/dist/services/transactions/tx-generator.d.ts +13 -0
  203. package/dist/services/transactions/tx-generator.js +168 -0
  204. package/dist/services/transactions/tx-generator.js.map +1 -0
  205. package/dist/services/transactions/tx-notes.d.ts +11 -0
  206. package/dist/services/transactions/tx-notes.js +153 -0
  207. package/dist/services/transactions/tx-notes.js.map +1 -0
  208. package/dist/services/transactions/tx-nullifiers.d.ts +2 -0
  209. package/dist/services/transactions/tx-nullifiers.js +17 -0
  210. package/dist/services/transactions/tx-nullifiers.js.map +1 -0
  211. package/dist/services/transactions/tx-proof-transfer.d.ts +3 -0
  212. package/dist/services/transactions/tx-proof-transfer.js +39 -0
  213. package/dist/services/transactions/tx-proof-transfer.js.map +1 -0
  214. package/dist/services/transactions/tx-proof-unshield.d.ts +5 -0
  215. package/dist/services/transactions/tx-proof-unshield.js +132 -0
  216. package/dist/services/transactions/tx-proof-unshield.js.map +1 -0
  217. package/dist/services/transactions/tx-shield-base-token.d.ts +3 -0
  218. package/dist/services/transactions/tx-shield-base-token.js +55 -0
  219. package/dist/services/transactions/tx-shield-base-token.js.map +1 -0
  220. package/dist/services/transactions/tx-shield.d.ts +6 -0
  221. package/dist/services/transactions/tx-shield.js +77 -0
  222. package/dist/services/transactions/tx-shield.js.map +1 -0
  223. package/dist/services/transactions/tx-transfer.d.ts +3 -0
  224. package/dist/services/transactions/tx-transfer.js +39 -0
  225. package/dist/services/transactions/tx-transfer.js.map +1 -0
  226. package/dist/services/transactions/tx-unshield.d.ts +11 -0
  227. package/dist/services/transactions/tx-unshield.js +224 -0
  228. package/dist/services/transactions/tx-unshield.js.map +1 -0
  229. package/dist/tests/local-e2e.d.ts +13 -0
  230. package/dist/tests/local-e2e.js +487 -0
  231. package/dist/tests/local-e2e.js.map +1 -0
  232. package/dist/tests/mocks.test.d.ts +40 -0
  233. package/dist/tests/mocks.test.js +171 -0
  234. package/dist/tests/mocks.test.js.map +1 -0
  235. package/dist/tests/setup.test.d.ts +7 -0
  236. package/dist/tests/setup.test.js +88 -0
  237. package/dist/tests/setup.test.js.map +1 -0
  238. package/dist/tests/stubs/engine-stubs.test.d.ts +7 -0
  239. package/dist/tests/stubs/engine-stubs.test.js +72 -0
  240. package/dist/tests/stubs/engine-stubs.test.js.map +1 -0
  241. package/dist/utils/__tests__/blocked-address.test.d.ts +1 -0
  242. package/dist/utils/__tests__/blocked-address.test.js +23 -0
  243. package/dist/utils/__tests__/blocked-address.test.js.map +1 -0
  244. package/dist/utils/__tests__/logger.test.d.ts +1 -0
  245. package/dist/utils/__tests__/logger.test.js +28 -0
  246. package/dist/utils/__tests__/logger.test.js.map +1 -0
  247. package/dist/utils/__tests__/utils.test.d.ts +1 -0
  248. package/dist/utils/__tests__/utils.test.js +21 -0
  249. package/dist/utils/__tests__/utils.test.js.map +1 -0
  250. package/dist/utils/blocked-address.d.ts +2 -0
  251. package/dist/utils/blocked-address.js +17 -0
  252. package/dist/utils/blocked-address.js.map +1 -0
  253. package/dist/utils/error.d.ts +1 -0
  254. package/dist/utils/error.js +20 -0
  255. package/dist/utils/error.js.map +1 -0
  256. package/dist/utils/gas-price.d.ts +6 -0
  257. package/dist/utils/gas-price.js +19 -0
  258. package/dist/utils/gas-price.js.map +1 -0
  259. package/dist/utils/index.d.ts +2 -0
  260. package/dist/utils/index.js +19 -0
  261. package/dist/utils/index.js.map +1 -0
  262. package/dist/utils/logger.d.ts +3 -0
  263. package/dist/utils/logger.js +21 -0
  264. package/dist/utils/logger.js.map +1 -0
  265. package/dist/utils/utils.d.ts +4 -0
  266. package/dist/utils/utils.js +54 -0
  267. package/dist/utils/utils.js.map +1 -0
  268. package/package.json +94 -0
  269. package/postinstall.js +52 -0
  270. package/react-native-shims.js +42 -0
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mnemonicTo0xPKey = void 0;
4
+ const engine_1 = require("@matrix-privacy/engine");
5
+ const mnemonicTo0xPKey = (mnemonic, derivationIndex) => {
6
+ return `0x${engine_1.Mnemonic.to0xPrivateKey(mnemonic, derivationIndex)}`;
7
+ };
8
+ exports.mnemonicTo0xPKey = mnemonicTo0xPKey;
9
+ //# sourceMappingURL=ethers-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethers-util.js","sourceRoot":"","sources":["../../../src/services/ethers/ethers-util.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAE3C,MAAM,gBAAgB,GAAG,CAC9B,QAAgB,EAChB,eAAwB,EACxB,EAAE;IACF,OAAO,KAAK,iBAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC;AACnE,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B","sourcesContent":["import { Mnemonic } from '@matrix-privacy/engine';\n\nexport const mnemonicTo0xPKey = (\n mnemonic: string,\n derivationIndex?: number,\n) => {\n return `0x${Mnemonic.to0xPrivateKey(mnemonic, derivationIndex)}`;\n};\n"]}
@@ -0,0 +1 @@
1
+ export * from './ethers-util';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ethers-util"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/ethers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B","sourcesContent":["export * from './ethers-util';\n"]}
@@ -0,0 +1,4 @@
1
+ export * from './artifacts';
2
+ export * from './ethers';
3
+ export * from './matrix';
4
+ export * from './transactions';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./artifacts"), exports);
18
+ __exportStar(require("./ethers"), exports);
19
+ __exportStar(require("./matrix"), exports);
20
+ __exportStar(require("./transactions"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,2CAAyB;AACzB,2CAAyB;AACzB,iDAA+B","sourcesContent":["export * from './artifacts';\nexport * from './ethers';\nexport * from './matrix';\nexport * from './transactions';\n"]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const chai_1 = __importDefault(require("chai"));
7
+ const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
8
+ const setup_test_1 = require("../../../../tests/setup.test");
9
+ const engine_1 = require("../engine");
10
+ const prover_1 = require("../prover");
11
+ const init_1 = require("../init");
12
+ chai_1.default.use(chai_as_promised_1.default);
13
+ const { expect } = chai_1.default;
14
+ describe('engine', () => {
15
+ beforeEach(async () => {
16
+ await (0, setup_test_1.initTestEngine)();
17
+ });
18
+ afterEach(async () => {
19
+ await (0, setup_test_1.closeTestEngine)();
20
+ });
21
+ it('Should get active engine instance', () => {
22
+ expect((0, engine_1.getEngine)()).to.not.be.undefined;
23
+ });
24
+ it('Should fail without active engine instance', async () => {
25
+ await (0, init_1.stopMatrixEngine)();
26
+ expect(() => (0, engine_1.getEngine)()).to.throw('Matrix Engine not yet initialized.');
27
+ expect(() => (0, prover_1.getProver)()).to.throw('Matrix Engine not yet initialized.');
28
+ });
29
+ });
30
+ //# sourceMappingURL=engine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.test.js","sourceRoot":"","sources":["../../../../../src/services/matrix/core/__tests__/engine.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,wEAA8C;AAC9C,6DAA+E;AAC/E,sCAAsC;AACtC,sCAAsC;AACtC,kCAA2C;AAE3C,cAAI,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;AACzB,MAAM,EAAE,MAAM,EAAE,GAAG,cAAI,CAAC;AAExB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,IAAA,2BAAc,GAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,IAAA,4BAAe,GAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,IAAA,kBAAS,GAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,IAAA,uBAAgB,GAAE,CAAC;QACzB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,kBAAS,GAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,kBAAS,GAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport { closeTestEngine, initTestEngine } from '../../../../tests/setup.test';\nimport { getEngine } from '../engine';\nimport { getProver } from '../prover';\nimport { stopMatrixEngine } from '../init';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\ndescribe('engine', () => {\n beforeEach(async () => {\n await initTestEngine();\n });\n afterEach(async () => {\n await closeTestEngine();\n });\n\n it('Should get active engine instance', () => {\n expect(getEngine()).to.not.be.undefined;\n });\n\n it('Should fail without active engine instance', async () => {\n await stopMatrixEngine();\n expect(() => getEngine()).to.throw('Matrix Engine not yet initialized.');\n expect(() => getProver()).to.throw('Matrix Engine not yet initialized.');\n });\n});\n"]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const chai_1 = __importDefault(require("chai"));
7
+ const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
8
+ const shared_models_1 = require("@matrix-privacy/shared-models");
9
+ const mocks_test_1 = require("../../../../tests/mocks.test");
10
+ const setup_test_1 = require("../../../../tests/setup.test");
11
+ const providers_1 = require("../providers");
12
+ const load_provider_1 = require("../load-provider");
13
+ const wallets_1 = require("../../wallets/wallets");
14
+ const merkletree_1 = require("../merkletree");
15
+ const engine_1 = require("@matrix-privacy/engine");
16
+ chai_1.default.use(chai_as_promised_1.default);
17
+ const { expect } = chai_1.default;
18
+ const MOCK_MNEMONIC_PROVIDERS_ONLY = 'pause crystal tornado alcohol genre cement fade large song like bag where';
19
+ describe('providers', () => {
20
+ before(async () => {
21
+ await (0, setup_test_1.closeTestEngine)();
22
+ await (0, setup_test_1.initTestEngine)();
23
+ });
24
+ after(async () => {
25
+ await (0, setup_test_1.closeTestEngine)();
26
+ });
27
+ it('Should load provider with json, pull fees, and check created objects', async () => {
28
+ const response = await (0, load_provider_1.loadProvider)(mocks_test_1.MOCK_FALLBACK_PROVIDER_JSON_CONFIG_SEPOLIA, shared_models_1.NetworkName.Hardhat, 10000);
29
+ expect(response.feesSerialized).to.deep.equal({
30
+ shieldFee: '25',
31
+ unshieldFee: '25',
32
+ });
33
+ expect((0, providers_1.getFallbackProviderForNetwork)(shared_models_1.NetworkName.Hardhat)).to.not.be
34
+ .undefined;
35
+ expect((0, merkletree_1.getUTXOMerkletreeForNetwork)(shared_models_1.NetworkName.Hardhat))
36
+ .to.not.be.undefined;
37
+ const { chain } = shared_models_1.NETWORK_CONFIG[shared_models_1.NetworkName.Hardhat];
38
+ expect(engine_1.MatrixContracts.getShieldApprovalContract(chain)).to.not.be.undefined;
39
+ // Check that new wallet has merkletree.
40
+ const matrixWalletInfo = await (0, wallets_1.createMatrixWallet)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, MOCK_MNEMONIC_PROVIDERS_ONLY, undefined);
41
+ if (!(0, shared_models_1.isDefined)(matrixWalletInfo)) {
42
+ throw new Error('Expected matrixWalletInfo.');
43
+ }
44
+ const wallet = (0, wallets_1.walletForID)(matrixWalletInfo.id);
45
+ expect(wallet.getUTXOMerkletree(shared_models_1.NETWORK_CONFIG[shared_models_1.NetworkName.Hardhat].chain)).to.not.be.undefined;
46
+ }).timeout(15000);
47
+ it('Should fail with invalid chain ID', async () => {
48
+ await expect((0, load_provider_1.loadProvider)({ chainId: 55 }, shared_models_1.NetworkName.Hardhat, 10000)).rejectedWith('Invalid chain ID');
49
+ });
50
+ it('Should fail with invalid json', async () => {
51
+ await expect((0, load_provider_1.loadProvider)({ chainId: 31337 }, shared_models_1.NetworkName.Hardhat, 10000)).rejectedWith('Invalid fallback provider config');
52
+ });
53
+ });
54
+ //# sourceMappingURL=providers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.test.js","sourceRoot":"","sources":["../../../../../src/services/matrix/core/__tests__/providers.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,wEAA8C;AAC9C,iEAKuC;AACvC,6DAGsC;AACtC,6DAA+E;AAC/E,4CAA6D;AAC7D,oDAAgD;AAChD,mDAAwE;AACxE,8CAEuB;AACvB,mDAEgC;AAEhC,cAAI,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;AACzB,MAAM,EAAE,MAAM,EAAE,GAAG,cAAI,CAAC;AAExB,MAAM,4BAA4B,GAChC,2EAA2E,CAAC;AAE9E,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,IAAA,4BAAe,GAAE,CAAC;QACxB,MAAM,IAAA,2BAAc,GAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,IAAA,4BAAe,GAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAY,EACjC,uDAA0C,EAC1C,2BAAW,CAAC,OAAO,EACnB,KAAM,CACP,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5C,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAA,yCAA6B,EAAC,2BAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;aACjE,SAAS,CAAC;QAEb,MAAM,CAAC,IAAA,wCAA2B,EAAC,2BAAW,CAAC,OAAO,CAAC,CAAC;aACrD,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QAEvB,MAAM,EAAE,KAAK,EAAE,GAAG,8BAAc,CAAC,2BAAW,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,CACJ,wBAAe,CAAC,yBAAyB,CACvC,KAAK,CACN,CACF,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QAEtB,wCAAwC;QACxC,MAAM,gBAAgB,GAAG,MAAM,IAAA,4BAAkB,EAC/C,mCAAsB,EACtB,4BAA4B,EAC5B,SAAS,CACV,CAAC;QACF,IAAI,CAAC,IAAA,yBAAS,EAAC,gBAAgB,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QACD,MAAM,MAAM,GAAG,IAAA,qBAAW,EAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,CACJ,MAAM,CAAC,iBAAiB,CACtB,8BAAc,CAAC,2BAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAC1C,CACF,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;IACxB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAM,CAAC,CAAC;IAEnB,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,MAAM,CACV,IAAA,4BAAY,EACV,EAAE,OAAO,EAAE,EAAE,EAAgC,EAC7C,2BAAW,CAAC,OAAO,EACnB,KAAK,CACN,CACF,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,CACV,IAAA,4BAAY,EACV,EAAE,OAAO,EAAE,KAAK,EAAgC,EAChD,2BAAW,CAAC,OAAO,EACnB,KAAK,CACN,CACF,CAAC,YAAY,CAAC,kCAAkC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {\n NetworkName,\n FallbackProviderJsonConfig,\n isDefined,\n NETWORK_CONFIG,\n} from '@matrix-privacy/shared-models';\nimport {\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_FALLBACK_PROVIDER_JSON_CONFIG_SEPOLIA,\n} from '../../../../tests/mocks.test';\nimport { closeTestEngine, initTestEngine } from '../../../../tests/setup.test';\nimport { getFallbackProviderForNetwork } from '../providers';\nimport { loadProvider } from '../load-provider';\nimport { createMatrixWallet, walletForID } from '../../wallets/wallets';\nimport {\n getUTXOMerkletreeForNetwork,\n} from '../merkletree';\nimport {\n MatrixContracts,\n} from '@matrix-privacy/engine';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\nconst MOCK_MNEMONIC_PROVIDERS_ONLY =\n 'pause crystal tornado alcohol genre cement fade large song like bag where';\n\ndescribe('providers', () => {\n before(async () => {\n await closeTestEngine();\n await initTestEngine();\n });\n after(async () => {\n await closeTestEngine();\n });\n\n it('Should load provider with json, pull fees, and check created objects', async () => {\n const response = await loadProvider(\n MOCK_FALLBACK_PROVIDER_JSON_CONFIG_SEPOLIA,\n NetworkName.Hardhat,\n 10_000, // pollingInterval\n );\n expect(response.feesSerialized).to.deep.equal({\n shieldFee: '25',\n unshieldFee: '25',\n });\n\n expect(getFallbackProviderForNetwork(NetworkName.Hardhat)).to.not.be\n .undefined;\n\n expect(getUTXOMerkletreeForNetwork(NetworkName.Hardhat))\n .to.not.be.undefined;\n\n const { chain } = NETWORK_CONFIG[NetworkName.Hardhat];\n expect(\n MatrixContracts.getShieldApprovalContract(\n chain,\n ),\n ).to.not.be.undefined;\n\n // Check that new wallet has merkletree.\n const matrixWalletInfo = await createMatrixWallet(\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_MNEMONIC_PROVIDERS_ONLY,\n undefined, // creationBlockNumbers\n );\n if (!isDefined(matrixWalletInfo)) {\n throw new Error('Expected matrixWalletInfo.');\n }\n const wallet = walletForID(matrixWalletInfo.id);\n expect(\n wallet.getUTXOMerkletree(\n NETWORK_CONFIG[NetworkName.Hardhat].chain,\n ),\n ).to.not.be.undefined;\n }).timeout(15_000);\n\n it('Should fail with invalid chain ID', async () => {\n await expect(\n loadProvider(\n { chainId: 55 } as FallbackProviderJsonConfig,\n NetworkName.Hardhat,\n 10000, // pollingInterval\n ),\n ).rejectedWith('Invalid chain ID');\n });\n\n it('Should fail with invalid json', async () => {\n await expect(\n loadProvider(\n { chainId: 31337 } as FallbackProviderJsonConfig,\n NetworkName.Hardhat,\n 10000, // pollingInterval\n ),\n ).rejectedWith('Invalid fallback provider config');\n });\n});\n"]}
@@ -0,0 +1,10 @@
1
+ import { ArtifactGetter, PublicInputsMatrix } from '@matrix-privacy/engine';
2
+ import { Artifact } from '@matrix-privacy/shared-models';
3
+ import { ArtifactStore } from '../../artifacts/artifact-store';
4
+ export declare const artifactCache: MapType<Artifact>;
5
+ export declare const setArtifactStore: (store: ArtifactStore) => void;
6
+ export declare const setUseNativeArtifacts: (useNative: boolean) => void;
7
+ export declare const getArtifacts: (inputs: PublicInputsMatrix) => Promise<Artifact>;
8
+ export declare const artifactGetterDownloadJustInTime: ArtifactGetter;
9
+ export declare const overrideArtifact: (artifactVariant: string, artifact: Artifact) => void;
10
+ export declare const clearArtifactCache: () => void;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearArtifactCache = exports.overrideArtifact = exports.artifactGetterDownloadJustInTime = exports.getArtifacts = exports.setUseNativeArtifacts = exports.setArtifactStore = exports.artifactCache = void 0;
4
+ const shared_models_1 = require("@matrix-privacy/shared-models");
5
+ const artifact_downloader_1 = require("../../artifacts/artifact-downloader");
6
+ const artifact_util_1 = require("../../artifacts/artifact-util");
7
+ let artifactStore;
8
+ let useNativeArtifacts;
9
+ exports.artifactCache = {};
10
+ const setArtifactStore = (store) => {
11
+ artifactStore = store;
12
+ };
13
+ exports.setArtifactStore = setArtifactStore;
14
+ const setUseNativeArtifacts = (useNative) => {
15
+ useNativeArtifacts = useNative;
16
+ };
17
+ exports.setUseNativeArtifacts = setUseNativeArtifacts;
18
+ const getArtifacts = async (inputs) => {
19
+ const nullifiers = inputs.nullifiers.length;
20
+ const commitments = inputs.commitmentsOut.length;
21
+ (0, shared_models_1.assertArtifactExists)(nullifiers, commitments);
22
+ if (useNativeArtifacts) {
23
+ if (commitments > 3) {
24
+ // native-prover-small only has INPUTS (1-10) and OUTPUTS (1-3)
25
+ throw new Error(`Native artifacts (small) only support up to 3 circuit outputs. Cannot get artifacts for circuit: ${nullifiers}x${commitments}.`);
26
+ }
27
+ }
28
+ const artifactVariantString = (0, artifact_util_1.getArtifactVariantString)(nullifiers, commitments);
29
+ return downloadAndCacheArtifact(artifactVariantString);
30
+ };
31
+ exports.getArtifacts = getArtifacts;
32
+ const downloadAndCacheArtifact = async (artifactVariantString) => {
33
+ // Use artifact in cache if available.
34
+ const cachedArtifact = exports.artifactCache[artifactVariantString];
35
+ if ((0, shared_models_1.isDefined)(cachedArtifact)) {
36
+ return cachedArtifact;
37
+ }
38
+ const downloader = new artifact_downloader_1.ArtifactDownloader(artifactStore, useNativeArtifacts);
39
+ // Try to pull previously downloaded from storage.
40
+ try {
41
+ const downloadedArtifacts = await downloader.getDownloadedArtifacts(artifactVariantString);
42
+ exports.artifactCache[artifactVariantString] = downloadedArtifacts;
43
+ return downloadedArtifacts;
44
+ }
45
+ catch (err) {
46
+ // No op. Artifacts not yet downloaded.
47
+ }
48
+ // Download anew. Throws upon error.
49
+ await downloader.downloadArtifacts(artifactVariantString);
50
+ const downloadedArtifacts = await downloader.getDownloadedArtifacts(artifactVariantString);
51
+ exports.artifactCache[artifactVariantString] = downloadedArtifacts;
52
+ return downloadedArtifacts;
53
+ };
54
+ exports.artifactGetterDownloadJustInTime = {
55
+ assertArtifactExists: shared_models_1.assertArtifactExists,
56
+ getArtifacts: exports.getArtifacts,
57
+ };
58
+ const overrideArtifact = (artifactVariant, artifact) => {
59
+ exports.artifactCache[artifactVariant] = artifact;
60
+ };
61
+ exports.overrideArtifact = overrideArtifact;
62
+ const clearArtifactCache = () => {
63
+ for (const key in exports.artifactCache) {
64
+ if ((0, shared_models_1.isDefined)(exports.artifactCache[key])) {
65
+ delete exports.artifactCache[key];
66
+ }
67
+ }
68
+ };
69
+ exports.clearArtifactCache = clearArtifactCache;
70
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../src/services/matrix/core/artifacts.ts"],"names":[],"mappings":";;;AACA,iEAIuC;AACvC,6EAAyE;AAEzE,iEAEuC;AAEvC,IAAI,aAA4B,CAAC;AACjC,IAAI,kBAA2B,CAAC;AAEnB,QAAA,aAAa,GAAsB,EAAE,CAAC;AAE5C,MAAM,gBAAgB,GAAG,CAAC,KAAoB,EAAE,EAAE;IACvD,aAAa,GAAG,KAAK,CAAC;AACxB,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AACK,MAAM,qBAAqB,GAAG,CAAC,SAAkB,EAAE,EAAE;IAC1D,kBAAkB,GAAG,SAAS,CAAC;AACjC,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAEK,MAAM,YAAY,GAAG,KAAK,EAC/B,MAA0B,EACP,EAAE;IACrB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;IACjD,IAAA,oCAAoB,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAE9C,IAAI,kBAAkB,EAAE;QACtB,IAAI,WAAW,GAAG,CAAC,EAAE;YACnB,+DAA+D;YAC/D,MAAM,IAAI,KAAK,CACb,oGAAoG,UAAU,IAAI,WAAW,GAAG,CACjI,CAAC;SACH;KACF;IAED,MAAM,qBAAqB,GAAG,IAAA,wCAAwB,EACpD,UAAU,EACV,WAAW,CACZ,CAAC;IAEF,OAAO,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;AACzD,CAAC,CAAC;AAtBW,QAAA,YAAY,gBAsBvB;AAEF,MAAM,wBAAwB,GAAG,KAAK,EACpC,qBAA6B,EACV,EAAE;IACrB,sCAAsC;IACtC,MAAM,cAAc,GAAG,qBAAa,CAAC,qBAAqB,CAAC,CAAC;IAC5D,IAAI,IAAA,yBAAS,EAAC,cAAc,CAAC,EAAE;QAC7B,OAAO,cAAc,CAAC;KACvB;IAED,MAAM,UAAU,GAAG,IAAI,wCAAkB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IAE7E,kDAAkD;IAClD,IAAI;QACF,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,sBAAsB,CACjE,qBAAqB,CACtB,CAAC;QACF,qBAAa,CAAC,qBAAqB,CAAC,GAAG,mBAAmB,CAAC;QAC3D,OAAO,mBAAmB,CAAC;KAC5B;IAAC,OAAO,GAAG,EAAE;QACZ,uCAAuC;KACxC;IAED,oCAAoC;IACpC,MAAM,UAAU,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAC1D,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,sBAAsB,CACjE,qBAAqB,CACtB,CAAC;IACF,qBAAa,CAAC,qBAAqB,CAAC,GAAG,mBAAmB,CAAC;IAC3D,OAAO,mBAAmB,CAAC;AAC7B,CAAC,CAAC;AAEW,QAAA,gCAAgC,GAAmB;IAC9D,oBAAoB,EAApB,oCAAoB;IACpB,YAAY,EAAZ,oBAAY;CACb,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAC9B,eAAuB,EACvB,QAAkB,EAClB,EAAE;IACF,qBAAa,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;AAC5C,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B;AAEK,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,KAAK,MAAM,GAAG,IAAI,qBAAa,EAAE;QAC/B,IAAI,IAAA,yBAAS,EAAC,qBAAa,CAAC,GAAG,CAAC,CAAC,EAAE;YACjC,OAAO,qBAAa,CAAC,GAAG,CAAC,CAAC;SAC3B;KACF;AACH,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B","sourcesContent":["import { ArtifactGetter, PublicInputsMatrix } from '@matrix-privacy/engine';\nimport {\n Artifact,\n assertArtifactExists,\n isDefined,\n} from '@matrix-privacy/shared-models';\nimport { ArtifactDownloader } from '../../artifacts/artifact-downloader';\nimport { ArtifactStore } from '../../artifacts/artifact-store';\nimport {\n getArtifactVariantString,\n} from '../../artifacts/artifact-util';\n\nlet artifactStore: ArtifactStore;\nlet useNativeArtifacts: boolean;\n\nexport const artifactCache: MapType<Artifact> = {};\n\nexport const setArtifactStore = (store: ArtifactStore) => {\n artifactStore = store;\n};\nexport const setUseNativeArtifacts = (useNative: boolean) => {\n useNativeArtifacts = useNative;\n};\n\nexport const getArtifacts = async (\n inputs: PublicInputsMatrix,\n): Promise<Artifact> => {\n const nullifiers = inputs.nullifiers.length;\n const commitments = inputs.commitmentsOut.length;\n assertArtifactExists(nullifiers, commitments);\n\n if (useNativeArtifacts) {\n if (commitments > 3) {\n // native-prover-small only has INPUTS (1-10) and OUTPUTS (1-3)\n throw new Error(\n `Native artifacts (small) only support up to 3 circuit outputs. Cannot get artifacts for circuit: ${nullifiers}x${commitments}.`,\n );\n }\n }\n\n const artifactVariantString = getArtifactVariantString(\n nullifiers,\n commitments,\n );\n\n return downloadAndCacheArtifact(artifactVariantString);\n};\n\nconst downloadAndCacheArtifact = async (\n artifactVariantString: string,\n): Promise<Artifact> => {\n // Use artifact in cache if available.\n const cachedArtifact = artifactCache[artifactVariantString];\n if (isDefined(cachedArtifact)) {\n return cachedArtifact;\n }\n\n const downloader = new ArtifactDownloader(artifactStore, useNativeArtifacts);\n\n // Try to pull previously downloaded from storage.\n try {\n const downloadedArtifacts = await downloader.getDownloadedArtifacts(\n artifactVariantString,\n );\n artifactCache[artifactVariantString] = downloadedArtifacts;\n return downloadedArtifacts;\n } catch (err) {\n // No op. Artifacts not yet downloaded.\n }\n\n // Download anew. Throws upon error.\n await downloader.downloadArtifacts(artifactVariantString);\n const downloadedArtifacts = await downloader.getDownloadedArtifacts(\n artifactVariantString,\n );\n artifactCache[artifactVariantString] = downloadedArtifacts;\n return downloadedArtifacts;\n};\n\nexport const artifactGetterDownloadJustInTime: ArtifactGetter = {\n assertArtifactExists,\n getArtifacts,\n};\n\nexport const overrideArtifact = (\n artifactVariant: string,\n artifact: Artifact,\n) => {\n artifactCache[artifactVariant] = artifact;\n};\n\nexport const clearArtifactCache = () => {\n for (const key in artifactCache) {\n if (isDefined(artifactCache[key])) {\n delete artifactCache[key];\n }\n }\n};\n"]}
@@ -0,0 +1,4 @@
1
+ import { MatrixEngine } from '@matrix-privacy/engine';
2
+ export declare const getEngine: () => MatrixEngine;
3
+ export declare const hasEngine: () => boolean;
4
+ export declare const setEngine: (engine: Optional<MatrixEngine>) => void;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setEngine = exports.hasEngine = exports.getEngine = void 0;
4
+ const shared_models_1 = require("@matrix-privacy/shared-models");
5
+ let savedEngine;
6
+ const getEngine = () => {
7
+ if (!savedEngine) {
8
+ throw new Error('Matrix Engine not yet initialized.');
9
+ }
10
+ return savedEngine;
11
+ };
12
+ exports.getEngine = getEngine;
13
+ const hasEngine = () => {
14
+ return (0, shared_models_1.isDefined)(savedEngine);
15
+ };
16
+ exports.hasEngine = hasEngine;
17
+ const setEngine = (engine) => {
18
+ savedEngine = engine;
19
+ };
20
+ exports.setEngine = setEngine;
21
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../src/services/matrix/core/engine.ts"],"names":[],"mappings":";;;AACA,iEAA0D;AAE1D,IAAI,WAAmC,CAAC;AAEjC,MAAM,SAAS,GAAG,GAAiB,EAAE;IAC1C,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACvD;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AALW,QAAA,SAAS,aAKpB;AAEK,MAAM,SAAS,GAAG,GAAY,EAAE;IACrC,OAAO,IAAA,yBAAS,EAAC,WAAW,CAAC,CAAC;AAChC,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB;AAEK,MAAM,SAAS,GAAG,CAAC,MAA8B,EAAE,EAAE;IAC1D,WAAW,GAAG,MAAM,CAAC;AACvB,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB","sourcesContent":["import { MatrixEngine } from '@matrix-privacy/engine';\nimport { isDefined } from '@matrix-privacy/shared-models';\n\nlet savedEngine: Optional<MatrixEngine>;\n\nexport const getEngine = (): MatrixEngine => {\n if (!savedEngine) {\n throw new Error('Matrix Engine not yet initialized.');\n }\n return savedEngine;\n};\n\nexport const hasEngine = (): boolean => {\n return isDefined(savedEngine);\n};\n\nexport const setEngine = (engine: Optional<MatrixEngine>) => {\n savedEngine = engine;\n};\n"]}
@@ -0,0 +1,8 @@
1
+ export * from './artifacts';
2
+ export * from './init';
3
+ export * from './engine';
4
+ export * from './load-provider';
5
+ export * from './merkletree';
6
+ export * from './prover';
7
+ export * from './providers';
8
+ export * from './shields';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./artifacts"), exports);
18
+ __exportStar(require("./init"), exports);
19
+ __exportStar(require("./engine"), exports);
20
+ __exportStar(require("./load-provider"), exports);
21
+ __exportStar(require("./merkletree"), exports);
22
+ __exportStar(require("./prover"), exports);
23
+ __exportStar(require("./providers"), exports);
24
+ __exportStar(require("./shields"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/matrix/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,yCAAuB;AACvB,2CAAyB;AACzB,kDAAgC;AAChC,+CAA6B;AAC7B,2CAAyB;AACzB,8CAA4B;AAC5B,4CAA0B","sourcesContent":["export * from './artifacts';\nexport * from './init';\nexport * from './engine';\nexport * from './load-provider';\nexport * from './merkletree';\nexport * from './prover';\nexport * from './providers';\nexport * from './shields';\n"]}
@@ -0,0 +1,21 @@
1
+ import type { AbstractLevelDOWN } from 'abstract-leveldown';
2
+ import { MerkletreeScanUpdateEvent } from '@matrix-privacy/shared-models';
3
+ import { ArtifactStore } from '../../artifacts/artifact-store';
4
+ export type EngineDebugger = {
5
+ log: (msg: string) => void;
6
+ error: (error: Error) => void;
7
+ verboseScanLogging: boolean;
8
+ };
9
+ export declare const setOnUTXOMerkletreeScanCallback: (onUTXOMerkletreeScanCallback: (scanData: MerkletreeScanUpdateEvent) => void) => void;
10
+ /**
11
+ *
12
+ * @param walletSource - Name for your wallet implementation. Encrypted and viewable in private transaction history. Maximum of 16 characters, lowercase.
13
+ * @param db - LevelDOWN compatible database for storing encrypted wallets.
14
+ * @param shouldDebug - Whether to forward Engine debug logs to Logger.
15
+ * @param artifactStore - Persistent store for downloading large artifact files. See Wallet SDK Developer Guide for platform implementations.
16
+ * @param useNativeArtifacts - Whether to download native C++ or web-assembly artifacts. TRUE for mobile. FALSE for nodejs and browser.
17
+ * @param skipMerkletreeScans - Whether to skip merkletree syncs and private balance scans. Only set to TRUE in shield-only applications that don't load private wallets or balances.
18
+ * @returns
19
+ */
20
+ export declare const startMatrixEngine: (walletSource: string, db: AbstractLevelDOWN, shouldDebug: boolean, artifactStore: ArtifactStore, useNativeArtifacts: boolean, skipMerkletreeScans: boolean, verboseScanLogging?: boolean) => Promise<void>;
21
+ export declare const stopMatrixEngine: () => Promise<void>;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stopMatrixEngine = exports.startMatrixEngine = exports.setOnUTXOMerkletreeScanCallback = void 0;
4
+ const engine_1 = require("@matrix-privacy/engine");
5
+ const shared_models_1 = require("@matrix-privacy/shared-models");
6
+ const logger_1 = require("../../../utils/logger");
7
+ const artifacts_1 = require("./artifacts");
8
+ const error_1 = require("../../../utils/error");
9
+ const quick_sync_events_1 = require("../quick-sync/quick-sync-events");
10
+ const engine_2 = require("./engine");
11
+ const balance_update_1 = require("../wallets/balance-update");
12
+ const createEngineDebugger = (verboseScanLogging) => {
13
+ return {
14
+ log: (msg) => (0, logger_1.sendMessage)(msg),
15
+ error: (error) => (0, logger_1.sendErrorMessage)(error),
16
+ verboseScanLogging,
17
+ };
18
+ };
19
+ const setOnUTXOMerkletreeScanCallback = (onUTXOMerkletreeScanCallback) => {
20
+ const engine = (0, engine_2.getEngine)();
21
+ engine.on(engine_1.EngineEvent.UTXOMerkletreeHistoryScanUpdate, ({ chain, scanStatus, progress }) => onUTXOMerkletreeScanCallback({
22
+ scanStatus,
23
+ chain,
24
+ progress: progress ?? 0.0,
25
+ }));
26
+ };
27
+ exports.setOnUTXOMerkletreeScanCallback = setOnUTXOMerkletreeScanCallback;
28
+ const setOnUTXOScanDecryptBalancesCompleteListener = () => {
29
+ const engine = (0, engine_2.getEngine)();
30
+ engine.on(engine_1.EngineEvent.UTXOScanDecryptBalancesComplete, ({ chain, walletIdFilter, }) => {
31
+ const updateWalletBalances = async () => {
32
+ let walletsToUpdate = Object.values(engine.wallets);
33
+ if ((0, shared_models_1.isDefined)(walletIdFilter)) {
34
+ walletsToUpdate = walletsToUpdate.filter(wallet => walletIdFilter.includes(wallet.id));
35
+ }
36
+ // await onBalancesUpdate calls for each wallet
37
+ await Promise.all(walletsToUpdate.map(wallet => (0, balance_update_1.onBalancesUpdate)(wallet, chain)));
38
+ // emit event to notify listeners that UTXOMerkletreeHistoryScan is complete
39
+ engine.emitScanEventHistoryComplete(chain);
40
+ };
41
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
42
+ updateWalletBalances();
43
+ });
44
+ };
45
+ /**
46
+ *
47
+ * @param walletSource - Name for your wallet implementation. Encrypted and viewable in private transaction history. Maximum of 16 characters, lowercase.
48
+ * @param db - LevelDOWN compatible database for storing encrypted wallets.
49
+ * @param shouldDebug - Whether to forward Engine debug logs to Logger.
50
+ * @param artifactStore - Persistent store for downloading large artifact files. See Wallet SDK Developer Guide for platform implementations.
51
+ * @param useNativeArtifacts - Whether to download native C++ or web-assembly artifacts. TRUE for mobile. FALSE for nodejs and browser.
52
+ * @param skipMerkletreeScans - Whether to skip merkletree syncs and private balance scans. Only set to TRUE in shield-only applications that don't load private wallets or balances.
53
+ * @returns
54
+ */
55
+ const startMatrixEngine = async (walletSource, db, shouldDebug, artifactStore, useNativeArtifacts, skipMerkletreeScans, verboseScanLogging = false) => {
56
+ if ((0, engine_2.hasEngine)()) {
57
+ return;
58
+ }
59
+ try {
60
+ (0, artifacts_1.setArtifactStore)(artifactStore);
61
+ (0, artifacts_1.setUseNativeArtifacts)(useNativeArtifacts);
62
+ const engine = await engine_1.MatrixEngine.init(walletSource, db, artifacts_1.artifactGetterDownloadJustInTime, quick_sync_events_1.quickSyncEventsGraph, shouldDebug ? createEngineDebugger(verboseScanLogging) : undefined, skipMerkletreeScans);
63
+ (0, engine_2.setEngine)(engine);
64
+ setOnUTXOScanDecryptBalancesCompleteListener();
65
+ }
66
+ catch (err) {
67
+ throw (0, error_1.reportAndSanitizeError)(exports.startMatrixEngine.name, err);
68
+ }
69
+ };
70
+ exports.startMatrixEngine = startMatrixEngine;
71
+ const stopMatrixEngine = async () => {
72
+ if (!(0, engine_2.hasEngine)()) {
73
+ return;
74
+ }
75
+ await (0, engine_2.getEngine)()?.unload();
76
+ (0, engine_2.setEngine)(undefined);
77
+ };
78
+ exports.stopMatrixEngine = stopMatrixEngine;
79
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/services/matrix/core/init.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractLevelDOWN } from 'abstract-leveldown';\nimport {\n MatrixEngine,\n EngineEvent,\n MerkletreeHistoryScanEventData,\n UTXOScanDecryptBalancesCompleteEventData,\n AbstractWallet,\n} from '@matrix-privacy/engine';\nimport {\n MerkletreeScanUpdateEvent,\n isDefined,\n} from '@matrix-privacy/shared-models';\nimport { sendErrorMessage, sendMessage } from '../../../utils/logger';\nimport {\n artifactGetterDownloadJustInTime,\n setArtifactStore,\n setUseNativeArtifacts,\n} from './artifacts';\nimport { ArtifactStore } from '../../artifacts/artifact-store';\nimport { reportAndSanitizeError } from '../../../utils/error';\nimport { quickSyncEventsGraph } from '../quick-sync/quick-sync-events';\nimport { setEngine, getEngine, hasEngine } from './engine';\nimport { onBalancesUpdate } from '../wallets/balance-update';\n\nexport type EngineDebugger = {\n log: (msg: string) => void;\n error: (error: Error) => void;\n verboseScanLogging: boolean;\n};\n\nconst createEngineDebugger = (verboseScanLogging: boolean): EngineDebugger => {\n return {\n log: (msg: string) => sendMessage(msg),\n error: (error: Error) => sendErrorMessage(error),\n verboseScanLogging,\n };\n};\n\nexport const setOnUTXOMerkletreeScanCallback = (\n onUTXOMerkletreeScanCallback: (scanData: MerkletreeScanUpdateEvent) => void,\n) => {\n const engine = getEngine();\n engine.on(\n EngineEvent.UTXOMerkletreeHistoryScanUpdate,\n ({ chain, scanStatus, progress }: MerkletreeHistoryScanEventData) =>\n onUTXOMerkletreeScanCallback({\n scanStatus,\n chain,\n progress: progress ?? 0.0,\n }),\n );\n};\n\nconst setOnUTXOScanDecryptBalancesCompleteListener = () => {\n const engine = getEngine();\n engine.on(\n EngineEvent.UTXOScanDecryptBalancesComplete,\n ({\n chain,\n walletIdFilter,\n }: UTXOScanDecryptBalancesCompleteEventData) => {\n const updateWalletBalances = async () => {\n let walletsToUpdate: AbstractWallet[] = Object.values(engine.wallets);\n if (isDefined(walletIdFilter)) {\n walletsToUpdate = walletsToUpdate.filter(wallet =>\n walletIdFilter.includes(wallet.id),\n );\n }\n\n // await onBalancesUpdate calls for each wallet\n await Promise.all(\n walletsToUpdate.map(wallet =>\n onBalancesUpdate(wallet, chain),\n ),\n );\n\n // emit event to notify listeners that UTXOMerkletreeHistoryScan is complete\n engine.emitScanEventHistoryComplete(chain);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n updateWalletBalances();\n },\n );\n};\n\n/**\n *\n * @param walletSource - Name for your wallet implementation. Encrypted and viewable in private transaction history. Maximum of 16 characters, lowercase.\n * @param db - LevelDOWN compatible database for storing encrypted wallets.\n * @param shouldDebug - Whether to forward Engine debug logs to Logger.\n * @param artifactStore - Persistent store for downloading large artifact files. See Wallet SDK Developer Guide for platform implementations.\n * @param useNativeArtifacts - Whether to download native C++ or web-assembly artifacts. TRUE for mobile. FALSE for nodejs and browser.\n * @param skipMerkletreeScans - Whether to skip merkletree syncs and private balance scans. Only set to TRUE in shield-only applications that don't load private wallets or balances.\n * @returns\n */\nexport const startMatrixEngine = async (\n walletSource: string,\n db: AbstractLevelDOWN,\n shouldDebug: boolean,\n artifactStore: ArtifactStore,\n useNativeArtifacts: boolean,\n skipMerkletreeScans: boolean,\n verboseScanLogging = false,\n): Promise<void> => {\n if (hasEngine()) {\n return;\n }\n try {\n setArtifactStore(artifactStore);\n setUseNativeArtifacts(useNativeArtifacts);\n\n const engine = await MatrixEngine.init(\n walletSource,\n db,\n artifactGetterDownloadJustInTime,\n quickSyncEventsGraph,\n shouldDebug ? createEngineDebugger(verboseScanLogging) : undefined,\n skipMerkletreeScans,\n );\n setEngine(engine);\n\n setOnUTXOScanDecryptBalancesCompleteListener();\n } catch (err) {\n throw reportAndSanitizeError(startMatrixEngine.name, err);\n }\n};\n\nexport const stopMatrixEngine = async () => {\n if (!hasEngine()) {\n return;\n }\n await getEngine()?.unload();\n setEngine(undefined);\n};\n"]}
@@ -0,0 +1,9 @@
1
+ import { FallbackProviderJsonConfig, LoadProviderResponse, NetworkName } from '@matrix-privacy/shared-models';
2
+ /**
3
+ * Note: The first provider listed in your fallback provider config is used as a polling provider
4
+ * for new Matrix events (balance updates).
5
+ */
6
+ export declare const loadProvider: (fallbackProviderJsonConfig: FallbackProviderJsonConfig, networkName: NetworkName, pollingInterval?: number) => Promise<LoadProviderResponse>;
7
+ export declare const unloadProvider: (networkName: NetworkName) => Promise<void>;
8
+ export declare const pauseAllPollingProviders: (excludeNetworkName?: NetworkName) => void;
9
+ export declare const resumeIsolatedPollingProviderForNetwork: (networkName: NetworkName) => void;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resumeIsolatedPollingProviderForNetwork = exports.pauseAllPollingProviders = exports.unloadProvider = exports.loadProvider = void 0;
4
+ const shared_models_1 = require("@matrix-privacy/shared-models");
5
+ const utils_1 = require("../../../utils");
6
+ const error_1 = require("../../../utils/error");
7
+ const engine_1 = require("./engine");
8
+ const engine_2 = require("@matrix-privacy/engine");
9
+ const providers_1 = require("./providers");
10
+ const createFallbackProviderForNetwork = async (networkName, fallbackProviderJsonConfig) => {
11
+ const existingProvider = providers_1.fallbackProviderMap[networkName];
12
+ if (existingProvider) {
13
+ return existingProvider;
14
+ }
15
+ const fallbackProvider = (0, shared_models_1.createFallbackProviderFromJsonConfig)(fallbackProviderJsonConfig);
16
+ (0, providers_1.setFallbackProviderForNetwork)(networkName, fallbackProvider);
17
+ return fallbackProvider;
18
+ };
19
+ const createPollingProviderForNetwork = async (networkName, fallbackProvider, pollingInterval) => {
20
+ const existingProvider = providers_1.pollingProviderMap[networkName];
21
+ if (existingProvider) {
22
+ return existingProvider;
23
+ }
24
+ const network = shared_models_1.NETWORK_CONFIG[networkName];
25
+ if (!(0, shared_models_1.isDefined)(network)) {
26
+ throw new Error('No network found');
27
+ }
28
+ const pollingProvider = await (0, engine_2.createPollingJsonRpcProviderForListeners)(fallbackProvider, network.chain.id, pollingInterval);
29
+ (0, providers_1.setPollingProviderForNetwork)(networkName, pollingProvider);
30
+ return pollingProvider;
31
+ };
32
+ const loadProviderForNetwork = async (chain, networkName, fallbackProviderJsonConfig, pollingInterval) => {
33
+ (0, utils_1.sendMessage)(`Load provider for network: ${networkName}`);
34
+ const fallbackProvider = await createFallbackProviderForNetwork(networkName, fallbackProviderJsonConfig);
35
+ const pollingProvider = await createPollingProviderForNetwork(networkName, fallbackProvider, pollingInterval);
36
+ const network = shared_models_1.NETWORK_CONFIG[networkName];
37
+ const { relayAdaptContract, accumulatorContract, verifierContract, tokenVaultContract, deploymentBlock: networkDeploymentBlock, publicName, } = network;
38
+ if (!relayAdaptContract) {
39
+ throw new Error(`Could not find Relay Adapt contract for network: ${publicName}`);
40
+ }
41
+ const engine = (0, engine_1.getEngine)();
42
+ const deploymentBlock = networkDeploymentBlock ?? 0;
43
+ // This function will set up the contracts for this chain.
44
+ // Throws if provider does not respond.
45
+ await engine.loadNetwork(chain, accumulatorContract, verifierContract, tokenVaultContract, relayAdaptContract, fallbackProvider, pollingProvider, deploymentBlock);
46
+ };
47
+ /**
48
+ * Note: The first provider listed in your fallback provider config is used as a polling provider
49
+ * for new Matrix events (balance updates).
50
+ */
51
+ const loadProvider = async (fallbackProviderJsonConfig, networkName, pollingInterval = 15000) => {
52
+ try {
53
+ delete providers_1.fallbackProviderMap[networkName];
54
+ const { chain } = shared_models_1.NETWORK_CONFIG[networkName];
55
+ if (fallbackProviderJsonConfig.chainId !== chain.id) {
56
+ throw new Error('Invalid chain ID');
57
+ }
58
+ await loadProviderForNetwork(chain, networkName, fallbackProviderJsonConfig, pollingInterval);
59
+ const { shield, unshield } = await engine_2.MatrixContracts.fees(chain);
60
+ // Note: Shield and Unshield fees are in basis points.
61
+ const feesSerialized = {
62
+ shieldFee: shield.toString(),
63
+ unshieldFee: unshield.toString(),
64
+ };
65
+ return { feesSerialized };
66
+ }
67
+ catch (err) {
68
+ throw (0, error_1.reportAndSanitizeError)(exports.loadProvider.name, err);
69
+ }
70
+ };
71
+ exports.loadProvider = loadProvider;
72
+ const unloadProvider = async (networkName) => {
73
+ await providers_1.fallbackProviderMap[networkName]?.destroy();
74
+ providers_1.pollingProviderMap[networkName]?.destroy();
75
+ delete providers_1.fallbackProviderMap[networkName];
76
+ delete providers_1.pollingProviderMap[networkName];
77
+ };
78
+ exports.unloadProvider = unloadProvider;
79
+ const pauseAllPollingProviders = (excludeNetworkName) => {
80
+ Object.keys(providers_1.pollingProviderMap).forEach(networkName => {
81
+ if (networkName === excludeNetworkName) {
82
+ return;
83
+ }
84
+ const pollingProvider = providers_1.pollingProviderMap[networkName];
85
+ if ((0, shared_models_1.isDefined)(pollingProvider) && !pollingProvider.paused) {
86
+ pollingProvider.pause();
87
+ }
88
+ });
89
+ };
90
+ exports.pauseAllPollingProviders = pauseAllPollingProviders;
91
+ const resumeIsolatedPollingProviderForNetwork = (networkName) => {
92
+ (0, exports.pauseAllPollingProviders)(networkName);
93
+ const pollingProviderForNetwork = providers_1.pollingProviderMap[networkName];
94
+ if ((0, shared_models_1.isDefined)(pollingProviderForNetwork) &&
95
+ pollingProviderForNetwork.paused) {
96
+ pollingProviderForNetwork.resume();
97
+ }
98
+ };
99
+ exports.resumeIsolatedPollingProviderForNetwork = resumeIsolatedPollingProviderForNetwork;
100
+ //# sourceMappingURL=load-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-provider.js","sourceRoot":"","sources":["../../../../src/services/matrix/core/load-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Chain,\n FallbackProviderJsonConfig,\n LoadProviderResponse,\n NETWORK_CONFIG,\n NetworkName,\n createFallbackProviderFromJsonConfig,\n isDefined,\n} from '@matrix-privacy/shared-models';\nimport { sendMessage } from '../../../utils';\nimport { reportAndSanitizeError } from '../../../utils/error';\nimport { getEngine } from './engine';\nimport {\n PollingJsonRpcProvider,\n MatrixContracts,\n createPollingJsonRpcProviderForListeners,\n} from '@matrix-privacy/engine';\nimport type { FallbackProvider } from 'ethers';\nimport {\n fallbackProviderMap,\n pollingProviderMap,\n setFallbackProviderForNetwork,\n setPollingProviderForNetwork,\n} from './providers';\n\nconst createFallbackProviderForNetwork = async (\n networkName: NetworkName,\n fallbackProviderJsonConfig: FallbackProviderJsonConfig,\n): Promise<FallbackProvider> => {\n const existingProvider = fallbackProviderMap[networkName];\n if (existingProvider) {\n return existingProvider;\n }\n const fallbackProvider = createFallbackProviderFromJsonConfig(\n fallbackProviderJsonConfig,\n );\n setFallbackProviderForNetwork(networkName, fallbackProvider);\n return fallbackProvider;\n};\n\nconst createPollingProviderForNetwork = async (\n networkName: NetworkName,\n fallbackProvider: FallbackProvider,\n pollingInterval: number,\n): Promise<PollingJsonRpcProvider> => {\n const existingProvider = pollingProviderMap[networkName];\n if (existingProvider) {\n return existingProvider;\n }\n const network = NETWORK_CONFIG[networkName];\n if (!isDefined(network)) {\n throw new Error('No network found');\n }\n const pollingProvider = await createPollingJsonRpcProviderForListeners(\n fallbackProvider,\n network.chain.id,\n pollingInterval,\n );\n setPollingProviderForNetwork(networkName, pollingProvider);\n return pollingProvider;\n};\n\nconst loadProviderForNetwork = async (\n chain: Chain,\n networkName: NetworkName,\n fallbackProviderJsonConfig: FallbackProviderJsonConfig,\n pollingInterval: number,\n) => {\n sendMessage(`Load provider for network: ${networkName}`);\n\n const fallbackProvider = await createFallbackProviderForNetwork(\n networkName,\n fallbackProviderJsonConfig,\n );\n const pollingProvider = await createPollingProviderForNetwork(\n networkName,\n fallbackProvider,\n pollingInterval\n );\n\n const network = NETWORK_CONFIG[networkName];\n const {\n relayAdaptContract,\n accumulatorContract,\n verifierContract,\n tokenVaultContract,\n deploymentBlock: networkDeploymentBlock,\n publicName,\n } = network;\n if (!relayAdaptContract) {\n throw new Error(\n `Could not find Relay Adapt contract for network: ${publicName}`,\n );\n }\n\n const engine = getEngine();\n\n const deploymentBlock = networkDeploymentBlock ?? 0;\n\n // This function will set up the contracts for this chain.\n // Throws if provider does not respond.\n await engine.loadNetwork(\n chain,\n accumulatorContract,\n verifierContract,\n tokenVaultContract,\n relayAdaptContract,\n fallbackProvider,\n pollingProvider,\n deploymentBlock,\n );\n};\n\n/**\n * Note: The first provider listed in your fallback provider config is used as a polling provider\n * for new Matrix events (balance updates).\n */\nexport const loadProvider = async (\n fallbackProviderJsonConfig: FallbackProviderJsonConfig,\n networkName: NetworkName,\n pollingInterval = 15000,\n): Promise<LoadProviderResponse> => {\n try {\n delete fallbackProviderMap[networkName];\n\n const { chain } = NETWORK_CONFIG[networkName];\n if (fallbackProviderJsonConfig.chainId !== chain.id) {\n throw new Error('Invalid chain ID');\n }\n\n await loadProviderForNetwork(\n chain,\n networkName,\n fallbackProviderJsonConfig,\n pollingInterval,\n );\n\n const { shield, unshield } = await MatrixContracts.fees(chain);\n\n // Note: Shield and Unshield fees are in basis points.\n const feesSerialized = {\n shieldFee: shield.toString(),\n unshieldFee: unshield.toString(),\n };\n return { feesSerialized };\n } catch (err) {\n throw reportAndSanitizeError(loadProvider.name, err);\n }\n};\n\nexport const unloadProvider = async (\n networkName: NetworkName,\n): Promise<void> => {\n await fallbackProviderMap[networkName]?.destroy();\n pollingProviderMap[networkName]?.destroy();\n delete fallbackProviderMap[networkName];\n delete pollingProviderMap[networkName];\n};\n\nexport const pauseAllPollingProviders = (\n excludeNetworkName?: NetworkName,\n): void => {\n Object.keys(pollingProviderMap).forEach(networkName => {\n if (networkName === excludeNetworkName) {\n return;\n }\n const pollingProvider = pollingProviderMap[networkName];\n if (isDefined(pollingProvider) && !pollingProvider.paused) {\n pollingProvider.pause();\n }\n });\n};\n\nexport const resumeIsolatedPollingProviderForNetwork = (\n networkName: NetworkName,\n): void => {\n pauseAllPollingProviders(\n networkName, // excludeNetworkName\n );\n const pollingProviderForNetwork = pollingProviderMap[networkName];\n if (\n isDefined(pollingProviderForNetwork) &&\n pollingProviderForNetwork.paused\n ) {\n pollingProviderForNetwork.resume();\n }\n};\n"]}
@@ -0,0 +1,5 @@
1
+ import { NetworkName } from '@matrix-privacy/shared-models';
2
+ import { NFTTokenData, TXO, TokenData } from '@matrix-privacy/engine';
3
+ export declare const getUTXOMerkletreeForNetwork: (networkName: NetworkName) => import("@matrix-privacy/engine/dist/merkletree/utxo-merkletree").UTXOMerkletree;
4
+ export declare const getSpendableUTXOsForToken: (networkName: NetworkName, walletID: string, tokenData: TokenData) => Promise<Optional<TXO[]>>;
5
+ export declare const getMerkleProofForERC721: (networkName: NetworkName, walletID: string, nftTokenData: NFTTokenData) => Promise<import("@matrix-privacy/engine").MerkleProof>;