dop-wallet-v6 1.2.8 → 1.2.9

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.
@@ -2,10 +2,16 @@ import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TXIDVersio
2
2
  import { GenerateTransactionsProgressCallback } from './tx-generator';
3
3
  export declare const generateTransferProofForExplorer: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
4
4
  /**
5
- * Generate transfer proof and return the raw proved transactions for explorer verification
5
+ * Generate transfer proof and return the proved transactions in the format expected by verification
6
6
  * This function generates the proof and returns the complete proved transaction data
7
+ * matching the format used in the example verification code
7
8
  */
8
- export declare const generateTransferProof: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<{
9
+ export declare const generateTransferProof: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<(import("dop-engine-v3").TransactionStructV2 | import("dop-engine-v3").TransactionStructV3)[]>;
10
+ /**
11
+ * Generate transfer proof and return a custom formatted version for explorer/UI purposes
12
+ * This function transforms the proved transactions into a simplified format
13
+ */
14
+ export declare const generateTransferProofForUI: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<{
9
15
  memo: never[];
10
16
  memoText: string;
11
17
  serializedCommitment: {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateTransferProof = exports.generateTransferProofForExplorer = void 0;
3
+ exports.generateTransferProofForUI = exports.generateTransferProof = exports.generateTransferProofForExplorer = void 0;
4
4
  const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
5
5
  const tx_generator_1 = require("./tx-generator");
6
6
  const proof_cache_1 = require("./proof-cache");
@@ -39,8 +39,9 @@ const generateTransferProofForExplorer = async (txidVersion, networkName, dopWal
39
39
  };
40
40
  exports.generateTransferProofForExplorer = generateTransferProofForExplorer;
41
41
  /**
42
- * Generate transfer proof and return the raw proved transactions for explorer verification
42
+ * Generate transfer proof and return the proved transactions in the format expected by verification
43
43
  * This function generates the proof and returns the complete proved transaction data
44
+ * matching the format used in the example verification code
44
45
  */
45
46
  const generateTransferProof = async (txidVersion, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
46
47
  try {
@@ -48,7 +49,25 @@ const generateTransferProof = async (txidVersion, networkName, dopWalletID, encr
48
49
  const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(dop_sharedmodels_v3_1.ProofType.Transfer, networkName, dopWalletID, txidVersion, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
49
50
  false, // useDummyProof
50
51
  overallBatchMinGasPrice, progressCallback);
51
- // Transform the proved transactions to the format expected by the explorer
52
+ // Return the proved transactions directly without transformation
53
+ // This matches the format expected by the verification example code
54
+ // The structure should include: boundParams, decryptPreimage, merkleRoot, nullifiers, proof, txidVersion
55
+ return provedTransactions;
56
+ }
57
+ catch (err) {
58
+ throw (0, error_1.reportAndSanitizeError)(exports.generateTransferProof.name, err);
59
+ }
60
+ };
61
+ exports.generateTransferProof = generateTransferProof;
62
+ /**
63
+ * Generate transfer proof and return a custom formatted version for explorer/UI purposes
64
+ * This function transforms the proved transactions into a simplified format
65
+ */
66
+ const generateTransferProofForUI = async (txidVersion, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
67
+ try {
68
+ // Get the standard proof format first
69
+ const provedTransactions = await (0, exports.generateTransferProof)(txidVersion, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback);
70
+ // Transform the proved transactions to a custom format for UI/explorer
52
71
  const transformedTransactions = provedTransactions.map((transaction) => {
53
72
  // Type-safe access to boundParams properties with proper type checking
54
73
  const boundParams = transaction.boundParams;
@@ -70,7 +89,7 @@ const generateTransferProof = async (txidVersion, networkName, dopWalletID, encr
70
89
  // Get serialized commitment from the bound params
71
90
  const serializedCommitment = firstCommitmentCiphertext ?? null;
72
91
  return {
73
- // Add the wanted fields
92
+ // Add the wanted fields for UI/explorer
74
93
  memo: [],
75
94
  memoText: memoText ?? '',
76
95
  serializedCommitment,
@@ -97,8 +116,8 @@ const generateTransferProof = async (txidVersion, networkName, dopWalletID, encr
97
116
  return transformedTransactions;
98
117
  }
99
118
  catch (err) {
100
- throw (0, error_1.reportAndSanitizeError)(exports.generateTransferProof.name, err);
119
+ throw (0, error_1.reportAndSanitizeError)(exports.generateTransferProofForUI.name, err);
101
120
  }
102
121
  };
103
- exports.generateTransferProof = generateTransferProof;
122
+ exports.generateTransferProofForUI = generateTransferProofForUI;
104
123
  //# sourceMappingURL=tx-proof-transfer-with-data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tx-proof-transfer-with-data.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer-with-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\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 generateTransferProofForExplorer = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\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 dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(\n txidVersion,\n provedTransactions,\n networkName,\n 0n\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Transfer,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts: undefined,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProofForExplorer.name, err);\n }\n};\n\n/**\n * Generate transfer proof and return the raw proved transactions for explorer verification\n * This function generates the proof and returns the complete proved transaction data\n */\nexport const generateTransferProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n) => {\n try {\n // Generate the proof transactions directly\n const { provedTransactions } = await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n // Transform the proved transactions to the format expected by the explorer\n const transformedTransactions = provedTransactions.map((transaction) => {\n // Type-safe access to boundParams properties with proper type checking\n const boundParams = transaction.boundParams as {\n treeNumber?: number | bigint;\n adaptContract?: string;\n adaptParams?: string;\n chainID?: string | bigint;\n commitmentCiphertext?: Array<{\n blindedReceiverViewingKey?: string;\n [key: string]: unknown;\n }>;\n [key: string]: unknown;\n };\n \n // Calculate commitment tree index and other derived fields\n let commitmentTreeIndex = 0;\n if (typeof boundParams.treeNumber === 'number') {\n commitmentTreeIndex = boundParams.treeNumber;\n } else if (typeof boundParams.treeNumber === 'bigint') {\n commitmentTreeIndex = Number(boundParams.treeNumber);\n }\n \n // Extract hash from the transaction\n const hash = Array.isArray(transaction.commitments) && transaction.commitments.length > 0 \n ? transaction.commitments[0] \n : transaction.merkleRoot;\n \n // Create shield key hash from the bound params\n const firstCommitmentCiphertext = boundParams.commitmentCiphertext?.[0];\n const shieldKeyHash = firstCommitmentCiphertext?.blindedReceiverViewingKey ?? '0x0';\n \n // Get serialized commitment from the bound params\n const serializedCommitment = firstCommitmentCiphertext ?? null;\n\n return {\n // Add the wanted fields\n memo: [], // Empty array as requested\n memoText: memoText ?? '', // Use the provided memo text\n serializedCommitment,\n commitmentTreeIndex,\n hash,\n shieldKeyHash,\n \n // Keep essential transaction data from boundParams\n boundParams: {\n adaptContract: boundParams.adaptContract ?? '0x0000000000000000000000000000000000000000',\n adaptParams: boundParams.adaptParams ?? '0x0000000000000000000000000000000000000000000000000000000000000000',\n chainID: boundParams.chainID ?? '0x0000000000000089',\n commitmentCiphertext: boundParams.commitmentCiphertext ?? [],\n decrypt: 0n,\n },\n \n // Keep core proof data\n merkleRoot: transaction.merkleRoot,\n nullifiers: transaction.nullifiers,\n proof: transaction.proof,\n txidVersion: transaction.txidVersion,\n \n // Remove the unwanted fields by not including them:\n // decryptPreimage, minGasPrice, treeNumber, commitments are not included\n };\n });\n\n return transformedTransactions;\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProof.name, err);\n }\n};\n"]}
1
+ {"version":3,"file":"tx-proof-transfer-with-data.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer-with-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\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 generateTransferProofForExplorer = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\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 dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(\n txidVersion,\n provedTransactions,\n networkName,\n 0n\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Transfer,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts: undefined,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProofForExplorer.name, err);\n }\n};\n\n/**\n * Generate transfer proof and return the proved transactions in the format expected by verification\n * This function generates the proof and returns the complete proved transaction data\n * matching the format used in the example verification code\n */\nexport const generateTransferProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n) => {\n try {\n // Generate the proof transactions directly\n const { provedTransactions } = await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n // Return the proved transactions directly without transformation\n // This matches the format expected by the verification example code\n // The structure should include: boundParams, decryptPreimage, merkleRoot, nullifiers, proof, txidVersion\n return provedTransactions;\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProof.name, err);\n }\n};\n\n/**\n * Generate transfer proof and return a custom formatted version for explorer/UI purposes\n * This function transforms the proved transactions into a simplified format\n */\nexport const generateTransferProofForUI = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n) => {\n try {\n // Get the standard proof format first\n const provedTransactions = await generateTransferProof(\n txidVersion,\n networkName,\n dopWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n // Transform the proved transactions to a custom format for UI/explorer\n const transformedTransactions = provedTransactions.map((transaction) => {\n // Type-safe access to boundParams properties with proper type checking\n const boundParams = transaction.boundParams as {\n treeNumber?: number | bigint;\n adaptContract?: string;\n adaptParams?: string;\n chainID?: string | bigint;\n commitmentCiphertext?: Array<{\n blindedReceiverViewingKey?: string;\n [key: string]: unknown;\n }>;\n [key: string]: unknown;\n };\n \n // Calculate commitment tree index and other derived fields\n let commitmentTreeIndex = 0;\n if (typeof boundParams.treeNumber === 'number') {\n commitmentTreeIndex = boundParams.treeNumber;\n } else if (typeof boundParams.treeNumber === 'bigint') {\n commitmentTreeIndex = Number(boundParams.treeNumber);\n }\n \n // Extract hash from the transaction\n const hash = Array.isArray(transaction.commitments) && transaction.commitments.length > 0 \n ? transaction.commitments[0] \n : transaction.merkleRoot;\n \n // Create shield key hash from the bound params\n const firstCommitmentCiphertext = boundParams.commitmentCiphertext?.[0];\n const shieldKeyHash = firstCommitmentCiphertext?.blindedReceiverViewingKey ?? '0x0';\n \n // Get serialized commitment from the bound params\n const serializedCommitment = firstCommitmentCiphertext ?? null;\n\n return {\n // Add the wanted fields for UI/explorer\n memo: [], // Empty array as requested\n memoText: memoText ?? '', // Use the provided memo text\n serializedCommitment,\n commitmentTreeIndex,\n hash,\n shieldKeyHash,\n \n // Keep essential transaction data from boundParams\n boundParams: {\n adaptContract: boundParams.adaptContract ?? '0x0000000000000000000000000000000000000000',\n adaptParams: boundParams.adaptParams ?? '0x0000000000000000000000000000000000000000000000000000000000000000',\n chainID: boundParams.chainID ?? '0x0000000000000089',\n commitmentCiphertext: boundParams.commitmentCiphertext ?? [],\n decrypt: 0n,\n },\n \n // Keep core proof data\n merkleRoot: transaction.merkleRoot,\n nullifiers: transaction.nullifiers,\n proof: transaction.proof,\n txidVersion: transaction.txidVersion,\n \n // Remove the unwanted fields by not including them:\n // decryptPreimage, minGasPrice, treeNumber, commitments are not included\n };\n });\n\n return transformedTransactions;\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProofForUI.name, err);\n }\n};\n"]}
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dop-wallet-v6",
3
- "version": "1.2.8",
3
+ "version": "1.2.9",
4
4
  "description": "DOP Wallet SDK, compatible with mobile, browser and nodejs environments.",
5
5
  "main": "dist/index.js",
6
6
  "license": "MIT",