@matrix-privacy/wallet 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +73 -0
- package/.prettierrc.js +21 -0
- package/LICENSE +21 -0
- package/README.md +7 -0
- package/dist/__tests__/index.test.d.ts +1 -0
- package/dist/__tests__/index.test.js +13 -0
- package/dist/__tests__/index.test.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/services/artifacts/__tests__/artifact-downloader.test.d.ts +1 -0
- package/dist/services/artifacts/__tests__/artifact-downloader.test.js +172 -0
- package/dist/services/artifacts/__tests__/artifact-downloader.test.js.map +1 -0
- package/dist/services/artifacts/artifact-downloader.d.ts +13 -0
- package/dist/services/artifacts/artifact-downloader.js +142 -0
- package/dist/services/artifacts/artifact-downloader.js.map +1 -0
- package/dist/services/artifacts/artifact-hash.d.ts +3 -0
- package/dist/services/artifacts/artifact-hash.js +53 -0
- package/dist/services/artifacts/artifact-hash.js.map +1 -0
- package/dist/services/artifacts/artifact-store.d.ts +11 -0
- package/dist/services/artifacts/artifact-store.js +15 -0
- package/dist/services/artifacts/artifact-store.js.map +1 -0
- package/dist/services/artifacts/artifact-util.d.ts +7 -0
- package/dist/services/artifacts/artifact-util.js +64 -0
- package/dist/services/artifacts/artifact-util.js.map +1 -0
- package/dist/services/artifacts/index.d.ts +2 -0
- package/dist/services/artifacts/index.js +19 -0
- package/dist/services/artifacts/index.js.map +1 -0
- package/dist/services/artifacts/json/artifact-v2-hashes.json +467 -0
- package/dist/services/ethers/__tests__/ethers-util.test.d.ts +1 -0
- package/dist/services/ethers/__tests__/ethers-util.test.js +19 -0
- package/dist/services/ethers/__tests__/ethers-util.test.js.map +1 -0
- package/dist/services/ethers/ethers-util.d.ts +1 -0
- package/dist/services/ethers/ethers-util.js +9 -0
- package/dist/services/ethers/ethers-util.js.map +1 -0
- package/dist/services/ethers/index.d.ts +1 -0
- package/dist/services/ethers/index.js +18 -0
- package/dist/services/ethers/index.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.js +21 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/matrix/core/__tests__/engine.test.d.ts +1 -0
- package/dist/services/matrix/core/__tests__/engine.test.js +30 -0
- package/dist/services/matrix/core/__tests__/engine.test.js.map +1 -0
- package/dist/services/matrix/core/__tests__/providers.test.d.ts +1 -0
- package/dist/services/matrix/core/__tests__/providers.test.js +54 -0
- package/dist/services/matrix/core/__tests__/providers.test.js.map +1 -0
- package/dist/services/matrix/core/artifacts.d.ts +10 -0
- package/dist/services/matrix/core/artifacts.js +70 -0
- package/dist/services/matrix/core/artifacts.js.map +1 -0
- package/dist/services/matrix/core/engine.d.ts +4 -0
- package/dist/services/matrix/core/engine.js +21 -0
- package/dist/services/matrix/core/engine.js.map +1 -0
- package/dist/services/matrix/core/index.d.ts +8 -0
- package/dist/services/matrix/core/index.js +25 -0
- package/dist/services/matrix/core/index.js.map +1 -0
- package/dist/services/matrix/core/init.d.ts +21 -0
- package/dist/services/matrix/core/init.js +79 -0
- package/dist/services/matrix/core/init.js.map +1 -0
- package/dist/services/matrix/core/load-provider.d.ts +9 -0
- package/dist/services/matrix/core/load-provider.js +100 -0
- package/dist/services/matrix/core/load-provider.js.map +1 -0
- package/dist/services/matrix/core/merkletree.d.ts +5 -0
- package/dist/services/matrix/core/merkletree.js +40 -0
- package/dist/services/matrix/core/merkletree.js.map +1 -0
- package/dist/services/matrix/core/prover.d.ts +3 -0
- package/dist/services/matrix/core/prover.js +14 -0
- package/dist/services/matrix/core/prover.js.map +1 -0
- package/dist/services/matrix/core/providers.d.ts +9 -0
- package/dist/services/matrix/core/providers.js +31 -0
- package/dist/services/matrix/core/providers.js.map +1 -0
- package/dist/services/matrix/core/shields.d.ts +11 -0
- package/dist/services/matrix/core/shields.js +24 -0
- package/dist/services/matrix/core/shields.js.map +1 -0
- package/dist/services/matrix/history/__tests__/transaction-history.test.d.ts +1 -0
- package/dist/services/matrix/history/__tests__/transaction-history.test.js +249 -0
- package/dist/services/matrix/history/__tests__/transaction-history.test.js.map +1 -0
- package/dist/services/matrix/history/transaction-history.d.ts +4 -0
- package/dist/services/matrix/history/transaction-history.js +182 -0
- package/dist/services/matrix/history/transaction-history.js.map +1 -0
- package/dist/services/matrix/index.d.ts +4 -0
- package/dist/services/matrix/index.js +21 -0
- package/dist/services/matrix/index.js.map +1 -0
- package/dist/services/matrix/process/extract-transaction-data.d.ts +3 -0
- package/dist/services/matrix/process/extract-transaction-data.js +19 -0
- package/dist/services/matrix/process/extract-transaction-data.js.map +1 -0
- package/dist/services/matrix/process/index.d.ts +1 -0
- package/dist/services/matrix/process/index.js +18 -0
- package/dist/services/matrix/process/index.js.map +1 -0
- package/dist/services/matrix/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.d.ts +1 -0
- package/dist/services/matrix/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js +56 -0
- package/dist/services/matrix/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js.map +1 -0
- package/dist/services/matrix/quick-sync/V3/graph-type-formatters-v3.d.ts +8 -0
- package/dist/services/matrix/quick-sync/V3/graph-type-formatters-v3.js +103 -0
- package/dist/services/matrix/quick-sync/V3/graph-type-formatters-v3.js.map +1 -0
- package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/introspectionSchema.d.ts +2 -0
- package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/introspectionSchema.js +19861 -0
- package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/introspectionSchema.js.map +1 -0
- package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/types.d.ts +1352 -0
- package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/types.js +4 -0
- package/dist/services/matrix/quick-sync/V3/graphql/.graphclient/sources/mumbai/types.js.map +1 -0
- package/dist/services/matrix/quick-sync/V3/graphql/index.d.ts +1680 -0
- package/dist/services/matrix/quick-sync/V3/graphql/index.js +348 -0
- package/dist/services/matrix/quick-sync/V3/graphql/index.js.map +1 -0
- package/dist/services/matrix/quick-sync/V3/quick-sync-events-graph-v3.d.ts +2 -0
- package/dist/services/matrix/quick-sync/V3/quick-sync-events-graph-v3.js +99 -0
- package/dist/services/matrix/quick-sync/V3/quick-sync-events-graph-v3.js.map +1 -0
- package/dist/services/matrix/quick-sync/graph-query.d.ts +5 -0
- package/dist/services/matrix/quick-sync/graph-query.js +26 -0
- package/dist/services/matrix/quick-sync/graph-query.js.map +1 -0
- package/dist/services/matrix/quick-sync/quick-sync-events.d.ts +2 -0
- package/dist/services/matrix/quick-sync/quick-sync-events.js +9 -0
- package/dist/services/matrix/quick-sync/quick-sync-events.js.map +1 -0
- package/dist/services/matrix/quick-sync/shared-formatters.d.ts +8 -0
- package/dist/services/matrix/quick-sync/shared-formatters.js +36 -0
- package/dist/services/matrix/quick-sync/shared-formatters.js.map +1 -0
- package/dist/services/matrix/util/__tests__/bytes-util.test.d.ts +1 -0
- package/dist/services/matrix/util/__tests__/bytes-util.test.js +23 -0
- package/dist/services/matrix/util/__tests__/bytes-util.test.js.map +1 -0
- package/dist/services/matrix/util/__tests__/crypto-util.test.d.ts +1 -0
- package/dist/services/matrix/util/__tests__/crypto-util.test.js +62 -0
- package/dist/services/matrix/util/__tests__/crypto-util.test.js.map +1 -0
- package/dist/services/matrix/util/bytes.d.ts +5 -0
- package/dist/services/matrix/util/bytes.js +22 -0
- package/dist/services/matrix/util/bytes.js.map +1 -0
- package/dist/services/matrix/util/crypto.d.ts +14 -0
- package/dist/services/matrix/util/crypto.js +80 -0
- package/dist/services/matrix/util/crypto.js.map +1 -0
- package/dist/services/matrix/util/graph-util.d.ts +3 -0
- package/dist/services/matrix/util/graph-util.js +13 -0
- package/dist/services/matrix/util/graph-util.js.map +1 -0
- package/dist/services/matrix/util/index.d.ts +2 -0
- package/dist/services/matrix/util/index.js +19 -0
- package/dist/services/matrix/util/index.js.map +1 -0
- package/dist/services/matrix/util/runtime.d.ts +2 -0
- package/dist/services/matrix/util/runtime.js +8 -0
- package/dist/services/matrix/util/runtime.js.map +1 -0
- package/dist/services/matrix/wallets/__tests__/balances-live.test.d.ts +1 -0
- package/dist/services/matrix/wallets/__tests__/balances-live.test.js +48 -0
- package/dist/services/matrix/wallets/__tests__/balances-live.test.js.map +1 -0
- package/dist/services/matrix/wallets/__tests__/balances-update.test.d.ts +1 -0
- package/dist/services/matrix/wallets/__tests__/balances-update.test.js +85 -0
- package/dist/services/matrix/wallets/__tests__/balances-update.test.js.map +1 -0
- package/dist/services/matrix/wallets/__tests__/balances.test.d.ts +1 -0
- package/dist/services/matrix/wallets/__tests__/balances.test.js +59 -0
- package/dist/services/matrix/wallets/__tests__/balances.test.js.map +1 -0
- package/dist/services/matrix/wallets/__tests__/wallets.test.d.ts +1 -0
- package/dist/services/matrix/wallets/__tests__/wallets.test.js +80 -0
- package/dist/services/matrix/wallets/__tests__/wallets.test.js.map +1 -0
- package/dist/services/matrix/wallets/balance-update.d.ts +10 -0
- package/dist/services/matrix/wallets/balance-update.js +126 -0
- package/dist/services/matrix/wallets/balance-update.js.map +1 -0
- package/dist/services/matrix/wallets/balances.d.ts +3 -0
- package/dist/services/matrix/wallets/balances.js +32 -0
- package/dist/services/matrix/wallets/balances.js.map +1 -0
- package/dist/services/matrix/wallets/index.d.ts +4 -0
- package/dist/services/matrix/wallets/index.js +21 -0
- package/dist/services/matrix/wallets/index.js.map +1 -0
- package/dist/services/matrix/wallets/wallets.d.ts +22 -0
- package/dist/services/matrix/wallets/wallets.js +252 -0
- package/dist/services/matrix/wallets/wallets.js.map +1 -0
- package/dist/services/transactions/__tests__/json/formatted-relay-adapt-error-logs.json +216 -0
- package/dist/services/transactions/__tests__/proof-cache.test.d.ts +1 -0
- package/dist/services/transactions/__tests__/proof-cache.test.js +114 -0
- package/dist/services/transactions/__tests__/proof-cache.test.js.map +1 -0
- package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.d.ts +1 -0
- package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js +376 -0
- package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js.map +1 -0
- package/dist/services/transactions/__tests__/tx-gas-details.test.d.ts +1 -0
- package/dist/services/transactions/__tests__/tx-gas-details.test.js +109 -0
- package/dist/services/transactions/__tests__/tx-gas-details.test.js.map +1 -0
- package/dist/services/transactions/__tests__/tx-notes.test.d.ts +1 -0
- package/dist/services/transactions/__tests__/tx-notes.test.js +193 -0
- package/dist/services/transactions/__tests__/tx-notes.test.js.map +1 -0
- package/dist/services/transactions/__tests__/tx-shield-base-token.test.d.ts +1 -0
- package/dist/services/transactions/__tests__/tx-shield-base-token.test.js +99 -0
- package/dist/services/transactions/__tests__/tx-shield-base-token.test.js.map +1 -0
- package/dist/services/transactions/__tests__/tx-shield.test.d.ts +1 -0
- package/dist/services/transactions/__tests__/tx-shield.test.js +146 -0
- package/dist/services/transactions/__tests__/tx-shield.test.js.map +1 -0
- package/dist/services/transactions/__tests__/tx-transfer.test.d.ts +1 -0
- package/dist/services/transactions/__tests__/tx-transfer.test.js +263 -0
- package/dist/services/transactions/__tests__/tx-transfer.test.js.map +1 -0
- package/dist/services/transactions/__tests__/tx-unshield.test.d.ts +1 -0
- package/dist/services/transactions/__tests__/tx-unshield.test.js +759 -0
- package/dist/services/transactions/__tests__/tx-unshield.test.js.map +1 -0
- package/dist/services/transactions/index.d.ts +13 -0
- package/dist/services/transactions/index.js +30 -0
- package/dist/services/transactions/index.js.map +1 -0
- package/dist/services/transactions/proof-cache.d.ts +27 -0
- package/dist/services/transactions/proof-cache.js +130 -0
- package/dist/services/transactions/proof-cache.js.map +1 -0
- package/dist/services/transactions/tx-cross-contract-calls.d.ts +12 -0
- package/dist/services/transactions/tx-cross-contract-calls.js +210 -0
- package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -0
- package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.d.ts +5 -0
- package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.js +110 -0
- package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.js.map +1 -0
- package/dist/services/transactions/tx-gas-details.d.ts +5 -0
- package/dist/services/transactions/tx-gas-details.js +101 -0
- package/dist/services/transactions/tx-gas-details.js.map +1 -0
- package/dist/services/transactions/tx-generator.d.ts +13 -0
- package/dist/services/transactions/tx-generator.js +168 -0
- package/dist/services/transactions/tx-generator.js.map +1 -0
- package/dist/services/transactions/tx-notes.d.ts +11 -0
- package/dist/services/transactions/tx-notes.js +153 -0
- package/dist/services/transactions/tx-notes.js.map +1 -0
- package/dist/services/transactions/tx-nullifiers.d.ts +2 -0
- package/dist/services/transactions/tx-nullifiers.js +17 -0
- package/dist/services/transactions/tx-nullifiers.js.map +1 -0
- package/dist/services/transactions/tx-proof-transfer.d.ts +3 -0
- package/dist/services/transactions/tx-proof-transfer.js +39 -0
- package/dist/services/transactions/tx-proof-transfer.js.map +1 -0
- package/dist/services/transactions/tx-proof-unshield.d.ts +5 -0
- package/dist/services/transactions/tx-proof-unshield.js +132 -0
- package/dist/services/transactions/tx-proof-unshield.js.map +1 -0
- package/dist/services/transactions/tx-shield-base-token.d.ts +3 -0
- package/dist/services/transactions/tx-shield-base-token.js +55 -0
- package/dist/services/transactions/tx-shield-base-token.js.map +1 -0
- package/dist/services/transactions/tx-shield.d.ts +6 -0
- package/dist/services/transactions/tx-shield.js +77 -0
- package/dist/services/transactions/tx-shield.js.map +1 -0
- package/dist/services/transactions/tx-transfer.d.ts +3 -0
- package/dist/services/transactions/tx-transfer.js +39 -0
- package/dist/services/transactions/tx-transfer.js.map +1 -0
- package/dist/services/transactions/tx-unshield.d.ts +11 -0
- package/dist/services/transactions/tx-unshield.js +224 -0
- package/dist/services/transactions/tx-unshield.js.map +1 -0
- package/dist/tests/local-e2e.d.ts +13 -0
- package/dist/tests/local-e2e.js +487 -0
- package/dist/tests/local-e2e.js.map +1 -0
- package/dist/tests/mocks.test.d.ts +40 -0
- package/dist/tests/mocks.test.js +171 -0
- package/dist/tests/mocks.test.js.map +1 -0
- package/dist/tests/setup.test.d.ts +7 -0
- package/dist/tests/setup.test.js +88 -0
- package/dist/tests/setup.test.js.map +1 -0
- package/dist/tests/stubs/engine-stubs.test.d.ts +7 -0
- package/dist/tests/stubs/engine-stubs.test.js +72 -0
- package/dist/tests/stubs/engine-stubs.test.js.map +1 -0
- package/dist/utils/__tests__/blocked-address.test.d.ts +1 -0
- package/dist/utils/__tests__/blocked-address.test.js +23 -0
- package/dist/utils/__tests__/blocked-address.test.js.map +1 -0
- package/dist/utils/__tests__/logger.test.d.ts +1 -0
- package/dist/utils/__tests__/logger.test.js +28 -0
- package/dist/utils/__tests__/logger.test.js.map +1 -0
- package/dist/utils/__tests__/utils.test.d.ts +1 -0
- package/dist/utils/__tests__/utils.test.js +21 -0
- package/dist/utils/__tests__/utils.test.js.map +1 -0
- package/dist/utils/blocked-address.d.ts +2 -0
- package/dist/utils/blocked-address.js +17 -0
- package/dist/utils/blocked-address.js.map +1 -0
- package/dist/utils/error.d.ts +1 -0
- package/dist/utils/error.js +20 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/gas-price.d.ts +6 -0
- package/dist/utils/gas-price.js +19 -0
- package/dist/utils/gas-price.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +19 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.js +21 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/utils.d.ts +4 -0
- package/dist/utils/utils.js +54 -0
- package/dist/utils/utils.js.map +1 -0
- package/package.json +94 -0
- package/postinstall.js +52 -0
- package/react-native-shims.js +42 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateUnshieldBaseToken = exports.generateTransact = exports.generateDummyProofTransactions = exports.createDummyBroadcasterFeeERC20Amount = exports.nullifiersForTransactions = exports.generateProofTransactions = exports.DUMMY_FROM_ADDRESS = void 0;
|
|
4
|
+
const engine_1 = require("@matrix-privacy/engine");
|
|
5
|
+
const shared_models_1 = require("@matrix-privacy/shared-models");
|
|
6
|
+
const tx_notes_1 = require("./tx-notes");
|
|
7
|
+
const prover_1 = require("../matrix/core/prover");
|
|
8
|
+
const wallets_1 = require("../matrix/wallets/wallets");
|
|
9
|
+
const gas_price_1 = require("../../utils/gas-price");
|
|
10
|
+
const DUMMY_AMOUNT = 0n;
|
|
11
|
+
exports.DUMMY_FROM_ADDRESS = '0x000000000000000000000000000000000000dEaD';
|
|
12
|
+
const generateProofTransactions = async (proofType, networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, useDummyProof, overallBatchMinGasPrice, progressCallback, originShieldTxidForSpendabilityOverride) => {
|
|
13
|
+
const matrixWallet = (0, wallets_1.fullWalletForID)(matrixWalletID);
|
|
14
|
+
const txs = await transactionsFromERC20Amounts(proofType, erc20AmountRecipients, nftAmountRecipients, matrixWallet, encryptionKey, showSenderAddressToRecipient, memoText, networkName, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, useDummyProof, overallBatchMinGasPrice, progressCallback, originShieldTxidForSpendabilityOverride);
|
|
15
|
+
return txs;
|
|
16
|
+
};
|
|
17
|
+
exports.generateProofTransactions = generateProofTransactions;
|
|
18
|
+
const nullifiersForTransactions = (transactions) => {
|
|
19
|
+
return transactions
|
|
20
|
+
.map(transaction => transaction.nullifiers)
|
|
21
|
+
.flat();
|
|
22
|
+
};
|
|
23
|
+
exports.nullifiersForTransactions = nullifiersForTransactions;
|
|
24
|
+
const createDummyBroadcasterFeeERC20Amount = (feeTokenAddress) => {
|
|
25
|
+
const broadcasterFeeERC20Amount = {
|
|
26
|
+
tokenAddress: feeTokenAddress,
|
|
27
|
+
amount: DUMMY_AMOUNT,
|
|
28
|
+
};
|
|
29
|
+
return broadcasterFeeERC20Amount;
|
|
30
|
+
};
|
|
31
|
+
exports.createDummyBroadcasterFeeERC20Amount = createDummyBroadcasterFeeERC20Amount;
|
|
32
|
+
const generateDummyProofTransactions = async (proofType, networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20Amount, sendWithPublicWallet, overallBatchMinGasPrice, originShieldTxidForSpendabilityOverride) => {
|
|
33
|
+
if (!broadcasterFeeERC20Amount && !sendWithPublicWallet) {
|
|
34
|
+
throw new Error('Must send with broadcaster or public wallet.');
|
|
35
|
+
}
|
|
36
|
+
const matrixWallet = (0, wallets_1.walletForID)(matrixWalletID);
|
|
37
|
+
// Use self-wallet as dummy broadcaster address.
|
|
38
|
+
const broadcasterMatrixAddress = matrixWallet.getAddress(undefined);
|
|
39
|
+
const broadcasterFeeERC20AmountRecipient = broadcasterFeeERC20Amount
|
|
40
|
+
? {
|
|
41
|
+
...broadcasterFeeERC20Amount,
|
|
42
|
+
recipientAddress: broadcasterMatrixAddress,
|
|
43
|
+
}
|
|
44
|
+
: undefined;
|
|
45
|
+
return (await (0, exports.generateProofTransactions)(proofType, networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, true, // useDummyProof
|
|
46
|
+
overallBatchMinGasPrice, () => { }, // progressCallback (not necessary for dummy txs)
|
|
47
|
+
originShieldTxidForSpendabilityOverride)).provedTransactions;
|
|
48
|
+
};
|
|
49
|
+
exports.generateDummyProofTransactions = generateDummyProofTransactions;
|
|
50
|
+
const generateTransact = async (txs, networkName, useDummyProof = false) => {
|
|
51
|
+
const chain = shared_models_1.NETWORK_CONFIG[networkName].chain;
|
|
52
|
+
const transaction = await engine_1.MatrixContracts.generateTransact(chain, txs);
|
|
53
|
+
if (useDummyProof) {
|
|
54
|
+
return {
|
|
55
|
+
...transaction,
|
|
56
|
+
from: exports.DUMMY_FROM_ADDRESS,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return transaction;
|
|
60
|
+
};
|
|
61
|
+
exports.generateTransact = generateTransact;
|
|
62
|
+
const generateUnshieldBaseToken = async (txs, networkName, toWalletAddress, relayAdaptParamsRandom,
|
|
63
|
+
// eslint-disable-next-line default-param-last, @typescript-eslint/no-inferrable-types
|
|
64
|
+
useDummyProof = false, sendWithPublicWallet) => {
|
|
65
|
+
(0, wallets_1.assertValidEthAddress)(toWalletAddress);
|
|
66
|
+
const chain = shared_models_1.NETWORK_CONFIG[networkName].chain;
|
|
67
|
+
const transaction = await engine_1.MatrixContracts.getRelayAdaptContract(chain).populateUnshieldBaseToken(txs, toWalletAddress, relayAdaptParamsRandom);
|
|
68
|
+
if (useDummyProof) {
|
|
69
|
+
return {
|
|
70
|
+
...transaction,
|
|
71
|
+
from: exports.DUMMY_FROM_ADDRESS,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return transaction;
|
|
75
|
+
};
|
|
76
|
+
exports.generateUnshieldBaseToken = generateUnshieldBaseToken;
|
|
77
|
+
const transactionsFromERC20Amounts = async (proofType, erc20AmountRecipients, nftAmountRecipients, matrixWallet, encryptionKey, showSenderAddressToRecipient, memoText, networkName, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, useDummyProof, overallBatchMinGasPrice, progressCallback, originShieldTxidForSpendabilityOverride) => {
|
|
78
|
+
const network = shared_models_1.NETWORK_CONFIG[networkName];
|
|
79
|
+
const { chain } = network;
|
|
80
|
+
// Removes overallBatchMinGasPrice for L2 networks and non-Broadcaster transactions.
|
|
81
|
+
const validatedOverallBatchMinGasPrice = (0, gas_price_1.shouldSetOverallBatchMinGasPriceForNetwork)(sendWithPublicWallet, networkName)
|
|
82
|
+
? BigInt(overallBatchMinGasPrice ?? 0)
|
|
83
|
+
: BigInt(0);
|
|
84
|
+
const transactionBatch = new engine_1.TransactionBatch(chain, validatedOverallBatchMinGasPrice);
|
|
85
|
+
if (broadcasterFeeERC20AmountRecipient && !sendWithPublicWallet) {
|
|
86
|
+
(0, wallets_1.assertValidMatrixAddress)(broadcasterFeeERC20AmountRecipient.recipientAddress);
|
|
87
|
+
// Add Broadcaster Fee - must be first transaction in the batch, and first output for the transaction.
|
|
88
|
+
transactionBatch.addOutput((0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(broadcasterFeeERC20AmountRecipient, matrixWallet, engine_1.OutputType.RelayerFee, false, // showSenderAddressToRecipient - never show sender for Broadcaster fees
|
|
89
|
+
undefined));
|
|
90
|
+
}
|
|
91
|
+
erc20AmountRecipients.forEach((erc20AmountRecipient) => {
|
|
92
|
+
addTransactionOutputsERC20(proofType, transactionBatch, erc20AmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText);
|
|
93
|
+
});
|
|
94
|
+
nftAmountRecipients.forEach((nftAmountRecipient) => {
|
|
95
|
+
addTransactionOutputsNFT(proofType, transactionBatch, nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText);
|
|
96
|
+
});
|
|
97
|
+
const txBatches = await generateAllProofs(transactionBatch, matrixWallet, encryptionKey, useDummyProof, progressCallback, originShieldTxidForSpendabilityOverride);
|
|
98
|
+
return txBatches;
|
|
99
|
+
};
|
|
100
|
+
const addTransactionOutputsERC20 = (proofType, transactionBatch, erc20AmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText) => {
|
|
101
|
+
switch (proofType) {
|
|
102
|
+
case shared_models_1.ProofType.Transfer: {
|
|
103
|
+
addTransactionOutputsTransferERC20(transactionBatch, erc20AmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText);
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
case shared_models_1.ProofType.CrossContractCalls:
|
|
107
|
+
case shared_models_1.ProofType.UnshieldBaseToken:
|
|
108
|
+
case shared_models_1.ProofType.Unshield: {
|
|
109
|
+
addTransactionOutputsUnshieldERC20(transactionBatch, erc20AmountRecipient, false);
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const addTransactionOutputsNFT = (proofType, transactionBatch, nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText) => {
|
|
115
|
+
switch (proofType) {
|
|
116
|
+
case shared_models_1.ProofType.Transfer: {
|
|
117
|
+
addTransactionOutputsTransferNFT(transactionBatch, nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText);
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
case shared_models_1.ProofType.CrossContractCalls:
|
|
121
|
+
case shared_models_1.ProofType.UnshieldBaseToken:
|
|
122
|
+
case shared_models_1.ProofType.Unshield: {
|
|
123
|
+
addTransactionOutputsUnshieldNFT(transactionBatch, nftAmountRecipient, false);
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
const addTransactionOutputsTransferERC20 = (transactionBatch, erc20AmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText) => {
|
|
129
|
+
(0, wallets_1.assertValidMatrixAddress)(erc20AmountRecipient.recipientAddress);
|
|
130
|
+
transactionBatch.addOutput((0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(erc20AmountRecipient, matrixWallet, engine_1.OutputType.Transfer, showSenderAddressToRecipient, memoText));
|
|
131
|
+
};
|
|
132
|
+
const addTransactionOutputsUnshieldERC20 = (transactionBatch, erc20AmountRecipient, allowOverride) => {
|
|
133
|
+
const { recipientAddress, amount } = erc20AmountRecipient;
|
|
134
|
+
(0, wallets_1.assertValidEthAddress)(recipientAddress);
|
|
135
|
+
const tokenData = (0, engine_1.getTokenDataERC20)(erc20AmountRecipient.tokenAddress);
|
|
136
|
+
transactionBatch.addUnshieldData({
|
|
137
|
+
toAddress: erc20AmountRecipient.recipientAddress,
|
|
138
|
+
value: amount,
|
|
139
|
+
tokenData,
|
|
140
|
+
allowOverride,
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
const addTransactionOutputsTransferNFT = (transactionBatch, nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText) => {
|
|
144
|
+
(0, wallets_1.assertValidMatrixAddress)(nftAmountRecipient.recipientAddress);
|
|
145
|
+
transactionBatch.addOutput((0, tx_notes_1.nftNoteFromNFTAmountRecipient)(nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText));
|
|
146
|
+
};
|
|
147
|
+
const addTransactionOutputsUnshieldNFT = (transactionBatch, nftAmountRecipient, allowOverride) => {
|
|
148
|
+
const { recipientAddress, nftAddress, tokenSubID, nftTokenType, amount } = nftAmountRecipient;
|
|
149
|
+
(0, wallets_1.assertValidEthAddress)(recipientAddress);
|
|
150
|
+
const tokenData = (0, engine_1.getTokenDataNFT)(nftAddress, nftTokenType, tokenSubID);
|
|
151
|
+
const value = nftTokenType === shared_models_1.NFTTokenType.ERC721 ? engine_1.ERC721_NOTE_VALUE : amount;
|
|
152
|
+
transactionBatch.addUnshieldData({
|
|
153
|
+
toAddress: recipientAddress,
|
|
154
|
+
value,
|
|
155
|
+
tokenData,
|
|
156
|
+
allowOverride,
|
|
157
|
+
});
|
|
158
|
+
};
|
|
159
|
+
const generateAllProofs = async (transactionBatch, matrixWallet, encryptionKey, useDummyProof, progressCallback, originShieldTxidForSpendabilityOverride) => {
|
|
160
|
+
const prover = (0, prover_1.getProver)();
|
|
161
|
+
if (useDummyProof) {
|
|
162
|
+
return {
|
|
163
|
+
provedTransactions: await transactionBatch.generateDummyTransactions(prover, matrixWallet, encryptionKey, originShieldTxidForSpendabilityOverride),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
return transactionBatch.generateTransactions(prover, matrixWallet, encryptionKey, progressCallback, originShieldTxidForSpendabilityOverride);
|
|
167
|
+
};
|
|
168
|
+
//# sourceMappingURL=tx-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx-generator.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-generator.ts"],"names":[],"mappings":";;;AAAA,mDAUgC;AAChC,iEAQuC;AACvC,yCAGoB;AACpB,kDAAkD;AAClD,uDAKmC;AACnC,qDAAmF;AAGnF,MAAM,YAAY,GAAG,EAAE,CAAC;AACX,QAAA,kBAAkB,GAAG,4CAA4C,CAAC;AAOxE,MAAM,yBAAyB,GAAG,KAAK,EAC5C,SAAoB,EACpB,WAAwB,EACxB,cAAsB,EACtB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAmD,EACnD,mBAA+C,EAC/C,kCAAwE,EACxE,oBAA6B,EAC7B,aAAsB,EACtB,uBAAyC,EACzC,gBAAsD,EACtD,uCAAgD,EAG/C,EAAE;IACH,MAAM,YAAY,GAAG,IAAA,yBAAe,EAAC,cAAc,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,MAAM,4BAA4B,CAC5C,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,WAAW,EACX,kCAAkC,EAClC,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,uCAAuC,CACxC,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AArCW,QAAA,yBAAyB,6BAqCpC;AAEK,MAAM,yBAAyB,GAAG,CACvC,YAAmC,EACzB,EAAE;IACZ,OAAO,YAAY;SAChB,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;SAC1C,IAAI,EAAc,CAAC;AACxB,CAAC,CAAC;AANW,QAAA,yBAAyB,6BAMpC;AAEK,MAAM,oCAAoC,GAAG,CAAC,eAAuB,EAAE,EAAE;IAC9E,MAAM,yBAAyB,GAAsB;QACnD,YAAY,EAAE,eAAe;QAC7B,MAAM,EAAE,YAAY;KACrB,CAAC;IACF,OAAO,yBAAyB,CAAC;AACnC,CAAC,CAAC;AANW,QAAA,oCAAoC,wCAM/C;AAEK,MAAM,8BAA8B,GAAG,KAAK,EACjD,SAAoB,EACpB,WAAwB,EACxB,cAAsB,EACtB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAmD,EACnD,mBAA+C,EAC/C,yBAAsD,EACtD,oBAA6B,EAC7B,uBAAyC,EACzC,uCAAgD,EAChB,EAAE;IAClC,IAAI,CAAC,yBAAyB,IAAI,CAAC,oBAAoB,EAAE;QACvD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACjE;IAED,MAAM,YAAY,GAAG,IAAA,qBAAW,EAAC,cAAc,CAAC,CAAC;IAEjD,gDAAgD;IAChD,MAAM,wBAAwB,GAAG,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAEpE,MAAM,kCAAkC,GACtC,yBAAyB;QACvB,CAAC,CAAC;YACA,GAAG,yBAAyB;YAC5B,gBAAgB,EAAE,wBAAwB;SAC3C;QACD,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,CACL,MAAM,IAAA,iCAAyB,EAC7B,SAAS,EACT,WAAW,EACX,cAAc,EACd,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,kCAAkC,EAClC,oBAAoB,EACpB,IAAI,EAAE,gBAAgB;IACtB,uBAAuB,EACvB,GAAG,EAAE,GAAE,CAAC,EAAE,iDAAiD;IAC3D,uCAAuC,CACxC,CACF,CAAC,kBAAkB,CAAC;AACvB,CAAC,CAAC;AAjDW,QAAA,8BAA8B,kCAiDzC;AAEK,MAAM,gBAAgB,GAAG,KAAK,EACnC,GAA0B,EAC1B,WAAwB,EACxB,aAAa,GAAG,KAAK,EACS,EAAE;IAChC,MAAM,KAAK,GAAG,8BAAc,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,wBAAe,CAAC,gBAAgB,CACxD,KAAK,EACL,GAAG,CACJ,CAAC;IACF,IAAI,aAAa,EAAE;QACjB,OAAO;YACL,GAAG,WAAW;YACd,IAAI,EAAE,0BAAkB;SACzB,CAAC;KACH;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAjBW,QAAA,gBAAgB,oBAiB3B;AAEK,MAAM,yBAAyB,GAAG,KAAK,EAC5C,GAA0B,EAC1B,WAAwB,EACxB,eAAuB,EACvB,sBAA8B;AAC9B,sFAAsF;AACtF,gBAA0B,KAAK,EAC/B,oBAA6B,EACC,EAAE;IAChC,IAAA,+BAAqB,EAAC,eAAe,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,8BAAc,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;IAEhD,MAAM,WAAW,GACf,MAAM,wBAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAC1E,GAAG,EACH,eAAe,EACf,sBAAsB,CACvB,CAAC;IACJ,IAAI,aAAa,EAAE;QACjB,OAAO;YACL,GAAG,WAAW;YACd,IAAI,EAAE,0BAAkB;SACzB,CAAC;KACH;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AA1BW,QAAA,yBAAyB,6BA0BpC;AAEF,MAAM,4BAA4B,GAAG,KAAK,EACxC,SAAoB,EACpB,qBAAmD,EACnD,mBAA+C,EAC/C,YAA0B,EAC1B,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,WAAwB,EACxB,kCAAwE,EACxE,oBAA6B,EAC7B,aAAsB,EACtB,uBAAyC,EACzC,gBAAsD,EACtD,uCAAgD,EAG/C,EAAE;IACH,MAAM,OAAO,GAAG,8BAAc,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1B,oFAAoF;IACpF,MAAM,gCAAgC,GACpC,IAAA,sDAA0C,EACxC,oBAAoB,EACpB,WAAW,CACZ;QACC,CAAC,CAAC,MAAM,CAAC,uBAAuB,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEhB,MAAM,gBAAgB,GAAG,IAAI,yBAAgB,CAC3C,KAAK,EACL,gCAAgC,CACjC,CAAC;IAEF,IAAI,kCAAkC,IAAI,CAAC,oBAAoB,EAAE;QAC/D,IAAA,kCAAwB,EAAC,kCAAkC,CAAC,gBAAgB,CAAC,CAAC;QAE9E,sGAAsG;QACtG,gBAAgB,CAAC,SAAS,CACxB,IAAA,4CAAiC,EAC/B,kCAAkC,EAClC,YAAY,EACZ,mBAAU,CAAC,UAAU,EACrB,KAAK,EAAE,wEAAwE;QAC/E,SAAS,CACV,CACF,CAAC;KACH;IAED,qBAAqB,CAAC,OAAO,CAC3B,CAAC,oBAAgD,EAAE,EAAE;QACnD,0BAA0B,CACxB,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,4BAA4B,EAC5B,QAAQ,CACT,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,mBAAmB,CAAC,OAAO,CACzB,CAAC,kBAA4C,EAAE,EAAE;QAC/C,wBAAwB,CACtB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,QAAQ,CACT,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CACvC,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,uCAAuC,CACxC,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CACjC,SAAoB,EACpB,gBAAkC,EAClC,oBAAgD,EAChD,YAA0B,EAC1B,4BAAqC,EACrC,QAA0B,EAC1B,EAAE;IACF,QAAQ,SAAS,EAAE;QACjB,KAAK,yBAAS,CAAC,QAAQ,CAAC,CAAC;YACvB,kCAAkC,CAChC,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,4BAA4B,EAC5B,QAAQ,CACT,CAAC;YACF,MAAM;SACP;QACD,KAAK,yBAAS,CAAC,kBAAkB,CAAC;QAClC,KAAK,yBAAS,CAAC,iBAAiB,CAAC;QACjC,KAAK,yBAAS,CAAC,QAAQ,CAAC,CAAC;YACvB,kCAAkC,CAChC,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,CACN,CAAC;YACF,MAAM;SACP;KACF;AACH,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAC/B,SAAoB,EACpB,gBAAkC,EAClC,kBAA4C,EAC5C,YAA0B,EAC1B,4BAAqC,EACrC,QAA0B,EAC1B,EAAE;IACF,QAAQ,SAAS,EAAE;QACjB,KAAK,yBAAS,CAAC,QAAQ,CAAC,CAAC;YACvB,gCAAgC,CAC9B,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,QAAQ,CACT,CAAC;YACF,MAAM;SACP;QACD,KAAK,yBAAS,CAAC,kBAAkB,CAAC;QAClC,KAAK,yBAAS,CAAC,iBAAiB,CAAC;QACjC,KAAK,yBAAS,CAAC,QAAQ,CAAC,CAAC;YACvB,gCAAgC,CAC9B,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,CACN,CAAC;YACF,MAAM;SACP;KACF;AACH,CAAC,CAAC;AAEF,MAAM,kCAAkC,GAAG,CACzC,gBAAkC,EAClC,oBAAgD,EAChD,YAA0B,EAC1B,4BAAqC,EACrC,QAA0B,EAC1B,EAAE;IACF,IAAA,kCAAwB,EAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAEhE,gBAAgB,CAAC,SAAS,CACxB,IAAA,4CAAiC,EAC/B,oBAAoB,EACpB,YAAY,EACZ,mBAAU,CAAC,QAAQ,EACnB,4BAA4B,EAC5B,QAAQ,CACT,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kCAAkC,GAAG,CACzC,gBAAkC,EAClC,oBAAgD,EAChD,aAAuB,EACvB,EAAE;IACF,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC;IAE1D,IAAA,+BAAqB,EAAC,gBAAgB,CAAC,CAAC;IAExC,MAAM,SAAS,GAAG,IAAA,0BAAiB,EAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEvE,gBAAgB,CAAC,eAAe,CAAC;QAC/B,SAAS,EAAE,oBAAoB,CAAC,gBAAgB;QAChD,KAAK,EAAE,MAAM;QACb,SAAS;QACT,aAAa;KACd,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gCAAgC,GAAG,CACvC,gBAAkC,EAClC,kBAA4C,EAC5C,YAA0B,EAC1B,4BAAqC,EACrC,QAA0B,EAC1B,EAAE;IACF,IAAA,kCAAwB,EAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAE9D,gBAAgB,CAAC,SAAS,CACxB,IAAA,wCAA6B,EAC3B,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,QAAQ,CACT,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gCAAgC,GAAG,CACvC,gBAAkC,EAClC,kBAA4C,EAC5C,aAAuB,EACvB,EAAE;IACF,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,GACtE,kBAAkB,CAAC;IAErB,IAAA,+BAAqB,EAAC,gBAAgB,CAAC,CAAC;IAExC,MAAM,SAAS,GAAiB,IAAA,wBAAe,EAC7C,UAAU,EACV,YAAqB,EACrB,UAAU,CACX,CAAC;IAEF,MAAM,KAAK,GACT,YAAY,KAAK,4BAAY,CAAC,MAAM,CAAC,CAAC,CAAC,0BAAiB,CAAC,CAAC,CAAC,MAAM,CAAC;IAEpE,gBAAgB,CAAC,eAAe,CAAC;QAC/B,SAAS,EAAE,gBAAgB;QAC3B,KAAK;QACL,SAAS;QACT,aAAa;KACd,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAC7B,gBAAkC,EAClC,YAA0B,EAC1B,aAAqB,EACrB,aAAsB,EACtB,gBAAsD,EACtD,uCAAgD,EAG/C,EAAE;IACH,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,IAAI,aAAa,EAAE;QACjB,OAAO;YACL,kBAAkB,EAAE,MAAM,gBAAgB,CAAC,yBAAyB,CAClE,MAAM,EACN,YAAY,EACZ,aAAa,EACb,uCAAuC,CACxC;SACF,CAAC;KACH;IACD,OAAO,gBAAgB,CAAC,oBAAoB,CAC1C,MAAM,EACN,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,uCAAuC,CACxC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n MatrixWallet,\n TransactionBatch,\n OutputType,\n getTokenDataERC20,\n getTokenDataNFT,\n ERC721_NOTE_VALUE,\n NFTTokenData,\n MatrixContracts,\n TransactionStructV3,\n} from '@matrix-privacy/engine';\nimport {\n MatrixERC20Amount,\n MatrixERC20AmountRecipient,\n NetworkName,\n NETWORK_CONFIG,\n ProofType,\n MatrixNFTAmountRecipient,\n NFTTokenType,\n} from '@matrix-privacy/shared-models';\nimport {\n erc20NoteFromERC20AmountRecipient,\n nftNoteFromNFTAmountRecipient,\n} from './tx-notes';\nimport { getProver } from '../matrix/core/prover';\nimport {\n assertValidEthAddress,\n assertValidMatrixAddress,\n fullWalletForID,\n walletForID,\n} from '../matrix/wallets/wallets';\nimport { shouldSetOverallBatchMinGasPriceForNetwork } from '../../utils/gas-price';\nimport { ContractTransaction } from 'ethers';\n\nconst DUMMY_AMOUNT = 0n;\nexport const DUMMY_FROM_ADDRESS = '0x000000000000000000000000000000000000dEaD';\n\nexport type GenerateTransactionsProgressCallback = (\n progress: number,\n status: string,\n) => void;\n\nexport const generateProofTransactions = async (\n proofType: ProofType,\n networkName: NetworkName,\n matrixWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: MatrixERC20AmountRecipient[],\n nftAmountRecipients: MatrixNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n originShieldTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: TransactionStructV3[];\n}> => {\n const matrixWallet = fullWalletForID(matrixWalletID);\n\n const txs = await transactionsFromERC20Amounts(\n proofType,\n erc20AmountRecipients,\n nftAmountRecipients,\n matrixWallet,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n networkName,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n useDummyProof,\n overallBatchMinGasPrice,\n progressCallback,\n originShieldTxidForSpendabilityOverride,\n );\n return txs;\n};\n\nexport const nullifiersForTransactions = (\n transactions: TransactionStructV3[],\n): string[] => {\n return transactions\n .map(transaction => transaction.nullifiers)\n .flat() as string[];\n};\n\nexport const createDummyBroadcasterFeeERC20Amount = (feeTokenAddress: string) => {\n const broadcasterFeeERC20Amount: MatrixERC20Amount = {\n tokenAddress: feeTokenAddress,\n amount: DUMMY_AMOUNT,\n };\n return broadcasterFeeERC20Amount;\n};\n\nexport const generateDummyProofTransactions = async (\n proofType: ProofType,\n networkName: NetworkName,\n matrixWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: MatrixERC20AmountRecipient[],\n nftAmountRecipients: MatrixNFTAmountRecipient[],\n broadcasterFeeERC20Amount: Optional<MatrixERC20Amount>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n originShieldTxidForSpendabilityOverride?: string,\n): Promise<TransactionStructV3[]> => {\n if (!broadcasterFeeERC20Amount && !sendWithPublicWallet) {\n throw new Error('Must send with broadcaster or public wallet.');\n }\n\n const matrixWallet = walletForID(matrixWalletID);\n\n // Use self-wallet as dummy broadcaster address.\n const broadcasterMatrixAddress = matrixWallet.getAddress(undefined);\n\n const broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient> =\n broadcasterFeeERC20Amount\n ? {\n ...broadcasterFeeERC20Amount,\n recipientAddress: broadcasterMatrixAddress,\n }\n : undefined;\n\n return (\n await generateProofTransactions(\n proofType,\n networkName,\n matrixWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n true, // useDummyProof\n overallBatchMinGasPrice,\n () => {}, // progressCallback (not necessary for dummy txs)\n originShieldTxidForSpendabilityOverride,\n )\n ).provedTransactions;\n};\n\nexport const generateTransact = async (\n txs: TransactionStructV3[],\n networkName: NetworkName,\n useDummyProof = false,\n): Promise<ContractTransaction> => {\n const chain = NETWORK_CONFIG[networkName].chain;\n const transaction = await MatrixContracts.generateTransact(\n chain,\n txs,\n );\n if (useDummyProof) {\n return {\n ...transaction,\n from: DUMMY_FROM_ADDRESS,\n };\n }\n return transaction;\n};\n\nexport const generateUnshieldBaseToken = async (\n txs: TransactionStructV3[],\n networkName: NetworkName,\n toWalletAddress: string,\n relayAdaptParamsRandom: string,\n // eslint-disable-next-line default-param-last, @typescript-eslint/no-inferrable-types\n useDummyProof : boolean = false,\n sendWithPublicWallet: boolean,\n): Promise<ContractTransaction> => {\n assertValidEthAddress(toWalletAddress);\n\n const chain = NETWORK_CONFIG[networkName].chain;\n\n const transaction =\n await MatrixContracts.getRelayAdaptContract(chain).populateUnshieldBaseToken(\n txs,\n toWalletAddress,\n relayAdaptParamsRandom,\n );\n if (useDummyProof) {\n return {\n ...transaction,\n from: DUMMY_FROM_ADDRESS,\n };\n }\n return transaction;\n};\n\nconst transactionsFromERC20Amounts = async (\n proofType: ProofType,\n erc20AmountRecipients: MatrixERC20AmountRecipient[],\n nftAmountRecipients: MatrixNFTAmountRecipient[],\n matrixWallet: MatrixWallet,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n networkName: NetworkName,\n broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n originShieldTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: TransactionStructV3[];\n}> => {\n const network = NETWORK_CONFIG[networkName];\n const { chain } = network;\n\n // Removes overallBatchMinGasPrice for L2 networks and non-Broadcaster transactions.\n const validatedOverallBatchMinGasPrice =\n shouldSetOverallBatchMinGasPriceForNetwork(\n sendWithPublicWallet,\n networkName,\n )\n ? BigInt(overallBatchMinGasPrice ?? 0)\n : BigInt(0);\n\n const transactionBatch = new TransactionBatch(\n chain,\n validatedOverallBatchMinGasPrice,\n );\n\n if (broadcasterFeeERC20AmountRecipient && !sendWithPublicWallet) {\n assertValidMatrixAddress(broadcasterFeeERC20AmountRecipient.recipientAddress);\n\n // Add Broadcaster Fee - must be first transaction in the batch, and first output for the transaction.\n transactionBatch.addOutput(\n erc20NoteFromERC20AmountRecipient(\n broadcasterFeeERC20AmountRecipient,\n matrixWallet,\n OutputType.RelayerFee,\n false, // showSenderAddressToRecipient - never show sender for Broadcaster fees\n undefined, // memoText\n ),\n );\n }\n\n erc20AmountRecipients.forEach(\n (erc20AmountRecipient: MatrixERC20AmountRecipient) => {\n addTransactionOutputsERC20(\n proofType,\n transactionBatch,\n erc20AmountRecipient,\n matrixWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n },\n );\n\n nftAmountRecipients.forEach(\n (nftAmountRecipient: MatrixNFTAmountRecipient) => {\n addTransactionOutputsNFT(\n proofType,\n transactionBatch,\n nftAmountRecipient,\n matrixWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n },\n );\n\n const txBatches = await generateAllProofs(\n transactionBatch,\n matrixWallet,\n encryptionKey,\n useDummyProof,\n progressCallback,\n originShieldTxidForSpendabilityOverride,\n );\n return txBatches;\n};\n\nconst addTransactionOutputsERC20 = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: MatrixERC20AmountRecipient,\n matrixWallet: MatrixWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferERC20(\n transactionBatch,\n erc20AmountRecipient,\n matrixWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.UnshieldBaseToken:\n case ProofType.Unshield: {\n addTransactionOutputsUnshieldERC20(\n transactionBatch,\n erc20AmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsNFT = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n nftAmountRecipient: MatrixNFTAmountRecipient,\n matrixWallet: MatrixWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferNFT(\n transactionBatch,\n nftAmountRecipient,\n matrixWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.UnshieldBaseToken:\n case ProofType.Unshield: {\n addTransactionOutputsUnshieldNFT(\n transactionBatch,\n nftAmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsTransferERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: MatrixERC20AmountRecipient,\n matrixWallet: MatrixWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidMatrixAddress(erc20AmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n erc20NoteFromERC20AmountRecipient(\n erc20AmountRecipient,\n matrixWallet,\n OutputType.Transfer,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsUnshieldERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: MatrixERC20AmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, amount } = erc20AmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n transactionBatch.addUnshieldData({\n toAddress: erc20AmountRecipient.recipientAddress,\n value: amount,\n tokenData,\n allowOverride,\n });\n};\n\nconst addTransactionOutputsTransferNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: MatrixNFTAmountRecipient,\n matrixWallet: MatrixWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidMatrixAddress(nftAmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n nftNoteFromNFTAmountRecipient(\n nftAmountRecipient,\n matrixWallet,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsUnshieldNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: MatrixNFTAmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, nftAddress, tokenSubID, nftTokenType, amount } =\n nftAmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n\n const tokenData: NFTTokenData = getTokenDataNFT(\n nftAddress,\n nftTokenType as 1 | 2,\n tokenSubID,\n );\n\n const value: bigint =\n nftTokenType === NFTTokenType.ERC721 ? ERC721_NOTE_VALUE : amount;\n\n transactionBatch.addUnshieldData({\n toAddress: recipientAddress,\n value,\n tokenData,\n allowOverride,\n });\n};\n\nconst generateAllProofs = async (\n transactionBatch: TransactionBatch,\n matrixWallet: MatrixWallet,\n encryptionKey: string,\n useDummyProof: boolean,\n progressCallback: GenerateTransactionsProgressCallback,\n originShieldTxidForSpendabilityOverride?: string,\n): Promise<{\n provedTransactions: TransactionStructV3[];\n}> => {\n const prover = getProver();\n if (useDummyProof) {\n return {\n provedTransactions: await transactionBatch.generateDummyTransactions(\n prover,\n matrixWallet,\n encryptionKey,\n originShieldTxidForSpendabilityOverride,\n ),\n };\n }\n return transactionBatch.generateTransactions(\n prover,\n matrixWallet,\n encryptionKey,\n progressCallback,\n originShieldTxidForSpendabilityOverride,\n );\n};\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { OutputType, TransactNote, MatrixWallet } from '@matrix-privacy/engine';
|
|
2
|
+
import { MatrixNFTAmountRecipient, MatrixERC20Amount, MatrixERC20AmountRecipient, MatrixNFTAmount, MatrixERC20Recipient } from '@matrix-privacy/shared-models';
|
|
3
|
+
export declare const erc20NoteFromERC20AmountRecipient: (erc20AmountRecipient: MatrixERC20AmountRecipient, matrixWallet: MatrixWallet, outputType: OutputType, showSenderAddressToRecipient: boolean, memoText: Optional<string>) => TransactNote;
|
|
4
|
+
export declare const nftNoteFromNFTAmountRecipient: (nftAmountRecipient: MatrixNFTAmountRecipient, matrixWallet: MatrixWallet, showSenderAddressToRecipient: boolean, memoText: Optional<string>) => TransactNote;
|
|
5
|
+
export declare const compareERC20AmountRecipients: (a: Optional<MatrixERC20AmountRecipient>, b: Optional<MatrixERC20AmountRecipient>) => boolean;
|
|
6
|
+
export declare const compareERC20AmountArrays: (a: Optional<MatrixERC20Amount[]>, b: Optional<MatrixERC20Amount[]>) => boolean;
|
|
7
|
+
export declare const compareERC20AmountRecipientArrays: (a: Optional<MatrixERC20AmountRecipient[]>, b: Optional<MatrixERC20AmountRecipient[]>) => boolean;
|
|
8
|
+
export declare const compareERC20RecipientArrays: (a: Optional<MatrixERC20Recipient[]>, b: Optional<MatrixERC20Recipient[]>) => boolean;
|
|
9
|
+
export declare const compareNFTAmountArrays: (a: Optional<MatrixNFTAmount[]>, b: Optional<MatrixNFTAmount[]>) => boolean;
|
|
10
|
+
export declare const compareNFTAmountRecipientArrays: (a: Optional<MatrixNFTAmountRecipient[]>, b: Optional<MatrixNFTAmountRecipient[]>) => boolean;
|
|
11
|
+
export { TransactNote };
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactNote = exports.compareNFTAmountRecipientArrays = exports.compareNFTAmountArrays = exports.compareERC20RecipientArrays = exports.compareERC20AmountRecipientArrays = exports.compareERC20AmountArrays = exports.compareERC20AmountRecipients = exports.nftNoteFromNFTAmountRecipient = exports.erc20NoteFromERC20AmountRecipient = void 0;
|
|
4
|
+
const engine_1 = require("@matrix-privacy/engine");
|
|
5
|
+
Object.defineProperty(exports, "TransactNote", { enumerable: true, get: function () { return engine_1.TransactNote; } });
|
|
6
|
+
const shared_models_1 = require("@matrix-privacy/shared-models");
|
|
7
|
+
const erc20NoteFromERC20AmountRecipient = (erc20AmountRecipient, matrixWallet, outputType, showSenderAddressToRecipient, memoText) => {
|
|
8
|
+
const { amount, recipientAddress } = erc20AmountRecipient;
|
|
9
|
+
const receiverAddressData = engine_1.MatrixEngine.decodeAddress(recipientAddress);
|
|
10
|
+
const tokenData = (0, engine_1.getTokenDataERC20)(erc20AmountRecipient.tokenAddress);
|
|
11
|
+
return engine_1.TransactNote.createTransfer(receiverAddressData, matrixWallet.addressKeys, amount, tokenData, showSenderAddressToRecipient, outputType, memoText);
|
|
12
|
+
};
|
|
13
|
+
exports.erc20NoteFromERC20AmountRecipient = erc20NoteFromERC20AmountRecipient;
|
|
14
|
+
const nftNoteFromNFTAmountRecipient = (nftAmountRecipient, matrixWallet, showSenderAddressToRecipient, memoText) => {
|
|
15
|
+
const { recipientAddress, nftAddress, nftTokenType, tokenSubID, amount } = nftAmountRecipient;
|
|
16
|
+
const receiverAddressData = engine_1.MatrixEngine.decodeAddress(recipientAddress);
|
|
17
|
+
const tokenData = (0, engine_1.getTokenDataNFT)(nftAddress, nftTokenType, tokenSubID);
|
|
18
|
+
switch (nftTokenType) {
|
|
19
|
+
case shared_models_1.NFTTokenType.ERC721:
|
|
20
|
+
return engine_1.TransactNote.createERC721Transfer(receiverAddressData, matrixWallet.addressKeys, tokenData, showSenderAddressToRecipient, memoText);
|
|
21
|
+
case shared_models_1.NFTTokenType.ERC1155:
|
|
22
|
+
return engine_1.TransactNote.createERC1155Transfer(receiverAddressData, matrixWallet.addressKeys, tokenData, BigInt(amount), showSenderAddressToRecipient, memoText);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
exports.nftNoteFromNFTAmountRecipient = nftNoteFromNFTAmountRecipient;
|
|
26
|
+
const compareERC20Amounts = (a, b) => {
|
|
27
|
+
return a?.tokenAddress === b?.tokenAddress && a?.amount === b?.amount;
|
|
28
|
+
};
|
|
29
|
+
const compareERC20AmountRecipients = (a, b) => {
|
|
30
|
+
return (compareERC20Amounts(a, b) && a?.recipientAddress === b?.recipientAddress);
|
|
31
|
+
};
|
|
32
|
+
exports.compareERC20AmountRecipients = compareERC20AmountRecipients;
|
|
33
|
+
const compareERC20AmountArrays = (a, b) => {
|
|
34
|
+
if (!a && !b) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
if (!a || !b) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
if (a.length !== b.length) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
for (const erc20Amount of a) {
|
|
44
|
+
const found = b.find(ta => ta.tokenAddress === erc20Amount.tokenAddress);
|
|
45
|
+
if (!found) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (found.amount !== erc20Amount.amount) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
};
|
|
54
|
+
exports.compareERC20AmountArrays = compareERC20AmountArrays;
|
|
55
|
+
const compareERC20AmountRecipientArrays = (a, b) => {
|
|
56
|
+
if (!a && !b) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
if (!a || !b) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
if (a.length !== b.length) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
for (const erc20Amount of a) {
|
|
66
|
+
const found = b.find(ta => ta.tokenAddress === erc20Amount.tokenAddress &&
|
|
67
|
+
ta.recipientAddress === erc20Amount.recipientAddress);
|
|
68
|
+
if (!found) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
if (found.amount !== erc20Amount.amount) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
};
|
|
77
|
+
exports.compareERC20AmountRecipientArrays = compareERC20AmountRecipientArrays;
|
|
78
|
+
const compareERC20RecipientArrays = (a, b) => {
|
|
79
|
+
if (!a && !b) {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
if (!a || !b) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
if (a.length !== b.length) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
for (const erc20Recipient of a) {
|
|
89
|
+
const found = b.find(ta => ta.tokenAddress === erc20Recipient.tokenAddress &&
|
|
90
|
+
ta.recipientAddress === erc20Recipient.recipientAddress) != null;
|
|
91
|
+
if (!found) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return true;
|
|
96
|
+
};
|
|
97
|
+
exports.compareERC20RecipientArrays = compareERC20RecipientArrays;
|
|
98
|
+
const compareNFTAmountArrays = (a, b) => {
|
|
99
|
+
if (!a && !b) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
if (!a || !b) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
if (a.length !== b.length) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
for (const nftAmountRecipient of a) {
|
|
109
|
+
const found = b.find(ta => ta.nftAddress === nftAmountRecipient.nftAddress &&
|
|
110
|
+
ta.tokenSubID === nftAmountRecipient.tokenSubID);
|
|
111
|
+
if (!found) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
if (found.amount !== nftAmountRecipient.amount) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return true;
|
|
122
|
+
};
|
|
123
|
+
exports.compareNFTAmountArrays = compareNFTAmountArrays;
|
|
124
|
+
const compareNFTAmountRecipientArrays = (a, b) => {
|
|
125
|
+
if (!a && !b) {
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
if (!a || !b) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
if (a.length !== b.length) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
for (const nftAmountRecipient of a) {
|
|
135
|
+
const found = b.find(ta => ta.nftAddress === nftAmountRecipient.nftAddress &&
|
|
136
|
+
ta.tokenSubID === nftAmountRecipient.tokenSubID);
|
|
137
|
+
if (!found) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
if (found.recipientAddress !== nftAmountRecipient.recipientAddress) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
if (found.amount !== nftAmountRecipient.amount) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return true;
|
|
151
|
+
};
|
|
152
|
+
exports.compareNFTAmountRecipientArrays = compareNFTAmountRecipientArrays;
|
|
153
|
+
//# sourceMappingURL=tx-notes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx-notes.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-notes.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n OutputType,\n TransactNote,\n MatrixWallet,\n MatrixEngine,\n getTokenDataERC20,\n getTokenDataNFT,\n} from '@matrix-privacy/engine';\nimport {\n NFTTokenType,\n MatrixNFTAmountRecipient,\n MatrixERC20Amount,\n MatrixERC20AmountRecipient,\n MatrixNFTAmount,\n MatrixERC20Recipient,\n} from '@matrix-privacy/shared-models';\n\nexport const erc20NoteFromERC20AmountRecipient = (\n erc20AmountRecipient: MatrixERC20AmountRecipient,\n matrixWallet: MatrixWallet,\n outputType: OutputType,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { amount, recipientAddress } = erc20AmountRecipient;\n\n const receiverAddressData = MatrixEngine.decodeAddress(recipientAddress);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n return TransactNote.createTransfer(\n receiverAddressData,\n matrixWallet.addressKeys,\n amount,\n tokenData,\n showSenderAddressToRecipient,\n outputType,\n memoText,\n );\n};\n\nexport const nftNoteFromNFTAmountRecipient = (\n nftAmountRecipient: MatrixNFTAmountRecipient,\n matrixWallet: MatrixWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { recipientAddress, nftAddress, nftTokenType, tokenSubID, amount } =\n nftAmountRecipient;\n\n const receiverAddressData = MatrixEngine.decodeAddress(recipientAddress);\n\n const tokenData = getTokenDataNFT(\n nftAddress,\n nftTokenType as 1 | 2,\n tokenSubID,\n );\n\n switch (nftTokenType) {\n case NFTTokenType.ERC721:\n return TransactNote.createERC721Transfer(\n receiverAddressData,\n matrixWallet.addressKeys,\n tokenData,\n showSenderAddressToRecipient,\n memoText,\n );\n case NFTTokenType.ERC1155:\n return TransactNote.createERC1155Transfer(\n receiverAddressData,\n matrixWallet.addressKeys,\n tokenData,\n BigInt(amount),\n showSenderAddressToRecipient,\n memoText,\n );\n }\n};\n\nconst compareERC20Amounts = (\n a: Optional<MatrixERC20Amount>,\n b: Optional<MatrixERC20Amount>,\n) => {\n return a?.tokenAddress === b?.tokenAddress && a?.amount === b?.amount;\n};\n\nexport const compareERC20AmountRecipients = (\n a: Optional<MatrixERC20AmountRecipient>,\n b: Optional<MatrixERC20AmountRecipient>,\n) => {\n return (\n compareERC20Amounts(a, b) && a?.recipientAddress === b?.recipientAddress\n );\n};\n\nexport const compareERC20AmountArrays = (\n a: Optional<MatrixERC20Amount[]>,\n b: Optional<MatrixERC20Amount[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Amount of a) {\n const found = b.find(ta => ta.tokenAddress === erc20Amount.tokenAddress);\n if (!found) {\n return false;\n }\n if (found.amount !== erc20Amount.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareERC20AmountRecipientArrays = (\n a: Optional<MatrixERC20AmountRecipient[]>,\n b: Optional<MatrixERC20AmountRecipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Amount of a) {\n const found = b.find(\n ta =>\n ta.tokenAddress === erc20Amount.tokenAddress &&\n ta.recipientAddress === erc20Amount.recipientAddress,\n );\n if (!found) {\n return false;\n }\n if (found.amount !== erc20Amount.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareERC20RecipientArrays = (\n a: Optional<MatrixERC20Recipient[]>,\n b: Optional<MatrixERC20Recipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Recipient of a) {\n const found =\n b.find(\n ta =>\n ta.tokenAddress === erc20Recipient.tokenAddress &&\n ta.recipientAddress === erc20Recipient.recipientAddress,\n ) != null;\n if (!found) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareNFTAmountArrays = (\n a: Optional<MatrixNFTAmount[]>,\n b: Optional<MatrixNFTAmount[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const nftAmountRecipient of a) {\n const found = b.find(\n ta =>\n ta.nftAddress === nftAmountRecipient.nftAddress &&\n ta.tokenSubID === nftAmountRecipient.tokenSubID,\n );\n if (!found) {\n return false;\n }\n if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {\n return false;\n }\n if (found.amount !== nftAmountRecipient.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareNFTAmountRecipientArrays = (\n a: Optional<MatrixNFTAmountRecipient[]>,\n b: Optional<MatrixNFTAmountRecipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const nftAmountRecipient of a) {\n const found = b.find(\n ta =>\n ta.nftAddress === nftAmountRecipient.nftAddress &&\n ta.tokenSubID === nftAmountRecipient.tokenSubID,\n );\n if (!found) {\n return false;\n }\n if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {\n return false;\n }\n if (found.recipientAddress !== nftAmountRecipient.recipientAddress) {\n return false;\n }\n if (found.amount !== nftAmountRecipient.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport { TransactNote };\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCompletedTxidFromNullifiers = void 0;
|
|
4
|
+
const error_1 = require("../../utils/error");
|
|
5
|
+
const engine_1 = require("../matrix/core/engine");
|
|
6
|
+
const getCompletedTxidFromNullifiers = async (chain, nullifiers) => {
|
|
7
|
+
try {
|
|
8
|
+
const engine = (0, engine_1.getEngine)();
|
|
9
|
+
const txid = await engine.getCompletedTxidFromNullifiers(chain, nullifiers);
|
|
10
|
+
return { txid };
|
|
11
|
+
}
|
|
12
|
+
catch (err) {
|
|
13
|
+
throw (0, error_1.reportAndSanitizeError)(exports.getCompletedTxidFromNullifiers.name, err);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
exports.getCompletedTxidFromNullifiers = getCompletedTxidFromNullifiers;
|
|
17
|
+
//# sourceMappingURL=tx-nullifiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx-nullifiers.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-nullifiers.ts"],"names":[],"mappings":";;;AAIA,6CAA2D;AAC3D,kDAAkD;AAE3C,MAAM,8BAA8B,GAAG,KAAK,EACjD,KAAY,EACZ,UAAoB,EACuB,EAAE;IAC7C,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,IAAI,GAAqB,MAAM,MAAM,CAAC,8BAA8B,CACxE,KAAK,EACL,UAAU,CACX,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,CAAC;KACjB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,sCAA8B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACxE;AACH,CAAC,CAAC;AAdW,QAAA,8BAA8B,kCAczC","sourcesContent":["import {\n Chain,\n MatrixTxidFromNullifiersResponse,\n} from '@matrix-privacy/shared-models';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { getEngine } from '../matrix/core/engine';\n\nexport const getCompletedTxidFromNullifiers = async (\n chain: Chain,\n nullifiers: string[],\n): Promise<MatrixTxidFromNullifiersResponse> => {\n try {\n const engine = getEngine();\n const txid: Optional<string> = await engine.getCompletedTxidFromNullifiers(\n chain,\n nullifiers,\n );\n return { txid };\n } catch (err) {\n throw reportAndSanitizeError(getCompletedTxidFromNullifiers.name, err);\n }\n};\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { NetworkName, MatrixERC20AmountRecipient, MatrixNFTAmountRecipient } from '@matrix-privacy/shared-models';
|
|
2
|
+
import { GenerateTransactionsProgressCallback } from './tx-generator';
|
|
3
|
+
export declare const generateTransferProof: (networkName: NetworkName, matrixWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: MatrixERC20AmountRecipient[], nftAmountRecipients: MatrixNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateTransferProof = void 0;
|
|
4
|
+
const shared_models_1 = require("@matrix-privacy/shared-models");
|
|
5
|
+
const tx_generator_1 = require("./tx-generator");
|
|
6
|
+
const proof_cache_1 = require("./proof-cache");
|
|
7
|
+
const error_1 = require("../../utils/error");
|
|
8
|
+
const generateTransferProof = async (networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
|
|
9
|
+
try {
|
|
10
|
+
(0, proof_cache_1.setCachedProvedTransaction)(undefined);
|
|
11
|
+
const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(shared_models_1.ProofType.Transfer, networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, false, // useDummyProof
|
|
12
|
+
overallBatchMinGasPrice, progressCallback);
|
|
13
|
+
const transaction = await (0, tx_generator_1.generateTransact)(provedTransactions, networkName);
|
|
14
|
+
const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(provedTransactions);
|
|
15
|
+
(0, proof_cache_1.setCachedProvedTransaction)({
|
|
16
|
+
proofType: shared_models_1.ProofType.Transfer,
|
|
17
|
+
matrixWalletID,
|
|
18
|
+
showSenderAddressToRecipient,
|
|
19
|
+
memoText,
|
|
20
|
+
erc20AmountRecipients,
|
|
21
|
+
nftAmountRecipients,
|
|
22
|
+
relayAdaptUnshieldERC20Amounts: undefined,
|
|
23
|
+
relayAdaptUnshieldNFTAmounts: undefined,
|
|
24
|
+
relayAdaptShieldERC20Recipients: undefined,
|
|
25
|
+
relayAdaptShieldNFTRecipients: undefined,
|
|
26
|
+
crossContractCalls: undefined,
|
|
27
|
+
broadcasterFeeERC20AmountRecipient,
|
|
28
|
+
sendWithPublicWallet,
|
|
29
|
+
transaction,
|
|
30
|
+
overallBatchMinGasPrice,
|
|
31
|
+
nullifiers,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
throw (0, error_1.reportAndSanitizeError)(exports.generateTransferProof.name, err);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.generateTransferProof = generateTransferProof;
|
|
39
|
+
//# sourceMappingURL=tx-proof-transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx-proof-transfer.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer.ts"],"names":[],"mappings":";;;AAAA,iEAKuC;AACvC,iDAKwB;AACxB,+CAA2D;AAC3D,6CAA2D;AAEpD,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAwB,EACxB,cAAsB,EACtB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAmD,EACnD,mBAA+C,EAC/C,kCAAwE,EACxE,oBAA6B,EAC7B,uBAAyC,EACzC,gBAAsD,EACvC,EAAE;IACjB,IAAI;QACF,IAAA,wCAA0B,EAAC,SAAS,CAAC,CAAC;QAEtC,MAAM,EAAE,kBAAkB,EAAE,GAC1B,MAAM,IAAA,wCAAyB,EAC7B,yBAAS,CAAC,QAAQ,EAClB,WAAW,EACX,cAAc,EACd,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,kCAAkC,EAClC,oBAAoB,EACpB,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,CACjB,CAAC;QACJ,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EACxC,kBAAkB,EAClB,WAAW,CACZ,CAAC;QAEF,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,kBAAkB,CAAC,CAAC;QAEjE,IAAA,wCAA0B,EAAC;YACzB,SAAS,EAAE,yBAAS,CAAC,QAAQ;YAC7B,cAAc;YACd,4BAA4B;YAC5B,QAAQ;YACR,qBAAqB;YACrB,mBAAmB;YACnB,8BAA8B,EAAE,SAAS;YACzC,4BAA4B,EAAE,SAAS;YACvC,+BAA+B,EAAE,SAAS;YAC1C,6BAA6B,EAAE,SAAS;YACxC,kBAAkB,EAAE,SAAS;YAC7B,kCAAkC;YAClC,oBAAoB;YACpB,WAAW;YACX,uBAAuB;YACvB,UAAU;SACX,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,6BAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC/D;AACH,CAAC,CAAC;AA5DW,QAAA,qBAAqB,yBA4DhC","sourcesContent":["import {\n NetworkName,\n ProofType,\n MatrixERC20AmountRecipient,\n MatrixNFTAmountRecipient,\n} from '@matrix-privacy/shared-models';\nimport {\n GenerateTransactionsProgressCallback,\n generateProofTransactions,\n generateTransact,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateTransferProof = async (\n networkName: NetworkName,\n matrixWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: MatrixERC20AmountRecipient[],\n nftAmountRecipients: MatrixNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const { provedTransactions } =\n await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n matrixWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(\n provedTransactions,\n networkName,\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Transfer,\n matrixWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptUnshieldERC20Amounts: undefined,\n relayAdaptUnshieldNFTAmounts: undefined,\n relayAdaptShieldERC20Recipients: undefined,\n relayAdaptShieldNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProof.name, err);\n }\n};\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { MatrixERC20Amount, NetworkName, MatrixERC20AmountRecipient, MatrixNFTAmountRecipient } from '@matrix-privacy/shared-models';
|
|
2
|
+
import { GenerateTransactionsProgressCallback } from './tx-generator';
|
|
3
|
+
export declare const generateUnshieldProof: (networkName: NetworkName, matrixWalletID: string, encryptionKey: string, erc20AmountRecipients: MatrixERC20AmountRecipient[], nftAmountRecipients: MatrixNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
|
|
4
|
+
export declare const generateUnshieldToOriginProof: (originalShieldTxid: string, networkName: NetworkName, matrixWalletID: string, encryptionKey: string, erc20AmountRecipients: MatrixERC20AmountRecipient[], nftAmountRecipients: MatrixNFTAmountRecipient[], progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
|
|
5
|
+
export declare const generateUnshieldBaseTokenProof: (networkName: NetworkName, publicWalletAddress: string, matrixWalletID: string, encryptionKey: string, wrappedERC20Amount: MatrixERC20Amount, broadcasterFeeERC20AmountRecipient: Optional<MatrixERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateUnshieldBaseTokenProof = exports.generateUnshieldToOriginProof = exports.generateUnshieldProof = void 0;
|
|
4
|
+
const shared_models_1 = require("@matrix-privacy/shared-models");
|
|
5
|
+
const tx_generator_1 = require("./tx-generator");
|
|
6
|
+
const wallets_1 = require("../matrix/wallets/wallets");
|
|
7
|
+
const proof_cache_1 = require("./proof-cache");
|
|
8
|
+
const engine_1 = require("@matrix-privacy/engine");
|
|
9
|
+
const tx_cross_contract_calls_1 = require("./tx-cross-contract-calls");
|
|
10
|
+
const error_1 = require("../../utils/error");
|
|
11
|
+
const generateUnshieldProof = async (networkName, matrixWalletID, encryptionKey, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
|
|
12
|
+
try {
|
|
13
|
+
(0, proof_cache_1.setCachedProvedTransaction)(undefined);
|
|
14
|
+
const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(shared_models_1.ProofType.Unshield, networkName, matrixWalletID, encryptionKey, false, // showSenderAddressToRecipient
|
|
15
|
+
undefined, // memoText
|
|
16
|
+
erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, false, // useDummyProof
|
|
17
|
+
overallBatchMinGasPrice, progressCallback);
|
|
18
|
+
const transaction = await (0, tx_generator_1.generateTransact)(provedTransactions, networkName);
|
|
19
|
+
const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(provedTransactions);
|
|
20
|
+
(0, proof_cache_1.setCachedProvedTransaction)({
|
|
21
|
+
proofType: shared_models_1.ProofType.Unshield,
|
|
22
|
+
matrixWalletID,
|
|
23
|
+
showSenderAddressToRecipient: false,
|
|
24
|
+
memoText: undefined,
|
|
25
|
+
erc20AmountRecipients,
|
|
26
|
+
nftAmountRecipients,
|
|
27
|
+
relayAdaptUnshieldERC20Amounts: undefined,
|
|
28
|
+
relayAdaptUnshieldNFTAmounts: undefined,
|
|
29
|
+
relayAdaptShieldERC20Recipients: undefined,
|
|
30
|
+
relayAdaptShieldNFTRecipients: undefined,
|
|
31
|
+
crossContractCalls: undefined,
|
|
32
|
+
broadcasterFeeERC20AmountRecipient,
|
|
33
|
+
transaction,
|
|
34
|
+
sendWithPublicWallet,
|
|
35
|
+
overallBatchMinGasPrice,
|
|
36
|
+
nullifiers,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
throw (0, error_1.reportAndSanitizeError)(exports.generateUnshieldProof.name, err);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
exports.generateUnshieldProof = generateUnshieldProof;
|
|
44
|
+
const generateUnshieldToOriginProof = async (originalShieldTxid, networkName, matrixWalletID, encryptionKey, erc20AmountRecipients, nftAmountRecipients, progressCallback) => {
|
|
45
|
+
try {
|
|
46
|
+
(0, proof_cache_1.setCachedProvedTransaction)(undefined);
|
|
47
|
+
const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(shared_models_1.ProofType.Unshield, networkName, matrixWalletID, encryptionKey, false, // showSenderAddressToRecipient
|
|
48
|
+
undefined, // memoText
|
|
49
|
+
erc20AmountRecipients, nftAmountRecipients, undefined, // broadcasterFeeERC20AmountRecipient
|
|
50
|
+
true, // sendWithPublicWallet
|
|
51
|
+
false, // useDummyProof
|
|
52
|
+
undefined, // overallBatchMinGasPrice
|
|
53
|
+
progressCallback, originalShieldTxid);
|
|
54
|
+
const transaction = await (0, tx_generator_1.generateTransact)(provedTransactions, networkName);
|
|
55
|
+
const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(provedTransactions);
|
|
56
|
+
(0, proof_cache_1.setCachedProvedTransaction)({
|
|
57
|
+
proofType: shared_models_1.ProofType.Unshield,
|
|
58
|
+
matrixWalletID,
|
|
59
|
+
showSenderAddressToRecipient: false,
|
|
60
|
+
memoText: undefined,
|
|
61
|
+
erc20AmountRecipients,
|
|
62
|
+
nftAmountRecipients,
|
|
63
|
+
relayAdaptUnshieldERC20Amounts: undefined,
|
|
64
|
+
relayAdaptUnshieldNFTAmounts: undefined,
|
|
65
|
+
relayAdaptShieldERC20Recipients: undefined,
|
|
66
|
+
relayAdaptShieldNFTRecipients: undefined,
|
|
67
|
+
crossContractCalls: undefined,
|
|
68
|
+
broadcasterFeeERC20AmountRecipient: undefined,
|
|
69
|
+
transaction,
|
|
70
|
+
sendWithPublicWallet: true,
|
|
71
|
+
overallBatchMinGasPrice: undefined,
|
|
72
|
+
nullifiers,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
throw (0, error_1.reportAndSanitizeError)(exports.generateUnshieldProof.name, err);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
exports.generateUnshieldToOriginProof = generateUnshieldToOriginProof;
|
|
80
|
+
const generateUnshieldBaseTokenProof = async (networkName, publicWalletAddress, matrixWalletID, encryptionKey, wrappedERC20Amount, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
|
|
81
|
+
try {
|
|
82
|
+
(0, wallets_1.assertValidEthAddress)(publicWalletAddress);
|
|
83
|
+
(0, proof_cache_1.setCachedProvedTransaction)(undefined);
|
|
84
|
+
const erc20AmountRecipients = [
|
|
85
|
+
{
|
|
86
|
+
...wrappedERC20Amount,
|
|
87
|
+
recipientAddress: publicWalletAddress,
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
const relayAdaptUnshieldERC20Amounts = [
|
|
91
|
+
wrappedERC20Amount,
|
|
92
|
+
];
|
|
93
|
+
const relayAdaptUnshieldERC20AmountRecipients = (0, tx_cross_contract_calls_1.createRelayAdaptUnshieldERC20AmountRecipients)(networkName, [
|
|
94
|
+
wrappedERC20Amount,
|
|
95
|
+
]);
|
|
96
|
+
// Empty NFT recipients.
|
|
97
|
+
const nftAmountRecipients = [];
|
|
98
|
+
const showSenderAddressToRecipient = false;
|
|
99
|
+
const memoText = undefined;
|
|
100
|
+
// Create transactions with proof.
|
|
101
|
+
const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(shared_models_1.ProofType.UnshieldBaseToken, networkName, matrixWalletID, encryptionKey, showSenderAddressToRecipient, memoText, relayAdaptUnshieldERC20AmountRecipients, [], // nftAmountRecipients
|
|
102
|
+
broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, false, // useDummyProof
|
|
103
|
+
overallBatchMinGasPrice, progressCallback);
|
|
104
|
+
const relayAdaptParamsRandom = engine_1.ByteUtils.randomHex(31);
|
|
105
|
+
const transaction = await (0, tx_generator_1.generateUnshieldBaseToken)(provedTransactions, networkName, publicWalletAddress, relayAdaptParamsRandom, false, // useDummyProof
|
|
106
|
+
sendWithPublicWallet);
|
|
107
|
+
const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(provedTransactions);
|
|
108
|
+
(0, proof_cache_1.setCachedProvedTransaction)({
|
|
109
|
+
proofType: shared_models_1.ProofType.UnshieldBaseToken,
|
|
110
|
+
matrixWalletID,
|
|
111
|
+
showSenderAddressToRecipient,
|
|
112
|
+
memoText,
|
|
113
|
+
erc20AmountRecipients,
|
|
114
|
+
nftAmountRecipients,
|
|
115
|
+
relayAdaptUnshieldERC20Amounts,
|
|
116
|
+
relayAdaptUnshieldNFTAmounts: undefined,
|
|
117
|
+
relayAdaptShieldERC20Recipients: undefined,
|
|
118
|
+
relayAdaptShieldNFTRecipients: undefined,
|
|
119
|
+
crossContractCalls: undefined,
|
|
120
|
+
broadcasterFeeERC20AmountRecipient,
|
|
121
|
+
sendWithPublicWallet,
|
|
122
|
+
transaction,
|
|
123
|
+
overallBatchMinGasPrice,
|
|
124
|
+
nullifiers,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
throw (0, error_1.reportAndSanitizeError)(exports.generateUnshieldBaseTokenProof.name, err);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
exports.generateUnshieldBaseTokenProof = generateUnshieldBaseTokenProof;
|
|
132
|
+
//# sourceMappingURL=tx-proof-unshield.js.map
|