dop-wallet-v6 1.2.3 → 1.2.5

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 (222) hide show
  1. package/dist/services/artifacts/__tests__/artifact-downloader.test.js.map +1 -1
  2. package/dist/services/artifacts/artifact-downloader.d.ts +1 -1
  3. package/dist/services/artifacts/artifact-downloader.js +1 -1
  4. package/dist/services/artifacts/artifact-downloader.js.map +1 -1
  5. package/dist/services/artifacts/artifact-hash.d.ts +1 -1
  6. package/dist/services/artifacts/artifact-hash.js +2 -2
  7. package/dist/services/artifacts/artifact-hash.js.map +1 -1
  8. package/dist/services/artifacts/artifact-util.d.ts +1 -1
  9. package/dist/services/artifacts/artifact-util.js +1 -1
  10. package/dist/services/artifacts/artifact-util.js.map +1 -1
  11. package/dist/services/dop/core/__tests__/providers.test.js +4 -4
  12. package/dist/services/dop/core/__tests__/providers.test.js.map +1 -1
  13. package/dist/services/dop/core/artifacts.d.ts +2 -2
  14. package/dist/services/dop/core/artifacts.js +1 -1
  15. package/dist/services/dop/core/artifacts.js.map +1 -1
  16. package/dist/services/dop/core/encrypts.d.ts +1 -1
  17. package/dist/services/dop/core/encrypts.js +2 -2
  18. package/dist/services/dop/core/encrypts.js.map +1 -1
  19. package/dist/services/dop/core/engine.d.ts +1 -1
  20. package/dist/services/dop/core/engine.js +1 -1
  21. package/dist/services/dop/core/engine.js.map +1 -1
  22. package/dist/services/dop/core/init.d.ts +2 -2
  23. package/dist/services/dop/core/init.js +2 -2
  24. package/dist/services/dop/core/init.js.map +1 -1
  25. package/dist/services/dop/core/load-provider.d.ts +1 -1
  26. package/dist/services/dop/core/load-provider.js +2 -2
  27. package/dist/services/dop/core/load-provider.js.map +1 -1
  28. package/dist/services/dop/core/merkletree.d.ts +3 -3
  29. package/dist/services/dop/core/merkletree.js +2 -2
  30. package/dist/services/dop/core/merkletree.js.map +1 -1
  31. package/dist/services/dop/core/prover.d.ts +1 -1
  32. package/dist/services/dop/core/prover.js +1 -1
  33. package/dist/services/dop/core/prover.js.map +1 -1
  34. package/dist/services/dop/core/providers.d.ts +2 -2
  35. package/dist/services/dop/core/providers.js +1 -1
  36. package/dist/services/dop/core/providers.js.map +1 -1
  37. package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js +1 -1
  38. package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js.map +1 -1
  39. package/dist/services/dop/dop-txids/blinded-commitments.d.ts +1 -1
  40. package/dist/services/dop/dop-txids/blinded-commitments.js +1 -1
  41. package/dist/services/dop/dop-txids/blinded-commitments.js.map +1 -1
  42. package/dist/services/dop/dop-txids/dop-txid-graph-type-formatters.d.ts +1 -1
  43. package/dist/services/dop/dop-txids/dop-txid-graph-type-formatters.js +1 -1
  44. package/dist/services/dop/dop-txids/dop-txid-graph-type-formatters.js.map +1 -1
  45. package/dist/services/dop/dop-txids/dop-txid-merkletrees.d.ts +1 -1
  46. package/dist/services/dop/dop-txids/dop-txid-merkletrees.js +1 -1
  47. package/dist/services/dop/dop-txids/dop-txid-merkletrees.js.map +1 -1
  48. package/dist/services/dop/dop-txids/dop-txid-sync-graph-v2.d.ts +1 -1
  49. package/dist/services/dop/dop-txids/dop-txid-sync-graph-v2.js +2 -2
  50. package/dist/services/dop/dop-txids/dop-txid-sync-graph-v2.js.map +1 -1
  51. package/dist/services/dop/dop-txids/graphql/index.js +1 -1
  52. package/dist/services/dop/dop-txids/graphql/index.js.map +1 -1
  53. package/dist/services/dop/history/transaction-history.d.ts +2 -2
  54. package/dist/services/dop/history/transaction-history.js +2 -2
  55. package/dist/services/dop/history/transaction-history.js.map +1 -1
  56. package/dist/services/dop/index.d.ts +1 -0
  57. package/dist/services/dop/index.js +1 -0
  58. package/dist/services/dop/index.js.map +1 -1
  59. package/dist/services/dop/process/extract-transaction-data.d.ts +1 -1
  60. package/dist/services/dop/process/extract-transaction-data.js +1 -1
  61. package/dist/services/dop/process/extract-transaction-data.js.map +1 -1
  62. package/dist/services/dop/profile/__tests__/profile-manager.test.d.ts +1 -0
  63. package/dist/services/dop/profile/__tests__/profile-manager.test.js +170 -0
  64. package/dist/services/dop/profile/__tests__/profile-manager.test.js.map +1 -0
  65. package/dist/services/dop/profile/__tests__/selective-transparency.test.d.ts +1 -0
  66. package/dist/services/dop/profile/__tests__/selective-transparency.test.js +256 -0
  67. package/dist/services/dop/profile/__tests__/selective-transparency.test.js.map +1 -0
  68. package/dist/services/dop/profile/__tests__/storage.test.d.ts +1 -0
  69. package/dist/services/dop/profile/__tests__/storage.test.js +174 -0
  70. package/dist/services/dop/profile/__tests__/storage.test.js.map +1 -0
  71. package/dist/services/dop/profile/index.d.ts +3 -0
  72. package/dist/services/dop/profile/index.js +20 -0
  73. package/dist/services/dop/profile/index.js.map +1 -0
  74. package/dist/services/dop/profile/profile-manager.d.ts +32 -0
  75. package/dist/services/dop/profile/profile-manager.js +235 -0
  76. package/dist/services/dop/profile/profile-manager.js.map +1 -0
  77. package/dist/services/dop/profile/selective-transparency.d.ts +82 -0
  78. package/dist/services/dop/profile/selective-transparency.js +447 -0
  79. package/dist/services/dop/profile/selective-transparency.js.map +1 -0
  80. package/dist/services/dop/profile/storage.d.ts +27 -0
  81. package/dist/services/dop/profile/storage.js +648 -0
  82. package/dist/services/dop/profile/storage.js.map +1 -0
  83. package/dist/services/dop/profile/types.d.ts +106 -0
  84. package/dist/services/dop/profile/types.js +3 -0
  85. package/dist/services/dop/profile/types.js.map +1 -0
  86. package/dist/services/dop/profile/usage-example.d.ts +11 -0
  87. package/dist/services/dop/profile/usage-example.js +143 -0
  88. package/dist/services/dop/profile/usage-example.js.map +1 -0
  89. package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js +2 -2
  90. package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js.map +1 -1
  91. package/dist/services/dop/quick-sync/V2/graph-type-formatters-v2.d.ts +1 -1
  92. package/dist/services/dop/quick-sync/V2/graph-type-formatters-v2.js +2 -2
  93. package/dist/services/dop/quick-sync/V2/graph-type-formatters-v2.js.map +1 -1
  94. package/dist/services/dop/quick-sync/V2/graphql/index.js +1 -1
  95. package/dist/services/dop/quick-sync/V2/graphql/index.js.map +1 -1
  96. package/dist/services/dop/quick-sync/V2/quick-sync-events-graph-v2.d.ts +1 -1
  97. package/dist/services/dop/quick-sync/V2/quick-sync-events-graph-v2.js +1 -1
  98. package/dist/services/dop/quick-sync/V2/quick-sync-events-graph-v2.js.map +1 -1
  99. package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js +2 -2
  100. package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js.map +1 -1
  101. package/dist/services/dop/quick-sync/V3/graph-type-formatters-v3.d.ts +2 -2
  102. package/dist/services/dop/quick-sync/V3/graph-type-formatters-v3.js +1 -1
  103. package/dist/services/dop/quick-sync/V3/graph-type-formatters-v3.js.map +1 -1
  104. package/dist/services/dop/quick-sync/V3/quick-sync-events-graph-v3.d.ts +1 -1
  105. package/dist/services/dop/quick-sync/V3/quick-sync-events-graph-v3.js +2 -2
  106. package/dist/services/dop/quick-sync/V3/quick-sync-events-graph-v3.js.map +1 -1
  107. package/dist/services/dop/quick-sync/graph-query.d.ts +1 -1
  108. package/dist/services/dop/quick-sync/graph-query.js +1 -1
  109. package/dist/services/dop/quick-sync/graph-query.js.map +1 -1
  110. package/dist/services/dop/quick-sync/quick-sync-events.d.ts +2 -2
  111. package/dist/services/dop/quick-sync/quick-sync-events.js.map +1 -1
  112. package/dist/services/dop/quick-sync/shared-formatters.d.ts +1 -1
  113. package/dist/services/dop/quick-sync/shared-formatters.js +1 -1
  114. package/dist/services/dop/quick-sync/shared-formatters.js.map +1 -1
  115. package/dist/services/dop/util/__tests__/bytes-util.test.js +1 -1
  116. package/dist/services/dop/util/__tests__/bytes-util.test.js.map +1 -1
  117. package/dist/services/dop/util/bytes.d.ts +1 -1
  118. package/dist/services/dop/util/bytes.js +1 -1
  119. package/dist/services/dop/util/bytes.js.map +1 -1
  120. package/dist/services/dop/util/crypto.d.ts +2 -2
  121. package/dist/services/dop/util/crypto.js +1 -1
  122. package/dist/services/dop/util/crypto.js.map +1 -1
  123. package/dist/services/dop/wallets/__tests__/balances-live.test.js +1 -1
  124. package/dist/services/dop/wallets/__tests__/balances-live.test.js.map +1 -1
  125. package/dist/services/dop/wallets/__tests__/balances-update.test.js +2 -2
  126. package/dist/services/dop/wallets/__tests__/balances-update.test.js.map +1 -1
  127. package/dist/services/dop/wallets/__tests__/balances.test.js +2 -2
  128. package/dist/services/dop/wallets/__tests__/balances.test.js.map +1 -1
  129. package/dist/services/dop/wallets/__tests__/wallets.test.js +1 -1
  130. package/dist/services/dop/wallets/__tests__/wallets.test.js.map +1 -1
  131. package/dist/services/dop/wallets/balance-update.d.ts +2 -2
  132. package/dist/services/dop/wallets/balance-update.js +2 -2
  133. package/dist/services/dop/wallets/balance-update.js.map +1 -1
  134. package/dist/services/dop/wallets/balances.d.ts +1 -1
  135. package/dist/services/dop/wallets/balances.js.map +1 -1
  136. package/dist/services/dop/wallets/wallets.d.ts +2 -2
  137. package/dist/services/dop/wallets/wallets.js +2 -2
  138. package/dist/services/dop/wallets/wallets.js.map +1 -1
  139. package/dist/services/ethers/ethers-util.js +1 -1
  140. package/dist/services/ethers/ethers-util.js.map +1 -1
  141. package/dist/services/transactions/__tests__/proof-cache.test.js +1 -1
  142. package/dist/services/transactions/__tests__/proof-cache.test.js.map +1 -1
  143. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js +8 -8
  144. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js.map +1 -1
  145. package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js +2 -2
  146. package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js.map +1 -1
  147. package/dist/services/transactions/__tests__/tx-gas-details.test.js +1 -1
  148. package/dist/services/transactions/__tests__/tx-gas-details.test.js.map +1 -1
  149. package/dist/services/transactions/__tests__/tx-notes.test.js +1 -1
  150. package/dist/services/transactions/__tests__/tx-notes.test.js.map +1 -1
  151. package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.d.ts +1 -0
  152. package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.js +93 -0
  153. package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.js.map +1 -0
  154. package/dist/services/transactions/__tests__/tx-transfer.test.js +13 -13
  155. package/dist/services/transactions/__tests__/tx-transfer.test.js.map +1 -1
  156. package/dist/services/transactions/index.d.ts +1 -0
  157. package/dist/services/transactions/index.js +1 -0
  158. package/dist/services/transactions/index.js.map +1 -1
  159. package/dist/services/transactions/proof-cache.d.ts +1 -1
  160. package/dist/services/transactions/proof-cache.js +1 -1
  161. package/dist/services/transactions/proof-cache.js.map +1 -1
  162. package/dist/services/transactions/tx-cross-contract-calls.d.ts +2 -2
  163. package/dist/services/transactions/tx-cross-contract-calls.js +2 -2
  164. package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -1
  165. package/dist/services/transactions/tx-decrypt.d.ts +1 -1
  166. package/dist/services/transactions/tx-decrypt.js +2 -2
  167. package/dist/services/transactions/tx-decrypt.js.map +1 -1
  168. package/dist/services/transactions/tx-encrypt-base-token.d.ts +1 -1
  169. package/dist/services/transactions/tx-encrypt-base-token.js +2 -2
  170. package/dist/services/transactions/tx-encrypt-base-token.js.map +1 -1
  171. package/dist/services/transactions/tx-encrypt.d.ts +1 -1
  172. package/dist/services/transactions/tx-encrypt.js +2 -2
  173. package/dist/services/transactions/tx-encrypt.js.map +1 -1
  174. package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.d.ts +2 -2
  175. package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.js +2 -2
  176. package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.js.map +1 -1
  177. package/dist/services/transactions/tx-gas-details.d.ts +1 -1
  178. package/dist/services/transactions/tx-gas-details.js +2 -2
  179. package/dist/services/transactions/tx-gas-details.js.map +1 -1
  180. package/dist/services/transactions/tx-generator.d.ts +2 -2
  181. package/dist/services/transactions/tx-generator.js +2 -2
  182. package/dist/services/transactions/tx-generator.js.map +1 -1
  183. package/dist/services/transactions/tx-notes.d.ts +2 -2
  184. package/dist/services/transactions/tx-notes.js +2 -2
  185. package/dist/services/transactions/tx-notes.js.map +1 -1
  186. package/dist/services/transactions/tx-nullifiers.d.ts +1 -1
  187. package/dist/services/transactions/tx-nullifiers.js.map +1 -1
  188. package/dist/services/transactions/tx-proof-decrypt.d.ts +1 -1
  189. package/dist/services/transactions/tx-proof-decrypt.js +2 -2
  190. package/dist/services/transactions/tx-proof-decrypt.js.map +1 -1
  191. package/dist/services/transactions/tx-proof-transfer-with-data.d.ts +36 -0
  192. package/dist/services/transactions/tx-proof-transfer-with-data.js +104 -0
  193. package/dist/services/transactions/tx-proof-transfer-with-data.js.map +1 -0
  194. package/dist/services/transactions/tx-proof-transfer.d.ts +2 -2
  195. package/dist/services/transactions/tx-proof-transfer.js +5 -5
  196. package/dist/services/transactions/tx-proof-transfer.js.map +1 -1
  197. package/dist/services/transactions/tx-transfer.d.ts +1 -1
  198. package/dist/services/transactions/tx-transfer.js +1 -1
  199. package/dist/services/transactions/tx-transfer.js.map +1 -1
  200. package/dist/tests/helper.test.d.ts +1 -1
  201. package/dist/tests/helper.test.js +1 -1
  202. package/dist/tests/helper.test.js.map +1 -1
  203. package/dist/tests/mocks.test.d.ts +2 -2
  204. package/dist/tests/mocks.test.js +1 -1
  205. package/dist/tests/mocks.test.js.map +1 -1
  206. package/dist/tests/poi/test-wallet-poi-requester.test.d.ts +2 -2
  207. package/dist/tests/poi/test-wallet-poi-requester.test.js.map +1 -1
  208. package/dist/tests/setup.test.d.ts +2 -2
  209. package/dist/tests/setup.test.js +1 -1
  210. package/dist/tests/setup.test.js.map +1 -1
  211. package/dist/tests/stubs/engine-stubs.test.d.ts +1 -1
  212. package/dist/tests/stubs/engine-stubs.test.js +1 -1
  213. package/dist/tests/stubs/engine-stubs.test.js.map +1 -1
  214. package/dist/utils/blocked-address.js +1 -1
  215. package/dist/utils/blocked-address.js.map +1 -1
  216. package/dist/utils/error.js +1 -1
  217. package/dist/utils/error.js.map +1 -1
  218. package/dist/utils/gas-price.d.ts +1 -1
  219. package/dist/utils/gas-price.js +1 -1
  220. package/dist/utils/gas-price.js.map +1 -1
  221. package/package.json +13 -3
  222. package/postinstall.js +1 -1
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.gasEstimateForEncrypt = exports.populateEncrypt = exports.generateEncryptTransaction = exports.getEncryptPrivateKeySignatureMessage = void 0;
4
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v5");
5
- const dop_engine_v3_1 = require("dop-engine-v5");
4
+ const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
5
+ const dop_engine_v3_1 = require("dop-engine-v3");
6
6
  const tx_gas_details_1 = require("./tx-gas-details");
7
7
  const blocked_address_1 = require("../../utils/blocked-address");
8
8
  const tx_cross_contract_calls_1 = require("./tx-cross-contract-calls");
@@ -1 +1 @@
1
- {"version":3,"file":"tx-encrypt.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-encrypt.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n NetworkName,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n NFTTokenType,\n TransactionGasDetails,\n NETWORK_CONFIG,\n TXIDVersion,\n} from 'dop-sharedmodels-v5';\nimport {\n EncryptNote,\n DopEngine,\n EncryptRequestStruct,\n ByteUtils,\n EncryptNoteERC20,\n EncryptNoteNFT,\n ERC721_NOTE_VALUE,\n DopVersionedSmartContracts,\n} from 'dop-engine-v5';\nimport {\n gasEstimateResponse,\n getGasEstimate,\n setGasDetailsForTransaction,\n} from './tx-gas-details';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { createNFTTokenDataFromDopNFTAmount } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { ContractTransaction } from 'ethers';\nimport { assertValidDopAddress } from '../dop/wallets';\n\nexport const getEncryptPrivateKeySignatureMessage = () => {\n return EncryptNote.getEncryptPrivateKeySignatureMessage();\n};\n\nconst generateERC20EncryptRequests = async (\n erc20AmountRecipient: DopERC20AmountRecipient,\n random: string,\n encryptPrivateKey: string,\n): Promise<EncryptRequestStruct> => {\n const dopAddress = erc20AmountRecipient.recipientAddress;\n\n assertValidDopAddress(dopAddress);\n\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n\n const encrypt = new EncryptNoteERC20(\n masterPublicKey,\n random,\n erc20AmountRecipient.amount,\n erc20AmountRecipient.tokenAddress,\n );\n return encrypt.serialize(\n ByteUtils.hexToBytes(encryptPrivateKey),\n viewingPublicKey,\n );\n};\n\nconst generateNFTEncryptRequests = async (\n nftAmountRecipient: DopNFTAmountRecipient,\n random: string,\n encryptPrivateKey: string,\n): Promise<EncryptRequestStruct> => {\n const dopAddress = nftAmountRecipient.recipientAddress;\n\n assertValidDopAddress(dopAddress);\n\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n\n const value =\n nftAmountRecipient.nftTokenType === NFTTokenType.ERC721\n ? ERC721_NOTE_VALUE\n : nftAmountRecipient.amount;\n\n const nftTokenData =\n createNFTTokenDataFromDopNFTAmount(nftAmountRecipient);\n\n const encrypt = new EncryptNoteNFT(\n masterPublicKey,\n random,\n value,\n nftTokenData,\n );\n return encrypt.serialize(\n ByteUtils.hexToBytes(encryptPrivateKey),\n viewingPublicKey,\n );\n};\n\nexport const generateEncryptTransaction = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n): Promise<ContractTransaction> => {\n try {\n const random = ByteUtils.randomHex(16);\n\n const encryptInputs: EncryptRequestStruct[] = await Promise.all([\n ...erc20AmountRecipients.map(erc20AmountRecipient =>\n generateERC20EncryptRequests(\n erc20AmountRecipient,\n random,\n encryptPrivateKey,\n ),\n ),\n ...nftAmountRecipients.map(nftAmountRecipient =>\n generateNFTEncryptRequests(nftAmountRecipient, random, encryptPrivateKey),\n ),\n ]);\n\n const chain = NETWORK_CONFIG[networkName].chain;\n const transaction = await DopVersionedSmartContracts.generateEncrypt(\n txidVersion,\n chain,\n encryptInputs,\n );\n return transaction;\n } catch (err) {\n throw reportAndSanitizeError(generateEncryptTransaction.name, err);\n }\n};\n\nexport const populateEncrypt = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n gasDetails?: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const transaction = await generateEncryptTransaction(\n txidVersion,\n networkName,\n encryptPrivateKey,\n erc20AmountRecipients,\n nftAmountRecipients,\n );\n\n if (gasDetails) {\n const sendWithPublicWallet = true;\n setGasDetailsForTransaction(\n networkName,\n transaction,\n gasDetails,\n sendWithPublicWallet,\n );\n }\n\n return {\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateEncrypt.name, err);\n }\n};\n\nexport const gasEstimateForEncrypt = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n fromWalletAddress: string,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n assertNotBlockedAddress(fromWalletAddress);\n\n const transaction = await generateEncryptTransaction(\n txidVersion,\n networkName,\n encryptPrivateKey,\n erc20AmountRecipients,\n nftAmountRecipients,\n );\n\n const sendWithPublicWallet = true;\n const isGasEstimateWithDummyProof = false;\n return gasEstimateResponse(\n await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n false, // isCrossContractCall\n ),\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForEncrypt.name, err);\n }\n};\n"]}
1
+ {"version":3,"file":"tx-encrypt.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-encrypt.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n NetworkName,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n NFTTokenType,\n TransactionGasDetails,\n NETWORK_CONFIG,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n EncryptNote,\n DopEngine,\n EncryptRequestStruct,\n ByteUtils,\n EncryptNoteERC20,\n EncryptNoteNFT,\n ERC721_NOTE_VALUE,\n DopVersionedSmartContracts,\n} from 'dop-engine-v3';\nimport {\n gasEstimateResponse,\n getGasEstimate,\n setGasDetailsForTransaction,\n} from './tx-gas-details';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { createNFTTokenDataFromDopNFTAmount } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { ContractTransaction } from 'ethers';\nimport { assertValidDopAddress } from '../dop/wallets';\n\nexport const getEncryptPrivateKeySignatureMessage = () => {\n return EncryptNote.getEncryptPrivateKeySignatureMessage();\n};\n\nconst generateERC20EncryptRequests = async (\n erc20AmountRecipient: DopERC20AmountRecipient,\n random: string,\n encryptPrivateKey: string,\n): Promise<EncryptRequestStruct> => {\n const dopAddress = erc20AmountRecipient.recipientAddress;\n\n assertValidDopAddress(dopAddress);\n\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n\n const encrypt = new EncryptNoteERC20(\n masterPublicKey,\n random,\n erc20AmountRecipient.amount,\n erc20AmountRecipient.tokenAddress,\n );\n return encrypt.serialize(\n ByteUtils.hexToBytes(encryptPrivateKey),\n viewingPublicKey,\n );\n};\n\nconst generateNFTEncryptRequests = async (\n nftAmountRecipient: DopNFTAmountRecipient,\n random: string,\n encryptPrivateKey: string,\n): Promise<EncryptRequestStruct> => {\n const dopAddress = nftAmountRecipient.recipientAddress;\n\n assertValidDopAddress(dopAddress);\n\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n\n const value =\n nftAmountRecipient.nftTokenType === NFTTokenType.ERC721\n ? ERC721_NOTE_VALUE\n : nftAmountRecipient.amount;\n\n const nftTokenData =\n createNFTTokenDataFromDopNFTAmount(nftAmountRecipient);\n\n const encrypt = new EncryptNoteNFT(\n masterPublicKey,\n random,\n value,\n nftTokenData,\n );\n return encrypt.serialize(\n ByteUtils.hexToBytes(encryptPrivateKey),\n viewingPublicKey,\n );\n};\n\nexport const generateEncryptTransaction = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n): Promise<ContractTransaction> => {\n try {\n const random = ByteUtils.randomHex(16);\n\n const encryptInputs: EncryptRequestStruct[] = await Promise.all([\n ...erc20AmountRecipients.map(erc20AmountRecipient =>\n generateERC20EncryptRequests(\n erc20AmountRecipient,\n random,\n encryptPrivateKey,\n ),\n ),\n ...nftAmountRecipients.map(nftAmountRecipient =>\n generateNFTEncryptRequests(nftAmountRecipient, random, encryptPrivateKey),\n ),\n ]);\n\n const chain = NETWORK_CONFIG[networkName].chain;\n const transaction = await DopVersionedSmartContracts.generateEncrypt(\n txidVersion,\n chain,\n encryptInputs,\n );\n return transaction;\n } catch (err) {\n throw reportAndSanitizeError(generateEncryptTransaction.name, err);\n }\n};\n\nexport const populateEncrypt = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n gasDetails?: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const transaction = await generateEncryptTransaction(\n txidVersion,\n networkName,\n encryptPrivateKey,\n erc20AmountRecipients,\n nftAmountRecipients,\n );\n\n if (gasDetails) {\n const sendWithPublicWallet = true;\n setGasDetailsForTransaction(\n networkName,\n transaction,\n gasDetails,\n sendWithPublicWallet,\n );\n }\n\n return {\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateEncrypt.name, err);\n }\n};\n\nexport const gasEstimateForEncrypt = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n fromWalletAddress: string,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n assertNotBlockedAddress(fromWalletAddress);\n\n const transaction = await generateEncryptTransaction(\n txidVersion,\n networkName,\n encryptPrivateKey,\n erc20AmountRecipients,\n nftAmountRecipients,\n );\n\n const sendWithPublicWallet = true;\n const isGasEstimateWithDummyProof = false;\n return gasEstimateResponse(\n await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n false, // isCrossContractCall\n ),\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForEncrypt.name, err);\n }\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { TransactionStructV2, TransactionStructV3 } from 'dop-engine-v5';
2
- import { NetworkName, TransactionGasDetails, DopERC20Amount, DopTransactionGasEstimateResponse, FeeTokenDetails, DopERC20AmountRecipient, TXIDVersion } from 'dop-sharedmodels-v5';
1
+ import { TransactionStructV2, TransactionStructV3 } from 'dop-engine-v3';
2
+ import { NetworkName, TransactionGasDetails, DopERC20Amount, DopTransactionGasEstimateResponse, FeeTokenDetails, DopERC20AmountRecipient, TXIDVersion } from 'dop-sharedmodels-v3';
3
3
  import { ContractTransaction } from 'ethers';
4
4
  export declare const calculateBroadcasterFeeERC20Amount: (feeTokenDetails: FeeTokenDetails, gasDetails: TransactionGasDetails) => DopERC20Amount;
5
5
  export declare const gasEstimateResponseDummyProofIterativeBroadcasterFee: (generateDummyTransactionStructsWithBroadcasterFee: (broadcasterFeeERC20Amount: Optional<DopERC20Amount>) => Promise<(TransactionStructV2 | TransactionStructV3)[]>, generateTransaction: (serializedTransactions: (TransactionStructV2 | TransactionStructV3)[]) => Promise<ContractTransaction>, txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, erc20AmountRecipients: DopERC20AmountRecipient[], originalGasDetails: TransactionGasDetails, feeTokenDetails: Optional<FeeTokenDetails>, sendWithPublicWallet: boolean, isCrossContractCall: boolean) => Promise<DopTransactionGasEstimateResponse>;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.gasEstimateResponseDummyProofIterativeBroadcasterFee = exports.calculateBroadcasterFeeERC20Amount = void 0;
4
- const dop_engine_v3_1 = require("dop-engine-v5");
5
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v5");
4
+ const dop_engine_v3_1 = require("dop-engine-v3");
5
+ const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
6
6
  const tx_generator_1 = require("./tx-generator");
7
7
  const tx_gas_details_1 = require("./tx-gas-details");
8
8
  const balance_update_1 = require("../dop/wallets/balance-update");
@@ -1 +1 @@
1
- {"version":3,"file":"tx-gas-broadcaster-fee-estimator.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-gas-broadcaster-fee-estimator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n TransactionStructV2,\n TransactionStructV3,\n convertTransactionStructToCommitmentSummary,\n} from 'dop-engine-v5';\nimport {\n NetworkName,\n TransactionGasDetails,\n DopERC20Amount,\n DopTransactionGasEstimateResponse,\n FeeTokenDetails,\n calculateMaximumGas,\n DopERC20AmountRecipient,\n CommitmentSummary,\n TXIDVersion,\n} from 'dop-sharedmodels-v5';\nimport {\n DUMMY_FROM_ADDRESS,\n createDummyBroadcasterFeeERC20Amount,\n} from './tx-generator';\nimport { getGasEstimate, gasEstimateResponse } from './tx-gas-details';\nimport { balanceForERC20Token } from '../dop/wallets/balance-update';\nimport { ContractTransaction } from 'ethers';\nimport { walletForID } from '../dop/wallets/wallets';\n\nconst MAX_ITERATIONS_BROADCASTER_FEE_REESTIMATION = 5;\n\nexport const calculateBroadcasterFeeERC20Amount = (\n feeTokenDetails: FeeTokenDetails,\n gasDetails: TransactionGasDetails,\n): DopERC20Amount => {\n const tokenFeePerUnitGas = BigInt(feeTokenDetails.feePerUnitGas);\n const oneUnitGas = 10n ** 18n;\n const maximumGas = calculateMaximumGas(gasDetails);\n const tokenFee = (tokenFeePerUnitGas * maximumGas) / oneUnitGas;\n return {\n tokenAddress: feeTokenDetails.tokenAddress,\n amount: tokenFee,\n };\n};\n\nconst getBroadcasterFeeCommitment = (\n transactionStructs: (TransactionStructV2 | TransactionStructV3)[],\n): CommitmentSummary => {\n const transactionIndex = 0;\n const broadcasterFeeCommitment = transactionStructs[transactionIndex];\n const broadcasterFeeCommitmentIndex = 0;\n return convertTransactionStructToCommitmentSummary(\n broadcasterFeeCommitment,\n broadcasterFeeCommitmentIndex,\n );\n};\n\nexport const gasEstimateResponseDummyProofIterativeBroadcasterFee = async (\n generateDummyTransactionStructsWithBroadcasterFee: (\n broadcasterFeeERC20Amount: Optional<DopERC20Amount>,\n ) => Promise<(TransactionStructV2 | TransactionStructV3)[]>,\n generateTransaction: (\n serializedTransactions: (TransactionStructV2 | TransactionStructV3)[],\n ) => Promise<ContractTransaction>,\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n isCrossContractCall: boolean,\n): Promise<DopTransactionGasEstimateResponse> => {\n const wallet = walletForID(dopWalletID);\n\n // Use dead address for private transaction gas estimate\n const fromWalletAddress = DUMMY_FROM_ADDRESS;\n\n const isGasEstimateWithDummyProof = true;\n\n const dummyBroadcasterFee = feeTokenDetails\n ? createDummyBroadcasterFeeERC20Amount(feeTokenDetails.tokenAddress)\n : undefined;\n\n let serializedTransactions =\n await generateDummyTransactionStructsWithBroadcasterFee(\n dummyBroadcasterFee,\n );\n let transaction = await generateTransaction(serializedTransactions);\n\n let gasEstimate = await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n isCrossContractCall,\n );\n\n if (sendWithPublicWallet) {\n return gasEstimateResponse(\n gasEstimate,\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n }\n\n if (!feeTokenDetails) {\n throw new Error(\n 'Must have Broadcaster Fee details or sendWithPublicWallet field.',\n );\n }\n\n // Find any erc20Amount in transfer that matches token of broadcaster fee, if exists.\n const broadcasterFeeMatchingSendingERC20Amount = erc20AmountRecipients.find(\n erc20AmountRecipient =>\n erc20AmountRecipient.tokenAddress.toLowerCase() ===\n feeTokenDetails.tokenAddress.toLowerCase(),\n );\n\n // Get private balance of matching token.\n const balanceForBroadcasterFeeERC20 = await balanceForERC20Token(\n txidVersion,\n wallet,\n networkName,\n feeTokenDetails.tokenAddress,\n true,\n );\n\n let broadcasterFeeCommitment = getBroadcasterFeeCommitment(\n serializedTransactions,\n );\n\n // Iteratively calculate new broadcaster fee and estimate new gas amount.\n // This change if the number of circuits changes because of the additional Broadcaster Fees.\n for (let i = 0; i < MAX_ITERATIONS_BROADCASTER_FEE_REESTIMATION; i += 1) {\n const updatedGasDetails: TransactionGasDetails = {\n ...originalGasDetails,\n gasEstimate,\n };\n const updatedBroadcasterFee: DopERC20Amount =\n calculateBroadcasterFeeERC20Amount(feeTokenDetails, updatedGasDetails);\n\n // If Broadcaster fee causes overflow with the token balance,\n // then use the MAX amount for Broadcaster Fee, which is BALANCE - SENDING AMOUNT.\n if (\n balanceForBroadcasterFeeERC20 > 0n &&\n broadcasterFeeMatchingSendingERC20Amount &&\n // eslint-disable-next-line no-await-in-loop\n (await broadcasterFeeWillOverflowBalance(\n balanceForBroadcasterFeeERC20,\n broadcasterFeeMatchingSendingERC20Amount,\n updatedBroadcasterFee,\n ))\n ) {\n updatedBroadcasterFee.amount =\n balanceForBroadcasterFeeERC20 -\n broadcasterFeeMatchingSendingERC20Amount.amount;\n }\n\n const newSerializedTransactions =\n // eslint-disable-next-line no-await-in-loop\n await generateDummyTransactionStructsWithBroadcasterFee(\n updatedBroadcasterFee,\n );\n\n broadcasterFeeCommitment = getBroadcasterFeeCommitment(\n newSerializedTransactions,\n );\n\n if (\n compareCircuitSizesTransactionStructs(\n newSerializedTransactions,\n serializedTransactions,\n )\n ) {\n // Same circuit sizes, no need to run further gas estimates.\n return gasEstimateResponse(\n gasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n }\n\n serializedTransactions = newSerializedTransactions;\n\n // eslint-disable-next-line no-await-in-loop\n transaction = await generateTransaction(serializedTransactions);\n\n // eslint-disable-next-line no-await-in-loop\n const newGasEstimate = await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n isCrossContractCall,\n );\n\n if (newGasEstimate === gasEstimate) {\n return gasEstimateResponse(\n newGasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n }\n gasEstimate = newGasEstimate;\n }\n\n return gasEstimateResponse(\n gasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n};\n\nconst compareCircuitSizesTransactionStructs = (\n serializedA: (TransactionStructV2 | TransactionStructV3)[],\n serializedB: (TransactionStructV2 | TransactionStructV3)[],\n) => {\n if (serializedA.length !== serializedB.length) {\n return false;\n }\n for (let i = 0; i < serializedA.length; i += 1) {\n if (\n serializedA[i].commitments.length !== serializedB[i].commitments.length\n ) {\n return false;\n }\n if (serializedA[i].nullifiers.length !== serializedB[i].nullifiers.length) {\n return false;\n }\n }\n return true;\n};\n\nconst broadcasterFeeWillOverflowBalance = async (\n tokenBalance: bigint,\n sendingERC20Amount: DopERC20Amount,\n broadcasterFeeERC20Amount: DopERC20Amount,\n) => {\n const sendingAmount = sendingERC20Amount.amount;\n const broadcasterFeeAmount = broadcasterFeeERC20Amount.amount;\n\n return sendingAmount + broadcasterFeeAmount > tokenBalance;\n};\n"]}
1
+ {"version":3,"file":"tx-gas-broadcaster-fee-estimator.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-gas-broadcaster-fee-estimator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n TransactionStructV2,\n TransactionStructV3,\n convertTransactionStructToCommitmentSummary,\n} from 'dop-engine-v3';\nimport {\n NetworkName,\n TransactionGasDetails,\n DopERC20Amount,\n DopTransactionGasEstimateResponse,\n FeeTokenDetails,\n calculateMaximumGas,\n DopERC20AmountRecipient,\n CommitmentSummary,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n DUMMY_FROM_ADDRESS,\n createDummyBroadcasterFeeERC20Amount,\n} from './tx-generator';\nimport { getGasEstimate, gasEstimateResponse } from './tx-gas-details';\nimport { balanceForERC20Token } from '../dop/wallets/balance-update';\nimport { ContractTransaction } from 'ethers';\nimport { walletForID } from '../dop/wallets/wallets';\n\nconst MAX_ITERATIONS_BROADCASTER_FEE_REESTIMATION = 5;\n\nexport const calculateBroadcasterFeeERC20Amount = (\n feeTokenDetails: FeeTokenDetails,\n gasDetails: TransactionGasDetails,\n): DopERC20Amount => {\n const tokenFeePerUnitGas = BigInt(feeTokenDetails.feePerUnitGas);\n const oneUnitGas = 10n ** 18n;\n const maximumGas = calculateMaximumGas(gasDetails);\n const tokenFee = (tokenFeePerUnitGas * maximumGas) / oneUnitGas;\n return {\n tokenAddress: feeTokenDetails.tokenAddress,\n amount: tokenFee,\n };\n};\n\nconst getBroadcasterFeeCommitment = (\n transactionStructs: (TransactionStructV2 | TransactionStructV3)[],\n): CommitmentSummary => {\n const transactionIndex = 0;\n const broadcasterFeeCommitment = transactionStructs[transactionIndex];\n const broadcasterFeeCommitmentIndex = 0;\n return convertTransactionStructToCommitmentSummary(\n broadcasterFeeCommitment,\n broadcasterFeeCommitmentIndex,\n );\n};\n\nexport const gasEstimateResponseDummyProofIterativeBroadcasterFee = async (\n generateDummyTransactionStructsWithBroadcasterFee: (\n broadcasterFeeERC20Amount: Optional<DopERC20Amount>,\n ) => Promise<(TransactionStructV2 | TransactionStructV3)[]>,\n generateTransaction: (\n serializedTransactions: (TransactionStructV2 | TransactionStructV3)[],\n ) => Promise<ContractTransaction>,\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n isCrossContractCall: boolean,\n): Promise<DopTransactionGasEstimateResponse> => {\n const wallet = walletForID(dopWalletID);\n\n // Use dead address for private transaction gas estimate\n const fromWalletAddress = DUMMY_FROM_ADDRESS;\n\n const isGasEstimateWithDummyProof = true;\n\n const dummyBroadcasterFee = feeTokenDetails\n ? createDummyBroadcasterFeeERC20Amount(feeTokenDetails.tokenAddress)\n : undefined;\n\n let serializedTransactions =\n await generateDummyTransactionStructsWithBroadcasterFee(\n dummyBroadcasterFee,\n );\n let transaction = await generateTransaction(serializedTransactions);\n\n let gasEstimate = await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n isCrossContractCall,\n );\n\n if (sendWithPublicWallet) {\n return gasEstimateResponse(\n gasEstimate,\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n }\n\n if (!feeTokenDetails) {\n throw new Error(\n 'Must have Broadcaster Fee details or sendWithPublicWallet field.',\n );\n }\n\n // Find any erc20Amount in transfer that matches token of broadcaster fee, if exists.\n const broadcasterFeeMatchingSendingERC20Amount = erc20AmountRecipients.find(\n erc20AmountRecipient =>\n erc20AmountRecipient.tokenAddress.toLowerCase() ===\n feeTokenDetails.tokenAddress.toLowerCase(),\n );\n\n // Get private balance of matching token.\n const balanceForBroadcasterFeeERC20 = await balanceForERC20Token(\n txidVersion,\n wallet,\n networkName,\n feeTokenDetails.tokenAddress,\n true,\n );\n\n let broadcasterFeeCommitment = getBroadcasterFeeCommitment(\n serializedTransactions,\n );\n\n // Iteratively calculate new broadcaster fee and estimate new gas amount.\n // This change if the number of circuits changes because of the additional Broadcaster Fees.\n for (let i = 0; i < MAX_ITERATIONS_BROADCASTER_FEE_REESTIMATION; i += 1) {\n const updatedGasDetails: TransactionGasDetails = {\n ...originalGasDetails,\n gasEstimate,\n };\n const updatedBroadcasterFee: DopERC20Amount =\n calculateBroadcasterFeeERC20Amount(feeTokenDetails, updatedGasDetails);\n\n // If Broadcaster fee causes overflow with the token balance,\n // then use the MAX amount for Broadcaster Fee, which is BALANCE - SENDING AMOUNT.\n if (\n balanceForBroadcasterFeeERC20 > 0n &&\n broadcasterFeeMatchingSendingERC20Amount &&\n // eslint-disable-next-line no-await-in-loop\n (await broadcasterFeeWillOverflowBalance(\n balanceForBroadcasterFeeERC20,\n broadcasterFeeMatchingSendingERC20Amount,\n updatedBroadcasterFee,\n ))\n ) {\n updatedBroadcasterFee.amount =\n balanceForBroadcasterFeeERC20 -\n broadcasterFeeMatchingSendingERC20Amount.amount;\n }\n\n const newSerializedTransactions =\n // eslint-disable-next-line no-await-in-loop\n await generateDummyTransactionStructsWithBroadcasterFee(\n updatedBroadcasterFee,\n );\n\n broadcasterFeeCommitment = getBroadcasterFeeCommitment(\n newSerializedTransactions,\n );\n\n if (\n compareCircuitSizesTransactionStructs(\n newSerializedTransactions,\n serializedTransactions,\n )\n ) {\n // Same circuit sizes, no need to run further gas estimates.\n return gasEstimateResponse(\n gasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n }\n\n serializedTransactions = newSerializedTransactions;\n\n // eslint-disable-next-line no-await-in-loop\n transaction = await generateTransaction(serializedTransactions);\n\n // eslint-disable-next-line no-await-in-loop\n const newGasEstimate = await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n isCrossContractCall,\n );\n\n if (newGasEstimate === gasEstimate) {\n return gasEstimateResponse(\n newGasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n }\n gasEstimate = newGasEstimate;\n }\n\n return gasEstimateResponse(\n gasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n};\n\nconst compareCircuitSizesTransactionStructs = (\n serializedA: (TransactionStructV2 | TransactionStructV3)[],\n serializedB: (TransactionStructV2 | TransactionStructV3)[],\n) => {\n if (serializedA.length !== serializedB.length) {\n return false;\n }\n for (let i = 0; i < serializedA.length; i += 1) {\n if (\n serializedA[i].commitments.length !== serializedB[i].commitments.length\n ) {\n return false;\n }\n if (serializedA[i].nullifiers.length !== serializedB[i].nullifiers.length) {\n return false;\n }\n }\n return true;\n};\n\nconst broadcasterFeeWillOverflowBalance = async (\n tokenBalance: bigint,\n sendingERC20Amount: DopERC20Amount,\n broadcasterFeeERC20Amount: DopERC20Amount,\n) => {\n const sendingAmount = sendingERC20Amount.amount;\n const broadcasterFeeAmount = broadcasterFeeERC20Amount.amount;\n\n return sendingAmount + broadcasterFeeAmount > tokenBalance;\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { DopTransactionGasEstimateResponse, NetworkName, CommitmentSummary, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-v5';
1
+ import { DopTransactionGasEstimateResponse, NetworkName, CommitmentSummary, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-v3';
2
2
  import { ContractTransaction } from 'ethers';
3
3
  export declare const getGasEstimate: (txidVersion: TXIDVersion, networkName: NetworkName, transaction: ContractTransaction, fromWalletAddress: string, sendWithPublicWallet: boolean, isCrossContractCall: boolean) => Promise<bigint>;
4
4
  export declare const gasEstimateResponse: (gasEstimate: bigint, broadcasterFeeCommitment: Optional<CommitmentSummary>, isGasEstimateWithDummyProof: boolean) => DopTransactionGasEstimateResponse;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setGasDetailsForTransaction = exports.gasEstimateResponse = exports.getGasEstimate = void 0;
4
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v5");
4
+ const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
5
5
  const dop_1 = require("../dop");
6
6
  const error_1 = require("../../utils/error");
7
- const dop_engine_v3_1 = require("dop-engine-v5");
7
+ const dop_engine_v3_1 = require("dop-engine-v3");
8
8
  const getGasEstimate = async (txidVersion, networkName, transaction, fromWalletAddress, sendWithPublicWallet, isCrossContractCall) => {
9
9
  const evmGasType = (0, dop_sharedmodels_v3_1.getEVMGasTypeForTransaction)(networkName, sendWithPublicWallet);
10
10
  // Add 'from' field, which is required, as a mock address.
@@ -1 +1 @@
1
- {"version":3,"file":"tx-gas-details.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-gas-details.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopTransactionGasEstimateResponse,\n EVMGasType,\n calculateGasLimit,\n NetworkName,\n getEVMGasTypeForTransaction,\n CommitmentSummary,\n TransactionGasDetails,\n TXIDVersion,\n} from 'dop-sharedmodels-v5';\nimport { getFallbackProviderForNetwork } from '../dop';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport {\n GAS_ESTIMATE_VARIANCE_DUMMY_TO_ACTUAL_TRANSACTION,\n RelayAdaptVersionedSmartContracts,\n} from 'dop-engine-v5';\nimport { ContractTransaction } from 'ethers';\n\nexport const getGasEstimate = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n transaction: ContractTransaction,\n fromWalletAddress: string,\n sendWithPublicWallet: boolean,\n isCrossContractCall: boolean,\n): Promise<bigint> => {\n const evmGasType = getEVMGasTypeForTransaction(\n networkName,\n sendWithPublicWallet,\n );\n\n // Add 'from' field, which is required, as a mock address.\n // Note that DEPOSIT needs a real address, as it checks the balance for transfer.\n const estimateGasTransactionRequest: ContractTransaction = {\n ...transaction,\n from: fromWalletAddress,\n type: evmGasType,\n };\n if (shouldRemoveGasLimitForL2GasEstimate(networkName)) {\n delete estimateGasTransactionRequest.gasLimit;\n }\n\n try {\n return estimateGas(\n txidVersion,\n networkName,\n estimateGasTransactionRequest,\n isCrossContractCall,\n );\n } catch (err) {\n throw reportAndSanitizeError(getGasEstimate.name, err);\n }\n};\n\nconst estimateGas = (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n transaction: ContractTransaction,\n isCrossContractCall: boolean,\n): Promise<bigint> => {\n const provider = getFallbackProviderForNetwork(networkName);\n if (isCrossContractCall) {\n // Includes custom error handler for relay-adapt transactions.\n return RelayAdaptVersionedSmartContracts.estimateGasWithErrorHandler(\n txidVersion,\n provider,\n transaction,\n );\n }\n return provider.estimateGas(transaction);\n};\n\n/**\n * Gas estimates can fail for relay-adapt transactions on L2s like Arbitrum.\n * This occurs on cross-contract calls (relay-adapt) which have a manual minimum gas limit set by Dop Engine.\n */\nconst shouldRemoveGasLimitForL2GasEstimate = (networkName: NetworkName) => {\n switch (networkName) {\n case NetworkName.Arbitrum:\n return true;\n case NetworkName.Ethereum:\n case NetworkName.BNBChain:\n case NetworkName.Polygon:\n case NetworkName.Xlayer:\n case NetworkName.PolygonAmoy:\n case NetworkName.EthereumRopsten_DEPRECATED:\n case NetworkName.EthereumGoerli_DEPRECATED:\n case NetworkName.ArbitrumGoerli_DEPRECATED:\n case NetworkName.PolygonMumbai_DEPRECATED:\n case NetworkName.EthereumSepolia:\n case NetworkName.Hardhat:\n default:\n return false;\n }\n};\n\nexport const gasEstimateResponse = (\n gasEstimate: bigint,\n broadcasterFeeCommitment: Optional<CommitmentSummary>,\n isGasEstimateWithDummyProof: boolean,\n): DopTransactionGasEstimateResponse => {\n // TODO: This variance will be different on L2s.\n // However, it's small enough that it shouldn't matter very much.\n const gasEstimateWithDummyProofVariance = isGasEstimateWithDummyProof\n ? gasEstimate + BigInt(GAS_ESTIMATE_VARIANCE_DUMMY_TO_ACTUAL_TRANSACTION)\n : gasEstimate;\n\n const response: DopTransactionGasEstimateResponse = {\n gasEstimate: gasEstimateWithDummyProofVariance,\n broadcasterFeeCommitment,\n };\n return response;\n};\n\nexport const setGasDetailsForTransaction = (\n networkName: NetworkName,\n transaction: ContractTransaction,\n gasDetails: TransactionGasDetails,\n sendWithPublicWallet: boolean,\n) => {\n const { gasEstimate } = gasDetails;\n\n // eslint-disable-next-line no-param-reassign\n transaction.gasLimit = calculateGasLimit(gasEstimate);\n\n const evmGasType = getEVMGasTypeForTransaction(\n networkName,\n sendWithPublicWallet,\n );\n\n if (gasDetails.evmGasType !== evmGasType) {\n const transactionType = sendWithPublicWallet\n ? 'self-signed'\n : 'Broadcaster';\n throw new Error(\n `Invalid evmGasType for ${networkName} (${transactionType}): expected Type${evmGasType}, received Type${gasDetails.evmGasType} in gasDetails. Retrieve appropriate gas type with getEVMGasTypeForTransaction (dop-sharedmodels-v3).`,\n );\n }\n\n // eslint-disable-next-line no-param-reassign\n transaction.type = gasDetails.evmGasType;\n\n switch (gasDetails.evmGasType) {\n case EVMGasType.Type0: {\n // eslint-disable-next-line no-param-reassign\n transaction.gasPrice = gasDetails.gasPrice;\n // eslint-disable-next-line no-param-reassign\n delete transaction.accessList;\n break;\n }\n case EVMGasType.Type1: {\n // eslint-disable-next-line no-param-reassign\n transaction.gasPrice = gasDetails.gasPrice;\n break;\n }\n case EVMGasType.Type2: {\n // eslint-disable-next-line no-param-reassign\n transaction.maxFeePerGas = gasDetails.maxFeePerGas;\n // eslint-disable-next-line no-param-reassign\n transaction.maxPriorityFeePerGas = gasDetails.maxPriorityFeePerGas;\n break;\n }\n }\n};\n"]}
1
+ {"version":3,"file":"tx-gas-details.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-gas-details.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopTransactionGasEstimateResponse,\n EVMGasType,\n calculateGasLimit,\n NetworkName,\n getEVMGasTypeForTransaction,\n CommitmentSummary,\n TransactionGasDetails,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport { getFallbackProviderForNetwork } from '../dop';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport {\n GAS_ESTIMATE_VARIANCE_DUMMY_TO_ACTUAL_TRANSACTION,\n RelayAdaptVersionedSmartContracts,\n} from 'dop-engine-v3';\nimport { ContractTransaction } from 'ethers';\n\nexport const getGasEstimate = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n transaction: ContractTransaction,\n fromWalletAddress: string,\n sendWithPublicWallet: boolean,\n isCrossContractCall: boolean,\n): Promise<bigint> => {\n const evmGasType = getEVMGasTypeForTransaction(\n networkName,\n sendWithPublicWallet,\n );\n\n // Add 'from' field, which is required, as a mock address.\n // Note that DEPOSIT needs a real address, as it checks the balance for transfer.\n const estimateGasTransactionRequest: ContractTransaction = {\n ...transaction,\n from: fromWalletAddress,\n type: evmGasType,\n };\n if (shouldRemoveGasLimitForL2GasEstimate(networkName)) {\n delete estimateGasTransactionRequest.gasLimit;\n }\n\n try {\n return estimateGas(\n txidVersion,\n networkName,\n estimateGasTransactionRequest,\n isCrossContractCall,\n );\n } catch (err) {\n throw reportAndSanitizeError(getGasEstimate.name, err);\n }\n};\n\nconst estimateGas = (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n transaction: ContractTransaction,\n isCrossContractCall: boolean,\n): Promise<bigint> => {\n const provider = getFallbackProviderForNetwork(networkName);\n if (isCrossContractCall) {\n // Includes custom error handler for relay-adapt transactions.\n return RelayAdaptVersionedSmartContracts.estimateGasWithErrorHandler(\n txidVersion,\n provider,\n transaction,\n );\n }\n return provider.estimateGas(transaction);\n};\n\n/**\n * Gas estimates can fail for relay-adapt transactions on L2s like Arbitrum.\n * This occurs on cross-contract calls (relay-adapt) which have a manual minimum gas limit set by Dop Engine.\n */\nconst shouldRemoveGasLimitForL2GasEstimate = (networkName: NetworkName) => {\n switch (networkName) {\n case NetworkName.Arbitrum:\n return true;\n case NetworkName.Ethereum:\n case NetworkName.BNBChain:\n case NetworkName.Polygon:\n case NetworkName.Xlayer:\n case NetworkName.PolygonAmoy:\n case NetworkName.EthereumRopsten_DEPRECATED:\n case NetworkName.EthereumGoerli_DEPRECATED:\n case NetworkName.ArbitrumGoerli_DEPRECATED:\n case NetworkName.PolygonMumbai_DEPRECATED:\n case NetworkName.EthereumSepolia:\n case NetworkName.Hardhat:\n default:\n return false;\n }\n};\n\nexport const gasEstimateResponse = (\n gasEstimate: bigint,\n broadcasterFeeCommitment: Optional<CommitmentSummary>,\n isGasEstimateWithDummyProof: boolean,\n): DopTransactionGasEstimateResponse => {\n // TODO: This variance will be different on L2s.\n // However, it's small enough that it shouldn't matter very much.\n const gasEstimateWithDummyProofVariance = isGasEstimateWithDummyProof\n ? gasEstimate + BigInt(GAS_ESTIMATE_VARIANCE_DUMMY_TO_ACTUAL_TRANSACTION)\n : gasEstimate;\n\n const response: DopTransactionGasEstimateResponse = {\n gasEstimate: gasEstimateWithDummyProofVariance,\n broadcasterFeeCommitment,\n };\n return response;\n};\n\nexport const setGasDetailsForTransaction = (\n networkName: NetworkName,\n transaction: ContractTransaction,\n gasDetails: TransactionGasDetails,\n sendWithPublicWallet: boolean,\n) => {\n const { gasEstimate } = gasDetails;\n\n // eslint-disable-next-line no-param-reassign\n transaction.gasLimit = calculateGasLimit(gasEstimate);\n\n const evmGasType = getEVMGasTypeForTransaction(\n networkName,\n sendWithPublicWallet,\n );\n\n if (gasDetails.evmGasType !== evmGasType) {\n const transactionType = sendWithPublicWallet\n ? 'self-signed'\n : 'Broadcaster';\n throw new Error(\n `Invalid evmGasType for ${networkName} (${transactionType}): expected Type${evmGasType}, received Type${gasDetails.evmGasType} in gasDetails. Retrieve appropriate gas type with getEVMGasTypeForTransaction (dop-sharedmodels-v3).`,\n );\n }\n\n // eslint-disable-next-line no-param-reassign\n transaction.type = gasDetails.evmGasType;\n\n switch (gasDetails.evmGasType) {\n case EVMGasType.Type0: {\n // eslint-disable-next-line no-param-reassign\n transaction.gasPrice = gasDetails.gasPrice;\n // eslint-disable-next-line no-param-reassign\n delete transaction.accessList;\n break;\n }\n case EVMGasType.Type1: {\n // eslint-disable-next-line no-param-reassign\n transaction.gasPrice = gasDetails.gasPrice;\n break;\n }\n case EVMGasType.Type2: {\n // eslint-disable-next-line no-param-reassign\n transaction.maxFeePerGas = gasDetails.maxFeePerGas;\n // eslint-disable-next-line no-param-reassign\n transaction.maxPriorityFeePerGas = gasDetails.maxPriorityFeePerGas;\n break;\n }\n }\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { AdaptID, TransactionStructV2, TransactionStructV3 } from 'dop-engine-v5';
2
- import { DopERC20Amount, DopERC20AmountRecipient, NetworkName, ProofType, DopNFTAmountRecipient, TXIDVersion } from 'dop-sharedmodels-v5';
1
+ import { AdaptID, TransactionStructV2, TransactionStructV3 } from 'dop-engine-v3';
2
+ import { DopERC20Amount, DopERC20AmountRecipient, NetworkName, ProofType, DopNFTAmountRecipient, TXIDVersion } from 'dop-sharedmodels-v3';
3
3
  import { ContractTransaction } from 'ethers';
4
4
  export declare const DUMMY_FROM_ADDRESS = "0x000000000000000000000000000000000000dEaD";
5
5
  export type GenerateTransactionsProgressCallback = (progress: number, status: string) => void;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateDecryptBaseToken = exports.generateTransact = exports.generateDummyProofTransactions = exports.createDummyBroadcasterFeeERC20Amount = exports.nullifiersForTransactions = exports.generateProofTransactions = exports.DUMMY_FROM_ADDRESS = void 0;
4
- const dop_engine_v3_1 = require("dop-engine-v5");
5
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v5");
4
+ const dop_engine_v3_1 = require("dop-engine-v3");
5
+ const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
6
6
  const tx_notes_1 = require("./tx-notes");
7
7
  const prover_1 = require("../dop/core/prover");
8
8
  const wallets_1 = require("../dop/wallets/wallets");
@@ -1 +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 DopWallet,\n TransactionBatch,\n AdaptID,\n OutputType,\n getTokenDataERC20,\n getTokenDataNFT,\n ERC721_NOTE_VALUE,\n NFTTokenData,\n DopVersionedSmartContracts,\n TransactionStructV2,\n TransactionStructV3,\n RelayAdaptVersionedSmartContracts,\n} from 'dop-engine-v5';\nimport {\n DopERC20Amount,\n DopERC20AmountRecipient,\n NetworkName,\n NETWORK_CONFIG,\n ProofType,\n DopNFTAmountRecipient,\n NFTTokenType,\n TXIDVersion,\n} from 'dop-sharedmodels-v5';\nimport {\n erc20NoteFromERC20AmountRecipient,\n nftNoteFromNFTAmountRecipient,\n} from './tx-notes';\nimport { getProver } from '../dop/core/prover';\nimport {\n assertValidEthAddress,\n assertValidDopAddress,\n fullWalletForID,\n walletForID,\n} from '../dop/wallets/wallets';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\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 dopWalletID: string,\n txidVersion: TXIDVersion,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n relayAdaptID: Optional<AdaptID>,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n originEncryptTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: (TransactionStructV2 | TransactionStructV3)[];\n}> => {\n const dopWallet = fullWalletForID(dopWalletID);\n\n console.log(\"dopWallet\", dopWallet)\n\n const txs = await transactionsFromERC20Amounts(\n proofType,\n erc20AmountRecipients,\n nftAmountRecipients,\n dopWallet,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n networkName,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n relayAdaptID,\n useDummyProof,\n overallBatchMinGasPrice,\n progressCallback,\n originEncryptTxidForSpendabilityOverride,\n );\n return txs;\n};\n\nexport const nullifiersForTransactions = (\n transactions: (TransactionStructV2 | 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: DopERC20Amount = {\n tokenAddress: feeTokenAddress,\n amount: DUMMY_AMOUNT,\n };\n return broadcasterFeeERC20Amount;\n};\n\nexport const generateDummyProofTransactions = async (\n proofType: ProofType,\n networkName: NetworkName,\n dopWalletID: string,\n txidVersion: TXIDVersion,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20Amount: Optional<DopERC20Amount>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n originEncryptTxidForSpendabilityOverride?: string,\n): Promise<(TransactionStructV2 | TransactionStructV3)[]> => {\n if (!broadcasterFeeERC20Amount && !sendWithPublicWallet) {\n throw new Error('Must send with broadcaster or public wallet.');\n }\n\n const dopWallet = walletForID(dopWalletID);\n\n // Use self-wallet as dummy broadcaster address.\n const broadcasterDopAddress = dopWallet.getAddress(undefined);\n\n const broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient> =\n broadcasterFeeERC20Amount\n ? {\n ...broadcasterFeeERC20Amount,\n recipientAddress: broadcasterDopAddress,\n }\n : undefined;\n\n return (\n await generateProofTransactions(\n proofType,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n true, // useDummyProof\n overallBatchMinGasPrice,\n () => {}, // progressCallback (not necessary for dummy txs)\n originEncryptTxidForSpendabilityOverride,\n )\n ).provedTransactions;\n};\n\nexport const generateTransact = async (\n txidVersion: TXIDVersion,\n txs: (TransactionStructV2 | TransactionStructV3)[],\n networkName: NetworkName,\n value: bigint,\n useDummyProof = false,\n): Promise<ContractTransaction> => {\n const chain = NETWORK_CONFIG[networkName].chain;\n const transaction = await DopVersionedSmartContracts.generateTransact(\n txidVersion,\n chain,\n txs,\n );\n if (useDummyProof) {\n return {\n ...transaction,\n from: DUMMY_FROM_ADDRESS,\n value,\n };\n }\n return transaction;\n};\n\nexport const generateDecryptBaseToken = async (\n txidVersion: TXIDVersion,\n txs: (TransactionStructV2 | TransactionStructV3)[],\n networkName: NetworkName,\n toWalletAddress: string,\n relayAdaptParamsRandom: string,\n useDummyProof = false,\n): Promise<ContractTransaction> => {\n assertValidEthAddress(toWalletAddress);\n assertNotBlockedAddress(toWalletAddress);\n\n const chain = NETWORK_CONFIG[networkName].chain;\n\n const transaction =\n await RelayAdaptVersionedSmartContracts.populateDecryptBaseToken(\n txidVersion,\n chain,\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: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n dopWallet: DopWallet,\n txidVersion: TXIDVersion,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n networkName: NetworkName,\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n relayAdaptID: Optional<AdaptID>,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n originEncryptTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: (TransactionStructV2 | TransactionStructV3)[];\n}> => {\n const network = NETWORK_CONFIG[networkName];\n const { chain } = network;\n\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 console.log(\"transactionBatch 0: \", transactionBatch)\n\n if (relayAdaptID) {\n transactionBatch.setAdaptID(relayAdaptID);\n }\n\n if (broadcasterFeeERC20AmountRecipient && !sendWithPublicWallet) {\n assertValidDopAddress(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 dopWallet,\n OutputType.BroadcasterFee,\n false, // showSenderAddressToRecipient - never show sender for Broadcaster fees\n undefined, // memoText\n ),\n );\n }\n\n\n nftAmountRecipients.forEach(\n (nftAmountRecipient: DopNFTAmountRecipient) => {\n addTransactionOutputsNFT(\n proofType,\n transactionBatch,\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n },\n );\n\n console.log(\"transactionBatch 11: \", transactionBatch)\n\n erc20AmountRecipients.forEach(\n (erc20AmountRecipient: DopERC20AmountRecipient) => {\n addTransactionOutputsERC20(\n proofType,\n transactionBatch,\n erc20AmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n },\n );\n\n console.log(\"transactionBatch 22: \", transactionBatch)\n\n const txBatches = await generateAllProofs(\n transactionBatch,\n dopWallet,\n txidVersion,\n encryptionKey,\n useDummyProof,\n progressCallback,\n originEncryptTxidForSpendabilityOverride,\n );\n console.log(\"txBatches 0: \", txBatches)\n\n return txBatches;\n};\n\nconst addTransactionOutputsERC20 = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferERC20(\n transactionBatch,\n erc20AmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.DecryptBaseToken:\n case ProofType.Decrypt: {\n addTransactionOutputsDecryptERC20(\n transactionBatch,\n erc20AmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsNFT = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferNFT(\n transactionBatch,\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.DecryptBaseToken:\n case ProofType.Decrypt: {\n addTransactionOutputsDecryptNFT(\n transactionBatch,\n nftAmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsTransferERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidDopAddress(erc20AmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n erc20NoteFromERC20AmountRecipient(\n erc20AmountRecipient,\n dopWallet,\n OutputType.Transfer,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsDecryptERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, amount } = erc20AmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n assertNotBlockedAddress(recipientAddress);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n transactionBatch.addDecryptData({\n toAddress: erc20AmountRecipient.recipientAddress,\n value: amount,\n tokenData,\n allowOverride,\n });\n};\n\nconst addTransactionOutputsTransferNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidDopAddress(nftAmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n nftNoteFromNFTAmountRecipient(\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsDecryptNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, nftAddress, tokenSubID, nftTokenType, amount } =\n nftAmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n assertNotBlockedAddress(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.addDecryptData({\n toAddress: recipientAddress,\n value,\n tokenData,\n allowOverride,\n });\n};\n\nconst generateAllProofs = async (\n transactionBatch: TransactionBatch,\n dopWallet: DopWallet,\n txidVersion: TXIDVersion,\n encryptionKey: string,\n useDummyProof: boolean,\n progressCallback: GenerateTransactionsProgressCallback,\n originEncryptTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: (TransactionStructV2 | TransactionStructV3)[];\n}> => {\n const prover = getProver();\n if (useDummyProof) {\n return {\n provedTransactions: await transactionBatch.generateDummyTransactions(\n prover,\n dopWallet,\n txidVersion,\n encryptionKey,\n originEncryptTxidForSpendabilityOverride,\n ),\n };\n }\n return transactionBatch.generateTransactions(\n prover,\n dopWallet,\n txidVersion,\n encryptionKey,\n progressCallback,\n false,\n originEncryptTxidForSpendabilityOverride,\n );\n};\n"]}
1
+ {"version":3,"file":"tx-generator.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopWallet,\n TransactionBatch,\n AdaptID,\n OutputType,\n getTokenDataERC20,\n getTokenDataNFT,\n ERC721_NOTE_VALUE,\n NFTTokenData,\n DopVersionedSmartContracts,\n TransactionStructV2,\n TransactionStructV3,\n RelayAdaptVersionedSmartContracts,\n} from 'dop-engine-v3';\nimport {\n DopERC20Amount,\n DopERC20AmountRecipient,\n NetworkName,\n NETWORK_CONFIG,\n ProofType,\n DopNFTAmountRecipient,\n NFTTokenType,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n erc20NoteFromERC20AmountRecipient,\n nftNoteFromNFTAmountRecipient,\n} from './tx-notes';\nimport { getProver } from '../dop/core/prover';\nimport {\n assertValidEthAddress,\n assertValidDopAddress,\n fullWalletForID,\n walletForID,\n} from '../dop/wallets/wallets';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\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 dopWalletID: string,\n txidVersion: TXIDVersion,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n relayAdaptID: Optional<AdaptID>,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n originEncryptTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: (TransactionStructV2 | TransactionStructV3)[];\n}> => {\n const dopWallet = fullWalletForID(dopWalletID);\n\n console.log(\"dopWallet\", dopWallet)\n\n const txs = await transactionsFromERC20Amounts(\n proofType,\n erc20AmountRecipients,\n nftAmountRecipients,\n dopWallet,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n networkName,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n relayAdaptID,\n useDummyProof,\n overallBatchMinGasPrice,\n progressCallback,\n originEncryptTxidForSpendabilityOverride,\n );\n return txs;\n};\n\nexport const nullifiersForTransactions = (\n transactions: (TransactionStructV2 | 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: DopERC20Amount = {\n tokenAddress: feeTokenAddress,\n amount: DUMMY_AMOUNT,\n };\n return broadcasterFeeERC20Amount;\n};\n\nexport const generateDummyProofTransactions = async (\n proofType: ProofType,\n networkName: NetworkName,\n dopWalletID: string,\n txidVersion: TXIDVersion,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20Amount: Optional<DopERC20Amount>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n originEncryptTxidForSpendabilityOverride?: string,\n): Promise<(TransactionStructV2 | TransactionStructV3)[]> => {\n if (!broadcasterFeeERC20Amount && !sendWithPublicWallet) {\n throw new Error('Must send with broadcaster or public wallet.');\n }\n\n const dopWallet = walletForID(dopWalletID);\n\n // Use self-wallet as dummy broadcaster address.\n const broadcasterDopAddress = dopWallet.getAddress(undefined);\n\n const broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient> =\n broadcasterFeeERC20Amount\n ? {\n ...broadcasterFeeERC20Amount,\n recipientAddress: broadcasterDopAddress,\n }\n : undefined;\n\n return (\n await generateProofTransactions(\n proofType,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n true, // useDummyProof\n overallBatchMinGasPrice,\n () => {}, // progressCallback (not necessary for dummy txs)\n originEncryptTxidForSpendabilityOverride,\n )\n ).provedTransactions;\n};\n\nexport const generateTransact = async (\n txidVersion: TXIDVersion,\n txs: (TransactionStructV2 | TransactionStructV3)[],\n networkName: NetworkName,\n value: bigint,\n useDummyProof = false,\n): Promise<ContractTransaction> => {\n const chain = NETWORK_CONFIG[networkName].chain;\n const transaction = await DopVersionedSmartContracts.generateTransact(\n txidVersion,\n chain,\n txs,\n );\n if (useDummyProof) {\n return {\n ...transaction,\n from: DUMMY_FROM_ADDRESS,\n value,\n };\n }\n return transaction;\n};\n\nexport const generateDecryptBaseToken = async (\n txidVersion: TXIDVersion,\n txs: (TransactionStructV2 | TransactionStructV3)[],\n networkName: NetworkName,\n toWalletAddress: string,\n relayAdaptParamsRandom: string,\n useDummyProof = false,\n): Promise<ContractTransaction> => {\n assertValidEthAddress(toWalletAddress);\n assertNotBlockedAddress(toWalletAddress);\n\n const chain = NETWORK_CONFIG[networkName].chain;\n\n const transaction =\n await RelayAdaptVersionedSmartContracts.populateDecryptBaseToken(\n txidVersion,\n chain,\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: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n dopWallet: DopWallet,\n txidVersion: TXIDVersion,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n networkName: NetworkName,\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n relayAdaptID: Optional<AdaptID>,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n originEncryptTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: (TransactionStructV2 | TransactionStructV3)[];\n}> => {\n const network = NETWORK_CONFIG[networkName];\n const { chain } = network;\n\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 console.log(\"transactionBatch 0: \", transactionBatch)\n\n if (relayAdaptID) {\n transactionBatch.setAdaptID(relayAdaptID);\n }\n\n if (broadcasterFeeERC20AmountRecipient && !sendWithPublicWallet) {\n assertValidDopAddress(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 dopWallet,\n OutputType.BroadcasterFee,\n false, // showSenderAddressToRecipient - never show sender for Broadcaster fees\n undefined, // memoText\n ),\n );\n }\n\n\n nftAmountRecipients.forEach(\n (nftAmountRecipient: DopNFTAmountRecipient) => {\n addTransactionOutputsNFT(\n proofType,\n transactionBatch,\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n },\n );\n\n console.log(\"transactionBatch 11: \", transactionBatch)\n\n erc20AmountRecipients.forEach(\n (erc20AmountRecipient: DopERC20AmountRecipient) => {\n addTransactionOutputsERC20(\n proofType,\n transactionBatch,\n erc20AmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n },\n );\n\n console.log(\"transactionBatch 22: \", transactionBatch)\n\n const txBatches = await generateAllProofs(\n transactionBatch,\n dopWallet,\n txidVersion,\n encryptionKey,\n useDummyProof,\n progressCallback,\n originEncryptTxidForSpendabilityOverride,\n );\n console.log(\"txBatches 0: \", txBatches)\n\n return txBatches;\n};\n\nconst addTransactionOutputsERC20 = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferERC20(\n transactionBatch,\n erc20AmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.DecryptBaseToken:\n case ProofType.Decrypt: {\n addTransactionOutputsDecryptERC20(\n transactionBatch,\n erc20AmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsNFT = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferNFT(\n transactionBatch,\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.DecryptBaseToken:\n case ProofType.Decrypt: {\n addTransactionOutputsDecryptNFT(\n transactionBatch,\n nftAmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsTransferERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidDopAddress(erc20AmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n erc20NoteFromERC20AmountRecipient(\n erc20AmountRecipient,\n dopWallet,\n OutputType.Transfer,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsDecryptERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, amount } = erc20AmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n assertNotBlockedAddress(recipientAddress);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n transactionBatch.addDecryptData({\n toAddress: erc20AmountRecipient.recipientAddress,\n value: amount,\n tokenData,\n allowOverride,\n });\n};\n\nconst addTransactionOutputsTransferNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidDopAddress(nftAmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n nftNoteFromNFTAmountRecipient(\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsDecryptNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, nftAddress, tokenSubID, nftTokenType, amount } =\n nftAmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n assertNotBlockedAddress(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.addDecryptData({\n toAddress: recipientAddress,\n value,\n tokenData,\n allowOverride,\n });\n};\n\nconst generateAllProofs = async (\n transactionBatch: TransactionBatch,\n dopWallet: DopWallet,\n txidVersion: TXIDVersion,\n encryptionKey: string,\n useDummyProof: boolean,\n progressCallback: GenerateTransactionsProgressCallback,\n originEncryptTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: (TransactionStructV2 | TransactionStructV3)[];\n}> => {\n const prover = getProver();\n if (useDummyProof) {\n return {\n provedTransactions: await transactionBatch.generateDummyTransactions(\n prover,\n dopWallet,\n txidVersion,\n encryptionKey,\n originEncryptTxidForSpendabilityOverride,\n ),\n };\n }\n return transactionBatch.generateTransactions(\n prover,\n dopWallet,\n txidVersion,\n encryptionKey,\n progressCallback,\n false,\n originEncryptTxidForSpendabilityOverride,\n );\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { OutputType, TransactNote, DopWallet } from 'dop-engine-v5';
2
- import { DopNFTAmountRecipient, DopERC20Amount, DopERC20AmountRecipient, DopNFTAmount, DopERC20Recipient } from 'dop-sharedmodels-v5';
1
+ import { OutputType, TransactNote, DopWallet } from 'dop-engine-v3';
2
+ import { DopNFTAmountRecipient, DopERC20Amount, DopERC20AmountRecipient, DopNFTAmount, DopERC20Recipient } from 'dop-sharedmodels-v3';
3
3
  export declare const erc20NoteFromERC20AmountRecipient: (erc20AmountRecipient: DopERC20AmountRecipient, dopWallet: DopWallet, outputType: OutputType, showSenderAddressToRecipient: boolean, memoText: Optional<string>) => TransactNote;
4
4
  export declare const nftNoteFromNFTAmountRecipient: (nftAmountRecipient: DopNFTAmountRecipient, dopWallet: DopWallet, showSenderAddressToRecipient: boolean, memoText: Optional<string>) => TransactNote;
5
5
  export declare const compareERC20AmountRecipients: (a: Optional<DopERC20AmountRecipient>, b: Optional<DopERC20AmountRecipient>) => boolean;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TransactNote = exports.compareNFTAmountRecipientArrays = exports.compareNFTAmountArrays = exports.compareERC20RecipientArrays = exports.compareERC20AmountRecipientArrays = exports.compareERC20AmountArrays = exports.compareERC20AmountRecipients = exports.nftNoteFromNFTAmountRecipient = exports.erc20NoteFromERC20AmountRecipient = void 0;
4
- const dop_engine_v3_1 = require("dop-engine-v5");
4
+ const dop_engine_v3_1 = require("dop-engine-v3");
5
5
  Object.defineProperty(exports, "TransactNote", { enumerable: true, get: function () { return dop_engine_v3_1.TransactNote; } });
6
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v5");
6
+ const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
7
7
  const erc20NoteFromERC20AmountRecipient = (erc20AmountRecipient, dopWallet, outputType, showSenderAddressToRecipient, memoText) => {
8
8
  const { amount, recipientAddress } = erc20AmountRecipient;
9
9
  const receiverAddressData = dop_engine_v3_1.DopEngine.decodeAddress(recipientAddress);
@@ -1 +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 DopWallet,\n DopEngine,\n getTokenDataERC20,\n getTokenDataNFT,\n} from 'dop-engine-v5';\nimport {\n NFTTokenType,\n DopNFTAmountRecipient,\n DopERC20Amount,\n DopERC20AmountRecipient,\n DopNFTAmount,\n DopERC20Recipient,\n} from 'dop-sharedmodels-v5';\n\nexport const erc20NoteFromERC20AmountRecipient = (\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n outputType: OutputType,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { amount, recipientAddress } = erc20AmountRecipient;\n\n const receiverAddressData = DopEngine.decodeAddress(recipientAddress);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n return TransactNote.createTransfer(\n receiverAddressData,\n dopWallet.addressKeys,\n amount,\n tokenData,\n showSenderAddressToRecipient,\n outputType,\n memoText,\n );\n};\n\nexport const nftNoteFromNFTAmountRecipient = (\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { recipientAddress, nftAddress, nftTokenType, tokenSubID, amount } =\n nftAmountRecipient;\n\n const receiverAddressData = DopEngine.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 dopWallet.addressKeys,\n tokenData,\n showSenderAddressToRecipient,\n memoText,\n );\n case NFTTokenType.ERC1155:\n return TransactNote.createERC1155Transfer(\n receiverAddressData,\n dopWallet.addressKeys,\n tokenData,\n BigInt(amount),\n showSenderAddressToRecipient,\n memoText,\n );\n }\n};\n\nconst compareERC20Amounts = (\n a: Optional<DopERC20Amount>,\n b: Optional<DopERC20Amount>,\n) => {\n return a?.tokenAddress === b?.tokenAddress && a?.amount === b?.amount;\n};\n\nexport const compareERC20AmountRecipients = (\n a: Optional<DopERC20AmountRecipient>,\n b: Optional<DopERC20AmountRecipient>,\n) => {\n return (\n compareERC20Amounts(a, b) && a?.recipientAddress === b?.recipientAddress\n );\n};\n\nexport const compareERC20AmountArrays = (\n a: Optional<DopERC20Amount[]>,\n b: Optional<DopERC20Amount[]>,\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<DopERC20AmountRecipient[]>,\n b: Optional<DopERC20AmountRecipient[]>,\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<DopERC20Recipient[]>,\n b: Optional<DopERC20Recipient[]>,\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<DopNFTAmount[]>,\n b: Optional<DopNFTAmount[]>,\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<DopNFTAmountRecipient[]>,\n b: Optional<DopNFTAmountRecipient[]>,\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"]}
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 DopWallet,\n DopEngine,\n getTokenDataERC20,\n getTokenDataNFT,\n} from 'dop-engine-v3';\nimport {\n NFTTokenType,\n DopNFTAmountRecipient,\n DopERC20Amount,\n DopERC20AmountRecipient,\n DopNFTAmount,\n DopERC20Recipient,\n} from 'dop-sharedmodels-v3';\n\nexport const erc20NoteFromERC20AmountRecipient = (\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n outputType: OutputType,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { amount, recipientAddress } = erc20AmountRecipient;\n\n const receiverAddressData = DopEngine.decodeAddress(recipientAddress);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n return TransactNote.createTransfer(\n receiverAddressData,\n dopWallet.addressKeys,\n amount,\n tokenData,\n showSenderAddressToRecipient,\n outputType,\n memoText,\n );\n};\n\nexport const nftNoteFromNFTAmountRecipient = (\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { recipientAddress, nftAddress, nftTokenType, tokenSubID, amount } =\n nftAmountRecipient;\n\n const receiverAddressData = DopEngine.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 dopWallet.addressKeys,\n tokenData,\n showSenderAddressToRecipient,\n memoText,\n );\n case NFTTokenType.ERC1155:\n return TransactNote.createERC1155Transfer(\n receiverAddressData,\n dopWallet.addressKeys,\n tokenData,\n BigInt(amount),\n showSenderAddressToRecipient,\n memoText,\n );\n }\n};\n\nconst compareERC20Amounts = (\n a: Optional<DopERC20Amount>,\n b: Optional<DopERC20Amount>,\n) => {\n return a?.tokenAddress === b?.tokenAddress && a?.amount === b?.amount;\n};\n\nexport const compareERC20AmountRecipients = (\n a: Optional<DopERC20AmountRecipient>,\n b: Optional<DopERC20AmountRecipient>,\n) => {\n return (\n compareERC20Amounts(a, b) && a?.recipientAddress === b?.recipientAddress\n );\n};\n\nexport const compareERC20AmountArrays = (\n a: Optional<DopERC20Amount[]>,\n b: Optional<DopERC20Amount[]>,\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<DopERC20AmountRecipient[]>,\n b: Optional<DopERC20AmountRecipient[]>,\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<DopERC20Recipient[]>,\n b: Optional<DopERC20Recipient[]>,\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<DopNFTAmount[]>,\n b: Optional<DopNFTAmount[]>,\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<DopNFTAmountRecipient[]>,\n b: Optional<DopNFTAmountRecipient[]>,\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"]}
@@ -1,2 +1,2 @@
1
- import { Chain, DopTxidFromNullifiersResponse, TXIDVersion } from 'dop-sharedmodels-v5';
1
+ import { Chain, DopTxidFromNullifiersResponse, TXIDVersion } from 'dop-sharedmodels-v3';
2
2
  export declare const getCompletedTxidFromNullifiers: (txidVersion: TXIDVersion, chain: Chain, nullifiers: string[]) => Promise<DopTxidFromNullifiersResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"tx-nullifiers.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-nullifiers.ts"],"names":[],"mappings":";;;AAKA,6CAA2D;AAC3D,+CAA+C;AAExC,MAAM,8BAA8B,GAAG,KAAK,EACjD,WAAwB,EACxB,KAAY,EACZ,UAAoB,EACoB,EAAE;IAC1C,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,IAAI,GAAqB,MAAM,MAAM,CAAC,8BAA8B,CACxE,WAAW,EACX,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;AAhBW,QAAA,8BAA8B,kCAgBzC","sourcesContent":["import {\n Chain,\n DopTxidFromNullifiersResponse,\n TXIDVersion,\n} from 'dop-sharedmodels-v5';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { getEngine } from '../dop/core/engine';\n\nexport const getCompletedTxidFromNullifiers = async (\n txidVersion: TXIDVersion,\n chain: Chain,\n nullifiers: string[],\n): Promise<DopTxidFromNullifiersResponse> => {\n try {\n const engine = getEngine();\n const txid: Optional<string> = await engine.getCompletedTxidFromNullifiers(\n txidVersion,\n chain,\n nullifiers,\n );\n return { txid };\n } catch (err) {\n throw reportAndSanitizeError(getCompletedTxidFromNullifiers.name, err);\n }\n};\n"]}
1
+ {"version":3,"file":"tx-nullifiers.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-nullifiers.ts"],"names":[],"mappings":";;;AAKA,6CAA2D;AAC3D,+CAA+C;AAExC,MAAM,8BAA8B,GAAG,KAAK,EACjD,WAAwB,EACxB,KAAY,EACZ,UAAoB,EACoB,EAAE;IAC1C,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,IAAI,GAAqB,MAAM,MAAM,CAAC,8BAA8B,CACxE,WAAW,EACX,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;AAhBW,QAAA,8BAA8B,kCAgBzC","sourcesContent":["import {\n Chain,\n DopTxidFromNullifiersResponse,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { getEngine } from '../dop/core/engine';\n\nexport const getCompletedTxidFromNullifiers = async (\n txidVersion: TXIDVersion,\n chain: Chain,\n nullifiers: string[],\n): Promise<DopTxidFromNullifiersResponse> => {\n try {\n const engine = getEngine();\n const txid: Optional<string> = await engine.getCompletedTxidFromNullifiers(\n txidVersion,\n chain,\n nullifiers,\n );\n return { txid };\n } catch (err) {\n throw reportAndSanitizeError(getCompletedTxidFromNullifiers.name, err);\n }\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { DopERC20Amount, NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TXIDVersion } from 'dop-sharedmodels-v5';
1
+ import { DopERC20Amount, NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TXIDVersion } from 'dop-sharedmodels-v3';
2
2
  import { GenerateTransactionsProgressCallback } from './tx-generator';
3
3
  export declare const generateDecryptProof: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback, value: bigint) => Promise<void>;
4
4
  export declare const generateDecryptToOriginProof: (originalEncryptTxid: string, txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], progressCallback: GenerateTransactionsProgressCallback, value: bigint) => Promise<void>;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateDecryptBaseTokenProof = exports.generateDecryptToOriginProof = exports.generateDecryptProof = void 0;
4
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v5");
4
+ const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
5
5
  const tx_generator_1 = require("./tx-generator");
6
6
  const wallets_1 = require("../dop/wallets/wallets");
7
7
  const proof_cache_1 = require("./proof-cache");
8
- const dop_engine_v3_1 = require("dop-engine-v5");
8
+ const dop_engine_v3_1 = require("dop-engine-v3");
9
9
  const blocked_address_1 = require("../../utils/blocked-address");
10
10
  const tx_cross_contract_calls_1 = require("./tx-cross-contract-calls");
11
11
  const error_1 = require("../../utils/error");
@@ -1 +1 @@
1
- {"version":3,"file":"tx-proof-decrypt.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-decrypt.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopERC20Amount,\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TXIDVersion,\n NETWORK_CONFIG,\n} from 'dop-sharedmodels-v5';\nimport {\n GenerateTransactionsProgressCallback,\n generateDummyProofTransactions,\n generateProofTransactions,\n generateTransact,\n generateDecryptBaseToken,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { assertValidEthAddress } from '../dop/wallets/wallets';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport {\n AdaptID,\n RelayAdaptVersionedSmartContracts,\n ByteUtils,\n} from 'dop-engine-v5';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { createRelayAdaptDecryptERC20AmountRecipients } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateDecryptProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n value:bigint,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n console.log(\"pre provedTransactions\")\n\n const { provedTransactions, } =\n await generateProofTransactions(\n ProofType.Decrypt,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(\n txidVersion,\n provedTransactions,\n networkName,\n value\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Decrypt,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient: false,\n memoText: undefined,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts: undefined,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n transaction,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateDecryptProof.name, err);\n }\n};\n\nexport const generateDecryptToOriginProof = async (\n originalEncryptTxid: string,\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n progressCallback: GenerateTransactionsProgressCallback,\n value:bigint,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const { provedTransactions, } =\n await generateProofTransactions(\n ProofType.Decrypt,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n undefined, // broadcasterFeeERC20AmountRecipient\n true, // sendWithPublicWallet\n undefined, // relayAdaptID\n false, // useDummyProof\n undefined, // overallBatchMinGasPrice\n progressCallback,\n originalEncryptTxid,\n );\n const transaction = await generateTransact(\n txidVersion,\n provedTransactions,\n networkName,\n value,\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Decrypt,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient: false,\n memoText: undefined,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts: undefined,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient: undefined,\n transaction,\n sendWithPublicWallet: true,\n overallBatchMinGasPrice: undefined,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateDecryptProof.name, err);\n }\n};\n\nexport const generateDecryptBaseTokenProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n encryptionKey: string,\n wrappedERC20Amount: DopERC20Amount,\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n): Promise<void> => {\n try {\n assertNotBlockedAddress(publicWalletAddress);\n assertValidEthAddress(publicWalletAddress);\n\n setCachedProvedTransaction(undefined);\n\n const erc20AmountRecipients: DopERC20AmountRecipient[] = [\n {\n ...wrappedERC20Amount,\n recipientAddress: publicWalletAddress,\n },\n ];\n\n const relayAdaptDecryptERC20Amounts: DopERC20Amount[] = [\n wrappedERC20Amount,\n ];\n\n const relayAdaptDecryptERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptDecryptERC20AmountRecipients(txidVersion, networkName, [\n wrappedERC20Amount,\n ]);\n\n // Empty NFT recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n const relayAdaptDecryptNFTAmountRecipients: DopNFTAmountRecipient[] =\n [];\n\n // Generate dummy txs for relay adapt params.\n const dummyTxs = await generateDummyProofTransactions(\n ProofType.DecryptBaseToken,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptDecryptERC20AmountRecipients,\n relayAdaptDecryptNFTAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n );\n\n const { chain } = NETWORK_CONFIG[networkName];\n\n const relayAdaptParamsRandom = ByteUtils.randomHex(31);\n const relayAdaptParams =\n await RelayAdaptVersionedSmartContracts.getRelayAdaptParamsDecryptBaseToken(\n txidVersion,\n chain,\n dummyTxs,\n publicWalletAddress,\n relayAdaptParamsRandom,\n );\n const relayAdaptContract =\n RelayAdaptVersionedSmartContracts.getRelayAdaptContract(\n txidVersion,\n chain,\n );\n const relayAdaptID: AdaptID = {\n contract: relayAdaptContract.address,\n parameters: relayAdaptParams,\n };\n\n const showSenderAddressToRecipient = false;\n const memoText: Optional<string> = undefined;\n\n // Generate final txs with relay adapt ID.\n const { provedTransactions, } =\n await generateProofTransactions(\n ProofType.DecryptBaseToken,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n relayAdaptDecryptERC20AmountRecipients,\n relayAdaptDecryptNFTAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n relayAdaptID,\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n const transaction = await generateDecryptBaseToken(\n txidVersion,\n provedTransactions,\n networkName,\n publicWalletAddress,\n relayAdaptParamsRandom,\n false, // useDummyProof\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.DecryptBaseToken,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateDecryptBaseTokenProof.name, err);\n }\n};\n"]}
1
+ {"version":3,"file":"tx-proof-decrypt.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-decrypt.ts"],"names":[],"mappings":";;;AAAA,6DAQ6B;AAC7B,iDAOwB;AACxB,oDAA+D;AAC/D,+CAA2D;AAC3D,iDAIuB;AACvB,iEAAsE;AACtE,uEAAyF;AACzF,6CAA2D;AAEpD,MAAM,oBAAoB,GAAG,KAAK,EACvC,WAAwB,EACxB,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,qBAAgD,EAChD,mBAA4C,EAC5C,kCAAqE,EACrE,oBAA6B,EAC7B,uBAAyC,EACzC,gBAAsD,EACtD,KAAY,EACG,EAAE;IACjB,IAAI;QACF,IAAA,wCAA0B,EAAC,SAAS,CAAC,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;QAErC,MAAM,EAAE,kBAAkB,GAAG,GAC3B,MAAM,IAAA,wCAAyB,EAC7B,+BAAS,CAAC,OAAO,EACjB,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,kCAAkC,EAClC,oBAAoB,EACpB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,CACjB,CAAC;QACJ,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EACxC,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,KAAK,CACN,CAAC;QAEF,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,kBAAkB,CAAC,CAAC;QAEjE,IAAA,wCAA0B,EAAC;YACzB,SAAS,EAAE,+BAAS,CAAC,OAAO;YAC5B,WAAW;YACX,WAAW;YACX,4BAA4B,EAAE,KAAK;YACnC,QAAQ,EAAE,SAAS;YACnB,qBAAqB;YACrB,mBAAmB;YACnB,6BAA6B,EAAE,SAAS;YACxC,2BAA2B,EAAE,SAAS;YACtC,gCAAgC,EAAE,SAAS;YAC3C,8BAA8B,EAAE,SAAS;YACzC,kBAAkB,EAAE,SAAS;YAC7B,kCAAkC;YAClC,WAAW;YACX,oBAAoB;YACpB,uBAAuB;YACvB,UAAU;SACX,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,4BAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC9D;AACH,CAAC,CAAC;AAnEW,QAAA,oBAAoB,wBAmE/B;AAEK,MAAM,4BAA4B,GAAG,KAAK,EAC/C,mBAA2B,EAC3B,WAAwB,EACxB,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,qBAAgD,EAChD,mBAA4C,EAC5C,gBAAsD,EACtD,KAAY,EACG,EAAE;IACjB,IAAI;QACF,IAAA,wCAA0B,EAAC,SAAS,CAAC,CAAC;QAEtC,MAAM,EAAE,kBAAkB,GAAG,GAC3B,MAAM,IAAA,wCAAyB,EAC7B,+BAAS,CAAC,OAAO,EACjB,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EAAE,qCAAqC;QAChD,IAAI,EAAE,uBAAuB;QAC7B,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;QACvB,SAAS,EAAE,0BAA0B;QACrC,gBAAgB,EAChB,mBAAmB,CACpB,CAAC;QACJ,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EACxC,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,KAAK,CACN,CAAC;QAEF,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,kBAAkB,CAAC,CAAC;QAEjE,IAAA,wCAA0B,EAAC;YACzB,SAAS,EAAE,+BAAS,CAAC,OAAO;YAC5B,WAAW;YACX,WAAW;YACX,4BAA4B,EAAE,KAAK;YACnC,QAAQ,EAAE,SAAS;YACnB,qBAAqB;YACrB,mBAAmB;YACnB,6BAA6B,EAAE,SAAS;YACxC,2BAA2B,EAAE,SAAS;YACtC,gCAAgC,EAAE,SAAS;YAC3C,8BAA8B,EAAE,SAAS;YACzC,kBAAkB,EAAE,SAAS;YAC7B,kCAAkC,EAAE,SAAS;YAC7C,WAAW;YACX,oBAAoB,EAAE,IAAI;YAC1B,uBAAuB,EAAE,SAAS;YAClC,UAAU;SACX,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,4BAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC9D;AACH,CAAC,CAAC;AAhEW,QAAA,4BAA4B,gCAgEvC;AAEK,MAAM,6BAA6B,GAAG,KAAK,EAChD,WAAwB,EACxB,WAAwB,EACxB,mBAA2B,EAC3B,WAAmB,EACnB,aAAqB,EACrB,kBAAkC,EAClC,kCAAqE,EACrE,oBAA6B,EAC7B,uBAAyC,EACzC,gBAAsD,EACvC,EAAE;IACjB,IAAI;QACF,IAAA,yCAAuB,EAAC,mBAAmB,CAAC,CAAC;QAC7C,IAAA,+BAAqB,EAAC,mBAAmB,CAAC,CAAC;QAE3C,IAAA,wCAA0B,EAAC,SAAS,CAAC,CAAC;QAEtC,MAAM,qBAAqB,GAA8B;YACvD;gBACE,GAAG,kBAAkB;gBACrB,gBAAgB,EAAE,mBAAmB;aACtC;SACF,CAAC;QAEF,MAAM,6BAA6B,GAAqB;YACtD,kBAAkB;SACnB,CAAC;QAEF,MAAM,sCAAsC,GAC1C,IAAA,sEAA4C,EAAC,WAAW,EAAE,WAAW,EAAE;YACrE,kBAAkB;SACnB,CAAC,CAAC;QAEL,wBAAwB;QACxB,MAAM,mBAAmB,GAA4B,EAAE,CAAC;QACxD,MAAM,oCAAoC,GACxC,EAAE,CAAC;QAEL,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAA,6CAA8B,EACnD,+BAAS,CAAC,gBAAgB,EAC1B,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,sCAAsC,EACtC,oCAAoC,EACpC,kCAAkC,EAClC,oBAAoB,EACpB,uBAAuB,CACxB,CAAC;QAEF,MAAM,EAAE,KAAK,EAAE,GAAG,oCAAc,CAAC,WAAW,CAAC,CAAC;QAE9C,MAAM,sBAAsB,GAAG,yBAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,gBAAgB,GACpB,MAAM,iDAAiC,CAAC,mCAAmC,CACzE,WAAW,EACX,KAAK,EACL,QAAQ,EACR,mBAAmB,EACnB,sBAAsB,CACvB,CAAC;QACJ,MAAM,kBAAkB,GACtB,iDAAiC,CAAC,qBAAqB,CACrD,WAAW,EACX,KAAK,CACN,CAAC;QACJ,MAAM,YAAY,GAAY;YAC5B,QAAQ,EAAE,kBAAkB,CAAC,OAAO;YACpC,UAAU,EAAE,gBAAgB;SAC7B,CAAC;QAEF,MAAM,4BAA4B,GAAG,KAAK,CAAC;QAC3C,MAAM,QAAQ,GAAqB,SAAS,CAAC;QAE7C,0CAA0C;QAC1C,MAAM,EAAE,kBAAkB,GAAG,GAC3B,MAAM,IAAA,wCAAyB,EAC7B,+BAAS,CAAC,gBAAgB,EAC1B,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,sCAAsC,EACtC,oCAAoC,EACpC,kCAAkC,EAClC,oBAAoB,EACpB,YAAY,EACZ,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,CACjB,CAAC;QAEJ,MAAM,WAAW,GAAG,MAAM,IAAA,uCAAwB,EAChD,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,CACN,CAAC;QAEF,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,kBAAkB,CAAC,CAAC;QAEjE,IAAA,wCAA0B,EAAC;YACzB,SAAS,EAAE,+BAAS,CAAC,gBAAgB;YACrC,WAAW;YACX,WAAW;YACX,4BAA4B;YAC5B,QAAQ;YACR,qBAAqB;YACrB,mBAAmB;YACnB,6BAA6B;YAC7B,2BAA2B,EAAE,SAAS;YACtC,gCAAgC,EAAE,SAAS;YAC3C,8BAA8B,EAAE,SAAS;YACzC,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,qCAA6B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACvE;AACH,CAAC,CAAC;AApIW,QAAA,6BAA6B,iCAoIxC","sourcesContent":["import {\n DopERC20Amount,\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TXIDVersion,\n NETWORK_CONFIG,\n} from 'dop-sharedmodels-v3';\nimport {\n GenerateTransactionsProgressCallback,\n generateDummyProofTransactions,\n generateProofTransactions,\n generateTransact,\n generateDecryptBaseToken,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { assertValidEthAddress } from '../dop/wallets/wallets';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport {\n AdaptID,\n RelayAdaptVersionedSmartContracts,\n ByteUtils,\n} from 'dop-engine-v3';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { createRelayAdaptDecryptERC20AmountRecipients } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateDecryptProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n value:bigint,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n console.log(\"pre provedTransactions\")\n\n const { provedTransactions, } =\n await generateProofTransactions(\n ProofType.Decrypt,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(\n txidVersion,\n provedTransactions,\n networkName,\n value\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Decrypt,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient: false,\n memoText: undefined,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts: undefined,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n transaction,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateDecryptProof.name, err);\n }\n};\n\nexport const generateDecryptToOriginProof = async (\n originalEncryptTxid: string,\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n progressCallback: GenerateTransactionsProgressCallback,\n value:bigint,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const { provedTransactions, } =\n await generateProofTransactions(\n ProofType.Decrypt,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n undefined, // broadcasterFeeERC20AmountRecipient\n true, // sendWithPublicWallet\n undefined, // relayAdaptID\n false, // useDummyProof\n undefined, // overallBatchMinGasPrice\n progressCallback,\n originalEncryptTxid,\n );\n const transaction = await generateTransact(\n txidVersion,\n provedTransactions,\n networkName,\n value,\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Decrypt,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient: false,\n memoText: undefined,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts: undefined,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient: undefined,\n transaction,\n sendWithPublicWallet: true,\n overallBatchMinGasPrice: undefined,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateDecryptProof.name, err);\n }\n};\n\nexport const generateDecryptBaseTokenProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n encryptionKey: string,\n wrappedERC20Amount: DopERC20Amount,\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n): Promise<void> => {\n try {\n assertNotBlockedAddress(publicWalletAddress);\n assertValidEthAddress(publicWalletAddress);\n\n setCachedProvedTransaction(undefined);\n\n const erc20AmountRecipients: DopERC20AmountRecipient[] = [\n {\n ...wrappedERC20Amount,\n recipientAddress: publicWalletAddress,\n },\n ];\n\n const relayAdaptDecryptERC20Amounts: DopERC20Amount[] = [\n wrappedERC20Amount,\n ];\n\n const relayAdaptDecryptERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptDecryptERC20AmountRecipients(txidVersion, networkName, [\n wrappedERC20Amount,\n ]);\n\n // Empty NFT recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n const relayAdaptDecryptNFTAmountRecipients: DopNFTAmountRecipient[] =\n [];\n\n // Generate dummy txs for relay adapt params.\n const dummyTxs = await generateDummyProofTransactions(\n ProofType.DecryptBaseToken,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptDecryptERC20AmountRecipients,\n relayAdaptDecryptNFTAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n );\n\n const { chain } = NETWORK_CONFIG[networkName];\n\n const relayAdaptParamsRandom = ByteUtils.randomHex(31);\n const relayAdaptParams =\n await RelayAdaptVersionedSmartContracts.getRelayAdaptParamsDecryptBaseToken(\n txidVersion,\n chain,\n dummyTxs,\n publicWalletAddress,\n relayAdaptParamsRandom,\n );\n const relayAdaptContract =\n RelayAdaptVersionedSmartContracts.getRelayAdaptContract(\n txidVersion,\n chain,\n );\n const relayAdaptID: AdaptID = {\n contract: relayAdaptContract.address,\n parameters: relayAdaptParams,\n };\n\n const showSenderAddressToRecipient = false;\n const memoText: Optional<string> = undefined;\n\n // Generate final txs with relay adapt ID.\n const { provedTransactions, } =\n await generateProofTransactions(\n ProofType.DecryptBaseToken,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n relayAdaptDecryptERC20AmountRecipients,\n relayAdaptDecryptNFTAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n relayAdaptID,\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n const transaction = await generateDecryptBaseToken(\n txidVersion,\n provedTransactions,\n networkName,\n publicWalletAddress,\n relayAdaptParamsRandom,\n false, // useDummyProof\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.DecryptBaseToken,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateDecryptBaseTokenProof.name, err);\n }\n};\n"]}
@@ -0,0 +1,36 @@
1
+ import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TXIDVersion } from 'dop-sharedmodels-v3';
2
+ import { GenerateTransactionsProgressCallback } from './tx-generator';
3
+ export interface TransferProofData {
4
+ proof: {
5
+ a: {
6
+ x: string;
7
+ y: string;
8
+ };
9
+ b: {
10
+ x: [string, string];
11
+ y: [string, string];
12
+ };
13
+ c: {
14
+ x: string;
15
+ y: string;
16
+ };
17
+ };
18
+ publicInputs: {
19
+ merkleRoot: string;
20
+ nullifiers: string[];
21
+ commitments: string[];
22
+ boundParamsHash: string;
23
+ };
24
+ transaction: {
25
+ data: string;
26
+ to?: string;
27
+ value?: string;
28
+ };
29
+ nullifiers: string[];
30
+ }
31
+ export declare const generateTransferProofForExplorer: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
32
+ /**
33
+ * Generate transfer proof and return proof data for explorer verification
34
+ * This function generates the proof and returns the proof data needed for verification on the explorer
35
+ */
36
+ export declare const generateTransferProof: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<TransferProofData>;