dop-wallet-v6 1.1.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 (206) hide show
  1. package/.eslintrc.js +73 -0
  2. package/.prettierrc.js +21 -0
  3. package/LICENSE +21 -0
  4. package/README.md +2 -0
  5. package/dist/index.d.ts +4 -0
  6. package/dist/index.js +20 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/services/artifacts/artifact-downloader.d.ts +13 -0
  9. package/dist/services/artifacts/artifact-downloader.js +131 -0
  10. package/dist/services/artifacts/artifact-downloader.js.map +1 -0
  11. package/dist/services/artifacts/artifact-hash.d.ts +4 -0
  12. package/dist/services/artifacts/artifact-hash.js +54 -0
  13. package/dist/services/artifacts/artifact-hash.js.map +1 -0
  14. package/dist/services/artifacts/artifact-store.d.ts +12 -0
  15. package/dist/services/artifacts/artifact-store.js +12 -0
  16. package/dist/services/artifacts/artifact-store.js.map +1 -0
  17. package/dist/services/artifacts/artifact-util.d.ts +7 -0
  18. package/dist/services/artifacts/artifact-util.js +83 -0
  19. package/dist/services/artifacts/artifact-util.js.map +1 -0
  20. package/dist/services/artifacts/index.d.ts +2 -0
  21. package/dist/services/artifacts/index.js +19 -0
  22. package/dist/services/artifacts/index.js.map +1 -0
  23. package/dist/services/artifacts/json/artifact-v2-hashes.json +337 -0
  24. package/dist/services/dop/core/artifacts.d.ts +10 -0
  25. package/dist/services/dop/core/artifacts.js +69 -0
  26. package/dist/services/dop/core/artifacts.js.map +1 -0
  27. package/dist/services/dop/core/engine.d.ts +25 -0
  28. package/dist/services/dop/core/engine.js +103 -0
  29. package/dist/services/dop/core/engine.js.map +1 -0
  30. package/dist/services/dop/core/index.d.ts +5 -0
  31. package/dist/services/dop/core/index.js +22 -0
  32. package/dist/services/dop/core/index.js.map +1 -0
  33. package/dist/services/dop/core/prover.d.ts +3 -0
  34. package/dist/services/dop/core/prover.js +14 -0
  35. package/dist/services/dop/core/prover.js.map +1 -0
  36. package/dist/services/dop/core/providers.d.ts +18 -0
  37. package/dist/services/dop/core/providers.js +162 -0
  38. package/dist/services/dop/core/providers.js.map +1 -0
  39. package/dist/services/dop/core/shields.d.ts +7 -0
  40. package/dist/services/dop/core/shields.js +20 -0
  41. package/dist/services/dop/core/shields.js.map +1 -0
  42. package/dist/services/dop/history/transaction-history.d.ts +4 -0
  43. package/dist/services/dop/history/transaction-history.js +166 -0
  44. package/dist/services/dop/history/transaction-history.js.map +1 -0
  45. package/dist/services/dop/index.d.ts +4 -0
  46. package/dist/services/dop/index.js +21 -0
  47. package/dist/services/dop/index.js.map +1 -0
  48. package/dist/services/dop/process/extract-first-note.d.ts +6 -0
  49. package/dist/services/dop/process/extract-first-note.js +163 -0
  50. package/dist/services/dop/process/extract-first-note.js.map +1 -0
  51. package/dist/services/dop/process/index.d.ts +1 -0
  52. package/dist/services/dop/process/index.js +18 -0
  53. package/dist/services/dop/process/index.js.map +1 -0
  54. package/dist/services/dop/quick-sync/empty-events.d.ts +2 -0
  55. package/dist/services/dop/quick-sync/empty-events.js +9 -0
  56. package/dist/services/dop/quick-sync/empty-events.js.map +1 -0
  57. package/dist/services/dop/quick-sync/graph-type-formatters.d.ts +13 -0
  58. package/dist/services/dop/quick-sync/graph-type-formatters.js +168 -0
  59. package/dist/services/dop/quick-sync/graph-type-formatters.js.map +1 -0
  60. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/introspectionSchema.d.ts +2 -0
  61. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/introspectionSchema.js +24081 -0
  62. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/introspectionSchema.js.map +1 -0
  63. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/types.d.ts +1628 -0
  64. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/types.js +4 -0
  65. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/types.js.map +1 -0
  66. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/introspectionSchema.d.ts +2 -0
  67. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/introspectionSchema.js +24081 -0
  68. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/introspectionSchema.js.map +1 -0
  69. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/types.d.ts +1628 -0
  70. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/types.js +4 -0
  71. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/types.js.map +1 -0
  72. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/introspectionSchema.d.ts +2 -0
  73. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/introspectionSchema.js +24081 -0
  74. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/introspectionSchema.js.map +1 -0
  75. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/types.d.ts +1628 -0
  76. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/types.js +4 -0
  77. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/types.js.map +1 -0
  78. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/introspectionSchema.d.ts +2 -0
  79. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/introspectionSchema.js +24081 -0
  80. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/introspectionSchema.js.map +1 -0
  81. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/types.d.ts +1628 -0
  82. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/types.js +4 -0
  83. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/types.js.map +1 -0
  84. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/introspectionSchema.d.ts +2 -0
  85. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/introspectionSchema.js +24081 -0
  86. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/introspectionSchema.js.map +1 -0
  87. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/types.d.ts +1628 -0
  88. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/types.js +4 -0
  89. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/types.js.map +1 -0
  90. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/introspectionSchema.d.ts +2 -0
  91. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/introspectionSchema.js +24081 -0
  92. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/introspectionSchema.js.map +1 -0
  93. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/types.d.ts +1628 -0
  94. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/types.js +4 -0
  95. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/types.js.map +1 -0
  96. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/introspectionSchema.d.ts +2 -0
  97. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/introspectionSchema.js +24081 -0
  98. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/introspectionSchema.js.map +1 -0
  99. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/types.d.ts +1628 -0
  100. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/types.js +4 -0
  101. package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/types.js.map +1 -0
  102. package/dist/services/dop/quick-sync/graphql/index.d.ts +1976 -0
  103. package/dist/services/dop/quick-sync/graphql/index.js +512 -0
  104. package/dist/services/dop/quick-sync/graphql/index.js.map +1 -0
  105. package/dist/services/dop/quick-sync/quick-sync-graph.d.ts +2 -0
  106. package/dist/services/dop/quick-sync/quick-sync-graph.js +150 -0
  107. package/dist/services/dop/quick-sync/quick-sync-graph.js.map +1 -0
  108. package/dist/services/dop/util/bytes.d.ts +5 -0
  109. package/dist/services/dop/util/bytes.js +21 -0
  110. package/dist/services/dop/util/bytes.js.map +1 -0
  111. package/dist/services/dop/util/commitment.d.ts +2 -0
  112. package/dist/services/dop/util/commitment.js +17 -0
  113. package/dist/services/dop/util/commitment.js.map +1 -0
  114. package/dist/services/dop/util/crypto.d.ts +14 -0
  115. package/dist/services/dop/util/crypto.js +79 -0
  116. package/dist/services/dop/util/crypto.js.map +1 -0
  117. package/dist/services/dop/util/db.d.ts +2 -0
  118. package/dist/services/dop/util/db.js +6 -0
  119. package/dist/services/dop/util/db.js.map +1 -0
  120. package/dist/services/dop/util/index.d.ts +4 -0
  121. package/dist/services/dop/util/index.js +21 -0
  122. package/dist/services/dop/util/index.js.map +1 -0
  123. package/dist/services/dop/wallets/balance-update.d.ts +8 -0
  124. package/dist/services/dop/wallets/balance-update.js +90 -0
  125. package/dist/services/dop/wallets/balance-update.js.map +1 -0
  126. package/dist/services/dop/wallets/balances.d.ts +6 -0
  127. package/dist/services/dop/wallets/balances.js +57 -0
  128. package/dist/services/dop/wallets/balances.js.map +1 -0
  129. package/dist/services/dop/wallets/index.d.ts +4 -0
  130. package/dist/services/dop/wallets/index.js +21 -0
  131. package/dist/services/dop/wallets/index.js.map +1 -0
  132. package/dist/services/dop/wallets/wallets.d.ts +19 -0
  133. package/dist/services/dop/wallets/wallets.js +226 -0
  134. package/dist/services/dop/wallets/wallets.js.map +1 -0
  135. package/dist/services/ethers/ethers-util.d.ts +1 -0
  136. package/dist/services/ethers/ethers-util.js +9 -0
  137. package/dist/services/ethers/ethers-util.js.map +1 -0
  138. package/dist/services/ethers/index.d.ts +1 -0
  139. package/dist/services/ethers/index.js +18 -0
  140. package/dist/services/ethers/index.js.map +1 -0
  141. package/dist/services/index.d.ts +4 -0
  142. package/dist/services/index.js +21 -0
  143. package/dist/services/index.js.map +1 -0
  144. package/dist/services/transactions/index.d.ts +13 -0
  145. package/dist/services/transactions/index.js +30 -0
  146. package/dist/services/transactions/index.js.map +1 -0
  147. package/dist/services/transactions/proof-cache.d.ts +27 -0
  148. package/dist/services/transactions/proof-cache.js +128 -0
  149. package/dist/services/transactions/proof-cache.js.map +1 -0
  150. package/dist/services/transactions/tx-cross-contract-calls.d.ts +9 -0
  151. package/dist/services/transactions/tx-cross-contract-calls.js +386 -0
  152. package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -0
  153. package/dist/services/transactions/tx-gas-details.d.ts +5 -0
  154. package/dist/services/transactions/tx-gas-details.js +120 -0
  155. package/dist/services/transactions/tx-gas-details.js.map +1 -0
  156. package/dist/services/transactions/tx-gas-relayer-fee-estimator.d.ts +2 -0
  157. package/dist/services/transactions/tx-gas-relayer-fee-estimator.js +209 -0
  158. package/dist/services/transactions/tx-gas-relayer-fee-estimator.js.map +1 -0
  159. package/dist/services/transactions/tx-generator.d.ts +9 -0
  160. package/dist/services/transactions/tx-generator.js +205 -0
  161. package/dist/services/transactions/tx-generator.js.map +1 -0
  162. package/dist/services/transactions/tx-notes.d.ts +10 -0
  163. package/dist/services/transactions/tx-notes.js +154 -0
  164. package/dist/services/transactions/tx-notes.js.map +1 -0
  165. package/dist/services/transactions/tx-nullifiers.d.ts +2 -0
  166. package/dist/services/transactions/tx-nullifiers.js +17 -0
  167. package/dist/services/transactions/tx-nullifiers.js.map +1 -0
  168. package/dist/services/transactions/tx-proof-transfer.d.ts +4 -0
  169. package/dist/services/transactions/tx-proof-transfer.js +49 -0
  170. package/dist/services/transactions/tx-proof-transfer.js.map +1 -0
  171. package/dist/services/transactions/tx-proof-unshield.d.ts +3 -0
  172. package/dist/services/transactions/tx-proof-unshield.js +183 -0
  173. package/dist/services/transactions/tx-proof-unshield.js.map +1 -0
  174. package/dist/services/transactions/tx-shield-base-token.d.ts +3 -0
  175. package/dist/services/transactions/tx-shield-base-token.js +61 -0
  176. package/dist/services/transactions/tx-shield-base-token.js.map +1 -0
  177. package/dist/services/transactions/tx-shield.d.ts +6 -0
  178. package/dist/services/transactions/tx-shield.js +84 -0
  179. package/dist/services/transactions/tx-shield.js.map +1 -0
  180. package/dist/services/transactions/tx-transfer.d.ts +2 -0
  181. package/dist/services/transactions/tx-transfer.js +78 -0
  182. package/dist/services/transactions/tx-transfer.js.map +1 -0
  183. package/dist/services/transactions/tx-unshield.d.ts +3 -0
  184. package/dist/services/transactions/tx-unshield.js +174 -0
  185. package/dist/services/transactions/tx-unshield.js.map +1 -0
  186. package/dist/utils/blocked-address.d.ts +2 -0
  187. package/dist/utils/blocked-address.js +21 -0
  188. package/dist/utils/blocked-address.js.map +1 -0
  189. package/dist/utils/error.d.ts +1 -0
  190. package/dist/utils/error.js +20 -0
  191. package/dist/utils/error.js.map +1 -0
  192. package/dist/utils/gas-price.d.ts +6 -0
  193. package/dist/utils/gas-price.js +31 -0
  194. package/dist/utils/gas-price.js.map +1 -0
  195. package/dist/utils/index.d.ts +3 -0
  196. package/dist/utils/index.js +20 -0
  197. package/dist/utils/index.js.map +1 -0
  198. package/dist/utils/logger.d.ts +3 -0
  199. package/dist/utils/logger.js +21 -0
  200. package/dist/utils/logger.js.map +1 -0
  201. package/dist/utils/utils.d.ts +3 -0
  202. package/dist/utils/utils.js +47 -0
  203. package/dist/utils/utils.js.map +1 -0
  204. package/package.json +85 -0
  205. package/postinstall.js +52 -0
  206. package/react-native-shims.js +42 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-notes.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-notes.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n randomHex,\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-sharedmodel-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 const random = randomHex(16);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n return TransactNote.createTransfer(\n receiverAddressData,\n dopWallet.addressKeys,\n random,\n amount,\n tokenData,\n dopWallet.getViewingKeyPair(),\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 random = randomHex(16);\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 random,\n tokenData,\n dopWallet.getViewingKeyPair(),\n showSenderAddressToRecipient,\n memoText,\n );\n case NFTTokenType.ERC1155:\n return TransactNote.createERC1155Transfer(\n receiverAddressData,\n dopWallet.addressKeys,\n random,\n tokenData,\n BigInt(amount),\n dopWallet.getViewingKeyPair(),\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"]}
@@ -0,0 +1,2 @@
1
+ import { Chain, DopTxidFromNullifiersResponse } from 'dop-sharedmodel-v5';
2
+ export declare const getCompletedTxidFromNullifiers: (chain: Chain, nullifiers: string[]) => Promise<DopTxidFromNullifiersResponse>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCompletedTxidFromNullifiers = void 0;
4
+ const error_1 = require("../../utils/error");
5
+ const dop_1 = require("../dop");
6
+ const getCompletedTxidFromNullifiers = async (chain, nullifiers) => {
7
+ try {
8
+ const engine = (0, dop_1.getEngine)();
9
+ const txid = await engine.getCompletedTxidFromNullifiers(chain, nullifiers);
10
+ return { txid };
11
+ }
12
+ catch (err) {
13
+ throw (0, error_1.reportAndSanitizeError)(exports.getCompletedTxidFromNullifiers.name, err);
14
+ }
15
+ };
16
+ exports.getCompletedTxidFromNullifiers = getCompletedTxidFromNullifiers;
17
+ //# sourceMappingURL=tx-nullifiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-nullifiers.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-nullifiers.ts"],"names":[],"mappings":";;;AAIA,6CAA2D;AAC3D,gCAAmC;AAE5B,MAAM,8BAA8B,GAAG,KAAK,EACjD,KAAY,EACZ,UAAoB,EACoB,EAAE;IAC1C,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,eAAS,GAAE,CAAC;QAC3B,MAAM,IAAI,GAAqB,MAAM,MAAM,CAAC,8BAA8B,CACxE,KAAK,EACL,UAAU,CACX,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,CAAC;KACjB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAC1B,sCAA8B,CAAC,IAAI,EACnC,GAAG,CACJ,CAAC;KACH;AACH,CAAC,CAAC;AAjBW,QAAA,8BAA8B,kCAiBzC","sourcesContent":["import {\n Chain,\n DopTxidFromNullifiersResponse,\n} from 'dop-sharedmodel-v5';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { getEngine } from '../dop';\n\nexport const getCompletedTxidFromNullifiers = async (\n chain: Chain,\n nullifiers: string[],\n): Promise<DopTxidFromNullifiersResponse> => {\n try {\n const engine = getEngine();\n const txid: Optional<string> = await engine.getCompletedTxidFromNullifiers(\n chain,\n nullifiers,\n );\n return { txid };\n } catch (err) {\n throw reportAndSanitizeError(\n getCompletedTxidFromNullifiers.name,\n err,\n );\n }\n};\n"]}
@@ -0,0 +1,4 @@
1
+ import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient } from 'dop-sharedmodel-v5';
2
+ import { TransactionStruct } from 'dop-engine-v5';
3
+ import { ProverProgressCallback } from 'dop-engine-v5';
4
+ export declare const generateTransferProof: (networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: ProverProgressCallback, valueCheck: bigint) => Promise<TransactionStruct[]>;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTransferProof = void 0;
4
+ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
5
+ const tx_generator_1 = require("./tx-generator");
6
+ const proof_cache_1 = require("./proof-cache");
7
+ const error_1 = require("../../utils/error");
8
+ const generateTransferProof = async (networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback, valueCheck) => {
9
+ try {
10
+ (0, proof_cache_1.setCachedProvedTransaction)(undefined);
11
+ console.log("====== 2", dop_sharedmodel_v5_1.ProofType.Unshield, networkName, dopWalletID, encryptionKey, false, // showSenderAddressToRecipient
12
+ undefined, // memoText
13
+ erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
14
+ false, // useDummyProof
15
+ overallBatchMinGasPrice, progressCallback);
16
+ const transactions = await (0, tx_generator_1.generateProofTransactions)(dop_sharedmodel_v5_1.ProofType.Transfer, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
17
+ false, // useDummyProof
18
+ overallBatchMinGasPrice, progressCallback, valueCheck);
19
+ console.log("generateProofTransactions generateTransferProof0", transactions);
20
+ return transactions;
21
+ const transaction = await (0, tx_generator_1.generateTransact)(transactions, networkName);
22
+ console.log("generateProofTransactions transaction1", transactions);
23
+ const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(transactions);
24
+ console.log("generateProofTransactions nullifiers0", nullifiers);
25
+ (0, proof_cache_1.setCachedProvedTransaction)({
26
+ proofType: dop_sharedmodel_v5_1.ProofType.Transfer,
27
+ dopWalletID,
28
+ showSenderAddressToRecipient,
29
+ memoText,
30
+ erc20AmountRecipients,
31
+ nftAmountRecipients,
32
+ relayAdaptUnshieldERC20Amounts: undefined,
33
+ relayAdaptUnshieldNFTAmounts: undefined,
34
+ relayAdaptShieldERC20Recipients: undefined,
35
+ relayAdaptShieldNFTRecipients: undefined,
36
+ crossContractCalls: undefined,
37
+ relayerFeeERC20AmountRecipient,
38
+ sendWithPublicWallet,
39
+ transaction,
40
+ overallBatchMinGasPrice,
41
+ nullifiers,
42
+ });
43
+ }
44
+ catch (err) {
45
+ throw (0, error_1.reportAndSanitizeError)(exports.generateTransferProof.name, err);
46
+ }
47
+ };
48
+ exports.generateTransferProof = generateTransferProof;
49
+ //# sourceMappingURL=tx-proof-transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-proof-transfer.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer.ts"],"names":[],"mappings":";;;AAAA,2DAK4B;AAI5B,iDAIwB;AACxB,+CAA2D;AAE3D,6CAA2D;AAEpD,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAgD,EAChD,mBAA4C,EAC5C,8BAAiE,EACjE,oBAA6B,EAC7B,uBAAyC,EACzC,gBAAwC,EACxC,UAAkB,EACY,EAAE;IAChC,IAAI;QACF,IAAA,wCAA0B,EAAC,SAAS,CAAC,CAAC;QAGtC,OAAO,CAAC,GAAG,CAAC,UAAU,EACpB,8BAAS,CAAC,QAAQ,EAClB,WAAW,EACX,WAAW,EACX,aAAa,EACb,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,CAAC,CAAC;QAEpB,MAAM,YAAY,GAAG,MAAM,IAAA,wCAAyB,EAClD,8BAAS,CAAC,QAAQ,EAClB,WAAW,EACX,WAAW,EACX,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,CACX,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE,YAAY,CAAC,CAAC;QAC9E,OAAO,YAAY,CAAC;QAEpB,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAEtE,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,YAAY,CAAC,CAAC;QAGpE,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,YAAY,CAAC,CAAC;QAE3D,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,UAAU,CAAC,CAAC;QAGjE,IAAA,wCAA0B,EAAC;YACzB,SAAS,EAAE,8BAAS,CAAC,QAAQ;YAC7B,WAAW;YACX,4BAA4B;YAC5B,QAAQ;YACR,qBAAqB;YACrB,mBAAmB;YACnB,8BAA8B,EAAE,SAAS;YACzC,4BAA4B,EAAE,SAAS;YACvC,+BAA+B,EAAE,SAAS;YAC1C,6BAA6B,EAAE,SAAS;YACxC,kBAAkB,EAAE,SAAS;YAC7B,8BAA8B;YAC9B,oBAAoB;YACpB,WAAW;YACX,uBAAuB;YACvB,UAAU;SACX,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,6BAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC/D;AACH,CAAC,CAAC;AAtFW,QAAA,qBAAqB,yBAsFhC","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n} from 'dop-sharedmodel-v5';\nimport {\n TransactionStruct\n} from 'dop-engine-v5';\nimport {\n generateProofTransactions,\n generateTransact,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport { ProverProgressCallback } from 'dop-engine-v5';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateTransferProof = async (\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: ProverProgressCallback,\n valueCheck: bigint,\n): Promise<TransactionStruct[]> => {\n try {\n setCachedProvedTransaction(undefined);\n\n\n console.log(\"====== 2\",\n ProofType.Unshield,\n networkName,\n dopWalletID,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback);\n \n const transactions = await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n valueCheck,\n );\n\n console.log(\"generateProofTransactions generateTransferProof0\", transactions);\n return transactions;\n\n const transaction = await generateTransact(transactions, networkName);\n\n console.log(\"generateProofTransactions transaction1\", transactions);\n\n\n const nullifiers = nullifiersForTransactions(transactions);\n\n console.log(\"generateProofTransactions nullifiers0\", nullifiers);\n\n\n setCachedProvedTransaction({\n proofType: ProofType.Transfer,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptUnshieldERC20Amounts: undefined,\n relayAdaptUnshieldNFTAmounts: undefined,\n relayAdaptShieldERC20Recipients: undefined,\n relayAdaptShieldNFTRecipients: undefined,\n crossContractCalls: undefined,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProof.name, err);\n }\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient } from 'dop-sharedmodel-v5';
2
+ import { ProverProgressCallback } from 'dop-engine-v5';
3
+ export declare const generateUnshieldProof: (networkName: NetworkName, dopWalletID: string, encryptionKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: ProverProgressCallback, valueCheck: bigint) => Promise<void>;
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateUnshieldProof = void 0;
4
+ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
5
+ const tx_generator_1 = require("./tx-generator");
6
+ const proof_cache_1 = require("./proof-cache");
7
+ const error_1 = require("../../utils/error");
8
+ const generateUnshieldProof = async (networkName, dopWalletID, encryptionKey, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback, valueCheck) => {
9
+ try {
10
+ (0, proof_cache_1.setCachedProvedTransaction)(undefined);
11
+ const transactions = await (0, tx_generator_1.generateProofTransactions)(dop_sharedmodel_v5_1.ProofType.Unshield, networkName, dopWalletID, encryptionKey, false, // showSenderAddressToRecipient
12
+ undefined, // memoText
13
+ erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
14
+ false, // useDummyProof
15
+ overallBatchMinGasPrice, progressCallback, valueCheck);
16
+ const transaction = await (0, tx_generator_1.generateTransact)(transactions, networkName);
17
+ const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(transactions);
18
+ (0, proof_cache_1.setCachedProvedTransaction)({
19
+ proofType: dop_sharedmodel_v5_1.ProofType.Unshield,
20
+ dopWalletID,
21
+ showSenderAddressToRecipient: false,
22
+ memoText: undefined,
23
+ erc20AmountRecipients,
24
+ nftAmountRecipients,
25
+ relayAdaptUnshieldERC20Amounts: undefined,
26
+ relayAdaptUnshieldNFTAmounts: undefined,
27
+ relayAdaptShieldERC20Recipients: undefined,
28
+ relayAdaptShieldNFTRecipients: undefined,
29
+ crossContractCalls: undefined,
30
+ relayerFeeERC20AmountRecipient,
31
+ transaction,
32
+ sendWithPublicWallet,
33
+ overallBatchMinGasPrice,
34
+ nullifiers,
35
+ });
36
+ }
37
+ catch (err) {
38
+ throw (0, error_1.reportAndSanitizeError)(exports.generateUnshieldProof.name, err);
39
+ }
40
+ };
41
+ exports.generateUnshieldProof = generateUnshieldProof;
42
+ /*
43
+ export const generateUnshieldBaseTokenProof = async (
44
+ networkName: NetworkName,
45
+ publicWalletAddress: string,
46
+ dopWalletID: string,
47
+ encryptionKey: string,
48
+ wrappedERC20Amount: DopERC20Amount,
49
+ relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,
50
+ sendWithPublicWallet: boolean,
51
+ overallBatchMinGasPrice: Optional<bigint>,
52
+ progressCallback: ProverProgressCallback,
53
+ valueCheck: bigint,
54
+ ): Promise<void> => {
55
+ try {
56
+ assertNotBlockedAddress(publicWalletAddress);
57
+ assertValidEthAddress(publicWalletAddress);
58
+
59
+ setCachedProvedTransaction(undefined);
60
+
61
+ const erc20AmountRecipients: DopERC20AmountRecipient[] = [
62
+ {
63
+ ...wrappedERC20Amount,
64
+ recipientAddress: publicWalletAddress,
65
+ },
66
+ ];
67
+
68
+ const relayAdaptUnshieldERC20Amounts: DopERC20Amount[] = [
69
+ wrappedERC20Amount,
70
+ ];
71
+
72
+ const relayAdaptUnshieldERC20AmountRecipients: DopERC20AmountRecipient[] =
73
+ createRelayAdaptUnshieldERC20AmountRecipients(networkName, [
74
+ wrappedERC20Amount,
75
+ ]);
76
+
77
+ // Empty NFT recipients.
78
+ const nftAmountRecipients: DopNFTAmountRecipient[] = [];
79
+ const relayAdaptUnshieldNFTAmountRecipients: DopNFTAmountRecipient[] =
80
+ [];
81
+
82
+ const relayAdaptContract = getRelayAdaptContractForNetwork(networkName);
83
+
84
+ // Generate dummy txs for relay adapt params.
85
+ const dummyTxs = await generateDummyProofTransactions(
86
+ ProofType.UnshieldBaseToken,
87
+ networkName,
88
+ dopWalletID,
89
+ encryptionKey,
90
+ false, // showSenderAddressToRecipient
91
+ undefined, // memoText
92
+ relayAdaptUnshieldERC20AmountRecipients,
93
+ relayAdaptUnshieldNFTAmountRecipients,
94
+ relayerFeeERC20AmountRecipient,
95
+ sendWithPublicWallet,
96
+ overallBatchMinGasPrice,
97
+ valueCheck
98
+ );
99
+
100
+ const relayAdaptParamsRandom = randomHex(31);
101
+ const relayAdaptParams =
102
+ await relayAdaptContract.getRelayAdaptParamsUnshieldBaseToken(
103
+ dummyTxs,
104
+ publicWalletAddress,
105
+ relayAdaptParamsRandom,
106
+ );
107
+ const relayAdaptID: AdaptID = {
108
+ contract: relayAdaptContract.address,
109
+ parameters: relayAdaptParams,
110
+ };
111
+
112
+ const showSenderAddressToRecipient = false;
113
+ const memoText: Optional<string> = undefined;
114
+
115
+
116
+ // console.log("====== 1",
117
+ // ProofType.Unshield,
118
+ // networkName,
119
+ // dopWalletID,
120
+ // encryptionKey,
121
+ // false, // showSenderAddressToRecipient
122
+ // undefined, // memoText
123
+ // erc20AmountRecipients,
124
+ // nftAmountRecipients,
125
+ // relayerFeeERC20AmountRecipient,
126
+ // sendWithPublicWallet,
127
+ // undefined, // relayAdaptID
128
+ // false, // useDummyProof
129
+ // overallBatchMinGasPrice,
130
+ // progressCallback);
131
+ // Generate final txs with relay adapt ID.
132
+ const transactions = await generateProofTransactions(
133
+ ProofType.UnshieldBaseToken,
134
+ networkName,
135
+ dopWalletID,
136
+ encryptionKey,
137
+ showSenderAddressToRecipient,
138
+ memoText,
139
+ relayAdaptUnshieldERC20AmountRecipients,
140
+ relayAdaptUnshieldNFTAmountRecipients,
141
+ relayerFeeERC20AmountRecipient,
142
+ sendWithPublicWallet,
143
+ relayAdaptID,
144
+ false, // useDummyProof
145
+ overallBatchMinGasPrice,
146
+ progressCallback,
147
+ valueCheck
148
+ );
149
+
150
+ const transaction = await generateUnshieldBaseToken(
151
+ transactions,
152
+ networkName,
153
+ publicWalletAddress,
154
+ relayAdaptParamsRandom,
155
+ false, // useDummyProof
156
+ );
157
+
158
+ const nullifiers = nullifiersForTransactions(transactions);
159
+
160
+ setCachedProvedTransaction({
161
+ proofType: ProofType.UnshieldBaseToken,
162
+ dopWalletID,
163
+ showSenderAddressToRecipient,
164
+ memoText,
165
+ erc20AmountRecipients,
166
+ nftAmountRecipients,
167
+ relayAdaptUnshieldERC20Amounts,
168
+ relayAdaptUnshieldNFTAmounts: undefined,
169
+ relayAdaptShieldERC20Recipients: undefined,
170
+ relayAdaptShieldNFTRecipients: undefined,
171
+ crossContractCalls: undefined,
172
+ relayerFeeERC20AmountRecipient,
173
+ sendWithPublicWallet,
174
+ transaction,
175
+ overallBatchMinGasPrice,
176
+ nullifiers,
177
+ });
178
+ } catch (err) {
179
+ throw reportAndSanitizeError(generateUnshieldBaseTokenProof.name, err);
180
+ }
181
+ };
182
+ */
183
+ //# sourceMappingURL=tx-proof-unshield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-proof-unshield.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-unshield.ts"],"names":[],"mappings":";;;AAAA,2DAM4B;AAC5B,iDAMwB;AAExB,+CAA2D;AAS3D,6CAA2D;AAEpD,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,qBAAgD,EAChD,mBAA4C,EAC5C,8BAAiE,EACjE,oBAA6B,EAC7B,uBAAyC,EACzC,gBAAwC,EACxC,UAAkB,EACH,EAAE;IACjB,IAAI;QACF,IAAA,wCAA0B,EAAC,SAAS,CAAC,CAAC;QAEtC,MAAM,YAAY,GAAG,MAAM,IAAA,wCAAyB,EAClD,8BAAS,CAAC,QAAQ,EAClB,WAAW,EACX,WAAW,EACX,aAAa,EACb,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,CACX,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAEtE,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,YAAY,CAAC,CAAC;QAE3D,IAAA,wCAA0B,EAAC;YACzB,SAAS,EAAE,8BAAS,CAAC,QAAQ;YAC7B,WAAW;YACX,4BAA4B,EAAE,KAAK;YACnC,QAAQ,EAAE,SAAS;YACnB,qBAAqB;YACrB,mBAAmB;YACnB,8BAA8B,EAAE,SAAS;YACzC,4BAA4B,EAAE,SAAS;YACvC,+BAA+B,EAAE,SAAS;YAC1C,6BAA6B,EAAE,SAAS;YACxC,kBAAkB,EAAE,SAAS;YAC7B,8BAA8B;YAC9B,WAAW;YACX,oBAAoB;YACpB,uBAAuB;YACvB,UAAU;SACX,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,6BAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC/D;AACH,CAAC,CAAC;AAzDW,QAAA,qBAAqB,yBAyDhC;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4IE","sourcesContent":["import {\n DopERC20Amount,\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n} from 'dop-sharedmodel-v5';\nimport {\n generateDummyProofTransactions,\n generateProofTransactions,\n generateTransact,\n // generateUnshieldBaseToken,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { assertValidEthAddress } from '../dop/wallets/wallets';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport { getRelayAdaptContractForNetwork } from '../dop/core/providers';\nimport {\n AdaptID,\n ProverProgressCallback,\n randomHex,\n} from 'dop-engine-v5';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { createRelayAdaptUnshieldERC20AmountRecipients } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateUnshieldProof = async (\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: ProverProgressCallback,\n valueCheck: bigint,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const transactions = await generateProofTransactions(\n ProofType.Unshield,\n networkName,\n dopWalletID,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n valueCheck,\n );\n const transaction = await generateTransact(transactions, networkName);\n\n const nullifiers = nullifiersForTransactions(transactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Unshield,\n dopWalletID,\n showSenderAddressToRecipient: false,\n memoText: undefined,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptUnshieldERC20Amounts: undefined,\n relayAdaptUnshieldNFTAmounts: undefined,\n relayAdaptShieldERC20Recipients: undefined,\n relayAdaptShieldNFTRecipients: undefined,\n crossContractCalls: undefined,\n relayerFeeERC20AmountRecipient,\n transaction,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateUnshieldProof.name, err);\n }\n};\n/*\nexport const generateUnshieldBaseTokenProof = async (\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n encryptionKey: string,\n wrappedERC20Amount: DopERC20Amount,\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: ProverProgressCallback,\n valueCheck: bigint,\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 relayAdaptUnshieldERC20Amounts: DopERC20Amount[] = [\n wrappedERC20Amount,\n ];\n\n const relayAdaptUnshieldERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptUnshieldERC20AmountRecipients(networkName, [\n wrappedERC20Amount,\n ]);\n\n // Empty NFT recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n const relayAdaptUnshieldNFTAmountRecipients: DopNFTAmountRecipient[] =\n [];\n\n const relayAdaptContract = getRelayAdaptContractForNetwork(networkName);\n\n // Generate dummy txs for relay adapt params.\n const dummyTxs = await generateDummyProofTransactions(\n ProofType.UnshieldBaseToken,\n networkName,\n dopWalletID,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptUnshieldERC20AmountRecipients,\n relayAdaptUnshieldNFTAmountRecipients,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n valueCheck\n );\n\n const relayAdaptParamsRandom = randomHex(31);\n const relayAdaptParams =\n await relayAdaptContract.getRelayAdaptParamsUnshieldBaseToken(\n dummyTxs,\n publicWalletAddress,\n relayAdaptParamsRandom,\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\n // console.log(\"====== 1\",\n // ProofType.Unshield,\n // networkName,\n // dopWalletID,\n // encryptionKey,\n // false, // showSenderAddressToRecipient\n // undefined, // memoText\n // erc20AmountRecipients,\n // nftAmountRecipients,\n // relayerFeeERC20AmountRecipient,\n // sendWithPublicWallet,\n // undefined, // relayAdaptID\n // false, // useDummyProof\n // overallBatchMinGasPrice,\n // progressCallback);\n // Generate final txs with relay adapt ID.\n const transactions = await generateProofTransactions(\n ProofType.UnshieldBaseToken,\n networkName,\n dopWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n relayAdaptUnshieldERC20AmountRecipients,\n relayAdaptUnshieldNFTAmountRecipients,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n relayAdaptID,\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n valueCheck\n );\n\n const transaction = await generateUnshieldBaseToken(\n transactions,\n networkName,\n publicWalletAddress,\n relayAdaptParamsRandom,\n false, // useDummyProof\n );\n\n const nullifiers = nullifiersForTransactions(transactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.UnshieldBaseToken,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptUnshieldERC20Amounts,\n relayAdaptUnshieldNFTAmounts: undefined,\n relayAdaptShieldERC20Recipients: undefined,\n relayAdaptShieldNFTRecipients: undefined,\n crossContractCalls: undefined,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateUnshieldBaseTokenProof.name, err);\n }\n};\n*/"]}
@@ -0,0 +1,3 @@
1
+ import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, DopERC20Amount, NetworkName, TransactionGasDetails } from 'dop-sharedmodel-v5';
2
+ export declare const populateShieldBaseToken: (networkName: NetworkName, dopAddress: string, shieldPrivateKey: string, wrappedERC20Amount: DopERC20Amount, fromWalletAddress: string, gasDetails?: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
3
+ export declare const gasEstimateForShieldBaseToken: (networkName: NetworkName, dopAddress: string, shieldPrivateKey: string, wrappedERC20Amount: DopERC20Amount, fromWalletAddress: string) => Promise<DopTransactionGasEstimateResponse>;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.gasEstimateForShieldBaseToken = exports.populateShieldBaseToken = void 0;
4
+ const providers_1 = require("../dop/core/providers");
5
+ const tx_gas_details_1 = require("./tx-gas-details");
6
+ const blocked_address_1 = require("../../utils/blocked-address");
7
+ const dop_engine_v5_1 = require("dop-engine-v5");
8
+ const dop_1 = require("../dop");
9
+ const error_1 = require("../../utils/error");
10
+ const generateShieldBaseTokenTransaction = async (networkName, dopAddress, shieldPrivateKey, wrappedERC20Amount, fromWalletAddress) => {
11
+ try {
12
+ const relayAdaptContract = (0, providers_1.getRelayAdaptContractForNetwork)(networkName);
13
+ const { masterPublicKey, viewingPublicKey } = dop_engine_v5_1.DopEngine.decodeAddress(dopAddress);
14
+ const random = (0, dop_engine_v5_1.randomHex)(16);
15
+ const { amount, tokenAddress } = wrappedERC20Amount;
16
+ const shield = new dop_engine_v5_1.ShieldNoteERC20(masterPublicKey, random, amount, tokenAddress);
17
+ const shieldRequest = await shield.serialize((0, dop_engine_v5_1.hexToBytes)(shieldPrivateKey), viewingPublicKey);
18
+ console.log("before populateShieldBaseToken");
19
+ const transaction = await relayAdaptContract.populateShieldBaseToken(shieldRequest, fromWalletAddress);
20
+ return transaction;
21
+ }
22
+ catch (err) {
23
+ const sanitizedError = (0, error_1.reportAndSanitizeError)(generateShieldBaseTokenTransaction.name, err);
24
+ throw sanitizedError;
25
+ }
26
+ };
27
+ const populateShieldBaseToken = async (networkName, dopAddress, shieldPrivateKey, wrappedERC20Amount, fromWalletAddress, gasDetails) => {
28
+ try {
29
+ (0, dop_1.assertValidDopAddress)(dopAddress);
30
+ const transaction = await generateShieldBaseTokenTransaction(networkName, dopAddress, shieldPrivateKey, wrappedERC20Amount, fromWalletAddress);
31
+ if (gasDetails) {
32
+ const sendWithPublicWallet = true;
33
+ (0, tx_gas_details_1.setGasDetailsForTransaction)(networkName, transaction, gasDetails, sendWithPublicWallet);
34
+ }
35
+ return {
36
+ transaction,
37
+ };
38
+ }
39
+ catch (err) {
40
+ throw (0, error_1.reportAndSanitizeError)(exports.populateShieldBaseToken.name, err);
41
+ }
42
+ };
43
+ exports.populateShieldBaseToken = populateShieldBaseToken;
44
+ const gasEstimateForShieldBaseToken = async (networkName, dopAddress, shieldPrivateKey, wrappedERC20Amount, fromWalletAddress) => {
45
+ try {
46
+ (0, dop_1.assertValidDopAddress)(dopAddress);
47
+ (0, blocked_address_1.assertNotBlockedAddress)(fromWalletAddress);
48
+ console.log("before generateShieldBaseTokenTransaction");
49
+ const transaction = await generateShieldBaseTokenTransaction(networkName, dopAddress, shieldPrivateKey, wrappedERC20Amount, fromWalletAddress);
50
+ console.log("before generateShieldBaseTokenTransaction2");
51
+ const sendWithPublicWallet = true;
52
+ const isGasEstimateWithDummyProof = false;
53
+ return (0, tx_gas_details_1.gasEstimateResponse)(await (0, tx_gas_details_1.getGasEstimate)(networkName, transaction, fromWalletAddress, sendWithPublicWallet, false), undefined, // relayerFeeCommitment
54
+ isGasEstimateWithDummyProof);
55
+ }
56
+ catch (err) {
57
+ throw (0, error_1.reportAndSanitizeError)(exports.gasEstimateForShieldBaseToken.name, err);
58
+ }
59
+ };
60
+ exports.gasEstimateForShieldBaseToken = gasEstimateForShieldBaseToken;
61
+ //# sourceMappingURL=tx-shield-base-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-shield-base-token.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-shield-base-token.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n DopERC20Amount,\n NetworkName,\n TransactionGasDetails,\n} from 'dop-sharedmodel-v5';\nimport { getRelayAdaptContractForNetwork } from '../dop/core/providers';\nimport {\n gasEstimateResponse,\n getGasEstimate,\n setGasDetailsForTransaction,\n} from './tx-gas-details';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport {\n randomHex,\n ShieldNoteERC20,\n DopEngine,\n hexToBytes,\n} from 'dop-engine-v5';\nimport { assertValidDopAddress } from '../dop';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { ContractTransaction } from 'ethers';\n\nconst generateShieldBaseTokenTransaction = async (\n networkName: NetworkName,\n dopAddress: string,\n shieldPrivateKey: string,\n wrappedERC20Amount: DopERC20Amount,\n fromWalletAddress: string\n): Promise<ContractTransaction> => {\n try {\n const relayAdaptContract = getRelayAdaptContractForNetwork(networkName);\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n const random = randomHex(16);\n\n const { amount, tokenAddress } = wrappedERC20Amount;\n\n const shield = new ShieldNoteERC20(\n masterPublicKey,\n random,\n amount,\n tokenAddress,\n );\n\n const shieldRequest = await shield.serialize(\n hexToBytes(shieldPrivateKey),\n viewingPublicKey,\n );\n console.log(\"before populateShieldBaseToken\")\n\n\n const transaction = await relayAdaptContract.populateShieldBaseToken(\n shieldRequest,\n fromWalletAddress\n );\n\n return transaction;\n } catch (err) {\n const sanitizedError = reportAndSanitizeError(\n generateShieldBaseTokenTransaction.name,\n err,\n );\n throw sanitizedError;\n }\n};\n\nexport const populateShieldBaseToken = async (\n networkName: NetworkName,\n dopAddress: string,\n shieldPrivateKey: string,\n wrappedERC20Amount: DopERC20Amount,\n fromWalletAddress: string,\n gasDetails?: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n assertValidDopAddress(dopAddress);\n\n const transaction = await generateShieldBaseTokenTransaction(\n networkName,\n dopAddress,\n shieldPrivateKey,\n wrappedERC20Amount,\n fromWalletAddress,\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(populateShieldBaseToken.name, err);\n }\n};\n\nexport const gasEstimateForShieldBaseToken = async (\n networkName: NetworkName,\n dopAddress: string,\n shieldPrivateKey: string,\n wrappedERC20Amount: DopERC20Amount,\n fromWalletAddress: string,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n assertValidDopAddress(dopAddress);\n assertNotBlockedAddress(fromWalletAddress);\n console.log(\"before generateShieldBaseTokenTransaction\")\n\n const transaction = await generateShieldBaseTokenTransaction(\n networkName,\n dopAddress,\n shieldPrivateKey,\n wrappedERC20Amount,\n fromWalletAddress,\n );\n\n console.log(\"before generateShieldBaseTokenTransaction2\")\n\n\n const sendWithPublicWallet = true;\n const isGasEstimateWithDummyProof = false;\n return gasEstimateResponse(\n await getGasEstimate(\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n false, // isCrossContractCall\n ),\n undefined, // relayerFeeCommitment\n isGasEstimateWithDummyProof,\n );\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForShieldBaseToken.name, err);\n }\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TransactionGasDetails } from 'dop-sharedmodel-v5';
2
+ import { ContractTransaction } from 'ethers';
3
+ export declare const getShieldPrivateKeySignatureMessage: () => string;
4
+ export declare const generateShieldTransaction: (networkName: NetworkName, shieldPrivateKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[]) => Promise<ContractTransaction>;
5
+ export declare const populateShield: (networkName: NetworkName, shieldPrivateKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], gasDetails?: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
6
+ export declare const gasEstimateForShield: (networkName: NetworkName, shieldPrivateKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], fromWalletAddress: string) => Promise<DopTransactionGasEstimateResponse>;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.gasEstimateForShield = exports.populateShield = exports.generateShieldTransaction = exports.getShieldPrivateKeySignatureMessage = void 0;
4
+ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
5
+ const dop_engine_v5_1 = require("dop-engine-v5");
6
+ const tx_gas_details_1 = require("./tx-gas-details");
7
+ const blocked_address_1 = require("../../utils/blocked-address");
8
+ const dop_1 = require("../dop");
9
+ const tx_cross_contract_calls_1 = require("./tx-cross-contract-calls");
10
+ const error_1 = require("../../utils/error");
11
+ const getShieldPrivateKeySignatureMessage = () => {
12
+ return dop_engine_v5_1.ShieldNote.getShieldPrivateKeySignatureMessage();
13
+ };
14
+ exports.getShieldPrivateKeySignatureMessage = getShieldPrivateKeySignatureMessage;
15
+ const generateERC20ShieldRequests = async (erc20AmountRecipient, random, shieldPrivateKey) => {
16
+ const dopAddress = erc20AmountRecipient.recipientAddress;
17
+ (0, dop_1.assertValidDopAddress)(dopAddress);
18
+ const { masterPublicKey, viewingPublicKey } = dop_engine_v5_1.DopEngine.decodeAddress(dopAddress);
19
+ const shield = new dop_engine_v5_1.ShieldNoteERC20(masterPublicKey, random, erc20AmountRecipient.amount, erc20AmountRecipient.tokenAddress);
20
+ return shield.serialize((0, dop_engine_v5_1.hexToBytes)(shieldPrivateKey), viewingPublicKey);
21
+ };
22
+ const generateNFTShieldRequests = async (nftAmountRecipient, random, shieldPrivateKey) => {
23
+ const dopAddress = nftAmountRecipient.recipientAddress;
24
+ (0, dop_1.assertValidDopAddress)(dopAddress);
25
+ const { masterPublicKey, viewingPublicKey } = dop_engine_v5_1.DopEngine.decodeAddress(dopAddress);
26
+ const value = nftAmountRecipient.nftTokenType === dop_sharedmodel_v5_1.NFTTokenType.ERC721
27
+ ? dop_engine_v5_1.ERC721_NOTE_VALUE
28
+ : nftAmountRecipient.amount;
29
+ const nftTokenData = (0, tx_cross_contract_calls_1.createNFTTokenDataFromDopNFTAmount)(nftAmountRecipient);
30
+ const shield = new dop_engine_v5_1.ShieldNoteNFT(masterPublicKey, random, value, nftTokenData);
31
+ return shield.serialize((0, dop_engine_v5_1.hexToBytes)(shieldPrivateKey), viewingPublicKey);
32
+ };
33
+ const generateShieldTransaction = async (networkName, shieldPrivateKey, erc20AmountRecipients, nftAmountRecipients) => {
34
+ try {
35
+ const dopSmartWalletContract = (0, dop_1.getDopSmartWalletContractForNetwork)(networkName);
36
+ const random = (0, dop_engine_v5_1.randomHex)(16);
37
+ const shieldInputs = await Promise.all([
38
+ ...erc20AmountRecipients.map(erc20AmountRecipient => generateERC20ShieldRequests(erc20AmountRecipient, random, shieldPrivateKey)),
39
+ ...nftAmountRecipients.map(nftAmountRecipient => generateNFTShieldRequests(nftAmountRecipient, random, shieldPrivateKey)),
40
+ ]);
41
+ console.log("shieldInputs:::", shieldInputs);
42
+ const transaction = await dopSmartWalletContract.generateShield(shieldInputs);
43
+ console.log("transaction:::", transaction);
44
+ return transaction;
45
+ }
46
+ catch (err) {
47
+ const sanitizedError = (0, error_1.reportAndSanitizeError)(exports.generateShieldTransaction.name, err);
48
+ throw sanitizedError;
49
+ }
50
+ };
51
+ exports.generateShieldTransaction = generateShieldTransaction;
52
+ const populateShield = async (networkName, shieldPrivateKey, erc20AmountRecipients, nftAmountRecipients, gasDetails) => {
53
+ try {
54
+ const transaction = await (0, exports.generateShieldTransaction)(networkName, shieldPrivateKey, erc20AmountRecipients, nftAmountRecipients);
55
+ console.log("transaction:::0", transaction);
56
+ if (gasDetails) {
57
+ const sendWithPublicWallet = true;
58
+ (0, tx_gas_details_1.setGasDetailsForTransaction)(networkName, transaction, gasDetails, sendWithPublicWallet);
59
+ }
60
+ return {
61
+ transaction,
62
+ };
63
+ }
64
+ catch (err) {
65
+ throw (0, error_1.reportAndSanitizeError)(exports.populateShield.name, err);
66
+ }
67
+ };
68
+ exports.populateShield = populateShield;
69
+ const gasEstimateForShield = async (networkName, shieldPrivateKey, erc20AmountRecipients, nftAmountRecipients, fromWalletAddress) => {
70
+ try {
71
+ (0, blocked_address_1.assertNotBlockedAddress)(fromWalletAddress);
72
+ const transaction = await (0, exports.generateShieldTransaction)(networkName, shieldPrivateKey, erc20AmountRecipients, nftAmountRecipients);
73
+ console.log("transaction:::1", transaction);
74
+ const sendWithPublicWallet = true;
75
+ const isGasEstimateWithDummyProof = false;
76
+ return (0, tx_gas_details_1.gasEstimateResponse)(await (0, tx_gas_details_1.getGasEstimate)(networkName, transaction, fromWalletAddress, sendWithPublicWallet, false), undefined, // relayerFeeCommitment
77
+ isGasEstimateWithDummyProof);
78
+ }
79
+ catch (err) {
80
+ throw (0, error_1.reportAndSanitizeError)(exports.gasEstimateForShield.name, err);
81
+ }
82
+ };
83
+ exports.gasEstimateForShield = gasEstimateForShield;
84
+ //# sourceMappingURL=tx-shield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-shield.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-shield.ts"],"names":[],"mappings":";;;AAAA,2DAQ4B;AAC5B,iDASuB;AACvB,qDAI0B;AAC1B,iEAAsE;AACtE,gCAGgB;AAChB,uEAA+E;AAC/E,6CAA2D;AAGpD,MAAM,mCAAmC,GAAG,GAAG,EAAE;IACtD,OAAO,0BAAU,CAAC,mCAAmC,EAAE,CAAC;AAC1D,CAAC,CAAC;AAFW,QAAA,mCAAmC,uCAE9C;AAEF,MAAM,2BAA2B,GAAG,KAAK,EACvC,oBAA6C,EAC7C,MAAc,EACd,gBAAwB,EACM,EAAE;IAChC,MAAM,UAAU,GAAG,oBAAoB,CAAC,gBAAgB,CAAC;IAEzD,IAAA,2BAAqB,EAAC,UAAU,CAAC,CAAC;IAElC,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GACzC,yBAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,IAAI,+BAAe,CAChC,eAAe,EACf,MAAM,EACN,oBAAoB,CAAC,MAAM,EAC3B,oBAAoB,CAAC,YAAY,CAClC,CAAC;IACF,OAAO,MAAM,CAAC,SAAS,CAAC,IAAA,0BAAU,EAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,KAAK,EACrC,kBAAyC,EACzC,MAAc,EACd,gBAAwB,EACM,EAAE;IAChC,MAAM,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CAAC;IAEvD,IAAA,2BAAqB,EAAC,UAAU,CAAC,CAAC;IAElC,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GACzC,yBAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAEtC,MAAM,KAAK,GACT,kBAAkB,CAAC,YAAY,KAAK,iCAAY,CAAC,MAAM;QACrD,CAAC,CAAC,iCAAiB;QACnB,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC;IAGhC,MAAM,YAAY,GAChB,IAAA,4DAAkC,EAAC,kBAAkB,CAAC,CAAC;IAEzD,MAAM,MAAM,GAAG,IAAI,6BAAa,CAC9B,eAAe,EACf,MAAM,EACN,KAAK,EACL,YAAY,CACb,CAAC;IAEF,OAAO,MAAM,CAAC,SAAS,CAAC,IAAA,0BAAU,EAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEK,MAAM,yBAAyB,GAAG,KAAK,EAC5C,WAAwB,EACxB,gBAAwB,EACxB,qBAAgD,EAChD,mBAA4C,EACd,EAAE;IAChC,IAAI;QACF,MAAM,sBAAsB,GAC1B,IAAA,yCAAmC,EAAC,WAAW,CAAC,CAAC;QAEnD,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,EAAE,CAAC,CAAC;QAE7B,MAAM,YAAY,GAA0B,MAAM,OAAO,CAAC,GAAG,CAAC;YAC5D,GAAG,qBAAqB,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAClD,2BAA2B,CACzB,oBAAoB,EACpB,MAAM,EACN,gBAAgB,CACjB,CACF;YACD,GAAG,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAC9C,yBAAyB,CAAC,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,CAAC,CACxE;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,cAAc,CAC7D,YAAY,CACb,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAE3C,OAAO,WAAW,CAAC;KACpB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,cAAc,GAAG,IAAA,8BAAsB,EAC3C,iCAAyB,CAAC,IAAI,EAC9B,GAAG,CACJ,CAAC;QACF,MAAM,cAAc,CAAC;KACtB;AACH,CAAC,CAAC;AAvCW,QAAA,yBAAyB,6BAuCpC;AAEK,MAAM,cAAc,GAAG,KAAK,EACjC,WAAwB,EACxB,gBAAwB,EACxB,qBAAgD,EAChD,mBAA4C,EAC5C,UAAkC,EACO,EAAE;IAC3C,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,IAAA,iCAAyB,EACjD,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,CACpB,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAG5C,IAAI,UAAU,EAAE;YACd,MAAM,oBAAoB,GAAG,IAAI,CAAC;YAClC,IAAA,4CAA2B,EACzB,WAAW,EACX,WAAW,EACX,UAAU,EACV,oBAAoB,CACrB,CAAC;SACH;QAED,OAAO;YACL,WAAW;SACZ,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,sBAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACxD;AACH,CAAC,CAAC;AAjCW,QAAA,cAAc,kBAiCzB;AAEK,MAAM,oBAAoB,GAAG,KAAK,EACvC,WAAwB,EACxB,gBAAwB,EACxB,qBAAgD,EAChD,mBAA4C,EAC5C,iBAAyB,EACmB,EAAE;IAC9C,IAAI;QACF,IAAA,yCAAuB,EAAC,iBAAiB,CAAC,CAAC;QAE3C,MAAM,WAAW,GAAG,MAAM,IAAA,iCAAyB,EACjD,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,CACpB,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAG5C,MAAM,oBAAoB,GAAG,IAAI,CAAC;QAClC,MAAM,2BAA2B,GAAG,KAAK,CAAC;QAC1C,OAAO,IAAA,oCAAmB,EACxB,MAAM,IAAA,+BAAc,EAClB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,CACN,EACD,SAAS,EAAE,uBAAuB;QAClC,2BAA2B,CAC5B,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,4BAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC9D;AACH,CAAC,CAAC;AAnCW,QAAA,oBAAoB,wBAmC/B","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n NetworkName,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n NFTTokenType,\n TransactionGasDetails,\n} from 'dop-sharedmodel-v5';\nimport {\n ShieldNote,\n DopEngine,\n ShieldRequestStruct,\n randomHex,\n hexToBytes,\n ShieldNoteERC20,\n ShieldNoteNFT,\n ERC721_NOTE_VALUE,\n} from 'dop-engine-v5';\nimport {\n gasEstimateResponse,\n getGasEstimate,\n setGasDetailsForTransaction,\n} from './tx-gas-details';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport {\n assertValidDopAddress,\n getDopSmartWalletContractForNetwork,\n} from '../dop';\nimport { createNFTTokenDataFromDopNFTAmount } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { ContractTransaction } from 'ethers';\n\nexport const getShieldPrivateKeySignatureMessage = () => {\n return ShieldNote.getShieldPrivateKeySignatureMessage();\n};\n\nconst generateERC20ShieldRequests = async (\n erc20AmountRecipient: DopERC20AmountRecipient,\n random: string,\n shieldPrivateKey: string,\n): Promise<ShieldRequestStruct> => {\n const dopAddress = erc20AmountRecipient.recipientAddress;\n\n assertValidDopAddress(dopAddress);\n\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n\n const shield = new ShieldNoteERC20(\n masterPublicKey,\n random,\n erc20AmountRecipient.amount,\n erc20AmountRecipient.tokenAddress,\n );\n return shield.serialize(hexToBytes(shieldPrivateKey), viewingPublicKey);\n};\n\nconst generateNFTShieldRequests = async (\n nftAmountRecipient: DopNFTAmountRecipient,\n random: string,\n shieldPrivateKey: string,\n): Promise<ShieldRequestStruct> => {\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\n const nftTokenData =\n createNFTTokenDataFromDopNFTAmount(nftAmountRecipient);\n\n const shield = new ShieldNoteNFT(\n masterPublicKey,\n random,\n value,\n nftTokenData,\n );\n\n return shield.serialize(hexToBytes(shieldPrivateKey), viewingPublicKey);\n};\n\nexport const generateShieldTransaction = async (\n networkName: NetworkName,\n shieldPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n): Promise<ContractTransaction> => {\n try {\n const dopSmartWalletContract =\n getDopSmartWalletContractForNetwork(networkName);\n\n const random = randomHex(16);\n\n const shieldInputs: ShieldRequestStruct[] = await Promise.all([\n ...erc20AmountRecipients.map(erc20AmountRecipient =>\n generateERC20ShieldRequests(\n erc20AmountRecipient,\n random,\n shieldPrivateKey,\n ),\n ),\n ...nftAmountRecipients.map(nftAmountRecipient =>\n generateNFTShieldRequests(nftAmountRecipient, random, shieldPrivateKey),\n ),\n ]);\n console.log(\"shieldInputs:::\", shieldInputs);\n\n const transaction = await dopSmartWalletContract.generateShield(\n shieldInputs,\n );\n console.log(\"transaction:::\", transaction);\n\n return transaction;\n } catch (err) {\n const sanitizedError = reportAndSanitizeError(\n generateShieldTransaction.name,\n err,\n );\n throw sanitizedError;\n }\n};\n\nexport const populateShield = async (\n networkName: NetworkName,\n shieldPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n gasDetails?: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const transaction = await generateShieldTransaction(\n networkName,\n shieldPrivateKey,\n erc20AmountRecipients,\n nftAmountRecipients,\n );\n console.log(\"transaction:::0\", transaction);\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(populateShield.name, err);\n }\n};\n\nexport const gasEstimateForShield = async (\n networkName: NetworkName,\n shieldPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n fromWalletAddress: string,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n assertNotBlockedAddress(fromWalletAddress);\n\n const transaction = await generateShieldTransaction(\n networkName,\n shieldPrivateKey,\n erc20AmountRecipients,\n nftAmountRecipients,\n );\n console.log(\"transaction:::1\", transaction);\n\n\n const sendWithPublicWallet = true;\n const isGasEstimateWithDummyProof = false;\n return gasEstimateResponse(\n await getGasEstimate(\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n false, // isCrossContractCall\n ),\n undefined, // relayerFeeCommitment\n isGasEstimateWithDummyProof,\n );\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForShield.name, err);\n }\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import { DopPopulateTransactionResponse, NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TransactionGasDetails } from 'dop-sharedmodel-v5';
2
+ export declare const populateProvedTransfer: (networkName: NetworkName, dopWalletID: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, gasDetails: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.populateProvedTransfer = void 0;
4
+ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
5
+ const proof_cache_1 = require("./proof-cache");
6
+ // import { gasEstimateResponseDummyProofIterativeRelayerFee } from './tx-gas-relayer-fee-estimator';
7
+ const error_1 = require("../../utils/error");
8
+ const populateProvedTransfer = async (networkName, dopWalletID, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, gasDetails) => {
9
+ try {
10
+ const { transaction, nullifiers } = await (0, proof_cache_1.populateProvedTransaction)(networkName, dop_sharedmodel_v5_1.ProofType.Transfer, dopWalletID, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, undefined, // relayAdaptUnshieldERC20AmountRecipients
11
+ undefined, // relayAdaptUnshieldNFTAmounts
12
+ undefined, // relayAdaptShieldERC20Recipients
13
+ undefined, // relayAdaptShieldNFTRecipients
14
+ undefined, // crossContractCalls
15
+ relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, gasDetails);
16
+ return {
17
+ nullifiers,
18
+ transaction,
19
+ };
20
+ }
21
+ catch (err) {
22
+ throw (0, error_1.reportAndSanitizeError)(exports.populateProvedTransfer.name, err);
23
+ }
24
+ };
25
+ exports.populateProvedTransfer = populateProvedTransfer;
26
+ /*
27
+ export const gasEstimateForUnprovenTransfer = async (
28
+ networkName: NetworkName,
29
+ dopWalletID: string,
30
+ encryptionKey: string,
31
+ memoText: Optional<string>,
32
+ erc20AmountRecipients: DopERC20AmountRecipient[],
33
+ nftAmountRecipients: DopNFTAmountRecipient[],
34
+ originalGasDetails: TransactionGasDetails,
35
+ feeTokenDetails: Optional<FeeTokenDetails>,
36
+ sendWithPublicWallet: boolean,
37
+ valueCheck: bigint,
38
+ ): Promise<DopTransactionGasEstimateResponse> => {
39
+ try {
40
+ const overallBatchMinGasPrice = 0n;
41
+
42
+ const response = await gasEstimateResponseDummyProofIterativeRelayerFee(
43
+ (relayerFeeERC20Amount: Optional<DopERC20Amount>) =>
44
+ generateDummyProofTransactions(
45
+ ProofType.Transfer,
46
+ networkName,
47
+ dopWalletID,
48
+ encryptionKey,
49
+ false, // showSenderAddressToRecipient - doesn't matter for gas estimate.
50
+ memoText,
51
+ erc20AmountRecipients,
52
+ nftAmountRecipients,
53
+ relayerFeeERC20Amount,
54
+ sendWithPublicWallet,
55
+ overallBatchMinGasPrice,
56
+ valueCheck,
57
+ ),
58
+ (txs: TransactionStruct[]) =>
59
+ generateTransact(
60
+ txs,
61
+ networkName,
62
+ true, // useDummyProof
63
+ ),
64
+ networkName,
65
+ dopWalletID,
66
+ erc20AmountRecipients,
67
+ originalGasDetails,
68
+ feeTokenDetails,
69
+ sendWithPublicWallet,
70
+ false, // isCrossContractCall
71
+ );
72
+ return response;
73
+ } catch (err) {
74
+ throw reportAndSanitizeError(gasEstimateForUnprovenTransfer.name, err);
75
+ }
76
+ };
77
+ */
78
+ //# sourceMappingURL=tx-transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-transfer.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-transfer.ts"],"names":[],"mappings":";;;AAAA,2DAU4B;AAK5B,+CAA0D;AAE1D,qGAAqG;AACrG,6CAA2D;AAEpD,MAAM,sBAAsB,GAAG,KAAK,EACzC,WAAwB,EACxB,WAAmB,EACnB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAgD,EAChD,mBAA4C,EAC5C,8BAAiE,EACjE,oBAA6B,EAC7B,uBAAyC,EACzC,UAAiC,EACQ,EAAE;IAC3C,IAAI;QACF,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,uCAAyB,EACjE,WAAW,EACX,8BAAS,CAAC,QAAQ,EAClB,WAAW,EACX,4BAA4B,EAC5B,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EAAE,0CAA0C;QACrD,SAAS,EAAE,+BAA+B;QAC1C,SAAS,EAAE,kCAAkC;QAC7C,SAAS,EAAE,gCAAgC;QAC3C,SAAS,EAAE,qBAAqB;QAChC,8BAA8B,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,UAAU,CACX,CAAC;QACF,OAAO;YACL,UAAU;YACV,WAAW;SACZ,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,8BAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAChE;AACH,CAAC,CAAC;AAtCW,QAAA,sBAAsB,0BAsCjC;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDE","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n DopERC20Amount,\n NetworkName,\n ProofType,\n FeeTokenDetails,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TransactionGasDetails,\n} from 'dop-sharedmodel-v5';\nimport {\n generateDummyProofTransactions,\n generateTransact,\n} from './tx-generator';\nimport { populateProvedTransaction } from './proof-cache';\nimport { TransactionStruct } from 'dop-engine-v5';\n// import { gasEstimateResponseDummyProofIterativeRelayerFee } from './tx-gas-relayer-fee-estimator';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const populateProvedTransfer = async (\n networkName: NetworkName,\n dopWalletID: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const { transaction, nullifiers } = await populateProvedTransaction(\n networkName,\n ProofType.Transfer,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n undefined, // relayAdaptUnshieldERC20AmountRecipients\n undefined, // relayAdaptUnshieldNFTAmounts\n undefined, // relayAdaptShieldERC20Recipients\n undefined, // relayAdaptShieldNFTRecipients\n undefined, // crossContractCalls\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n gasDetails,\n );\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedTransfer.name, err);\n }\n};\n/*\nexport const gasEstimateForUnprovenTransfer = async (\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n valueCheck: bigint,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n const overallBatchMinGasPrice = 0n;\n\n const response = await gasEstimateResponseDummyProofIterativeRelayerFee(\n (relayerFeeERC20Amount: Optional<DopERC20Amount>) =>\n generateDummyProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n encryptionKey,\n false, // showSenderAddressToRecipient - doesn't matter for gas estimate.\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayerFeeERC20Amount,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n valueCheck,\n ),\n (txs: TransactionStruct[]) =>\n generateTransact(\n txs,\n networkName,\n true, // useDummyProof\n ),\n networkName,\n dopWalletID,\n erc20AmountRecipients,\n originalGasDetails,\n feeTokenDetails,\n sendWithPublicWallet,\n false, // isCrossContractCall\n );\n return response;\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForUnprovenTransfer.name, err);\n }\n};\n*/"]}