dop-wallet-v6 1.1.9 → 1.2.0

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 (40) hide show
  1. package/dist/services/artifacts/artifact-hash.d.ts +1 -0
  2. package/dist/services/artifacts/artifact-store.d.ts +1 -0
  3. package/dist/services/artifacts/artifact-util.js +5 -10
  4. package/dist/services/artifacts/artifact-util.js.map +1 -1
  5. package/dist/services/artifacts/json/artifact-v2-hashes.json +0 -65
  6. package/dist/services/dop/core/artifacts.d.ts +2 -2
  7. package/dist/services/dop/core/artifacts.js +1 -3
  8. package/dist/services/dop/core/artifacts.js.map +1 -1
  9. package/dist/services/dop/quick-sync/graphql/index.js +3 -3
  10. package/dist/services/dop/quick-sync/graphql/index.js.map +1 -1
  11. package/dist/services/dop/util/commitment.d.ts +2 -1
  12. package/dist/services/dop/util/commitment.js +2 -3
  13. package/dist/services/dop/util/commitment.js.map +1 -1
  14. package/dist/services/dop/wallets/wallets.js +1 -1
  15. package/dist/services/dop/wallets/wallets.js.map +1 -1
  16. package/dist/services/transactions/tx-cross-contract-calls.d.ts +4 -2
  17. package/dist/services/transactions/tx-cross-contract-calls.js +108 -260
  18. package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -1
  19. package/dist/services/transactions/tx-gas-details.js +1 -1
  20. package/dist/services/transactions/tx-gas-details.js.map +1 -1
  21. package/dist/services/transactions/tx-gas-relayer-fee-estimator.d.ts +4 -1
  22. package/dist/services/transactions/tx-gas-relayer-fee-estimator.js +86 -185
  23. package/dist/services/transactions/tx-gas-relayer-fee-estimator.js.map +1 -1
  24. package/dist/services/transactions/tx-generator.d.ts +3 -2
  25. package/dist/services/transactions/tx-generator.js +25 -54
  26. package/dist/services/transactions/tx-generator.js.map +1 -1
  27. package/dist/services/transactions/tx-proof-transfer.d.ts +1 -2
  28. package/dist/services/transactions/tx-proof-transfer.js +17 -11
  29. package/dist/services/transactions/tx-proof-transfer.js.map +1 -1
  30. package/dist/services/transactions/tx-proof-unshield.d.ts +3 -2
  31. package/dist/services/transactions/tx-proof-unshield.js +84 -143
  32. package/dist/services/transactions/tx-proof-unshield.js.map +1 -1
  33. package/dist/services/transactions/tx-shield.js.map +1 -1
  34. package/dist/services/transactions/tx-transfer.d.ts +2 -1
  35. package/dist/services/transactions/tx-transfer.js +14 -53
  36. package/dist/services/transactions/tx-transfer.js.map +1 -1
  37. package/dist/services/transactions/tx-unshield.d.ts +3 -1
  38. package/dist/services/transactions/tx-unshield.js +37 -116
  39. package/dist/services/transactions/tx-unshield.js.map +1 -1
  40. package/package.json +7 -6
@@ -1,2 +1,3 @@
1
- import { TransactionStruct, CommitmentSummary } from 'dop-engine-v5';
1
+ import { TransactionStruct } from 'dop-engine-v5';
2
+ import { CommitmentSummary } from 'dop-sharedmodel-v5';
2
3
  export declare const convertTransactionStructToCommitmentSummary: (transactionStruct: TransactionStruct, commitmentIndex: number) => CommitmentSummary;
@@ -6,11 +6,10 @@ const convertTransactionStructToCommitmentSummary = (transactionStruct, commitme
6
6
  const commitmentCiphertextStruct = transactionStruct.boundParams
7
7
  .commitmentCiphertext[commitmentIndex];
8
8
  const commitmentCiphertext = (0, dop_engine_v5_1.formatCommitmentCiphertext)(commitmentCiphertextStruct);
9
- // const commitmentHash = transactionStruct.commitments[
10
- // commitmentIndex
11
- // ] as string;
9
+ const commitmentHash = transactionStruct.commitments[commitmentIndex];
12
10
  return {
13
11
  commitmentCiphertext,
12
+ commitmentHash,
14
13
  };
15
14
  };
16
15
  exports.convertTransactionStructToCommitmentSummary = convertTransactionStructToCommitmentSummary;
@@ -1 +1 @@
1
- {"version":3,"file":"commitment.js","sourceRoot":"","sources":["../../../../src/services/dop/util/commitment.ts"],"names":[],"mappings":";;;AAAA,iDAKuB;AAMhB,MAAM,2CAA2C,GAAG,CACzD,iBAAoC,EACpC,eAAuB,EACJ,EAAE;IACrB,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,WAAW;SAC7D,oBAAoB,CAAC,eAAe,CAAqC,CAAC;IAE7E,MAAM,oBAAoB,GAAyB,IAAA,0CAA0B,EAC3E,0BAA0B,CAC3B,CAAC;IACF,wDAAwD;IACxD,oBAAoB;IACpB,eAAe;IAEf,OAAO;QACL,oBAAoB;KACrB,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,2CAA2C,+CAiBtD","sourcesContent":["import {\n CommitmentCiphertextStructOutput,\n TransactionStruct,\n formatCommitmentCiphertext,\n CommitmentSummary,\n} from 'dop-engine-v5';\n\nimport {\n CommitmentCiphertext,\n} from 'dop-sharedmodel-v5';\n\nexport const convertTransactionStructToCommitmentSummary = (\n transactionStruct: TransactionStruct,\n commitmentIndex: number,\n): CommitmentSummary => {\n const commitmentCiphertextStruct = transactionStruct.boundParams\n .commitmentCiphertext[commitmentIndex] as CommitmentCiphertextStructOutput;\n\n const commitmentCiphertext: CommitmentCiphertext = formatCommitmentCiphertext(\n commitmentCiphertextStruct,\n );\n // const commitmentHash = transactionStruct.commitments[\n // commitmentIndex\n // ] as string;\n\n return {\n commitmentCiphertext,\n };\n};\n"]}
1
+ {"version":3,"file":"commitment.js","sourceRoot":"","sources":["../../../../src/services/dop/util/commitment.ts"],"names":[],"mappings":";;;AAAA,iDAIuB;AAMhB,MAAM,2CAA2C,GAAG,CACzD,iBAAoC,EACpC,eAAuB,EACJ,EAAE;IACrB,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,WAAW;SAC7D,oBAAoB,CAAC,eAAe,CAAqC,CAAC;IAE7E,MAAM,oBAAoB,GAAyB,IAAA,0CAA0B,EAC3E,0BAA0B,CAC3B,CAAC;IACF,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAClD,eAAe,CACN,CAAC;IAEZ,OAAO;QACL,oBAAoB;QACpB,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,2CAA2C,+CAkBtD","sourcesContent":["import {\n CommitmentCiphertextStructOutput,\n TransactionStruct,\n formatCommitmentCiphertext,\n} from 'dop-engine-v5';\nimport {\n CommitmentCiphertext,\n CommitmentSummary,\n} from 'dop-sharedmodel-v5';\n\nexport const convertTransactionStructToCommitmentSummary = (\n transactionStruct: TransactionStruct,\n commitmentIndex: number,\n): CommitmentSummary => {\n const commitmentCiphertextStruct = transactionStruct.boundParams\n .commitmentCiphertext[commitmentIndex] as CommitmentCiphertextStructOutput;\n\n const commitmentCiphertext: CommitmentCiphertext = formatCommitmentCiphertext(\n commitmentCiphertextStruct,\n );\n const commitmentHash = transactionStruct.commitments[\n commitmentIndex\n ] as string;\n\n return {\n commitmentCiphertext,\n commitmentHash,\n };\n};\n"]}
@@ -206,7 +206,7 @@ const getWalletShareableViewingKey = async (dopWalletID) => {
206
206
  exports.getWalletShareableViewingKey = getWalletShareableViewingKey;
207
207
  const formatCreationBlockNumbers = (creationBlockNumbers) => {
208
208
  var _a;
209
- // Format creationBlockNumbers from client side { <NetworkName>: <BlockNumber> } map to dop-engine-tranparency's number[][] type
209
+ // Format creationBlockNumbers from client side { <NetworkName>: <BlockNumber> } map to dop-engine's number[][] type
210
210
  if (!creationBlockNumbers)
211
211
  return;
212
212
  const formattedCreationBlockNumbers = [];
@@ -1 +1 @@
1
- {"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../../../src/services/dop/wallets/wallets.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopWallet,\n EngineEvent,\n WalletScannedEventData,\n AbstractWallet,\n WalletData,\n AddressData,\n DopEngine,\n hexlify,\n hexStringToBytes,\n} from 'dop-engine-v5';\nimport {\n DopWalletInfo,\n NetworkName,\n NETWORK_CONFIG,\n isDefined,\n} from 'dop-sharedmodel-v5';\nimport { getEngine, walletForID } from '../core/engine';\nimport { onBalancesUpdate } from './balance-update';\nimport { reportAndSanitizeError } from '../../../utils/error';\nimport { getAddress } from 'ethers';\n\nconst subscribeToBalanceEvents = (wallet: AbstractWallet) => {\n wallet.on(\n EngineEvent.WalletScanComplete,\n ({ chain }: WalletScannedEventData) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n onBalancesUpdate(wallet, chain);\n },\n );\n};\n\nconst addressForWallet = (wallet: AbstractWallet): string => {\n return wallet.getAddress();\n};\n\nconst infoForWallet = (wallet: AbstractWallet): DopWalletInfo => {\n const dopAddress = addressForWallet(wallet);\n return {\n id: wallet.id,\n dopAddress,\n };\n};\n\nconst getExistingWallet = (\n dopWalletID: string,\n): Optional<AbstractWallet> => {\n try {\n const existingWallet = walletForID(dopWalletID);\n return existingWallet;\n } catch (_err) {\n return undefined;\n }\n};\n\nconst loadExistingWallet = async (\n encryptionKey: string,\n dopWalletID: string,\n isViewOnlyWallet: boolean,\n): Promise<DopWalletInfo> => {\n const existingWallet = getExistingWallet(dopWalletID);\n if (existingWallet) {\n return infoForWallet(existingWallet);\n }\n const engine = getEngine();\n let wallet: AbstractWallet;\n\n if (isViewOnlyWallet) {\n wallet = await engine.loadExistingViewOnlyWallet(\n encryptionKey,\n dopWalletID,\n );\n } else {\n wallet = await engine.loadExistingWallet(encryptionKey, dopWalletID);\n }\n\n subscribeToBalanceEvents(wallet);\n return infoForWallet(wallet);\n};\n// here\nexport const createWalletFromTransaction = async (\n leaf: any,\n viewingPrivateKey: Uint8Array,\n chain: any,\n encryptionKey: string,\n mnemonic: string,\n index: number = 0,\n): Promise<any> => {\n\n const engine = getEngine();\n const res = engine.createUserWalletFromTransaction(leaf, viewingPrivateKey, chain, encryptionKey, mnemonic, index);\n return res;\n};\n\n// here\nexport const createUserWalletWithID = async (\n encryptionKey: string,\n id: string,\n leaf: any,\n viewingPrivateKey: Uint8Array,\n chain: any\n): Promise<any> => {\n\n const engine = getEngine();\n const res = engine.createUserWalletWithID(\n encryptionKey,\n id,\n leaf,\n viewingPrivateKey,\n chain\n );\n return res;\n};\n\n\nconst createWallet = async (\n encryptionKey: string,\n mnemonic: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n const formattedCreationBlockNumbers =\n formatCreationBlockNumbers(creationBlockNumbers);\n\n const engine = getEngine();\n\n const wallet = await engine.createWalletFromMnemonic(\n encryptionKey,\n mnemonic,\n 0,\n formattedCreationBlockNumbers,\n );\n subscribeToBalanceEvents(wallet);\n return infoForWallet(wallet);\n};\n\nconst createViewOnlyWallet = async (\n encryptionKey: string,\n shareableViewingKey: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n const formattedCreationBlockNumbers =\n formatCreationBlockNumbers(creationBlockNumbers);\n\n const engine = getEngine();\n const wallet = await engine.createViewOnlyWalletFromShareableViewingKey(\n encryptionKey,\n shareableViewingKey,\n formattedCreationBlockNumbers,\n );\n subscribeToBalanceEvents(wallet);\n return infoForWallet(wallet);\n};\n// here \nexport const createDopWallet = async (\n encryptionKey: string,\n mnemonic: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n try {\n\n return await createWallet(encryptionKey, mnemonic, creationBlockNumbers);\n } catch (err) {\n throw reportAndSanitizeError(createDopWallet.name, err);\n }\n};\n\nexport const createViewOnlyDopWallet = async (\n encryptionKey: string,\n shareableViewingKey: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n try {\n return await createViewOnlyWallet(\n encryptionKey,\n shareableViewingKey,\n creationBlockNumbers,\n );\n } catch (err) {\n throw reportAndSanitizeError(createViewOnlyDopWallet.name, err);\n }\n};\n\nexport const loadWalletByID = async (\n encryptionKey: string,\n dopWalletID: string,\n isViewOnlyWallet: boolean,\n): Promise<DopWalletInfo> => {\n try {\n return await loadExistingWallet(\n encryptionKey,\n dopWalletID,\n isViewOnlyWallet,\n );\n } catch (err) {\n const sanitizedError = reportAndSanitizeError(loadWalletByID.name, err);\n throw new Error(`Could not load DOP wallet: ${sanitizedError.message}`);\n }\n};\n\nexport const unloadWalletByID = (dopWalletID: string): void => {\n try {\n const engine = getEngine();\n engine.unloadWallet(dopWalletID);\n } catch (err) {\n throw new Error('Could not unload DOP wallet.');\n }\n};\n\nexport const deleteWalletByID = async (\n dopWalletID: string,\n): Promise<void> => {\n try {\n const engine = getEngine();\n await engine.deleteWallet(dopWalletID);\n } catch (err) {\n throw new Error('Could not delete DOP wallet.');\n }\n};\n\nexport const getWalletMnemonic = async (\n encryptionKey: string,\n dopWalletID: string,\n) => {\n const { db } = getEngine();\n // Reload wallet to ensure that encryption key is valid.\n const walletData = (await DopWallet.getEncryptedData(\n db,\n encryptionKey,\n dopWalletID,\n )) as WalletData;\n\n if (!walletData.mnemonic) {\n throw new Error('No mnemonic for wallet.');\n }\n return walletData.mnemonic;\n};\n\nexport const getDopWalletAddressData = (address: string): AddressData => {\n assertValidDopAddress(address);\n return DopEngine.decodeAddress(address);\n};\n\nexport const getDopWalletPrivateViewingKey = (\n dopWalletID: string,\n): Uint8Array => {\n const wallet = walletForID(dopWalletID);\n return wallet.getViewingKeyPair().privateKey;\n};\n\nexport const signWithWalletViewingKey = async (\n dopWalletID: string,\n message: string,\n): Promise<string> => {\n const wallet = walletForID(dopWalletID);\n const signature = await wallet.signWithViewingKey(hexStringToBytes(message));\n return hexlify(signature);\n};\n\n\n\nexport const assertValidDopAddress = (address: string): void => {\n if (!validateDopAddress(address)) {\n throw new Error('Invalid DOP address.');\n }\n};\n\nexport const validateDopAddress = (address: string): boolean => {\n try {\n return DopEngine.decodeAddress(address) != null;\n } catch (err) {\n return false;\n }\n};\n\nexport const assertValidEthAddress = (address: string) => {\n if (!validateEthAddress(address)) {\n throw new Error('Invalid wallet address.');\n }\n};\n\nexport const validateEthAddress = (address: string): boolean => {\n try {\n getAddress(address);\n return true;\n } catch (err) {\n return false;\n }\n};\n\nexport const getDopAddress = (\n dopWalletID: string,\n): Optional<string> => {\n try {\n const wallet = walletForID(dopWalletID);\n return wallet.getAddress();\n } catch (err) {\n reportAndSanitizeError(getDopAddress.name, err);\n return undefined;\n }\n};\n\nexport const getWalletShareableViewingKey = async (\n dopWalletID: string,\n): Promise<Optional<string>> => {\n try {\n const wallet = walletForID(dopWalletID);\n return wallet.generateShareableViewingKey();\n } catch (err) {\n reportAndSanitizeError(getWalletShareableViewingKey.name, err);\n return undefined;\n }\n};\n\nconst formatCreationBlockNumbers = (\n creationBlockNumbers: Optional<MapType<number>>,\n): Optional<number[][]> => {\n // Format creationBlockNumbers from client side { <NetworkName>: <BlockNumber> } map to dop-engine-tranparency's number[][] type\n if (!creationBlockNumbers) return;\n\n const formattedCreationBlockNumbers: number[][] = [];\n const networksNames = Object.keys(creationBlockNumbers) as NetworkName[];\n\n for (const networkName of networksNames) {\n const network = NETWORK_CONFIG[networkName];\n\n const blockNumber = creationBlockNumbers[networkName];\n if (!isDefined(blockNumber)) {\n continue;\n }\n\n formattedCreationBlockNumbers[network.chain.type] ??= [];\n formattedCreationBlockNumbers[network.chain.type][network.chain.id] =\n blockNumber;\n }\n\n return formattedCreationBlockNumbers;\n};\n"]}
1
+ {"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../../../src/services/dop/wallets/wallets.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopWallet,\n EngineEvent,\n WalletScannedEventData,\n AbstractWallet,\n WalletData,\n AddressData,\n DopEngine,\n hexlify,\n hexStringToBytes,\n} from 'dop-engine-v5';\nimport {\n DopWalletInfo,\n NetworkName,\n NETWORK_CONFIG,\n isDefined,\n} from 'dop-sharedmodel-v5';\nimport { getEngine, walletForID } from '../core/engine';\nimport { onBalancesUpdate } from './balance-update';\nimport { reportAndSanitizeError } from '../../../utils/error';\nimport { getAddress } from 'ethers';\n\nconst subscribeToBalanceEvents = (wallet: AbstractWallet) => {\n wallet.on(\n EngineEvent.WalletScanComplete,\n ({ chain }: WalletScannedEventData) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n onBalancesUpdate(wallet, chain);\n },\n );\n};\n\nconst addressForWallet = (wallet: AbstractWallet): string => {\n return wallet.getAddress();\n};\n\nconst infoForWallet = (wallet: AbstractWallet): DopWalletInfo => {\n const dopAddress = addressForWallet(wallet);\n return {\n id: wallet.id,\n dopAddress,\n };\n};\n\nconst getExistingWallet = (\n dopWalletID: string,\n): Optional<AbstractWallet> => {\n try {\n const existingWallet = walletForID(dopWalletID);\n return existingWallet;\n } catch (_err) {\n return undefined;\n }\n};\n\nconst loadExistingWallet = async (\n encryptionKey: string,\n dopWalletID: string,\n isViewOnlyWallet: boolean,\n): Promise<DopWalletInfo> => {\n const existingWallet = getExistingWallet(dopWalletID);\n if (existingWallet) {\n return infoForWallet(existingWallet);\n }\n const engine = getEngine();\n let wallet: AbstractWallet;\n\n if (isViewOnlyWallet) {\n wallet = await engine.loadExistingViewOnlyWallet(\n encryptionKey,\n dopWalletID,\n );\n } else {\n wallet = await engine.loadExistingWallet(encryptionKey, dopWalletID);\n }\n\n subscribeToBalanceEvents(wallet);\n return infoForWallet(wallet);\n};\n// here\nexport const createWalletFromTransaction = async (\n leaf: any,\n viewingPrivateKey: Uint8Array,\n chain: any,\n encryptionKey: string,\n mnemonic: string,\n index: number = 0,\n): Promise<any> => {\n\n const engine = getEngine();\n const res = engine.createUserWalletFromTransaction(leaf, viewingPrivateKey, chain, encryptionKey, mnemonic, index);\n return res;\n};\n\n// here\nexport const createUserWalletWithID = async (\n encryptionKey: string,\n id: string,\n leaf: any,\n viewingPrivateKey: Uint8Array,\n chain: any\n): Promise<any> => {\n\n const engine = getEngine();\n const res = engine.createUserWalletWithID(\n encryptionKey,\n id,\n leaf,\n viewingPrivateKey,\n chain\n );\n return res;\n};\n\n\nconst createWallet = async (\n encryptionKey: string,\n mnemonic: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n const formattedCreationBlockNumbers =\n formatCreationBlockNumbers(creationBlockNumbers);\n\n const engine = getEngine();\n\n const wallet = await engine.createWalletFromMnemonic(\n encryptionKey,\n mnemonic,\n 0,\n formattedCreationBlockNumbers,\n );\n subscribeToBalanceEvents(wallet);\n return infoForWallet(wallet);\n};\n\nconst createViewOnlyWallet = async (\n encryptionKey: string,\n shareableViewingKey: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n const formattedCreationBlockNumbers =\n formatCreationBlockNumbers(creationBlockNumbers);\n\n const engine = getEngine();\n const wallet = await engine.createViewOnlyWalletFromShareableViewingKey(\n encryptionKey,\n shareableViewingKey,\n formattedCreationBlockNumbers,\n );\n subscribeToBalanceEvents(wallet);\n return infoForWallet(wallet);\n};\n// here \nexport const createDopWallet = async (\n encryptionKey: string,\n mnemonic: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n try {\n\n return await createWallet(encryptionKey, mnemonic, creationBlockNumbers);\n } catch (err) {\n throw reportAndSanitizeError(createDopWallet.name, err);\n }\n};\n\nexport const createViewOnlyDopWallet = async (\n encryptionKey: string,\n shareableViewingKey: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n try {\n return await createViewOnlyWallet(\n encryptionKey,\n shareableViewingKey,\n creationBlockNumbers,\n );\n } catch (err) {\n throw reportAndSanitizeError(createViewOnlyDopWallet.name, err);\n }\n};\n\nexport const loadWalletByID = async (\n encryptionKey: string,\n dopWalletID: string,\n isViewOnlyWallet: boolean,\n): Promise<DopWalletInfo> => {\n try {\n return await loadExistingWallet(\n encryptionKey,\n dopWalletID,\n isViewOnlyWallet,\n );\n } catch (err) {\n const sanitizedError = reportAndSanitizeError(loadWalletByID.name, err);\n throw new Error(`Could not load DOP wallet: ${sanitizedError.message}`);\n }\n};\n\nexport const unloadWalletByID = (dopWalletID: string): void => {\n try {\n const engine = getEngine();\n engine.unloadWallet(dopWalletID);\n } catch (err) {\n throw new Error('Could not unload DOP wallet.');\n }\n};\n\nexport const deleteWalletByID = async (\n dopWalletID: string,\n): Promise<void> => {\n try {\n const engine = getEngine();\n await engine.deleteWallet(dopWalletID);\n } catch (err) {\n throw new Error('Could not delete DOP wallet.');\n }\n};\n\nexport const getWalletMnemonic = async (\n encryptionKey: string,\n dopWalletID: string,\n) => {\n const { db } = getEngine();\n // Reload wallet to ensure that encryption key is valid.\n const walletData = (await DopWallet.getEncryptedData(\n db,\n encryptionKey,\n dopWalletID,\n )) as WalletData;\n\n if (!walletData.mnemonic) {\n throw new Error('No mnemonic for wallet.');\n }\n return walletData.mnemonic;\n};\n\nexport const getDopWalletAddressData = (address: string): AddressData => {\n assertValidDopAddress(address);\n return DopEngine.decodeAddress(address);\n};\n\nexport const getDopWalletPrivateViewingKey = (\n dopWalletID: string,\n): Uint8Array => {\n const wallet = walletForID(dopWalletID);\n return wallet.getViewingKeyPair().privateKey;\n};\n\nexport const signWithWalletViewingKey = async (\n dopWalletID: string,\n message: string,\n): Promise<string> => {\n const wallet = walletForID(dopWalletID);\n const signature = await wallet.signWithViewingKey(hexStringToBytes(message));\n return hexlify(signature);\n};\n\n\n\nexport const assertValidDopAddress = (address: string): void => {\n if (!validateDopAddress(address)) {\n throw new Error('Invalid DOP address.');\n }\n};\n\nexport const validateDopAddress = (address: string): boolean => {\n try {\n return DopEngine.decodeAddress(address) != null;\n } catch (err) {\n return false;\n }\n};\n\nexport const assertValidEthAddress = (address: string) => {\n if (!validateEthAddress(address)) {\n throw new Error('Invalid wallet address.');\n }\n};\n\nexport const validateEthAddress = (address: string): boolean => {\n try {\n getAddress(address);\n return true;\n } catch (err) {\n return false;\n }\n};\n\nexport const getDopAddress = (\n dopWalletID: string,\n): Optional<string> => {\n try {\n const wallet = walletForID(dopWalletID);\n return wallet.getAddress();\n } catch (err) {\n reportAndSanitizeError(getDopAddress.name, err);\n return undefined;\n }\n};\n\nexport const getWalletShareableViewingKey = async (\n dopWalletID: string,\n): Promise<Optional<string>> => {\n try {\n const wallet = walletForID(dopWalletID);\n return wallet.generateShareableViewingKey();\n } catch (err) {\n reportAndSanitizeError(getWalletShareableViewingKey.name, err);\n return undefined;\n }\n};\n\nconst formatCreationBlockNumbers = (\n creationBlockNumbers: Optional<MapType<number>>,\n): Optional<number[][]> => {\n // Format creationBlockNumbers from client side { <NetworkName>: <BlockNumber> } map to dop-engine's number[][] type\n if (!creationBlockNumbers) return;\n\n const formattedCreationBlockNumbers: number[][] = [];\n const networksNames = Object.keys(creationBlockNumbers) as NetworkName[];\n\n for (const networkName of networksNames) {\n const network = NETWORK_CONFIG[networkName];\n\n const blockNumber = creationBlockNumbers[networkName];\n if (!isDefined(blockNumber)) {\n continue;\n }\n\n formattedCreationBlockNumbers[network.chain.type] ??= [];\n formattedCreationBlockNumbers[network.chain.type][network.chain.id] =\n blockNumber;\n }\n\n return formattedCreationBlockNumbers;\n};\n"]}
@@ -1,9 +1,11 @@
1
- import { DopPopulateTransactionResponse, DopERC20Amount, NetworkName, TransactionReceiptLog, DopERC20AmountRecipient, DopNFTAmountRecipient, DopNFTAmount, TransactionGasDetails, DopERC20Recipient } from 'dop-sharedmodel-v5';
2
- import { NFTTokenData } from 'dop-engine-v5';
1
+ import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, DopERC20Amount, NetworkName, TransactionReceiptLog, FeeTokenDetails, DopERC20AmountRecipient, DopNFTAmountRecipient, DopNFTAmount, TransactionGasDetails, DopERC20Recipient } from 'dop-sharedmodel-v5';
2
+ import { ProverProgressCallback, NFTTokenData } from 'dop-engine-v5';
3
3
  import { ContractTransaction, Log } from 'ethers';
4
4
  export declare const createRelayAdaptUnshieldERC20AmountRecipients: (networkName: NetworkName, unshieldERC20Amounts: DopERC20Amount[]) => DopERC20AmountRecipient[];
5
5
  export declare const createRelayAdaptUnshieldNFTAmountRecipients: (networkName: NetworkName, unshieldNFTAmounts: DopNFTAmount[]) => DopNFTAmountRecipient[];
6
6
  export declare const createNFTTokenDataFromDopNFTAmount: (nftAmount: DopNFTAmount) => NFTTokenData;
7
7
  export declare const populateProvedCrossContractCalls: (networkName: NetworkName, dopWalletID: string, relayAdaptUnshieldERC20Amounts: DopERC20Amount[], relayAdaptUnshieldNFTAmounts: DopNFTAmount[], relayAdaptShieldERC20Recipients: DopERC20Recipient[], relayAdaptShieldNFTRecipients: DopNFTAmountRecipient[], crossContractCalls: ContractTransaction[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, gasDetails: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
8
+ export declare const gasEstimateForUnprovenCrossContractCalls: (networkName: NetworkName, dopWalletID: string, encryptionKey: string, relayAdaptUnshieldERC20Amounts: DopERC20Amount[], relayAdaptUnshieldNFTAmounts: DopNFTAmount[], relayAdaptShieldERC20Recipients: DopERC20Recipient[], relayAdaptShieldNFTRecipients: DopNFTAmountRecipient[], crossContractCalls: ContractTransaction[], originalGasDetails: TransactionGasDetails, feeTokenDetails: Optional<FeeTokenDetails>, sendWithPublicWallet: boolean, minGasLimit: Optional<bigint>) => Promise<DopTransactionGasEstimateResponse>;
9
+ export declare const generateCrossContractCallsProof: (networkName: NetworkName, dopWalletID: string, encryptionKey: string, relayAdaptUnshieldERC20Amounts: DopERC20Amount[], relayAdaptUnshieldNFTAmounts: DopNFTAmount[], relayAdaptShieldERC20Recipients: DopERC20Recipient[], relayAdaptShieldNFTRecipients: DopNFTAmountRecipient[], crossContractCalls: ContractTransaction[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, minGasLimit: Optional<bigint>, progressCallback: ProverProgressCallback) => Promise<void>;
8
10
  export declare const getRelayAdaptTransactionError: (receiptLogs: TransactionReceiptLog[] | readonly Log[]) => Optional<string>;
9
11
  export declare const parseRelayAdaptReturnValue: (data: string) => Optional<string>;
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseRelayAdaptReturnValue = exports.getRelayAdaptTransactionError = exports.populateProvedCrossContractCalls = exports.createNFTTokenDataFromDopNFTAmount = exports.createRelayAdaptUnshieldNFTAmountRecipients = exports.createRelayAdaptUnshieldERC20AmountRecipients = void 0;
3
+ exports.parseRelayAdaptReturnValue = exports.getRelayAdaptTransactionError = exports.generateCrossContractCallsProof = exports.gasEstimateForUnprovenCrossContractCalls = exports.populateProvedCrossContractCalls = exports.createNFTTokenDataFromDopNFTAmount = exports.createRelayAdaptUnshieldNFTAmountRecipients = exports.createRelayAdaptUnshieldERC20AmountRecipients = void 0;
4
4
  const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
5
5
  const providers_1 = require("../dop/core/providers");
6
+ const tx_generator_1 = require("./tx-generator");
6
7
  const proof_cache_1 = require("./proof-cache");
7
8
  const logger_1 = require("../../utils/logger");
8
9
  const dop_engine_v5_1 = require("dop-engine-v5");
9
10
  const blocked_address_1 = require("../../utils/blocked-address");
10
- // import { gasEstimateResponseDummyProofIterativeRelayerFee } from './tx-gas-relayer-fee-estimator';
11
+ const tx_gas_relayer_fee_estimator_1 = require("./tx-gas-relayer-fee-estimator");
11
12
  const error_1 = require("../../utils/error");
12
13
  const createValidCrossContractCalls = (crossContractCalls) => {
13
14
  if (!crossContractCalls.length) {
@@ -94,267 +95,114 @@ const populateProvedCrossContractCalls = async (networkName, dopWalletID, relayA
94
95
  }
95
96
  };
96
97
  exports.populateProvedCrossContractCalls = populateProvedCrossContractCalls;
97
- /*
98
- export const gasEstimateForUnprovenCrossContractCalls = async (
99
- networkName: NetworkName,
100
- dopWalletID: string,
101
- encryptionKey: string,
102
- relayAdaptUnshieldERC20Amounts: DopERC20Amount[],
103
- relayAdaptUnshieldNFTAmounts: DopNFTAmount[],
104
- relayAdaptShieldERC20Recipients: DopERC20Recipient[],
105
- relayAdaptShieldNFTRecipients: DopNFTAmountRecipient[],
106
- crossContractCalls: ContractTransaction[],
107
- originalGasDetails: TransactionGasDetails,
108
- feeTokenDetails: Optional<FeeTokenDetails>,
109
- sendWithPublicWallet: boolean,
110
- minGasLimit: Optional<bigint>,
111
- valueCheck: bigint
112
- ): Promise<DopTransactionGasEstimateResponse> => {
113
- try {
114
- setCachedProvedTransaction(undefined);
115
-
116
- const overallBatchMinGasPrice = 0n;
117
-
118
- const validCrossContractCalls =
119
- createValidCrossContractCalls(crossContractCalls);
120
-
121
- const relayAdaptContract = getRelayAdaptContractForNetwork(networkName);
122
-
123
- const relayAdaptUnshieldERC20AmountRecipients: DopERC20AmountRecipient[] =
124
- createRelayAdaptUnshieldERC20AmountRecipients(
125
- networkName,
126
- relayAdaptUnshieldERC20Amounts,
127
- );
128
- const relayAdaptUnshieldNFTAmountRecipients: DopNFTAmountRecipient[] =
129
- createRelayAdaptUnshieldNFTAmountRecipients(
130
- networkName,
131
- relayAdaptUnshieldNFTAmounts,
132
- );
133
-
134
- const shieldRandom = randomHex(16);
135
- const relayShieldRequests =
136
- await RelayAdaptHelper.generateRelayShieldRequests(
137
- shieldRandom,
138
- relayAdaptShieldERC20Recipients,
139
- createRelayAdaptShieldNFTRecipients(relayAdaptShieldNFTRecipients),
140
- );
141
-
142
- const minimumGasLimit =
143
- minGasLimit ?? MINIMUM_RELAY_ADAPT_CROSS_CONTRACT_CALLS_GAS_LIMIT;
144
-
145
- const response = await gasEstimateResponseDummyProofIterativeRelayerFee(
146
- (relayerFeeERC20Amount: Optional<DopERC20Amount>) =>
147
- generateDummyProofTransactions(
148
- ProofType.CrossContractCalls,
149
- networkName,
150
- dopWalletID,
151
- encryptionKey,
152
- false, // showSenderAddressToRecipient
153
- undefined, // memoText
154
- relayAdaptUnshieldERC20AmountRecipients,
155
- relayAdaptUnshieldNFTAmountRecipients,
156
- relayerFeeERC20Amount,
157
- sendWithPublicWallet,
158
- overallBatchMinGasPrice,
159
- valueCheck
160
- ),
161
- async (txs: TransactionStruct[]) => {
162
- const relayAdaptParamsRandom = randomHex(31);
163
-
164
- // TODO: We should add the relay adapt contract gas limit here.
165
- const transaction = await relayAdaptContract.populateCrossContractCalls(
166
- txs,
167
- validCrossContractCalls,
168
- relayShieldRequests,
169
- relayAdaptParamsRandom,
170
- true, // isGasEstimate
171
- !sendWithPublicWallet, // isRelayerTransaction
172
- minimumGasLimit,
173
- );
174
- // Remove gasLimit, we'll set to the minimum below.
175
- // TODO: Remove after callbacks upgrade.
176
- delete transaction.gasLimit;
177
- return transaction;
178
- },
179
- networkName,
180
- dopWalletID,
181
- relayAdaptUnshieldERC20AmountRecipients,
182
- originalGasDetails,
183
- feeTokenDetails,
184
- sendWithPublicWallet,
185
- true, // isCrossContractCall
186
- );
187
-
188
- // TODO: Remove this after callbacks upgrade.
189
- // If gas estimate is under the cross-contract-minimum, replace it with the minimum.
190
- if (response.gasEstimate) {
191
- if (response.gasEstimate < minimumGasLimit) {
192
- response.gasEstimate = minimumGasLimit;
193
- }
98
+ const gasEstimateForUnprovenCrossContractCalls = async (networkName, dopWalletID, encryptionKey, relayAdaptUnshieldERC20Amounts, relayAdaptUnshieldNFTAmounts, relayAdaptShieldERC20Recipients, relayAdaptShieldNFTRecipients, crossContractCalls, originalGasDetails, feeTokenDetails, sendWithPublicWallet, minGasLimit) => {
99
+ try {
100
+ (0, proof_cache_1.setCachedProvedTransaction)(undefined);
101
+ const overallBatchMinGasPrice = 0n;
102
+ const validCrossContractCalls = createValidCrossContractCalls(crossContractCalls);
103
+ const relayAdaptContract = (0, providers_1.getRelayAdaptContractForNetwork)(networkName);
104
+ const relayAdaptUnshieldERC20AmountRecipients = (0, exports.createRelayAdaptUnshieldERC20AmountRecipients)(networkName, relayAdaptUnshieldERC20Amounts);
105
+ const relayAdaptUnshieldNFTAmountRecipients = (0, exports.createRelayAdaptUnshieldNFTAmountRecipients)(networkName, relayAdaptUnshieldNFTAmounts);
106
+ const shieldRandom = (0, dop_engine_v5_1.randomHex)(16);
107
+ const relayShieldRequests = await dop_engine_v5_1.RelayAdaptHelper.generateRelayShieldRequests(shieldRandom, relayAdaptShieldERC20Recipients, createRelayAdaptShieldNFTRecipients(relayAdaptShieldNFTRecipients));
108
+ const minimumGasLimit = minGasLimit ?? dop_engine_v5_1.MINIMUM_RELAY_ADAPT_CROSS_CONTRACT_CALLS_GAS_LIMIT;
109
+ const response = await (0, tx_gas_relayer_fee_estimator_1.gasEstimateResponseDummyProofIterativeRelayerFee)((relayerFeeERC20Amount) => (0, tx_generator_1.generateDummyProofTransactions)(dop_sharedmodel_v5_1.ProofType.CrossContractCalls, networkName, dopWalletID, encryptionKey, false, // showSenderAddressToRecipient
110
+ undefined, // memoText
111
+ relayAdaptUnshieldERC20AmountRecipients, relayAdaptUnshieldNFTAmountRecipients, relayerFeeERC20Amount, sendWithPublicWallet, overallBatchMinGasPrice), async (txs) => {
112
+ const relayAdaptParamsRandom = (0, dop_engine_v5_1.randomHex)(31);
113
+ // TODO: We should add the relay adapt contract gas limit here.
114
+ const transaction = await relayAdaptContract.populateCrossContractCalls(txs, validCrossContractCalls, relayShieldRequests, relayAdaptParamsRandom, true, // isGasEstimate
115
+ !sendWithPublicWallet, // isRelayerTransaction
116
+ minimumGasLimit);
117
+ // Remove gasLimit, we'll set to the minimum below.
118
+ // TODO: Remove after callbacks upgrade.
119
+ delete transaction.gasLimit;
120
+ return transaction;
121
+ }, networkName, dopWalletID, relayAdaptUnshieldERC20AmountRecipients, originalGasDetails, feeTokenDetails, sendWithPublicWallet, true);
122
+ // TODO: Remove this after callbacks upgrade.
123
+ // If gas estimate is under the cross-contract-minimum, replace it with the minimum.
124
+ if (response.gasEstimate) {
125
+ if (response.gasEstimate < minimumGasLimit) {
126
+ response.gasEstimate = minimumGasLimit;
127
+ }
128
+ }
129
+ return response;
130
+ }
131
+ catch (err) {
132
+ throw (0, error_1.reportAndSanitizeError)(exports.gasEstimateForUnprovenCrossContractCalls.name, err);
194
133
  }
195
-
196
- return response;
197
- } catch (err) {
198
- throw reportAndSanitizeError(
199
- gasEstimateForUnprovenCrossContractCalls.name,
200
- err,
201
- );
202
- }
203
134
  };
204
- */
205
- /*
206
- export const generateCrossContractCallsProof = async (
207
- networkName: NetworkName,
208
- dopWalletID: string,
209
- encryptionKey: string,
210
- relayAdaptUnshieldERC20Amounts: DopERC20Amount[],
211
- relayAdaptUnshieldNFTAmounts: DopNFTAmount[],
212
- relayAdaptShieldERC20Recipients: DopERC20Recipient[],
213
- relayAdaptShieldNFTRecipients: DopNFTAmountRecipient[],
214
- crossContractCalls: ContractTransaction[],
215
- relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,
216
- sendWithPublicWallet: boolean,
217
- overallBatchMinGasPrice: Optional<bigint>,
218
- minGasLimit: Optional<bigint>,
219
- progressCallback: ProverProgressCallback,
220
- valueCheck: bigint
221
- ): Promise<void> => {
222
- try {
223
- setCachedProvedTransaction(undefined);
224
-
225
- const validCrossContractCalls =
226
- createValidCrossContractCalls(crossContractCalls);
227
-
228
- const relayAdaptContract = getRelayAdaptContractForNetwork(networkName);
229
-
230
- const relayAdaptUnshieldERC20AmountRecipients: DopERC20AmountRecipient[] =
231
- createRelayAdaptUnshieldERC20AmountRecipients(
232
- networkName,
233
- relayAdaptUnshieldERC20Amounts,
234
- );
235
- const relayAdaptUnshieldNFTAmountRecipients: DopNFTAmountRecipient[] =
236
- createRelayAdaptUnshieldNFTAmountRecipients(
237
- networkName,
238
- relayAdaptUnshieldNFTAmounts,
239
- );
240
-
241
- // Generate dummy txs for relay adapt params.
242
- const dummyUnshieldTxs = await generateDummyProofTransactions(
243
- ProofType.CrossContractCalls,
244
- networkName,
245
- dopWalletID,
246
- encryptionKey,
247
- false, // showSenderAddressToRecipient
248
- undefined, // memoText
249
- relayAdaptUnshieldERC20AmountRecipients,
250
- relayAdaptUnshieldNFTAmountRecipients,
251
- relayerFeeERC20AmountRecipient,
252
- sendWithPublicWallet,
253
- overallBatchMinGasPrice,
254
- valueCheck
255
- );
256
-
257
- // Generate relay adapt params from dummy transactions.
258
- const shieldRandom = randomHex(16);
259
-
260
- const relayShieldRequests =
261
- await RelayAdaptHelper.generateRelayShieldRequests(
262
- shieldRandom,
263
- relayAdaptShieldERC20Recipients,
264
- createRelayAdaptShieldNFTRecipients(relayAdaptShieldNFTRecipients),
265
- );
266
-
267
- const minimumGasLimit =
268
- minGasLimit ?? MINIMUM_RELAY_ADAPT_CROSS_CONTRACT_CALLS_GAS_LIMIT;
269
-
270
- const isRelayerTransaction = !sendWithPublicWallet;
271
- const relayAdaptParamsRandom = randomHex(31);
272
- const relayAdaptParams =
273
- await relayAdaptContract.getRelayAdaptParamsCrossContractCalls(
274
- dummyUnshieldTxs,
275
- validCrossContractCalls,
276
- relayShieldRequests,
277
- relayAdaptParamsRandom,
278
- isRelayerTransaction,
279
- minimumGasLimit,
280
- );
281
- const relayAdaptID: AdaptID = {
282
- contract: relayAdaptContract.address,
283
- parameters: relayAdaptParams,
284
- };
285
-
286
-
287
- // console.log("====== 4",
288
- // ProofType.CrossContractCalls,
289
- // networkName,
290
- // dopWalletID,
291
- // encryptionKey,
292
- // false, // showSenderAddressToRecipient
293
- // undefined, // memoText
294
- // relayAdaptUnshieldERC20AmountRecipients,
295
- // relayAdaptUnshieldNFTAmountRecipients,
296
- // relayerFeeERC20AmountRecipient,
297
- // sendWithPublicWallet,
298
- // relayAdaptID,
299
- // false, // useDummyProof
300
- // overallBatchMinGasPrice,
301
- // progressCallback);
302
-
303
- // Create real transactions with relay adapt params.
304
- const transactions = await generateProofTransactions(
305
- ProofType.CrossContractCalls,
306
- networkName,
307
- dopWalletID,
308
- encryptionKey,
309
- false, // showSenderAddressToRecipient
310
- undefined, // memoText
311
- relayAdaptUnshieldERC20AmountRecipients,
312
- relayAdaptUnshieldNFTAmountRecipients,
313
- relayerFeeERC20AmountRecipient,
314
- sendWithPublicWallet,
315
- relayAdaptID,
316
- false, // useDummyProof
317
- overallBatchMinGasPrice,
318
- progressCallback,
319
- valueCheck
320
- );
321
-
322
- const nullifiers = nullifiersForTransactions(transactions);
323
-
324
- const transaction = await relayAdaptContract.populateCrossContractCalls(
325
- transactions,
326
- validCrossContractCalls,
327
- relayShieldRequests,
328
- relayAdaptParamsRandom,
329
- false, // isGasEstimate
330
- isRelayerTransaction,
331
- minimumGasLimit,
332
- );
333
- delete transaction.from;
334
-
335
- setCachedProvedTransaction({
336
- proofType: ProofType.CrossContractCalls,
337
- dopWalletID,
338
- showSenderAddressToRecipient: false,
339
- memoText: undefined,
340
- erc20AmountRecipients: [],
341
- nftAmountRecipients: [],
342
- relayAdaptUnshieldERC20Amounts,
343
- relayAdaptUnshieldNFTAmounts,
344
- relayAdaptShieldERC20Recipients,
345
- relayAdaptShieldNFTRecipients,
346
- crossContractCalls: validCrossContractCalls,
347
- relayerFeeERC20AmountRecipient,
348
- sendWithPublicWallet,
349
- transaction,
350
- overallBatchMinGasPrice,
351
- nullifiers,
352
- });
353
- } catch (err) {
354
- throw reportAndSanitizeError(generateCrossContractCallsProof.name, err);
355
- }
135
+ exports.gasEstimateForUnprovenCrossContractCalls = gasEstimateForUnprovenCrossContractCalls;
136
+ const generateCrossContractCallsProof = async (networkName, dopWalletID, encryptionKey, relayAdaptUnshieldERC20Amounts, relayAdaptUnshieldNFTAmounts, relayAdaptShieldERC20Recipients, relayAdaptShieldNFTRecipients, crossContractCalls, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, minGasLimit, progressCallback) => {
137
+ try {
138
+ (0, proof_cache_1.setCachedProvedTransaction)(undefined);
139
+ const validCrossContractCalls = createValidCrossContractCalls(crossContractCalls);
140
+ const relayAdaptContract = (0, providers_1.getRelayAdaptContractForNetwork)(networkName);
141
+ const relayAdaptUnshieldERC20AmountRecipients = (0, exports.createRelayAdaptUnshieldERC20AmountRecipients)(networkName, relayAdaptUnshieldERC20Amounts);
142
+ const relayAdaptUnshieldNFTAmountRecipients = (0, exports.createRelayAdaptUnshieldNFTAmountRecipients)(networkName, relayAdaptUnshieldNFTAmounts);
143
+ // Generate dummy txs for relay adapt params.
144
+ const dummyUnshieldTxs = await (0, tx_generator_1.generateDummyProofTransactions)(dop_sharedmodel_v5_1.ProofType.CrossContractCalls, networkName, dopWalletID, encryptionKey, false, // showSenderAddressToRecipient
145
+ undefined, // memoText
146
+ relayAdaptUnshieldERC20AmountRecipients, relayAdaptUnshieldNFTAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice);
147
+ // Generate relay adapt params from dummy transactions.
148
+ const shieldRandom = (0, dop_engine_v5_1.randomHex)(16);
149
+ const relayShieldRequests = await dop_engine_v5_1.RelayAdaptHelper.generateRelayShieldRequests(shieldRandom, relayAdaptShieldERC20Recipients, createRelayAdaptShieldNFTRecipients(relayAdaptShieldNFTRecipients));
150
+ const minimumGasLimit = minGasLimit ?? dop_engine_v5_1.MINIMUM_RELAY_ADAPT_CROSS_CONTRACT_CALLS_GAS_LIMIT;
151
+ const isRelayerTransaction = !sendWithPublicWallet;
152
+ const relayAdaptParamsRandom = (0, dop_engine_v5_1.randomHex)(31);
153
+ const relayAdaptParams = await relayAdaptContract.getRelayAdaptParamsCrossContractCalls(dummyUnshieldTxs, validCrossContractCalls, relayShieldRequests, relayAdaptParamsRandom, isRelayerTransaction, minimumGasLimit);
154
+ const relayAdaptID = {
155
+ contract: relayAdaptContract.address,
156
+ parameters: relayAdaptParams,
157
+ };
158
+ // console.log("====== 4",
159
+ // ProofType.CrossContractCalls,
160
+ // networkName,
161
+ // dopWalletID,
162
+ // encryptionKey,
163
+ // false, // showSenderAddressToRecipient
164
+ // undefined, // memoText
165
+ // relayAdaptUnshieldERC20AmountRecipients,
166
+ // relayAdaptUnshieldNFTAmountRecipients,
167
+ // relayerFeeERC20AmountRecipient,
168
+ // sendWithPublicWallet,
169
+ // relayAdaptID,
170
+ // false, // useDummyProof
171
+ // overallBatchMinGasPrice,
172
+ // progressCallback);
173
+ // Create real transactions with relay adapt params.
174
+ const transactions = await (0, tx_generator_1.generateProofTransactions)(dop_sharedmodel_v5_1.ProofType.CrossContractCalls, networkName, dopWalletID, encryptionKey, false, // showSenderAddressToRecipient
175
+ undefined, // memoText
176
+ relayAdaptUnshieldERC20AmountRecipients, relayAdaptUnshieldNFTAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, relayAdaptID, false, // useDummyProof
177
+ overallBatchMinGasPrice, progressCallback);
178
+ const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(transactions);
179
+ const transaction = await relayAdaptContract.populateCrossContractCalls(transactions, validCrossContractCalls, relayShieldRequests, relayAdaptParamsRandom, false, // isGasEstimate
180
+ isRelayerTransaction, minimumGasLimit);
181
+ delete transaction.from;
182
+ (0, proof_cache_1.setCachedProvedTransaction)({
183
+ proofType: dop_sharedmodel_v5_1.ProofType.CrossContractCalls,
184
+ dopWalletID,
185
+ showSenderAddressToRecipient: false,
186
+ memoText: undefined,
187
+ erc20AmountRecipients: [],
188
+ nftAmountRecipients: [],
189
+ relayAdaptUnshieldERC20Amounts,
190
+ relayAdaptUnshieldNFTAmounts,
191
+ relayAdaptShieldERC20Recipients,
192
+ relayAdaptShieldNFTRecipients,
193
+ crossContractCalls: validCrossContractCalls,
194
+ relayerFeeERC20AmountRecipient,
195
+ sendWithPublicWallet,
196
+ transaction,
197
+ overallBatchMinGasPrice,
198
+ nullifiers,
199
+ });
200
+ }
201
+ catch (err) {
202
+ throw (0, error_1.reportAndSanitizeError)(exports.generateCrossContractCallsProof.name, err);
203
+ }
356
204
  };
357
- */
205
+ exports.generateCrossContractCallsProof = generateCrossContractCallsProof;
358
206
  const getRelayAdaptTransactionError = (receiptLogs) => {
359
207
  try {
360
208
  const relayAdaptError = dop_engine_v5_1.RelayAdaptContract.getRelayAdaptCallError(receiptLogs);