@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,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateUnshieldBaseToken = exports.generateTransact = exports.generateDummyProofTransactions = exports.createDummyBroadcasterFeeERC20Amount = exports.nullifiersForTransactions = exports.generateProofTransactions = exports.DUMMY_FROM_ADDRESS = void 0;
4
+ const engine_1 = require("@matrix-privacy/engine");
5
+ const shared_models_1 = require("@matrix-privacy/shared-models");
6
+ const tx_notes_1 = require("./tx-notes");
7
+ const prover_1 = require("../matrix/core/prover");
8
+ const wallets_1 = require("../matrix/wallets/wallets");
9
+ const gas_price_1 = require("../../utils/gas-price");
10
+ const DUMMY_AMOUNT = 0n;
11
+ exports.DUMMY_FROM_ADDRESS = '0x000000000000000000000000000000000000dEaD';
12
+ const generateProofTransactions = async (proofType, networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, useDummyProof, overallBatchMinGasPrice, progressCallback, originShieldTxidForSpendabilityOverride) => {
13
+ const matrixWallet = (0, wallets_1.fullWalletForID)(matrixWalletID);
14
+ const txs = await transactionsFromERC20Amounts(proofType, erc20AmountRecipients, nftAmountRecipients, matrixWallet, encryptionKey, showSenderAddressToRecipient, memoText, networkName, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, useDummyProof, overallBatchMinGasPrice, progressCallback, originShieldTxidForSpendabilityOverride);
15
+ return txs;
16
+ };
17
+ exports.generateProofTransactions = generateProofTransactions;
18
+ const nullifiersForTransactions = (transactions) => {
19
+ return transactions
20
+ .map(transaction => transaction.nullifiers)
21
+ .flat();
22
+ };
23
+ exports.nullifiersForTransactions = nullifiersForTransactions;
24
+ const createDummyBroadcasterFeeERC20Amount = (feeTokenAddress) => {
25
+ const broadcasterFeeERC20Amount = {
26
+ tokenAddress: feeTokenAddress,
27
+ amount: DUMMY_AMOUNT,
28
+ };
29
+ return broadcasterFeeERC20Amount;
30
+ };
31
+ exports.createDummyBroadcasterFeeERC20Amount = createDummyBroadcasterFeeERC20Amount;
32
+ const generateDummyProofTransactions = async (proofType, networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20Amount, sendWithPublicWallet, overallBatchMinGasPrice, originShieldTxidForSpendabilityOverride) => {
33
+ if (!broadcasterFeeERC20Amount && !sendWithPublicWallet) {
34
+ throw new Error('Must send with broadcaster or public wallet.');
35
+ }
36
+ const matrixWallet = (0, wallets_1.walletForID)(matrixWalletID);
37
+ // Use self-wallet as dummy broadcaster address.
38
+ const broadcasterMatrixAddress = matrixWallet.getAddress(undefined);
39
+ const broadcasterFeeERC20AmountRecipient = broadcasterFeeERC20Amount
40
+ ? {
41
+ ...broadcasterFeeERC20Amount,
42
+ recipientAddress: broadcasterMatrixAddress,
43
+ }
44
+ : undefined;
45
+ return (await (0, exports.generateProofTransactions)(proofType, networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, true, // useDummyProof
46
+ overallBatchMinGasPrice, () => { }, // progressCallback (not necessary for dummy txs)
47
+ originShieldTxidForSpendabilityOverride)).provedTransactions;
48
+ };
49
+ exports.generateDummyProofTransactions = generateDummyProofTransactions;
50
+ const generateTransact = async (txs, networkName, useDummyProof = false) => {
51
+ const chain = shared_models_1.NETWORK_CONFIG[networkName].chain;
52
+ const transaction = await engine_1.MatrixContracts.generateTransact(chain, txs);
53
+ if (useDummyProof) {
54
+ return {
55
+ ...transaction,
56
+ from: exports.DUMMY_FROM_ADDRESS,
57
+ };
58
+ }
59
+ return transaction;
60
+ };
61
+ exports.generateTransact = generateTransact;
62
+ const generateUnshieldBaseToken = async (txs, networkName, toWalletAddress, relayAdaptParamsRandom,
63
+ // eslint-disable-next-line default-param-last, @typescript-eslint/no-inferrable-types
64
+ useDummyProof = false, sendWithPublicWallet) => {
65
+ (0, wallets_1.assertValidEthAddress)(toWalletAddress);
66
+ const chain = shared_models_1.NETWORK_CONFIG[networkName].chain;
67
+ const transaction = await engine_1.MatrixContracts.getRelayAdaptContract(chain).populateUnshieldBaseToken(txs, toWalletAddress, relayAdaptParamsRandom);
68
+ if (useDummyProof) {
69
+ return {
70
+ ...transaction,
71
+ from: exports.DUMMY_FROM_ADDRESS,
72
+ };
73
+ }
74
+ return transaction;
75
+ };
76
+ exports.generateUnshieldBaseToken = generateUnshieldBaseToken;
77
+ const transactionsFromERC20Amounts = async (proofType, erc20AmountRecipients, nftAmountRecipients, matrixWallet, encryptionKey, showSenderAddressToRecipient, memoText, networkName, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, useDummyProof, overallBatchMinGasPrice, progressCallback, originShieldTxidForSpendabilityOverride) => {
78
+ const network = shared_models_1.NETWORK_CONFIG[networkName];
79
+ const { chain } = network;
80
+ // Removes overallBatchMinGasPrice for L2 networks and non-Broadcaster transactions.
81
+ const validatedOverallBatchMinGasPrice = (0, gas_price_1.shouldSetOverallBatchMinGasPriceForNetwork)(sendWithPublicWallet, networkName)
82
+ ? BigInt(overallBatchMinGasPrice ?? 0)
83
+ : BigInt(0);
84
+ const transactionBatch = new engine_1.TransactionBatch(chain, validatedOverallBatchMinGasPrice);
85
+ if (broadcasterFeeERC20AmountRecipient && !sendWithPublicWallet) {
86
+ (0, wallets_1.assertValidMatrixAddress)(broadcasterFeeERC20AmountRecipient.recipientAddress);
87
+ // Add Broadcaster Fee - must be first transaction in the batch, and first output for the transaction.
88
+ transactionBatch.addOutput((0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(broadcasterFeeERC20AmountRecipient, matrixWallet, engine_1.OutputType.RelayerFee, false, // showSenderAddressToRecipient - never show sender for Broadcaster fees
89
+ undefined));
90
+ }
91
+ erc20AmountRecipients.forEach((erc20AmountRecipient) => {
92
+ addTransactionOutputsERC20(proofType, transactionBatch, erc20AmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText);
93
+ });
94
+ nftAmountRecipients.forEach((nftAmountRecipient) => {
95
+ addTransactionOutputsNFT(proofType, transactionBatch, nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText);
96
+ });
97
+ const txBatches = await generateAllProofs(transactionBatch, matrixWallet, encryptionKey, useDummyProof, progressCallback, originShieldTxidForSpendabilityOverride);
98
+ return txBatches;
99
+ };
100
+ const addTransactionOutputsERC20 = (proofType, transactionBatch, erc20AmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText) => {
101
+ switch (proofType) {
102
+ case shared_models_1.ProofType.Transfer: {
103
+ addTransactionOutputsTransferERC20(transactionBatch, erc20AmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText);
104
+ break;
105
+ }
106
+ case shared_models_1.ProofType.CrossContractCalls:
107
+ case shared_models_1.ProofType.UnshieldBaseToken:
108
+ case shared_models_1.ProofType.Unshield: {
109
+ addTransactionOutputsUnshieldERC20(transactionBatch, erc20AmountRecipient, false);
110
+ break;
111
+ }
112
+ }
113
+ };
114
+ const addTransactionOutputsNFT = (proofType, transactionBatch, nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText) => {
115
+ switch (proofType) {
116
+ case shared_models_1.ProofType.Transfer: {
117
+ addTransactionOutputsTransferNFT(transactionBatch, nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText);
118
+ break;
119
+ }
120
+ case shared_models_1.ProofType.CrossContractCalls:
121
+ case shared_models_1.ProofType.UnshieldBaseToken:
122
+ case shared_models_1.ProofType.Unshield: {
123
+ addTransactionOutputsUnshieldNFT(transactionBatch, nftAmountRecipient, false);
124
+ break;
125
+ }
126
+ }
127
+ };
128
+ const addTransactionOutputsTransferERC20 = (transactionBatch, erc20AmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText) => {
129
+ (0, wallets_1.assertValidMatrixAddress)(erc20AmountRecipient.recipientAddress);
130
+ transactionBatch.addOutput((0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(erc20AmountRecipient, matrixWallet, engine_1.OutputType.Transfer, showSenderAddressToRecipient, memoText));
131
+ };
132
+ const addTransactionOutputsUnshieldERC20 = (transactionBatch, erc20AmountRecipient, allowOverride) => {
133
+ const { recipientAddress, amount } = erc20AmountRecipient;
134
+ (0, wallets_1.assertValidEthAddress)(recipientAddress);
135
+ const tokenData = (0, engine_1.getTokenDataERC20)(erc20AmountRecipient.tokenAddress);
136
+ transactionBatch.addUnshieldData({
137
+ toAddress: erc20AmountRecipient.recipientAddress,
138
+ value: amount,
139
+ tokenData,
140
+ allowOverride,
141
+ });
142
+ };
143
+ const addTransactionOutputsTransferNFT = (transactionBatch, nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText) => {
144
+ (0, wallets_1.assertValidMatrixAddress)(nftAmountRecipient.recipientAddress);
145
+ transactionBatch.addOutput((0, tx_notes_1.nftNoteFromNFTAmountRecipient)(nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText));
146
+ };
147
+ const addTransactionOutputsUnshieldNFT = (transactionBatch, nftAmountRecipient, allowOverride) => {
148
+ const { recipientAddress, nftAddress, tokenSubID, nftTokenType, amount } = nftAmountRecipient;
149
+ (0, wallets_1.assertValidEthAddress)(recipientAddress);
150
+ const tokenData = (0, engine_1.getTokenDataNFT)(nftAddress, nftTokenType, tokenSubID);
151
+ const value = nftTokenType === shared_models_1.NFTTokenType.ERC721 ? engine_1.ERC721_NOTE_VALUE : amount;
152
+ transactionBatch.addUnshieldData({
153
+ toAddress: recipientAddress,
154
+ value,
155
+ tokenData,
156
+ allowOverride,
157
+ });
158
+ };
159
+ const generateAllProofs = async (transactionBatch, matrixWallet, encryptionKey, useDummyProof, progressCallback, originShieldTxidForSpendabilityOverride) => {
160
+ const prover = (0, prover_1.getProver)();
161
+ if (useDummyProof) {
162
+ return {
163
+ provedTransactions: await transactionBatch.generateDummyTransactions(prover, matrixWallet, encryptionKey, originShieldTxidForSpendabilityOverride),
164
+ };
165
+ }
166
+ return transactionBatch.generateTransactions(prover, matrixWallet, encryptionKey, progressCallback, originShieldTxidForSpendabilityOverride);
167
+ };
168
+ //# sourceMappingURL=tx-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-generator.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n MatrixWallet,\n TransactionBatch,\n OutputType,\n getTokenDataERC20,\n getTokenDataNFT,\n ERC721_NOTE_VALUE,\n NFTTokenData,\n MatrixContracts,\n TransactionStructV3,\n} from '@matrix-privacy/engine';\nimport {\n MatrixERC20Amount,\n MatrixERC20AmountRecipient,\n NetworkName,\n NETWORK_CONFIG,\n ProofType,\n MatrixNFTAmountRecipient,\n NFTTokenType,\n} from '@matrix-privacy/shared-models';\nimport {\n erc20NoteFromERC20AmountRecipient,\n nftNoteFromNFTAmountRecipient,\n} from './tx-notes';\nimport { getProver } from '../matrix/core/prover';\nimport {\n assertValidEthAddress,\n assertValidMatrixAddress,\n fullWalletForID,\n walletForID,\n} from '../matrix/wallets/wallets';\nimport { shouldSetOverallBatchMinGasPriceForNetwork } from '../../utils/gas-price';\nimport { ContractTransaction } from 'ethers';\n\nconst DUMMY_AMOUNT = 0n;\nexport const DUMMY_FROM_ADDRESS = '0x000000000000000000000000000000000000dEaD';\n\nexport type GenerateTransactionsProgressCallback = (\n progress: number,\n status: string,\n) => void;\n\nexport const generateProofTransactions = async (\n proofType: ProofType,\n networkName: NetworkName,\n matrixWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: MatrixERC20AmountRecipient[],\n nftAmountRecipients: MatrixNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n originShieldTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: TransactionStructV3[];\n}> => {\n const matrixWallet = fullWalletForID(matrixWalletID);\n\n const txs = await transactionsFromERC20Amounts(\n proofType,\n erc20AmountRecipients,\n nftAmountRecipients,\n matrixWallet,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n networkName,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n useDummyProof,\n overallBatchMinGasPrice,\n progressCallback,\n originShieldTxidForSpendabilityOverride,\n );\n return txs;\n};\n\nexport const nullifiersForTransactions = (\n transactions: TransactionStructV3[],\n): string[] => {\n return transactions\n .map(transaction => transaction.nullifiers)\n .flat() as string[];\n};\n\nexport const createDummyBroadcasterFeeERC20Amount = (feeTokenAddress: string) => {\n const broadcasterFeeERC20Amount: MatrixERC20Amount = {\n tokenAddress: feeTokenAddress,\n amount: DUMMY_AMOUNT,\n };\n return broadcasterFeeERC20Amount;\n};\n\nexport const generateDummyProofTransactions = async (\n proofType: ProofType,\n networkName: NetworkName,\n matrixWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: MatrixERC20AmountRecipient[],\n nftAmountRecipients: MatrixNFTAmountRecipient[],\n broadcasterFeeERC20Amount: Optional<MatrixERC20Amount>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n originShieldTxidForSpendabilityOverride?: string,\n): Promise<TransactionStructV3[]> => {\n if (!broadcasterFeeERC20Amount && !sendWithPublicWallet) {\n throw new Error('Must send with broadcaster or public wallet.');\n }\n\n const matrixWallet = walletForID(matrixWalletID);\n\n // Use self-wallet as dummy broadcaster address.\n const broadcasterMatrixAddress = matrixWallet.getAddress(undefined);\n\n const broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient> =\n broadcasterFeeERC20Amount\n ? {\n ...broadcasterFeeERC20Amount,\n recipientAddress: broadcasterMatrixAddress,\n }\n : undefined;\n\n return (\n await generateProofTransactions(\n proofType,\n networkName,\n matrixWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n true, // useDummyProof\n overallBatchMinGasPrice,\n () => {}, // progressCallback (not necessary for dummy txs)\n originShieldTxidForSpendabilityOverride,\n )\n ).provedTransactions;\n};\n\nexport const generateTransact = async (\n txs: TransactionStructV3[],\n networkName: NetworkName,\n useDummyProof = false,\n): Promise<ContractTransaction> => {\n const chain = NETWORK_CONFIG[networkName].chain;\n const transaction = await MatrixContracts.generateTransact(\n chain,\n txs,\n );\n if (useDummyProof) {\n return {\n ...transaction,\n from: DUMMY_FROM_ADDRESS,\n };\n }\n return transaction;\n};\n\nexport const generateUnshieldBaseToken = async (\n txs: TransactionStructV3[],\n networkName: NetworkName,\n toWalletAddress: string,\n relayAdaptParamsRandom: string,\n // eslint-disable-next-line default-param-last, @typescript-eslint/no-inferrable-types\n useDummyProof : boolean = false,\n sendWithPublicWallet: boolean,\n): Promise<ContractTransaction> => {\n assertValidEthAddress(toWalletAddress);\n\n const chain = NETWORK_CONFIG[networkName].chain;\n\n const transaction =\n await MatrixContracts.getRelayAdaptContract(chain).populateUnshieldBaseToken(\n txs,\n toWalletAddress,\n relayAdaptParamsRandom,\n );\n if (useDummyProof) {\n return {\n ...transaction,\n from: DUMMY_FROM_ADDRESS,\n };\n }\n return transaction;\n};\n\nconst transactionsFromERC20Amounts = async (\n proofType: ProofType,\n erc20AmountRecipients: MatrixERC20AmountRecipient[],\n nftAmountRecipients: MatrixNFTAmountRecipient[],\n matrixWallet: MatrixWallet,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n networkName: NetworkName,\n broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n originShieldTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: TransactionStructV3[];\n}> => {\n const network = NETWORK_CONFIG[networkName];\n const { chain } = network;\n\n // Removes overallBatchMinGasPrice for L2 networks and non-Broadcaster transactions.\n const validatedOverallBatchMinGasPrice =\n shouldSetOverallBatchMinGasPriceForNetwork(\n sendWithPublicWallet,\n networkName,\n )\n ? BigInt(overallBatchMinGasPrice ?? 0)\n : BigInt(0);\n\n const transactionBatch = new TransactionBatch(\n chain,\n validatedOverallBatchMinGasPrice,\n );\n\n if (broadcasterFeeERC20AmountRecipient && !sendWithPublicWallet) {\n assertValidMatrixAddress(broadcasterFeeERC20AmountRecipient.recipientAddress);\n\n // Add Broadcaster Fee - must be first transaction in the batch, and first output for the transaction.\n transactionBatch.addOutput(\n erc20NoteFromERC20AmountRecipient(\n broadcasterFeeERC20AmountRecipient,\n matrixWallet,\n OutputType.RelayerFee,\n false, // showSenderAddressToRecipient - never show sender for Broadcaster fees\n undefined, // memoText\n ),\n );\n }\n\n erc20AmountRecipients.forEach(\n (erc20AmountRecipient: MatrixERC20AmountRecipient) => {\n addTransactionOutputsERC20(\n proofType,\n transactionBatch,\n erc20AmountRecipient,\n matrixWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n },\n );\n\n nftAmountRecipients.forEach(\n (nftAmountRecipient: MatrixNFTAmountRecipient) => {\n addTransactionOutputsNFT(\n proofType,\n transactionBatch,\n nftAmountRecipient,\n matrixWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n },\n );\n\n const txBatches = await generateAllProofs(\n transactionBatch,\n matrixWallet,\n encryptionKey,\n useDummyProof,\n progressCallback,\n originShieldTxidForSpendabilityOverride,\n );\n return txBatches;\n};\n\nconst addTransactionOutputsERC20 = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: MatrixERC20AmountRecipient,\n matrixWallet: MatrixWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferERC20(\n transactionBatch,\n erc20AmountRecipient,\n matrixWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.UnshieldBaseToken:\n case ProofType.Unshield: {\n addTransactionOutputsUnshieldERC20(\n transactionBatch,\n erc20AmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsNFT = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n nftAmountRecipient: MatrixNFTAmountRecipient,\n matrixWallet: MatrixWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferNFT(\n transactionBatch,\n nftAmountRecipient,\n matrixWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.UnshieldBaseToken:\n case ProofType.Unshield: {\n addTransactionOutputsUnshieldNFT(\n transactionBatch,\n nftAmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsTransferERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: MatrixERC20AmountRecipient,\n matrixWallet: MatrixWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidMatrixAddress(erc20AmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n erc20NoteFromERC20AmountRecipient(\n erc20AmountRecipient,\n matrixWallet,\n OutputType.Transfer,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsUnshieldERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: MatrixERC20AmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, amount } = erc20AmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n transactionBatch.addUnshieldData({\n toAddress: erc20AmountRecipient.recipientAddress,\n value: amount,\n tokenData,\n allowOverride,\n });\n};\n\nconst addTransactionOutputsTransferNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: MatrixNFTAmountRecipient,\n matrixWallet: MatrixWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidMatrixAddress(nftAmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n nftNoteFromNFTAmountRecipient(\n nftAmountRecipient,\n matrixWallet,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsUnshieldNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: MatrixNFTAmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, nftAddress, tokenSubID, nftTokenType, amount } =\n nftAmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n\n const tokenData: NFTTokenData = getTokenDataNFT(\n nftAddress,\n nftTokenType as 1 | 2,\n tokenSubID,\n );\n\n const value: bigint =\n nftTokenType === NFTTokenType.ERC721 ? ERC721_NOTE_VALUE : amount;\n\n transactionBatch.addUnshieldData({\n toAddress: recipientAddress,\n value,\n tokenData,\n allowOverride,\n });\n};\n\nconst generateAllProofs = async (\n transactionBatch: TransactionBatch,\n matrixWallet: MatrixWallet,\n encryptionKey: string,\n useDummyProof: boolean,\n progressCallback: GenerateTransactionsProgressCallback,\n originShieldTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: TransactionStructV3[];\n}> => {\n const prover = getProver();\n if (useDummyProof) {\n return {\n provedTransactions: await transactionBatch.generateDummyTransactions(\n prover,\n matrixWallet,\n encryptionKey,\n originShieldTxidForSpendabilityOverride,\n ),\n };\n }\n return transactionBatch.generateTransactions(\n prover,\n matrixWallet,\n encryptionKey,\n progressCallback,\n originShieldTxidForSpendabilityOverride,\n );\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import { OutputType, TransactNote, MatrixWallet } from '@matrix-privacy/engine';
2
+ import { MatrixNFTAmountRecipient, MatrixERC20Amount, MatrixERC20AmountRecipient, MatrixNFTAmount, MatrixERC20Recipient } from '@matrix-privacy/shared-models';
3
+ export declare const erc20NoteFromERC20AmountRecipient: (erc20AmountRecipient: MatrixERC20AmountRecipient, matrixWallet: MatrixWallet, outputType: OutputType, showSenderAddressToRecipient: boolean, memoText: Optional<string>) => TransactNote;
4
+ export declare const nftNoteFromNFTAmountRecipient: (nftAmountRecipient: MatrixNFTAmountRecipient, matrixWallet: MatrixWallet, showSenderAddressToRecipient: boolean, memoText: Optional<string>) => TransactNote;
5
+ export declare const compareERC20AmountRecipients: (a: Optional<MatrixERC20AmountRecipient>, b: Optional<MatrixERC20AmountRecipient>) => boolean;
6
+ export declare const compareERC20AmountArrays: (a: Optional<MatrixERC20Amount[]>, b: Optional<MatrixERC20Amount[]>) => boolean;
7
+ export declare const compareERC20AmountRecipientArrays: (a: Optional<MatrixERC20AmountRecipient[]>, b: Optional<MatrixERC20AmountRecipient[]>) => boolean;
8
+ export declare const compareERC20RecipientArrays: (a: Optional<MatrixERC20Recipient[]>, b: Optional<MatrixERC20Recipient[]>) => boolean;
9
+ export declare const compareNFTAmountArrays: (a: Optional<MatrixNFTAmount[]>, b: Optional<MatrixNFTAmount[]>) => boolean;
10
+ export declare const compareNFTAmountRecipientArrays: (a: Optional<MatrixNFTAmountRecipient[]>, b: Optional<MatrixNFTAmountRecipient[]>) => boolean;
11
+ export { TransactNote };
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactNote = exports.compareNFTAmountRecipientArrays = exports.compareNFTAmountArrays = exports.compareERC20RecipientArrays = exports.compareERC20AmountRecipientArrays = exports.compareERC20AmountArrays = exports.compareERC20AmountRecipients = exports.nftNoteFromNFTAmountRecipient = exports.erc20NoteFromERC20AmountRecipient = void 0;
4
+ const engine_1 = require("@matrix-privacy/engine");
5
+ Object.defineProperty(exports, "TransactNote", { enumerable: true, get: function () { return engine_1.TransactNote; } });
6
+ const shared_models_1 = require("@matrix-privacy/shared-models");
7
+ const erc20NoteFromERC20AmountRecipient = (erc20AmountRecipient, matrixWallet, outputType, showSenderAddressToRecipient, memoText) => {
8
+ const { amount, recipientAddress } = erc20AmountRecipient;
9
+ const receiverAddressData = engine_1.MatrixEngine.decodeAddress(recipientAddress);
10
+ const tokenData = (0, engine_1.getTokenDataERC20)(erc20AmountRecipient.tokenAddress);
11
+ return engine_1.TransactNote.createTransfer(receiverAddressData, matrixWallet.addressKeys, amount, tokenData, showSenderAddressToRecipient, outputType, memoText);
12
+ };
13
+ exports.erc20NoteFromERC20AmountRecipient = erc20NoteFromERC20AmountRecipient;
14
+ const nftNoteFromNFTAmountRecipient = (nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText) => {
15
+ const { recipientAddress, nftAddress, nftTokenType, tokenSubID, amount } = nftAmountRecipient;
16
+ const receiverAddressData = engine_1.MatrixEngine.decodeAddress(recipientAddress);
17
+ const tokenData = (0, engine_1.getTokenDataNFT)(nftAddress, nftTokenType, tokenSubID);
18
+ switch (nftTokenType) {
19
+ case shared_models_1.NFTTokenType.ERC721:
20
+ return engine_1.TransactNote.createERC721Transfer(receiverAddressData, matrixWallet.addressKeys, tokenData, showSenderAddressToRecipient, memoText);
21
+ case shared_models_1.NFTTokenType.ERC1155:
22
+ return engine_1.TransactNote.createERC1155Transfer(receiverAddressData, matrixWallet.addressKeys, tokenData, BigInt(amount), showSenderAddressToRecipient, memoText);
23
+ }
24
+ };
25
+ exports.nftNoteFromNFTAmountRecipient = nftNoteFromNFTAmountRecipient;
26
+ const compareERC20Amounts = (a, b) => {
27
+ return a?.tokenAddress === b?.tokenAddress && a?.amount === b?.amount;
28
+ };
29
+ const compareERC20AmountRecipients = (a, b) => {
30
+ return (compareERC20Amounts(a, b) && a?.recipientAddress === b?.recipientAddress);
31
+ };
32
+ exports.compareERC20AmountRecipients = compareERC20AmountRecipients;
33
+ const compareERC20AmountArrays = (a, b) => {
34
+ if (!a && !b) {
35
+ return true;
36
+ }
37
+ if (!a || !b) {
38
+ return false;
39
+ }
40
+ if (a.length !== b.length) {
41
+ return false;
42
+ }
43
+ for (const erc20Amount of a) {
44
+ const found = b.find(ta => ta.tokenAddress === erc20Amount.tokenAddress);
45
+ if (!found) {
46
+ return false;
47
+ }
48
+ if (found.amount !== erc20Amount.amount) {
49
+ return false;
50
+ }
51
+ }
52
+ return true;
53
+ };
54
+ exports.compareERC20AmountArrays = compareERC20AmountArrays;
55
+ const compareERC20AmountRecipientArrays = (a, b) => {
56
+ if (!a && !b) {
57
+ return true;
58
+ }
59
+ if (!a || !b) {
60
+ return false;
61
+ }
62
+ if (a.length !== b.length) {
63
+ return false;
64
+ }
65
+ for (const erc20Amount of a) {
66
+ const found = b.find(ta => ta.tokenAddress === erc20Amount.tokenAddress &&
67
+ ta.recipientAddress === erc20Amount.recipientAddress);
68
+ if (!found) {
69
+ return false;
70
+ }
71
+ if (found.amount !== erc20Amount.amount) {
72
+ return false;
73
+ }
74
+ }
75
+ return true;
76
+ };
77
+ exports.compareERC20AmountRecipientArrays = compareERC20AmountRecipientArrays;
78
+ const compareERC20RecipientArrays = (a, b) => {
79
+ if (!a && !b) {
80
+ return true;
81
+ }
82
+ if (!a || !b) {
83
+ return false;
84
+ }
85
+ if (a.length !== b.length) {
86
+ return false;
87
+ }
88
+ for (const erc20Recipient of a) {
89
+ const found = b.find(ta => ta.tokenAddress === erc20Recipient.tokenAddress &&
90
+ ta.recipientAddress === erc20Recipient.recipientAddress) != null;
91
+ if (!found) {
92
+ return false;
93
+ }
94
+ }
95
+ return true;
96
+ };
97
+ exports.compareERC20RecipientArrays = compareERC20RecipientArrays;
98
+ const compareNFTAmountArrays = (a, b) => {
99
+ if (!a && !b) {
100
+ return true;
101
+ }
102
+ if (!a || !b) {
103
+ return false;
104
+ }
105
+ if (a.length !== b.length) {
106
+ return false;
107
+ }
108
+ for (const nftAmountRecipient of a) {
109
+ const found = b.find(ta => ta.nftAddress === nftAmountRecipient.nftAddress &&
110
+ ta.tokenSubID === nftAmountRecipient.tokenSubID);
111
+ if (!found) {
112
+ return false;
113
+ }
114
+ if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {
115
+ return false;
116
+ }
117
+ if (found.amount !== nftAmountRecipient.amount) {
118
+ return false;
119
+ }
120
+ }
121
+ return true;
122
+ };
123
+ exports.compareNFTAmountArrays = compareNFTAmountArrays;
124
+ const compareNFTAmountRecipientArrays = (a, b) => {
125
+ if (!a && !b) {
126
+ return true;
127
+ }
128
+ if (!a || !b) {
129
+ return false;
130
+ }
131
+ if (a.length !== b.length) {
132
+ return false;
133
+ }
134
+ for (const nftAmountRecipient of a) {
135
+ const found = b.find(ta => ta.nftAddress === nftAmountRecipient.nftAddress &&
136
+ ta.tokenSubID === nftAmountRecipient.tokenSubID);
137
+ if (!found) {
138
+ return false;
139
+ }
140
+ if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {
141
+ return false;
142
+ }
143
+ if (found.recipientAddress !== nftAmountRecipient.recipientAddress) {
144
+ return false;
145
+ }
146
+ if (found.amount !== nftAmountRecipient.amount) {
147
+ return false;
148
+ }
149
+ }
150
+ return true;
151
+ };
152
+ exports.compareNFTAmountRecipientArrays = compareNFTAmountRecipientArrays;
153
+ //# sourceMappingURL=tx-notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-notes.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-notes.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n OutputType,\n TransactNote,\n MatrixWallet,\n MatrixEngine,\n getTokenDataERC20,\n getTokenDataNFT,\n} from '@matrix-privacy/engine';\nimport {\n NFTTokenType,\n MatrixNFTAmountRecipient,\n MatrixERC20Amount,\n MatrixERC20AmountRecipient,\n MatrixNFTAmount,\n MatrixERC20Recipient,\n} from '@matrix-privacy/shared-models';\n\nexport const erc20NoteFromERC20AmountRecipient = (\n erc20AmountRecipient: MatrixERC20AmountRecipient,\n matrixWallet: MatrixWallet,\n outputType: OutputType,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { amount, recipientAddress } = erc20AmountRecipient;\n\n const receiverAddressData = MatrixEngine.decodeAddress(recipientAddress);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n return TransactNote.createTransfer(\n receiverAddressData,\n matrixWallet.addressKeys,\n amount,\n tokenData,\n showSenderAddressToRecipient,\n outputType,\n memoText,\n );\n};\n\nexport const nftNoteFromNFTAmountRecipient = (\n nftAmountRecipient: MatrixNFTAmountRecipient,\n matrixWallet: MatrixWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { recipientAddress, nftAddress, nftTokenType, tokenSubID, amount } =\n nftAmountRecipient;\n\n const receiverAddressData = MatrixEngine.decodeAddress(recipientAddress);\n\n const tokenData = getTokenDataNFT(\n nftAddress,\n nftTokenType as 1 | 2,\n tokenSubID,\n );\n\n switch (nftTokenType) {\n case NFTTokenType.ERC721:\n return TransactNote.createERC721Transfer(\n receiverAddressData,\n matrixWallet.addressKeys,\n tokenData,\n showSenderAddressToRecipient,\n memoText,\n );\n case NFTTokenType.ERC1155:\n return TransactNote.createERC1155Transfer(\n receiverAddressData,\n matrixWallet.addressKeys,\n tokenData,\n BigInt(amount),\n showSenderAddressToRecipient,\n memoText,\n );\n }\n};\n\nconst compareERC20Amounts = (\n a: Optional<MatrixERC20Amount>,\n b: Optional<MatrixERC20Amount>,\n) => {\n return a?.tokenAddress === b?.tokenAddress && a?.amount === b?.amount;\n};\n\nexport const compareERC20AmountRecipients = (\n a: Optional<MatrixERC20AmountRecipient>,\n b: Optional<MatrixERC20AmountRecipient>,\n) => {\n return (\n compareERC20Amounts(a, b) && a?.recipientAddress === b?.recipientAddress\n );\n};\n\nexport const compareERC20AmountArrays = (\n a: Optional<MatrixERC20Amount[]>,\n b: Optional<MatrixERC20Amount[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Amount of a) {\n const found = b.find(ta => ta.tokenAddress === erc20Amount.tokenAddress);\n if (!found) {\n return false;\n }\n if (found.amount !== erc20Amount.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareERC20AmountRecipientArrays = (\n a: Optional<MatrixERC20AmountRecipient[]>,\n b: Optional<MatrixERC20AmountRecipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Amount of a) {\n const found = b.find(\n ta =>\n ta.tokenAddress === erc20Amount.tokenAddress &&\n ta.recipientAddress === erc20Amount.recipientAddress,\n );\n if (!found) {\n return false;\n }\n if (found.amount !== erc20Amount.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareERC20RecipientArrays = (\n a: Optional<MatrixERC20Recipient[]>,\n b: Optional<MatrixERC20Recipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Recipient of a) {\n const found =\n b.find(\n ta =>\n ta.tokenAddress === erc20Recipient.tokenAddress &&\n ta.recipientAddress === erc20Recipient.recipientAddress,\n ) != null;\n if (!found) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareNFTAmountArrays = (\n a: Optional<MatrixNFTAmount[]>,\n b: Optional<MatrixNFTAmount[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const nftAmountRecipient of a) {\n const found = b.find(\n ta =>\n ta.nftAddress === nftAmountRecipient.nftAddress &&\n ta.tokenSubID === nftAmountRecipient.tokenSubID,\n );\n if (!found) {\n return false;\n }\n if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {\n return false;\n }\n if (found.amount !== nftAmountRecipient.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareNFTAmountRecipientArrays = (\n a: Optional<MatrixNFTAmountRecipient[]>,\n b: Optional<MatrixNFTAmountRecipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const nftAmountRecipient of a) {\n const found = b.find(\n ta =>\n ta.nftAddress === nftAmountRecipient.nftAddress &&\n ta.tokenSubID === nftAmountRecipient.tokenSubID,\n );\n if (!found) {\n return false;\n }\n if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {\n return false;\n }\n if (found.recipientAddress !== nftAmountRecipient.recipientAddress) {\n return false;\n }\n if (found.amount !== nftAmountRecipient.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport { TransactNote };\n"]}
@@ -0,0 +1,2 @@
1
+ import { Chain, MatrixTxidFromNullifiersResponse } from '@matrix-privacy/shared-models';
2
+ export declare const getCompletedTxidFromNullifiers: (chain: Chain, nullifiers: string[]) => Promise<MatrixTxidFromNullifiersResponse>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCompletedTxidFromNullifiers = void 0;
4
+ const error_1 = require("../../utils/error");
5
+ const engine_1 = require("../matrix/core/engine");
6
+ const getCompletedTxidFromNullifiers = async (chain, nullifiers) => {
7
+ try {
8
+ const engine = (0, engine_1.getEngine)();
9
+ const txid = await engine.getCompletedTxidFromNullifiers(chain, nullifiers);
10
+ return { txid };
11
+ }
12
+ catch (err) {
13
+ throw (0, error_1.reportAndSanitizeError)(exports.getCompletedTxidFromNullifiers.name, err);
14
+ }
15
+ };
16
+ exports.getCompletedTxidFromNullifiers = getCompletedTxidFromNullifiers;
17
+ //# sourceMappingURL=tx-nullifiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-nullifiers.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-nullifiers.ts"],"names":[],"mappings":";;;AAIA,6CAA2D;AAC3D,kDAAkD;AAE3C,MAAM,8BAA8B,GAAG,KAAK,EACjD,KAAY,EACZ,UAAoB,EACuB,EAAE;IAC7C,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,IAAI,GAAqB,MAAM,MAAM,CAAC,8BAA8B,CACxE,KAAK,EACL,UAAU,CACX,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,CAAC;KACjB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,sCAA8B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACxE;AACH,CAAC,CAAC;AAdW,QAAA,8BAA8B,kCAczC","sourcesContent":["import {\n Chain,\n MatrixTxidFromNullifiersResponse,\n} from '@matrix-privacy/shared-models';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { getEngine } from '../matrix/core/engine';\n\nexport const getCompletedTxidFromNullifiers = async (\n chain: Chain,\n nullifiers: string[],\n): Promise<MatrixTxidFromNullifiersResponse> => {\n try {\n const engine = getEngine();\n const txid: Optional<string> = await engine.getCompletedTxidFromNullifiers(\n chain,\n nullifiers,\n );\n return { txid };\n } catch (err) {\n throw reportAndSanitizeError(getCompletedTxidFromNullifiers.name, err);\n }\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import { NetworkName, MatrixERC20AmountRecipient, MatrixNFTAmountRecipient } from '@matrix-privacy/shared-models';
2
+ import { GenerateTransactionsProgressCallback } from './tx-generator';
3
+ export declare const generateTransferProof: (networkName: NetworkName, matrixWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: MatrixERC20AmountRecipient[], nftAmountRecipients: MatrixNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTransferProof = void 0;
4
+ const shared_models_1 = require("@matrix-privacy/shared-models");
5
+ const tx_generator_1 = require("./tx-generator");
6
+ const proof_cache_1 = require("./proof-cache");
7
+ const error_1 = require("../../utils/error");
8
+ const generateTransferProof = async (networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
9
+ try {
10
+ (0, proof_cache_1.setCachedProvedTransaction)(undefined);
11
+ const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(shared_models_1.ProofType.Transfer, networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, false, // useDummyProof
12
+ overallBatchMinGasPrice, progressCallback);
13
+ const transaction = await (0, tx_generator_1.generateTransact)(provedTransactions, networkName);
14
+ const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(provedTransactions);
15
+ (0, proof_cache_1.setCachedProvedTransaction)({
16
+ proofType: shared_models_1.ProofType.Transfer,
17
+ matrixWalletID,
18
+ showSenderAddressToRecipient,
19
+ memoText,
20
+ erc20AmountRecipients,
21
+ nftAmountRecipients,
22
+ relayAdaptUnshieldERC20Amounts: undefined,
23
+ relayAdaptUnshieldNFTAmounts: undefined,
24
+ relayAdaptShieldERC20Recipients: undefined,
25
+ relayAdaptShieldNFTRecipients: undefined,
26
+ crossContractCalls: undefined,
27
+ broadcasterFeeERC20AmountRecipient,
28
+ sendWithPublicWallet,
29
+ transaction,
30
+ overallBatchMinGasPrice,
31
+ nullifiers,
32
+ });
33
+ }
34
+ catch (err) {
35
+ throw (0, error_1.reportAndSanitizeError)(exports.generateTransferProof.name, err);
36
+ }
37
+ };
38
+ exports.generateTransferProof = generateTransferProof;
39
+ //# sourceMappingURL=tx-proof-transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-proof-transfer.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer.ts"],"names":[],"mappings":";;;AAAA,iEAKuC;AACvC,iDAKwB;AACxB,+CAA2D;AAC3D,6CAA2D;AAEpD,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAwB,EACxB,cAAsB,EACtB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAmD,EACnD,mBAA+C,EAC/C,kCAAwE,EACxE,oBAA6B,EAC7B,uBAAyC,EACzC,gBAAsD,EACvC,EAAE;IACjB,IAAI;QACF,IAAA,wCAA0B,EAAC,SAAS,CAAC,CAAC;QAEtC,MAAM,EAAE,kBAAkB,EAAE,GAC1B,MAAM,IAAA,wCAAyB,EAC7B,yBAAS,CAAC,QAAQ,EAClB,WAAW,EACX,cAAc,EACd,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,kCAAkC,EAClC,oBAAoB,EACpB,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,CACjB,CAAC;QACJ,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EACxC,kBAAkB,EAClB,WAAW,CACZ,CAAC;QAEF,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,kBAAkB,CAAC,CAAC;QAEjE,IAAA,wCAA0B,EAAC;YACzB,SAAS,EAAE,yBAAS,CAAC,QAAQ;YAC7B,cAAc;YACd,4BAA4B;YAC5B,QAAQ;YACR,qBAAqB;YACrB,mBAAmB;YACnB,8BAA8B,EAAE,SAAS;YACzC,4BAA4B,EAAE,SAAS;YACvC,+BAA+B,EAAE,SAAS;YAC1C,6BAA6B,EAAE,SAAS;YACxC,kBAAkB,EAAE,SAAS;YAC7B,kCAAkC;YAClC,oBAAoB;YACpB,WAAW;YACX,uBAAuB;YACvB,UAAU;SACX,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,6BAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC/D;AACH,CAAC,CAAC;AA5DW,QAAA,qBAAqB,yBA4DhC","sourcesContent":["import {\n NetworkName,\n ProofType,\n MatrixERC20AmountRecipient,\n MatrixNFTAmountRecipient,\n} from '@matrix-privacy/shared-models';\nimport {\n GenerateTransactionsProgressCallback,\n generateProofTransactions,\n generateTransact,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateTransferProof = async (\n networkName: NetworkName,\n matrixWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: MatrixERC20AmountRecipient[],\n nftAmountRecipients: MatrixNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const { provedTransactions } =\n await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n matrixWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(\n provedTransactions,\n networkName,\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Transfer,\n matrixWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptUnshieldERC20Amounts: undefined,\n relayAdaptUnshieldNFTAmounts: undefined,\n relayAdaptShieldERC20Recipients: undefined,\n relayAdaptShieldNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProof.name, err);\n }\n};\n"]}
@@ -0,0 +1,5 @@
1
+ import { MatrixERC20Amount, NetworkName, MatrixERC20AmountRecipient, MatrixNFTAmountRecipient } from '@matrix-privacy/shared-models';
2
+ import { GenerateTransactionsProgressCallback } from './tx-generator';
3
+ export declare const generateUnshieldProof: (networkName: NetworkName, matrixWalletID: string, encryptionKey: string, erc20AmountRecipients: MatrixERC20AmountRecipient[], nftAmountRecipients: MatrixNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
4
+ export declare const generateUnshieldToOriginProof: (originalShieldTxid: string, networkName: NetworkName, matrixWalletID: string, encryptionKey: string, erc20AmountRecipients: MatrixERC20AmountRecipient[], nftAmountRecipients: MatrixNFTAmountRecipient[], progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
5
+ export declare const generateUnshieldBaseTokenProof: (networkName: NetworkName, publicWalletAddress: string, matrixWalletID: string, encryptionKey: string, wrappedERC20Amount: MatrixERC20Amount, broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateUnshieldBaseTokenProof = exports.generateUnshieldToOriginProof = exports.generateUnshieldProof = void 0;
4
+ const shared_models_1 = require("@matrix-privacy/shared-models");
5
+ const tx_generator_1 = require("./tx-generator");
6
+ const wallets_1 = require("../matrix/wallets/wallets");
7
+ const proof_cache_1 = require("./proof-cache");
8
+ const engine_1 = require("@matrix-privacy/engine");
9
+ const tx_cross_contract_calls_1 = require("./tx-cross-contract-calls");
10
+ const error_1 = require("../../utils/error");
11
+ const generateUnshieldProof = async (networkName, matrixWalletID, encryptionKey, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
12
+ try {
13
+ (0, proof_cache_1.setCachedProvedTransaction)(undefined);
14
+ const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(shared_models_1.ProofType.Unshield, networkName, matrixWalletID, encryptionKey, false, // showSenderAddressToRecipient
15
+ undefined, // memoText
16
+ erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, false, // useDummyProof
17
+ overallBatchMinGasPrice, progressCallback);
18
+ const transaction = await (0, tx_generator_1.generateTransact)(provedTransactions, networkName);
19
+ const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(provedTransactions);
20
+ (0, proof_cache_1.setCachedProvedTransaction)({
21
+ proofType: shared_models_1.ProofType.Unshield,
22
+ matrixWalletID,
23
+ showSenderAddressToRecipient: false,
24
+ memoText: undefined,
25
+ erc20AmountRecipients,
26
+ nftAmountRecipients,
27
+ relayAdaptUnshieldERC20Amounts: undefined,
28
+ relayAdaptUnshieldNFTAmounts: undefined,
29
+ relayAdaptShieldERC20Recipients: undefined,
30
+ relayAdaptShieldNFTRecipients: undefined,
31
+ crossContractCalls: undefined,
32
+ broadcasterFeeERC20AmountRecipient,
33
+ transaction,
34
+ sendWithPublicWallet,
35
+ overallBatchMinGasPrice,
36
+ nullifiers,
37
+ });
38
+ }
39
+ catch (err) {
40
+ throw (0, error_1.reportAndSanitizeError)(exports.generateUnshieldProof.name, err);
41
+ }
42
+ };
43
+ exports.generateUnshieldProof = generateUnshieldProof;
44
+ const generateUnshieldToOriginProof = async (originalShieldTxid, networkName, matrixWalletID, encryptionKey, erc20AmountRecipients, nftAmountRecipients, progressCallback) => {
45
+ try {
46
+ (0, proof_cache_1.setCachedProvedTransaction)(undefined);
47
+ const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(shared_models_1.ProofType.Unshield, networkName, matrixWalletID, encryptionKey, false, // showSenderAddressToRecipient
48
+ undefined, // memoText
49
+ erc20AmountRecipients, nftAmountRecipients, undefined, // broadcasterFeeERC20AmountRecipient
50
+ true, // sendWithPublicWallet
51
+ false, // useDummyProof
52
+ undefined, // overallBatchMinGasPrice
53
+ progressCallback, originalShieldTxid);
54
+ const transaction = await (0, tx_generator_1.generateTransact)(provedTransactions, networkName);
55
+ const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(provedTransactions);
56
+ (0, proof_cache_1.setCachedProvedTransaction)({
57
+ proofType: shared_models_1.ProofType.Unshield,
58
+ matrixWalletID,
59
+ showSenderAddressToRecipient: false,
60
+ memoText: undefined,
61
+ erc20AmountRecipients,
62
+ nftAmountRecipients,
63
+ relayAdaptUnshieldERC20Amounts: undefined,
64
+ relayAdaptUnshieldNFTAmounts: undefined,
65
+ relayAdaptShieldERC20Recipients: undefined,
66
+ relayAdaptShieldNFTRecipients: undefined,
67
+ crossContractCalls: undefined,
68
+ broadcasterFeeERC20AmountRecipient: undefined,
69
+ transaction,
70
+ sendWithPublicWallet: true,
71
+ overallBatchMinGasPrice: undefined,
72
+ nullifiers,
73
+ });
74
+ }
75
+ catch (err) {
76
+ throw (0, error_1.reportAndSanitizeError)(exports.generateUnshieldProof.name, err);
77
+ }
78
+ };
79
+ exports.generateUnshieldToOriginProof = generateUnshieldToOriginProof;
80
+ const generateUnshieldBaseTokenProof = async (networkName, publicWalletAddress, matrixWalletID, encryptionKey, wrappedERC20Amount, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
81
+ try {
82
+ (0, wallets_1.assertValidEthAddress)(publicWalletAddress);
83
+ (0, proof_cache_1.setCachedProvedTransaction)(undefined);
84
+ const erc20AmountRecipients = [
85
+ {
86
+ ...wrappedERC20Amount,
87
+ recipientAddress: publicWalletAddress,
88
+ },
89
+ ];
90
+ const relayAdaptUnshieldERC20Amounts = [
91
+ wrappedERC20Amount,
92
+ ];
93
+ const relayAdaptUnshieldERC20AmountRecipients = (0, tx_cross_contract_calls_1.createRelayAdaptUnshieldERC20AmountRecipients)(networkName, [
94
+ wrappedERC20Amount,
95
+ ]);
96
+ // Empty NFT recipients.
97
+ const nftAmountRecipients = [];
98
+ const showSenderAddressToRecipient = false;
99
+ const memoText = undefined;
100
+ // Create transactions with proof.
101
+ const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(shared_models_1.ProofType.UnshieldBaseToken, networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, relayAdaptUnshieldERC20AmountRecipients, [], // nftAmountRecipients
102
+ broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, false, // useDummyProof
103
+ overallBatchMinGasPrice, progressCallback);
104
+ const relayAdaptParamsRandom = engine_1.ByteUtils.randomHex(31);
105
+ const transaction = await (0, tx_generator_1.generateUnshieldBaseToken)(provedTransactions, networkName, publicWalletAddress, relayAdaptParamsRandom, false, // useDummyProof
106
+ sendWithPublicWallet);
107
+ const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(provedTransactions);
108
+ (0, proof_cache_1.setCachedProvedTransaction)({
109
+ proofType: shared_models_1.ProofType.UnshieldBaseToken,
110
+ matrixWalletID,
111
+ showSenderAddressToRecipient,
112
+ memoText,
113
+ erc20AmountRecipients,
114
+ nftAmountRecipients,
115
+ relayAdaptUnshieldERC20Amounts,
116
+ relayAdaptUnshieldNFTAmounts: undefined,
117
+ relayAdaptShieldERC20Recipients: undefined,
118
+ relayAdaptShieldNFTRecipients: undefined,
119
+ crossContractCalls: undefined,
120
+ broadcasterFeeERC20AmountRecipient,
121
+ sendWithPublicWallet,
122
+ transaction,
123
+ overallBatchMinGasPrice,
124
+ nullifiers,
125
+ });
126
+ }
127
+ catch (err) {
128
+ throw (0, error_1.reportAndSanitizeError)(exports.generateUnshieldBaseTokenProof.name, err);
129
+ }
130
+ };
131
+ exports.generateUnshieldBaseTokenProof = generateUnshieldBaseTokenProof;
132
+ //# sourceMappingURL=tx-proof-unshield.js.map