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,3 @@
1
+ import { DopPopulateTransactionResponse, DopERC20Amount, NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TransactionGasDetails } from 'dop-sharedmodel-v5';
2
+ export declare const populateProvedUnshield: (networkName: NetworkName, dopWalletID: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, gasDetails: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
3
+ export declare const populateProvedUnshieldBaseToken: (networkName: NetworkName, publicWalletAddress: string, dopWalletID: string, wrappedERC20Amount: DopERC20Amount, relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, gasDetails: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.populateProvedUnshieldBaseToken = exports.populateProvedUnshield = void 0;
4
+ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
5
+ const proof_cache_1 = require("./proof-cache");
6
+ const error_1 = require("../../utils/error");
7
+ const populateProvedUnshield = async (networkName, dopWalletID, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, gasDetails) => {
8
+ try {
9
+ const { transaction, nullifiers } = await (0, proof_cache_1.populateProvedTransaction)(networkName, dop_sharedmodel_v5_1.ProofType.Unshield, dopWalletID, false, // showSenderAddressToRecipient
10
+ undefined, // memoText
11
+ erc20AmountRecipients, nftAmountRecipients, undefined, // relayAdaptUnshieldERC20AmountRecipients
12
+ undefined, // relayAdaptUnshieldNFTAmounts
13
+ undefined, // relayAdaptShieldERC20Recipients
14
+ undefined, // relayAdaptShieldNFTRecipients
15
+ undefined, // crossContractCalls
16
+ relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, gasDetails);
17
+ return {
18
+ nullifiers,
19
+ transaction,
20
+ };
21
+ }
22
+ catch (err) {
23
+ throw (0, error_1.reportAndSanitizeError)(exports.populateProvedUnshield.name, err);
24
+ }
25
+ };
26
+ exports.populateProvedUnshield = populateProvedUnshield;
27
+ const populateProvedUnshieldBaseToken = async (networkName, publicWalletAddress, dopWalletID, wrappedERC20Amount, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, gasDetails) => {
28
+ try {
29
+ const erc20AmountRecipients = [
30
+ {
31
+ ...wrappedERC20Amount,
32
+ recipientAddress: publicWalletAddress,
33
+ },
34
+ ];
35
+ const relayAdaptUnshieldERC20Amounts = [
36
+ wrappedERC20Amount,
37
+ ];
38
+ // Empty NFT Recipients.
39
+ const nftAmountRecipients = [];
40
+ const { transaction, nullifiers } = await (0, proof_cache_1.populateProvedTransaction)(networkName, dop_sharedmodel_v5_1.ProofType.UnshieldBaseToken, dopWalletID, false, // showSenderAddressToRecipient
41
+ undefined, // memoText
42
+ erc20AmountRecipients, nftAmountRecipients, relayAdaptUnshieldERC20Amounts, undefined, // relayAdaptUnshieldNFTAmounts
43
+ undefined, // relayAdaptShieldERC20Recipients
44
+ undefined, // relayAdaptShieldNFTRecipients
45
+ undefined, // crossContractCalls
46
+ relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, gasDetails);
47
+ return {
48
+ nullifiers,
49
+ transaction,
50
+ };
51
+ }
52
+ catch (err) {
53
+ throw (0, error_1.reportAndSanitizeError)(exports.populateProvedUnshieldBaseToken.name, err);
54
+ }
55
+ };
56
+ exports.populateProvedUnshieldBaseToken = populateProvedUnshieldBaseToken;
57
+ /*
58
+ export const gasEstimateForUnprovenUnshield = async (
59
+ networkName: NetworkName,
60
+ dopWalletID: string,
61
+ encryptionKey: string,
62
+ erc20AmountRecipients: DopERC20AmountRecipient[],
63
+ nftAmountRecipients: DopNFTAmountRecipient[],
64
+ originalGasDetails: TransactionGasDetails,
65
+ feeTokenDetails: Optional<FeeTokenDetails>,
66
+ sendWithPublicWallet: boolean,
67
+ valueCheck: bigint,
68
+ ): Promise<DopTransactionGasEstimateResponse> => {
69
+ try {
70
+ const overallBatchMinGasPrice = 0n;
71
+
72
+ const response = await gasEstimateResponseDummyProofIterativeRelayerFee(
73
+ (relayerFeeERC20Amount: Optional<DopERC20Amount>) =>
74
+ generateDummyProofTransactions(
75
+ ProofType.Unshield,
76
+ networkName,
77
+ dopWalletID,
78
+ encryptionKey,
79
+ false, // showSenderAddressToRecipient
80
+ undefined, // memoText
81
+ erc20AmountRecipients,
82
+ nftAmountRecipients,
83
+ relayerFeeERC20Amount,
84
+ sendWithPublicWallet,
85
+ overallBatchMinGasPrice,
86
+ valueCheck
87
+ ),
88
+ (txs: TransactionStruct[]) =>
89
+ generateTransact(
90
+ txs,
91
+ networkName,
92
+ true, // useDummyProof
93
+ ),
94
+ networkName,
95
+ dopWalletID,
96
+ erc20AmountRecipients,
97
+ originalGasDetails,
98
+ feeTokenDetails,
99
+ sendWithPublicWallet,
100
+ false, // isCrossContractCall
101
+ );
102
+ return response;
103
+ } catch (err) {
104
+ throw reportAndSanitizeError(gasEstimateForUnprovenUnshield.name, err);
105
+ }
106
+ };
107
+ */
108
+ /*
109
+ export const gasEstimateForUnprovenUnshieldBaseToken = async (
110
+ networkName: NetworkName,
111
+ publicWalletAddress: string,
112
+ dopWalletID: string,
113
+ encryptionKey: string,
114
+ wrappedERC20Amount: DopERC20Amount,
115
+ originalGasDetails: TransactionGasDetails,
116
+ feeTokenDetails: Optional<FeeTokenDetails>,
117
+ sendWithPublicWallet: boolean,
118
+ valueCheck: bigint,
119
+ ): Promise<DopTransactionGasEstimateResponse> => {
120
+ try {
121
+ const relayAdaptUnshieldERC20AmountRecipients: DopERC20AmountRecipient[] =
122
+ createRelayAdaptUnshieldERC20AmountRecipients(networkName, [
123
+ wrappedERC20Amount,
124
+ ]);
125
+
126
+ // Empty NFT Recipients.
127
+ const nftAmountRecipients: DopNFTAmountRecipient[] = [];
128
+
129
+ const overallBatchMinGasPrice = 0n;
130
+
131
+ const response = await gasEstimateResponseDummyProofIterativeRelayerFee(
132
+ (relayerFeeERC20Amount: Optional<DopERC20Amount>) =>
133
+ generateDummyProofTransactions(
134
+ ProofType.UnshieldBaseToken,
135
+ networkName,
136
+ dopWalletID,
137
+ encryptionKey,
138
+ false, // showSenderAddressToRecipient
139
+ undefined, // memoText
140
+ relayAdaptUnshieldERC20AmountRecipients,
141
+ nftAmountRecipients,
142
+ relayerFeeERC20Amount,
143
+ sendWithPublicWallet,
144
+ overallBatchMinGasPrice,
145
+ valueCheck
146
+ ),
147
+ (txs: TransactionStruct[]) => {
148
+ const relayAdaptParamsRandom = randomHex(31);
149
+ return generateUnshieldBaseToken(
150
+ txs,
151
+ networkName,
152
+ publicWalletAddress,
153
+ relayAdaptParamsRandom,
154
+ true, // useDummyProof
155
+ );
156
+ },
157
+ networkName,
158
+ dopWalletID,
159
+ relayAdaptUnshieldERC20AmountRecipients,
160
+ originalGasDetails,
161
+ feeTokenDetails,
162
+ sendWithPublicWallet,
163
+ false, // isCrossContractCall
164
+ );
165
+ return response;
166
+ } catch (err) {
167
+ throw reportAndSanitizeError(
168
+ gasEstimateForUnprovenUnshieldBaseToken.name,
169
+ err,
170
+ );
171
+ }
172
+ };
173
+ */
174
+ //# sourceMappingURL=tx-unshield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-unshield.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-unshield.ts"],"names":[],"mappings":";;;AAAA,2DAU4B;AAM5B,+CAA0D;AAI1D,6CAA2D;AAEpD,MAAM,sBAAsB,GAAG,KAAK,EACzC,WAAwB,EACxB,WAAmB,EACnB,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,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,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;AApCW,QAAA,sBAAsB,0BAoCjC;AAEK,MAAM,+BAA+B,GAAG,KAAK,EAClD,WAAwB,EACxB,mBAA2B,EAC3B,WAAmB,EACnB,kBAAkC,EAClC,8BAAiE,EACjE,oBAA6B,EAC7B,uBAAyC,EACzC,UAAiC,EACQ,EAAE;IAC3C,IAAI;QACF,MAAM,qBAAqB,GAA8B;YACvD;gBACE,GAAG,kBAAkB;gBACrB,gBAAgB,EAAE,mBAAmB;aACtC;SACF,CAAC;QACF,MAAM,8BAA8B,GAAqB;YACvD,kBAAkB;SACnB,CAAC;QAEF,wBAAwB;QACxB,MAAM,mBAAmB,GAA4B,EAAE,CAAC;QAExD,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,uCAAyB,EACjE,WAAW,EACX,8BAAS,CAAC,iBAAiB,EAC3B,WAAW,EACX,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC9B,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,uCAA+B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACzE;AACH,CAAC,CAAC;AAjDW,QAAA,+BAA+B,mCAiD1C;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEE","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 // generateUnshieldBaseToken,\n} from './tx-generator';\nimport { populateProvedTransaction } from './proof-cache';\nimport { randomHex, TransactionStruct } from 'dop-engine-v5';\n// import { gasEstimateResponseDummyProofIterativeRelayerFee } from './tx-gas-relayer-fee-estimator';\nimport { createRelayAdaptUnshieldERC20AmountRecipients } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const populateProvedUnshield = async (\n networkName: NetworkName,\n dopWalletID: 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.Unshield,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // 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(populateProvedUnshield.name, err);\n }\n};\n\nexport const populateProvedUnshieldBaseToken = async (\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n wrappedERC20Amount: DopERC20Amount,\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const erc20AmountRecipients: DopERC20AmountRecipient[] = [\n {\n ...wrappedERC20Amount,\n recipientAddress: publicWalletAddress,\n },\n ];\n const relayAdaptUnshieldERC20Amounts: DopERC20Amount[] = [\n wrappedERC20Amount,\n ];\n\n // Empty NFT Recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n\n const { transaction, nullifiers } = await populateProvedTransaction(\n networkName,\n ProofType.UnshieldBaseToken,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptUnshieldERC20Amounts,\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(populateProvedUnshieldBaseToken.name, err);\n }\n};\n/*\nexport const gasEstimateForUnprovenUnshield = async (\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: 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.Unshield,\n networkName,\n dopWalletID,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // 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(gasEstimateForUnprovenUnshield.name, err);\n }\n};\n*/\n/*\nexport const gasEstimateForUnprovenUnshieldBaseToken = async (\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n encryptionKey: string,\n wrappedERC20Amount: DopERC20Amount,\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n valueCheck: bigint,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n const relayAdaptUnshieldERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptUnshieldERC20AmountRecipients(networkName, [\n wrappedERC20Amount,\n ]);\n\n // Empty NFT Recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n\n const overallBatchMinGasPrice = 0n;\n\n const response = await gasEstimateResponseDummyProofIterativeRelayerFee(\n (relayerFeeERC20Amount: Optional<DopERC20Amount>) =>\n generateDummyProofTransactions(\n ProofType.UnshieldBaseToken,\n networkName,\n dopWalletID,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptUnshieldERC20AmountRecipients,\n nftAmountRecipients,\n relayerFeeERC20Amount,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n valueCheck\n ),\n (txs: TransactionStruct[]) => {\n const relayAdaptParamsRandom = randomHex(31);\n return generateUnshieldBaseToken(\n txs,\n networkName,\n publicWalletAddress,\n relayAdaptParamsRandom,\n true, // useDummyProof\n );\n },\n networkName,\n dopWalletID,\n relayAdaptUnshieldERC20AmountRecipients,\n originalGasDetails,\n feeTokenDetails,\n sendWithPublicWallet,\n false, // isCrossContractCall\n );\n return response;\n } catch (err) {\n throw reportAndSanitizeError(\n gasEstimateForUnprovenUnshieldBaseToken.name,\n err,\n );\n }\n};\n*/"]}
@@ -0,0 +1,2 @@
1
+ export declare const isBlockedAddress: (address?: string) => boolean;
2
+ export declare const assertNotBlockedAddress: (address?: string) => void;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertNotBlockedAddress = exports.isBlockedAddress = void 0;
4
+ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
5
+ const isBlockedAddress = (address) => {
6
+ if (!(0, dop_sharedmodel_v5_1.isDefined)(address)) {
7
+ return false;
8
+ }
9
+ if (dop_sharedmodel_v5_1.OFAC_SANCTIONS_LIST_ADDRESSES.includes(address.toLowerCase())) {
10
+ return true;
11
+ }
12
+ return false;
13
+ };
14
+ exports.isBlockedAddress = isBlockedAddress;
15
+ const assertNotBlockedAddress = (address) => {
16
+ if ((0, exports.isBlockedAddress)(address)) {
17
+ throw new Error('Blocked address');
18
+ }
19
+ };
20
+ exports.assertNotBlockedAddress = assertNotBlockedAddress;
21
+ //# sourceMappingURL=blocked-address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocked-address.js","sourceRoot":"","sources":["../../src/utils/blocked-address.ts"],"names":[],"mappings":";;;AAAA,2DAG4B;AAErB,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAW,EAAE;IAC5D,IAAI,CAAC,IAAA,8BAAS,EAAC,OAAO,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IACD,IAAI,kDAA6B,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE;QACjE,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B;AAEK,MAAM,uBAAuB,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC1D,IAAI,IAAA,wBAAgB,EAAC,OAAO,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;KACpC;AACH,CAAC,CAAC;AAJW,QAAA,uBAAuB,2BAIlC","sourcesContent":["import {\n OFAC_SANCTIONS_LIST_ADDRESSES,\n isDefined,\n} from 'dop-sharedmodel-v5';\n\nexport const isBlockedAddress = (address?: string): boolean => {\n if (!isDefined(address)) {\n return false;\n }\n if (OFAC_SANCTIONS_LIST_ADDRESSES.includes(address.toLowerCase())) {\n return true;\n }\n return false;\n};\n\nexport const assertNotBlockedAddress = (address?: string) => {\n if (isBlockedAddress(address)) {\n throw new Error('Blocked address');\n }\n};\n"]}
@@ -0,0 +1 @@
1
+ export declare const reportAndSanitizeError: (func: string, err: Error | any) => Error;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reportAndSanitizeError = void 0;
4
+ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
5
+ const logger_1 = require("./logger");
6
+ const reportAndSanitizeError = (func,
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ err) => {
9
+ (0, logger_1.sendErrorMessage)(`Caught error in DOP Wallet SDK: ${func}`);
10
+ if (err instanceof Error) {
11
+ const error = (0, dop_sharedmodel_v5_1.sanitizeError)(err);
12
+ (0, logger_1.sendErrorMessage)(error);
13
+ return error;
14
+ }
15
+ const error = new Error('Unknown error.');
16
+ (0, logger_1.sendErrorMessage)(error);
17
+ return error;
18
+ };
19
+ exports.reportAndSanitizeError = reportAndSanitizeError;
20
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":";;;AAAA,2DAAmD;AACnD,qCAA4C;AAErC,MAAM,sBAAsB,GAAG,CACpC,IAAY;AACZ,8DAA8D;AAC9D,GAAgB,EACT,EAAE;IACT,IAAA,yBAAgB,EAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;IAE5D,IAAI,GAAG,YAAY,KAAK,EAAE;QACxB,MAAM,KAAK,GAAG,IAAA,kCAAa,EAAC,GAAG,CAAC,CAAC;QACjC,IAAA,yBAAgB,EAAC,KAAK,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC1C,IAAA,yBAAgB,EAAC,KAAK,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAhBW,QAAA,sBAAsB,0BAgBjC","sourcesContent":["import { sanitizeError } from 'dop-sharedmodel-v5';\nimport { sendErrorMessage } from './logger';\n\nexport const reportAndSanitizeError = (\n func: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err: Error | any,\n): Error => {\n sendErrorMessage(`Caught error in DOP Wallet SDK: ${func}`);\n\n if (err instanceof Error) {\n const error = sanitizeError(err);\n sendErrorMessage(error);\n return error;\n }\n\n const error = new Error('Unknown error.');\n sendErrorMessage(error);\n return error;\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import { NetworkName } from 'dop-sharedmodel-v5';
2
+ /**
3
+ * L2s don't manage gas prices in the same way. tx.gasprice (contract) is not necessarily the same value as transactionRequest.gasPrice (ethers).
4
+ * Since overallBatchMinGasPrice is an optional parameter, we simply remove it for L2s. This will skip validation on the contract side.
5
+ */
6
+ export declare const shouldSetOverallBatchMinGasPriceForNetwork: (networkName: NetworkName) => boolean;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldSetOverallBatchMinGasPriceForNetwork = void 0;
4
+ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
5
+ /**
6
+ * L2s don't manage gas prices in the same way. tx.gasprice (contract) is not necessarily the same value as transactionRequest.gasPrice (ethers).
7
+ * Since overallBatchMinGasPrice is an optional parameter, we simply remove it for L2s. This will skip validation on the contract side.
8
+ */
9
+ const shouldSetOverallBatchMinGasPriceForNetwork = (networkName) => {
10
+ switch (networkName) {
11
+ case dop_sharedmodel_v5_1.NetworkName.Arbitrum:
12
+ case dop_sharedmodel_v5_1.NetworkName.ArbitrumGoerli:
13
+ // L2s should not set overallBatchMinGasPrice.
14
+ return false;
15
+ case dop_sharedmodel_v5_1.NetworkName.Xlayer:
16
+ case dop_sharedmodel_v5_1.NetworkName.XlayerTestnet:
17
+ return false;
18
+ case dop_sharedmodel_v5_1.NetworkName.Dop:
19
+ throw new Error('Invalid network for transaction');
20
+ case dop_sharedmodel_v5_1.NetworkName.Ethereum:
21
+ case dop_sharedmodel_v5_1.NetworkName.BNBChain:
22
+ case dop_sharedmodel_v5_1.NetworkName.Polygon:
23
+ case dop_sharedmodel_v5_1.NetworkName.EthereumRopsten_DEPRECATED:
24
+ case dop_sharedmodel_v5_1.NetworkName.EthereumGoerli:
25
+ case dop_sharedmodel_v5_1.NetworkName.PolygonMumbai:
26
+ case dop_sharedmodel_v5_1.NetworkName.Hardhat:
27
+ return true;
28
+ }
29
+ };
30
+ exports.shouldSetOverallBatchMinGasPriceForNetwork = shouldSetOverallBatchMinGasPriceForNetwork;
31
+ //# sourceMappingURL=gas-price.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gas-price.js","sourceRoot":"","sources":["../../src/utils/gas-price.ts"],"names":[],"mappings":";;;AAAA,2DAAiD;AAEjD;;;GAGG;AACI,MAAM,0CAA0C,GAAG,CACxD,WAAwB,EACxB,EAAE;IACF,QAAQ,WAAW,EAAE;QACnB,KAAK,gCAAW,CAAC,QAAQ,CAAC;QAC1B,KAAK,gCAAW,CAAC,cAAc;YAC7B,8CAA8C;YAC9C,OAAO,KAAK,CAAC;QACf,KAAK,gCAAW,CAAC,MAAM,CAAC;QACxB,KAAK,gCAAW,CAAC,aAAa;YAC5B,OAAO,KAAK,CAAC;QACf,KAAK,gCAAW,CAAC,GAAG;YAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,KAAK,gCAAW,CAAC,QAAQ,CAAC;QAC1B,KAAK,gCAAW,CAAC,QAAQ,CAAC;QAC1B,KAAK,gCAAW,CAAC,OAAO,CAAC;QACzB,KAAK,gCAAW,CAAC,0BAA0B,CAAC;QAC5C,KAAK,gCAAW,CAAC,cAAc,CAAC;QAChC,KAAK,gCAAW,CAAC,aAAa,CAAC;QAC/B,KAAK,gCAAW,CAAC,OAAO;YACtB,OAAO,IAAI,CAAC;KACf;AACH,CAAC,CAAC;AAtBW,QAAA,0CAA0C,8CAsBrD","sourcesContent":["import { NetworkName } from 'dop-sharedmodel-v5';\n\n/**\n * L2s don't manage gas prices in the same way. tx.gasprice (contract) is not necessarily the same value as transactionRequest.gasPrice (ethers).\n * Since overallBatchMinGasPrice is an optional parameter, we simply remove it for L2s. This will skip validation on the contract side.\n */\nexport const shouldSetOverallBatchMinGasPriceForNetwork = (\n networkName: NetworkName,\n) => {\n switch (networkName) {\n case NetworkName.Arbitrum:\n case NetworkName.ArbitrumGoerli:\n // L2s should not set overallBatchMinGasPrice.\n return false;\n case NetworkName.Xlayer:\n case NetworkName.XlayerTestnet:\n return false;\n case NetworkName.Dop:\n throw new Error('Invalid network for transaction');\n case NetworkName.Ethereum:\n case NetworkName.BNBChain:\n case NetworkName.Polygon:\n case NetworkName.EthereumRopsten_DEPRECATED:\n case NetworkName.EthereumGoerli:\n case NetworkName.PolygonMumbai:\n case NetworkName.Hardhat:\n return true;\n }\n};\n"]}
@@ -0,0 +1,3 @@
1
+ export * from './blocked-address';
2
+ export * from './logger';
3
+ export * from './utils';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./blocked-address"), exports);
18
+ __exportStar(require("./logger"), exports);
19
+ __exportStar(require("./utils"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,2CAAyB;AACzB,0CAAwB","sourcesContent":["export * from './blocked-address';\nexport * from './logger';\nexport * from './utils';\n"]}
@@ -0,0 +1,3 @@
1
+ export declare const sendMessage: (msg: string) => void;
2
+ export declare const sendErrorMessage: (err: Error | string) => void;
3
+ export declare const setLoggers: (logFunc: Optional<(msg: string) => void>, errorFunc: Optional<(err: Error | string) => void>) => void;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setLoggers = exports.sendErrorMessage = exports.sendMessage = void 0;
4
+ let log;
5
+ let error;
6
+ const sendMessage = (msg) => {
7
+ if (log)
8
+ log(msg);
9
+ };
10
+ exports.sendMessage = sendMessage;
11
+ const sendErrorMessage = (err) => {
12
+ if (error)
13
+ error(err);
14
+ };
15
+ exports.sendErrorMessage = sendErrorMessage;
16
+ const setLoggers = (logFunc, errorFunc) => {
17
+ log = logFunc;
18
+ error = errorFunc;
19
+ };
20
+ exports.setLoggers = setLoggers;
21
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;AAAA,IAAI,GAAoC,CAAC;AACzC,IAAI,KAA8C,CAAC;AAE5C,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE;IACzC,IAAI,GAAG;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAEK,MAAM,gBAAgB,GAAG,CAAC,GAAmB,EAAE,EAAE;IACtD,IAAI,KAAK;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEK,MAAM,UAAU,GAAG,CACxB,OAAwC,EACxC,SAAkD,EAClD,EAAE;IACF,GAAG,GAAG,OAAO,CAAC;IACd,KAAK,GAAG,SAAS,CAAC;AACpB,CAAC,CAAC;AANW,QAAA,UAAU,cAMrB","sourcesContent":["let log: Optional<(msg: string) => void>;\nlet error: Optional<(err: Error | string) => void>;\n\nexport const sendMessage = (msg: string) => {\n if (log) log(msg);\n};\n\nexport const sendErrorMessage = (err: Error | string) => {\n if (error) error(err);\n};\n\nexport const setLoggers = (\n logFunc: Optional<(msg: string) => void>,\n errorFunc: Optional<(err: Error | string) => void>,\n) => {\n log = logFunc;\n error = errorFunc;\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import { ContractTransaction } from 'ethers';
2
+ export declare const compareStringArrays: (a: Optional<string[]>, b: Optional<string[]>) => boolean;
3
+ export declare const compareContractTransactionArrays: (a: Optional<ContractTransaction[]>, b: Optional<ContractTransaction[]>) => boolean;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compareContractTransactionArrays = exports.compareStringArrays = void 0;
4
+ const logger_1 = require("./logger");
5
+ const compareStringArrays = (a, b) => {
6
+ if (!a && !b) {
7
+ return true;
8
+ }
9
+ if (!a || !b || a.length !== b.length) {
10
+ return false;
11
+ }
12
+ for (const el of a) {
13
+ if (!b.includes(el)) {
14
+ return false;
15
+ }
16
+ }
17
+ return true;
18
+ };
19
+ exports.compareStringArrays = compareStringArrays;
20
+ const compareContractTransactionArrays = (a, b) => {
21
+ if (!a && !b) {
22
+ return true;
23
+ }
24
+ if (!a || !b || a.length !== b.length) {
25
+ return false;
26
+ }
27
+ try {
28
+ for (let i = 0; i < a.length; i += 1) {
29
+ for (const key of Object.keys(a[i])) {
30
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
31
+ if (a[i][key] !== b[i][key]) {
32
+ return false;
33
+ }
34
+ }
35
+ }
36
+ }
37
+ catch (err) {
38
+ if (!(err instanceof Error)) {
39
+ throw err;
40
+ }
41
+ (0, logger_1.sendErrorMessage)(`Could not compare contract transaction arrays: ${err.message}`);
42
+ return false;
43
+ }
44
+ return true;
45
+ };
46
+ exports.compareContractTransactionArrays = compareContractTransactionArrays;
47
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;;AACA,qCAA4C;AAErC,MAAM,mBAAmB,GAAG,CACjC,CAAqB,EACrB,CAAqB,EACZ,EAAE;IACX,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;QACrC,OAAO,KAAK,CAAC;KACd;IACD,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE;QAClB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YACnB,OAAO,KAAK,CAAC;SACd;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAhBW,QAAA,mBAAmB,uBAgB9B;AAEK,MAAM,gCAAgC,GAAG,CAC9C,CAAkC,EAClC,CAAkC,EACzB,EAAE;IACX,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;QACrC,OAAO,KAAK,CAAC;KACd;IACD,IAAI;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACnC,sEAAsE;gBACtE,IAAK,CAAC,CAAC,CAAC,CAAS,CAAC,GAAG,CAAC,KAAM,CAAC,CAAC,CAAC,CAAS,CAAC,GAAG,CAAC,EAAE;oBAC7C,OAAO,KAAK,CAAC;iBACd;aACF;SACF;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE;YAC3B,MAAM,GAAG,CAAC;SACX;QACD,IAAA,yBAAgB,EACd,kDAAkD,GAAG,CAAC,OAAO,EAAE,CAChE,CAAC;QACF,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA9BW,QAAA,gCAAgC,oCA8B3C","sourcesContent":["import { ContractTransaction } from 'ethers';\nimport { sendErrorMessage } from './logger';\n\nexport const compareStringArrays = (\n a: Optional<string[]>,\n b: Optional<string[]>,\n): boolean => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b || a.length !== b.length) {\n return false;\n }\n for (const el of a) {\n if (!b.includes(el)) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareContractTransactionArrays = (\n a: Optional<ContractTransaction[]>,\n b: Optional<ContractTransaction[]>,\n): boolean => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b || a.length !== b.length) {\n return false;\n }\n try {\n for (let i = 0; i < a.length; i += 1) {\n for (const key of Object.keys(a[i])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if ((a[i] as any)[key] !== (b[i] as any)[key]) {\n return false;\n }\n }\n }\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n sendErrorMessage(\n `Could not compare contract transaction arrays: ${err.message}`,\n );\n return false;\n }\n\n return true;\n};\n"]}
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "dop-wallet-v6",
3
+ "version": "1.1.5",
4
+ "description": "DOP Wallet SDK, compatible with mobile, browser and nodejs environments.",
5
+ "main": "dist/index.js",
6
+ "license": "MIT",
7
+ "files": [
8
+ "dist/**/*",
9
+ "*.js"
10
+ ],
11
+ "exports": {
12
+ ".": "./dist/index.js",
13
+ "./react-native-shims": "./react-native-shims.js"
14
+ },
15
+ "scripts": {
16
+ "clean": "rm -rf dist",
17
+ "compile": "npm run clean && npm run tsc",
18
+ "tsc-test": "tsc -p tsconfig.test.json && tsc-alias -p tsconfig.test.json",
19
+ "compile-test": "npm run clean && npm run tsc-test",
20
+ "test-coverage": "npm run compile-test && nyc mocha 'src/**/__tests__/*.test.ts'",
21
+ "test": "npm run compile-test && mocha 'src/**/__tests__/*.test.ts'",
22
+ "tsc": "tsc && tsc-alias",
23
+ "check-circular-deps": "madge --circular .",
24
+ "eslint": "eslint src/**/* --ext .ts,.tsx --fix",
25
+ "lint": "npm run check-circular-deps && npm run eslint && npm run tsc && npm run tsc-test",
26
+ "prepare": "npm run compile",
27
+ "postinstall": "node postinstall.js",
28
+ "build-graphql": "graphclient build && rm -rf src/services/dop/quick-sync/graphql/.graphclient && mv .graphclient src/services/dop/quick-sync/graphql"
29
+ },
30
+ "dependencies": {
31
+ "@graphql-mesh/cache-localforage": "^0.7.20",
32
+ "@graphql-mesh/cross-helpers": "^0.3.4",
33
+ "@graphql-mesh/graphql": "^0.34.16",
34
+ "@graphql-mesh/http": "^0.3.28",
35
+ "@graphql-mesh/merger-stitching": "^0.18.24",
36
+ "@graphql-mesh/runtime": "^0.46.23",
37
+ "@graphql-mesh/store": "^0.9.20",
38
+ "@graphql-mesh/types": "^0.91.14",
39
+ "@graphql-mesh/utils": "^0.43.22",
40
+ "@noble/ed25519": "^1.7.1",
41
+ "dop-engine-v5": "1.0.5",
42
+ "dop-sharedmodel-v5": "1.0.5",
43
+ "@whatwg-node/fetch": "^0.8.4",
44
+ "assert": "2.0.0",
45
+ "buffer": "^6.0.3",
46
+ "crypto-browserify": "3.12.0",
47
+ "ethers": "github:web3-devv/ethers.js#v6.7.6",
48
+ "ethereum-cryptography": "^2.0.0",
49
+ "events": "3.3.0",
50
+ "axios": "0.27.2",
51
+ "brotli": "^1.3.3",
52
+ "graphql": "^16.6.0",
53
+ "stream-browserify": "3.0.0"
54
+ },
55
+ "devDependencies": {
56
+ "@graphprotocol/client-cli": "^2.2.20",
57
+ "@types/chai": "^4.3.4",
58
+ "@types/chai-as-promised": "^7.1.5",
59
+ "@types/leveldown": "^4.0.3",
60
+ "@types/mocha": "^10.0.1",
61
+ "@types/node": "^18.11.18",
62
+ "@types/sinon": "^10.0.13",
63
+ "@typescript-eslint/eslint-plugin": "^5.48.2",
64
+ "@typescript-eslint/parser": "^5.48.2",
65
+ "chai": "^4.3.7",
66
+ "chai-as-promised": "^7.1.1",
67
+ "eslint": "^8.32.0",
68
+ "eslint-config-airbnb-base": "^15.0.0",
69
+ "eslint-config-prettier": "^8.6.0",
70
+ "eslint-plugin-import": "^2.27.5",
71
+ "eslint-plugin-no-only-tests": "^3.1.0",
72
+ "leveldown": "^6.1.1",
73
+ "madge": "^5.0.1",
74
+ "mocha": "^10.2.0",
75
+ "nyc": "^15.1.0",
76
+ "sinon": "^15.0.1",
77
+ "ts-node": "^10.9.1",
78
+ "tsc-alias": "^1.8.2",
79
+ "typescript": "^4.9.4"
80
+ },
81
+ "react-native": {
82
+ "crypto": false,
83
+ "util": false
84
+ }
85
+ }
package/postinstall.js ADDED
@@ -0,0 +1,52 @@
1
+ /* eslint-disable */
2
+ const fs = require('node:fs');
3
+ const path = require('node:path');
4
+
5
+ const cwd = process.env.INIT_CWD;
6
+ const reactNativeFiles = ['ios', 'android', 'metro.config.js'];
7
+ const isReactNativeProject = reactNativeFiles.every(file =>
8
+ fs.existsSync(path.join(cwd, file)),
9
+ );
10
+
11
+ /**
12
+ * Patch `cipher-base` so that `stream` is replaced with `stream-browserify`
13
+ */
14
+ function patchCipherBase() {
15
+ if (!fs.existsSync(path.join(cwd, 'node_modules'))) return;
16
+ if (!fs.existsSync(path.join(cwd, 'node_modules', 'cipher-base'))) return;
17
+
18
+ const cipherBasePackageJson = JSON.parse(
19
+ fs.readFileSync(
20
+ path.join(cwd, 'node_modules', 'cipher-base', 'package.json'),
21
+ 'utf8',
22
+ ),
23
+ );
24
+ cipherBasePackageJson['react-native'] = {
25
+ stream: 'stream-browserify',
26
+ };
27
+ fs.writeFileSync(
28
+ path.join(cwd, 'node_modules', 'cipher-base', 'package.json'),
29
+ JSON.stringify(cipherBasePackageJson, null, 2),
30
+ 'utf8',
31
+ );
32
+ }
33
+
34
+ function warnIfNoGetRandomValues() {
35
+ const packageJson = JSON.parse(
36
+ fs.readFileSync(path.join(cwd, 'package.json'), 'utf8'),
37
+ );
38
+ if ('react-native-get-random-values' in packageJson['dependencies']) return;
39
+ throw new Error(
40
+ 'react-native-get-random-values is missing. It seems like you are ' +
41
+ 'installing dop-wallet in a React Native project. ' +
42
+ 'This requires the peer dependency react-native-get-random-values. ' +
43
+ '\n' +
44
+ 'Please add it to your package.json dependencies and run npm install ' +
45
+ '(or yarn) again.',
46
+ );
47
+ }
48
+
49
+ if (isReactNativeProject) {
50
+ patchCipherBase();
51
+ warnIfNoGetRandomValues();
52
+ }
@@ -0,0 +1,42 @@
1
+ /* eslint-disable */
2
+
3
+ // Wallet (and Engine) uses Buffer,
4
+ // which is not available in React Native.
5
+ global.Buffer ??= require('buffer').Buffer;
6
+
7
+ // Wallet uses ethereum-cryptography,
8
+ // which needs @noble/hashes,
9
+ // which needs crypto.getRandomValues,
10
+ // which is not available in React Native.
11
+ require('react-native-get-random-values');
12
+
13
+ // Engine uses AES encryption,
14
+ // which we shim with browserify-aes,
15
+ // which needs cipher-base,
16
+ // which needs stream-browserify,
17
+ // which needs process.nextTick,
18
+ // which is not available in React Native.
19
+ process.nextTick = setImmediate;
20
+
21
+ // Engine's getPrivateScalarFromPrivateKey uses @noble/ed25519 sha512,
22
+ // which needs (web) crypto.subtle.digest,
23
+ // which is not available in React Native.
24
+ const cryptoBrowserify = require('crypto-browserify');
25
+ global.crypto ??= {};
26
+ global.crypto.subtle ??= {};
27
+ global.crypto.subtle.digest ??= (algorithm, data) => {
28
+ const algo = algorithm.toLowerCase().replace('-', '');
29
+ return cryptoBrowserify.createHash(algo).update(data).digest();
30
+ };
31
+
32
+ /**
33
+ * Other package.json dependencies and why we need them:
34
+ * - assert:
35
+ * - engine uses circomlibjs which uses assert
36
+ * - events:
37
+ * - engine uses EventEmitter;
38
+ * - engine uses levelup which uses EventEmitter
39
+ * - stream-browserify:
40
+ * - engine uses AES encryption, which we shim with browserify-aes, which
41
+ * needs cipher-base, which needs stream
42
+ */